强化学习(RL)

强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。——wiki


强化学习在许多学科都有应用,除了AI外,还包括自动化的控制理论,数学中的运筹学和认知科学。

在机器学习中,通常可以分为有监督学习(分类,回归),无监督学习(聚类,降维)和强化学习(无监督数据,只有奖励信号,且奖励信号不一定实时,大部分情况下滞后;研究的非i.i.d【独立同分布数据】,而是time sequence;当前行为会影响后续数据分布)。

强化学习中使用非确定性模型,要求选择一定的行为系列以最大化未来的总体奖励最大化,有时候宁愿牺牲即时(短期)的奖励以获取更多的长期奖励。

两个例子:



强化学习的具体数学模型:

首先要弄懂马尔科夫过程(MP),马尔科夫的一个重要性质是:下一时刻的state由这一时刻的state决定,不需要存储之前1~t-1时刻的state结果。


在finite state时,可以得到一个矩阵(Transition Matrix),使得:

选择合适的state在进行马尔科夫过程中十分重要,比如上图左,若只选择了“位置”作为state,会极大地影响最终结果。

马尔科夫决策过程(MDP):在马尔科夫的基础上,增加了一个action,使得下一时刻的state不光和这一时刻的state有关,也和这一时刻的action有关;另外新增了reward function,也与state和action相关。


在强化学习中的几个function:

1.policy π:指agent每次根据state,要采取什么样的action;分为确定性的(deterministic)策略和随机(stochastic)策略。

2.累计回报Gt:一般会加上系数,如下图,这样符合人类学习的特点,也可以使得结果不过于大可收敛。

    

强化学习的目的:找出最优策略,使得累计回报最大。如下图:


state-value function(价值函数)用来评价给定策略时state的好坏(当前的累计回报):


将Gt公式带入后,有:


另外,有state-action value function(动作价值函数),评价给定策略时,在状态state下执行动作action的好坏(也是当前的累计回报):

将Gt公式带入后,同样有:

接下来看一看v(s)和q(s,a)的联系。


在state s时,会根据policy π,产生一个action a,那么如上图左式,π(a|s)表示上述过程的概率函数。
而当有了s和a,系统会马上给出一个R,并且系统会有一定的概率P走到s',公式可以如上图右所示。

上图左式得到的是当前state和下一步state的关系(直接代入)。

