文章目录
- 一、什么是强化学习
- 二、强化学习的应用
一、什么是强化学习
强化学习的流程可以用上面这张图来说明:智能体(Agent)对环境进行观测,然后根据观测结果(Observation / State)采取相应的动作(Action),动作作用于环境(Environment)之后,环境就会产生相应的变化,这样智能体就可以再一次得到新的观测结果,同时环境也会给智能体一个反馈(Reward)表明这个动作是好的还是不好的。强化学习就是想办法找到一个策略能够最大化总的反馈(Total reward)。
比较成功的应用,如:AlphaGo,下围棋时,它的Observation就是棋盘的情况,根据棋局的形式采取一个Action下一步棋。然后根据Environment的反馈情况,得到一个Reward和新的Observation,再进行下一次的分析和动作。
通过上述围棋的例子,我们不难发现,Environment是由系统本身决定的,Observation本质上也只是通过某种转换由Environment变动过来的,在这个例子中,可以是一个视觉神经网络,将棋局转换成数学矩阵。同时,有一个好的**Agent(策略生成)**也很重要,它决定了实际的Action,在没有深度学习之前,用过一些类似于表格的形式,根据局势进行查表,决定怎么下一步怎么走。这种方式本质上也是一种有监督学习。但围棋这个数学组合很难穷举,但有了Reinforcement Learning就不同了,通过一个通用的神经网络来分析形势。这也是Supervised Learning和Reinforcement Learning的差异。
而Reward这个变量就比较特殊,虽然也是和Environment有关系,但也是由人为定义的一些规则来决定的,比如围住了对方的棋子,得1分;被围住得-1分,没有棋子数量变动为0分。所以如何从一个定义好的Reward规则也很重要。这里的Reward设定也有它的弊端,即得分为0的情况是比较常见的,得分或扣分的情况是比较少见的,所以它的Reward是比较稀疏。
二、强化学习的应用
Supervised Learning的方法在某些问题也不适用,比如在聊天机器人(Chatbot)训练时,上一个人的提问,没有完全对应的答案。
而利用Reinforcement Learning的思想,虽然对话没有像围棋一样有明确的得分Reward规则,但我们可以train两个Chatbot互相对话,人为定义一个规则:“通过查看对话记录,来评判是好是坏”。
还有一个比较常见的应用:电子游戏,OpenAI也有对应的python游戏环境,可以用于强化学习的训练。
比如上述的Video Game就来自于gym。左上角是分数,中间是需要打击的目标,玩家可以左右移动,开火。转换到RL中就是三个Action。
gym中的游戏Environment已经转换成矩阵给到用户,可以直接给到Agent,得到Action。像这个游戏中击杀一个外星人,可以得到5分。当采取一个Action之后,Environment也会发生变化(通常都是随机的),这样我们又进入了下个Action生成的阶段。
当游戏进行了N次这样的循环之后,当采取了某次Action- α T \alpha_T αT之后,游戏进入了终止状态,这时候得到了一个总的Reward。那么这一整个游戏过程,我们称为episode,通常我们以一个episode和它对应总的Reward为一个训练数据。为什么这么做呢?
这里就要回到我们上面提到Reward设计的弊端了,有时候Reward的规则往往会导致Agent没法得到即时的奖励,但这又是无法避免的。在现实生活中,这种问题比较常见,比如下棋中,短期的诱敌牺牲可能为后期的胜利做铺垫。所以Reward的delay是很常见的,所以我们在训练的时候也需要将这种情况考虑进去。
其次Agent作为一个小白,如果仅以即时奖励为优化目标,那么在alien游戏中,它只有开火才能得分,那么训出来的Agent就只会开火。
以上内容为李宏毅老师课程中的总结。