小白入门整理网课笔记,欢迎交流。

这个网课到这里其实已经看完了,之前有个推荐系统但是有点听不懂跳过了。最后介绍一下强化学习。

什么是强化学习

你不需要告诉算法每个输入的正确输出Y是什么,只需要指定一个奖励函数,告诉它什么时候做的好,什么时候做的不好,算法的工作是自动找出好的。

举例

火星探测器示例:

使用一个受火星漫游车启发的简化示例来开发强化学习,6个状态,1-6,奖励是方框下面的部分。

(s,a,R(s),s`)

s:状态

a:行动

R(s)奖励

s`下一个状态

回报

折扣因子γ略小于1,比如0.9,0.99,0.999

回报是奖励的加权和

目标:设计一个称为策略π的函数,它的任务是接受任何状态s作为输入,并映射到它希望我们采取的某个动作a

强化学习的目标,找到一个策略π,它告诉你如何在每个状态下采取行动以最大化回报

状态-动作值函数

状态动作值函数通常用大写字母Q表示,它是你当前所处状态以及你可能选择在该状态喜爱采取的动作的函数。

maxQ(s,a)

Π(s)=a

定义:Q(s,a)表示在状态s下执行动作a,之后采取最优策略时的期望回报。

贝尔曼方程,帮助计算状态动作价值函数

随机环境

举之前那个车移动的例子,它可能想往左走,但是滑倒了或者其他情况。

如果你要采用你的策略并尝试,1000,或者更多,你会得到许多不同的奖励序列,如果你要对所有不同序列的总折扣奖励进行平均,得到期望回报。

连续状态空间应用

举例

月球着陆器,x方向,y方向,\theta转动的角度。字母(x,y,\theta)上面一点代表变化的快慢。

l:左腿是否接触地面,r:右腿是否接触地面。

4个action,do noting,left thruster,right thruster,main thrster。(什么都不做,或者朝哪边喷火)

下面是奖励函数

这下面是我们构建的向量

DQN算法

关键思想是我们将训练一个神经网络来计算或近似状态动作价值函数Q(S,A),可以让我们选择好的动作。

s向量有8个,加上4个动作(独热编码),一共12个输入

我们输入一个状态-动作对,一种状态4中不同的动作,并让他尝试输出Q(S,A),选择最大的Q(S,A)对应的动作。

如何训练一个神经网络来输出Q(S,A)?

使用贝尔曼方程来创建包含大量示例X,Y的训练集,然后我们使用监督学习,学习状态-动作到Q(S,A)的映射

算法改进

改进的神经网络架构

之前的神经网络,给一个状态,分别计算4个不同动作的Q(S,A)然后选取最大的,效率比较低。训练一个神经网络可以同时输出所有4个值会更高效。

贪心策略

还在学习的时候(我们在获取大量样本的时候),如何选择行动。

ε-贪婪(ε-greedy)策略:

以 95% 的概率,选择能最大化动作价值函数 Q(s,a)的动作 a(即 “利用” 已知的最优动作);

以 5% 的概率,随机选择一个动作 a(即 “探索” 未知的动作空间,避免陷入局部最优)。

该策略是平衡强化学习中 “探索 - 利用” 矛盾的经典方法,广泛应用于 Q 学习、深度 Q 网络(DQN)等算法中,让智能体在学习过程中既可以利用已有知识获取回报,又能探索新动作以发现更优策略。

ε刚开始可以比较大,后面慢慢减小(随时间的推移你随机采取行动的可能性越来越小,更有可能使用你不断改进的Q函数来选择好的行为)。

更多推荐