右边,在如上定义情况下,得到vπ的表达式。这里要注意,取vπ=[vπ(s1)...vπ(s')] 使得在计算中不包含vπ(s')项可以统一计算。实际项目中这样算要inverse代价太大,所以还是用迭代求解的方法。

右下公式告诉我们,只需要知道环境包含的两部分,在策略固定的情况下(R:采取动作a系统会给的reward大概是怎么样的  P:当前状态s已知,采取动作a,系统会走到另外一个状态s'的概率P),就可以知道vπ的好坏。

同样的,qπ和下步qπ有如下关系:


在给定policy的情况下,就可以得到state的好坏以及action的好坏,这是Bellman Expectation Equation的两个式子。

但实际上,我们并非想得到fixed π下的结果,而是想得到最优解,如下:


同样的,求s和s,a和a的公式如下,纯带入计算。


那么,最佳策略的定义是什么呢?是策略π对于所有的s,如果vπ都大于其他策略的状态值累计vπ',则认为策略π优于其他所有策略π'。


对于任意的马尔可夫决策过程,都一定存在着策略π,优于其他所有π';并且使得对于所有的s,vπ都大于其他策略的状态值累计vπ';使得对于所有的s,qπ都大于其他策略的动作状态值累计qπ'。这个证明非常麻烦,不证了。

对于MDP问题,分为以下两类:


这里先讨论第一种:对于MDP Planning,两种方法之前讲过了:


在第二种方法中,包括值迭代(迭代求解最大v(s))和策略迭代(给定策略π,策略评估得到vπ(s),再π'=greedy(vπ),不断重复这两步)。


图片来自《七月在线》强化学习课程ppt



### 强化学习控制机械臂的技术方法和实现方案 #### 1. 强化学习的基本原理 强化学习是一种基于试错机制的学习方法,通过智能体(Agent)与环境(Environment)的交互来学习最优策略。在机械臂控制中,智能体通过不断尝试不同的动作,根据环境反馈的奖励(Reward)来调整策略,以实现目标[^1]。 #### 2. 强化学习在机械臂控制中的应用场景 强化学习在机械臂控制中的应用主要包括以下几个方面: - **轨迹跟踪**:机械臂需要按照预定的轨迹运动,强化学习可以通过优化策略来提高轨迹跟踪的精度。 - **抓取任务**:机械臂需要在复杂环境中抓取物体,强化学习可以通过学习物体的形状、位置和抓取力来优化抓取策略。 - **抗干扰能力**:机械臂在运行过程中可能会遇到外部干扰,强化学习可以通过调整策略来提高系统的鲁棒性。 #### 3. 强化学习算法的选择 在机械臂控制中,常用的强化学习算法包括: - **Q-Learning**:适用于离散动作空间的问题,但在连续动作空间中效果有限。 - **Deep Q-Network (DQN)**:结合深度学习的Q-Learning算法,适用于处理高维状态空间的问题。 - **Policy Gradient Methods**:直接优化策略函数,适用于连续动作空间的问题。 - **Actor-Critic**:结合值函数和策略函数的优化方法,适用于复杂的控制任务。 - **Proximal Policy Optimization (PPO)**:一种高效的策略梯度方法,适用于高维状态和动作空间的问题。 #### 4. 实现方案 ##### 4.1 环境建模 在机械臂控制中,环境建模是实现强化学习的关键步骤。环境模型需要包括机械臂的动力学模型、传感器反馈和外部干扰等因素。常用的仿真工具包括: - **Gazebo**:用于模拟机械臂的物理环境。 - **MuJoCo**:用于快速仿真和优化机械臂的动力学模型。 - **PyBullet**:用于实时仿真和测试机械臂的控制策略。 ##### 4.2 状态和动作空间的设计 - **状态空间**:通常包括机械臂的关节位置、速度、加速度以及目标物体的位置和姿态。 - **动作空间**:通常包括机械臂的关节力矩或速度控制指令。 ##### 4.3 奖励函数的设计 奖励函数的设计直接影响强化学习的效果。常见的奖励函数设计包括: - **目标接近奖励**:当机械臂接近目标时给予正奖励。 - **轨迹跟踪误差惩罚**:当机械臂偏离预定轨迹时给予负奖励。 - **能量消耗惩罚**:当机械臂消耗过多能量时给予负奖励。 ##### 4.4 算法实现 以下是一个简单的PPO算法实现示例: ```python import torch import torch.nn as nn import torch.optim as optim import gym class ActorCritic(nn.Module): def __init__(self, num_inputs, num_actions): super(ActorCritic, self).__init__() self.actor = nn.Sequential( nn.Linear(num_inputs, 64), nn.ReLU(), nn.Linear(64, num_actions), nn.Softmax(dim=-1) ) self.critic = nn.Sequential( nn.Linear(num_inputs, 64), nn.ReLU(), nn.Linear(64, 1) ) def forward(self, x): return self.actor(x), self.critic(x) def ppo_update(policy, optimizer, states, actions, log_probs, returns, advantages, epochs=10, eps=0.2): for _ in range(epochs): new_log_probs, values = evaluate_actions(policy, states, actions) ratio = torch.exp(new_log_probs - log_probs) surr1 = ratio * advantages surr2 = torch.clamp(ratio, 1 - eps, 1 + eps) * advantages actor_loss = -torch.min(surr1, surr2).mean() critic_loss = (returns - values).pow(2).mean() loss = actor_loss + 0.5 * critic_loss optimizer.zero_grad() loss.backward() optimizer.step() # 初始化环境和策略网络 env = gym.make('CartPole-v1') policy = ActorCritic(env.observation_space.shape[0], env.action_space.n) optimizer = optim.Adam(policy.parameters(), lr=3e-4) # 训练循环 for episode in range(1000): state = env.reset() done = False while not done: action, value = policy(torch.FloatTensor(state)) next_state, reward, done, _ = env.step(action.item()) # 更新策略 ppo_update(policy, optimizer, torch.FloatTensor(state), action, log_probs, returns, advantages) state = next_state ``` #### 5. 实验与评估 实验评估是验证强化学习效果的重要环节。评估指标通常包括: - **轨迹跟踪精度**:机械臂跟踪预定轨迹的误差。 - **任务成功率**:机械臂完成指定任务的成功率。 - **收敛速度**:强化学习算法达到稳定性能所需的训练时间。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值