百度飞桨7日强化学习打卡总结

初识强化学习

百度飞桨7日强化学习打卡总结_第1张图片

强化学习的主要思想是基于机器人(agent)和环境(environment)的交互学习,其中agent通过action影响environment,environment返回reward和state,整个交互过程是一个马尔可夫决策过程。当前做出的决定要使得未来收益最大化。
总目标是最大化累计收益
R = ∑ t = 0 ∞ γ t r t {\displaystyle R=\sum _{t=0}^{\infty }\gamma ^{t}r_{t}} R=t=0γtrt
系数gamma代表未来目前(现在)决策的影响,reward 的衰减因子,决定目光的长远
R t = r 1 + γ r t + 1 + γ 2 r t + 2 + . . . + γ n − 1 r n R_t=r_1+\gamma_{}r_{t+1}+\gamma^2r_{t+2}+...+\gamma^{n-1}r_n Rt=r1+γrt+1+γ2rt+2+...+γn1rn

表格型方法——Sarsa&Q-learning

表格型方法是遍历每一个位置不断选择最佳决策
表格方法演示
百度飞桨7日强化学习打卡总结_第2张图片
Sarsa更新公式:
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ Q ( s t + 1 , a t + 1 ) ⏟ t a r g e t − Q ( s t , a t ) ⏟ c u r r e n t ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ \underbrace{r_t + \gamma Q(s_{t+1}, a_{t+1})}_{target} - \underbrace{Q(s_t, a_t)}_{current} \right] Q(st,at)Q(st,at)+αtarget rt+γQ(st+1,at+1)current Q(st,at)
Q-learning 更新公式:
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ max ⁡ a Q ( s t + 1 , a ) ⏟ t a r g e t − Q ( s t , a t ) ⏟ c u r r e n t ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ \underbrace{r_t + \gamma \max_a Q(s_{t+1}, a)}_{target} - \underbrace{Q(s_t, a_t)}_{current}\right] Q(st,at)Q(st,at)+αtarget rt+γamaxQ(st+1,a)current Q(st,at)
有何不同?
Sarsa为on-policy &Q-learning为off-policy
Sarsa是根据已知的下一步决策来决定下一步,下一步的决策是一定会执行的action,所以为了保证程序的执行,程序会选择我们需要的最佳策略,如此会尽可能的让所有策略远离悬崖。
Q-learning
Q-learning不需要知道下一步会对本身造成什么影响,默认的下一步是Q最大的动作,Q-learning的行为更大胆,不会瞻前顾后,会探索所有的可能性,最终会在所有表格中找到一个最优解。

神经网络方法求解RL——DQN

Q-learning
百度飞桨7日强化学习打卡总结_第3张图片
求解不可数的Q表格,使用神经网络拟合Q表格。

DQN百度飞桨7日强化学习打卡总结_第4张图片
神经网络的作用就是输入State再返回Q值
百度飞桨7日强化学习打卡总结_第5张图片

基于策略梯度求解RL

不同于之前的三种方法百度飞桨7日强化学习打卡总结_第6张图片
policy-based基于神经网络输出策略概率 π θ ( a t ∣ s t ) \pi_\theta(a_t|s_t) πθ(atst)
Policy Gradient(PG)在尝试所有可能后改变权重值,改变选择每个策略概率,但不至于永远不会选中,是一个概率。
这次与之前的作业不一样,需要调整神经网络结构。
激活函数,网络层数和每个隐藏层中的节点数的选择很重要。

最后的大作业DDPG 四旋翼控制

一篇2017年的DDPG 四旋翼飞行器控制论文

激活函数的选择

人工神经网络试图模仿类似的行为。下图所示的网络就是由相互连接的神经元组成的人工神经网络。
百度飞桨7日强化学习打卡总结_第7张图片
上图中的黑色圆圈代表神经元。 每个神经元都有权重、偏差和激活函数。 信息进入输入层,神经元通过权重和偏差对输入信息进行线性变换,而非线性变换由激活函数完成。 信息从输入层传输到隐藏层,隐藏层对信息进行处理并将结果发送到输出层。 这被称为前向传播。如果产生的输出偏离预期值呢? 在神经网络中,我们将根据误差更新神经元的权重和偏差。 这个过程被称为反向传播。 一旦所有训练数据经过了这一过程,则最终的权重和偏差就被用于测试。

激活函数是神经网络的一大关键组件,因为它们可将原本线性的分类器转换成非线性的。激活函数的发展经历了Sigmoid -> Tanh -> ReLU -> Leaky ReLU -> Maxout这样的过程,还有一个特殊的激活函数Softmax,因为它只会被用在网络中的最后一层,用来进行最后的分类和归一化。

最后的两个作业分别使用了tanh与relu
我估计为什么要换成tanh是因为relu当输入为负时,梯度为0,会产生梯度消失问题。

选择激活函数需要看具体情况而定。

深度学习速查
26种神经网络激活函数可视化-机器之心

网络层数和每个隐藏层中的节点数的选择

在神经网络中,当且仅当数据必须以非线性的方式分割时,才需要隐藏层。

貌似不能确定的样子,需要多看看书多查查资料。

你可能感兴趣的:(百度飞桨7日强化学习打卡总结)