作者:xg123321123 - 时光杂货店
出处:http://blog.csdn.net/xg123321123/article/details/77504032
声明:版权所有,转载请联系作者并注明出处
0 主要话题
- 增强学习面临的问题
- 马尔科夫过程
- 形式化描述增强学习
- Q-learning
- 深度增强学习
1 一个简单的增强学习情景
以打砖块游戏为例,玩家需要左右移动屏幕底部的木板,将球接住并弹回到屏幕上半部分,当球触碰到一个砖块,砖块就会消失,玩家的得分就会上升 - 也就得到了reward。
如果想要让神经网络学着玩这个游戏。网络输入将会是屏幕图片,网络输出将会是三个动作:左移,右移,发射(球)。我们可以将其视为一个分类问题 - 每一帧画面,我们都必须做出决定:左移,右移还是发射。
尽管听起来比较简单,但我们需要大量的训练数据。当然,我们可以通过记录职业玩家的玩法来获得训练数据,但那不是机器真正该有的学习方式。
我们不需要谁成千上万次地来告诉机器每一帧的动作该怎么决定,我们所需要的仅仅是让机器在做了正确的决定后获得适当的反馈(reward), 然后让机器自己去领悟其余的东西。
这就是强化学习尽力在完成的任务。强化学习的地位处于监督学习和无监督学习之间。尽管监督学习给每条训练数据都标注了类别,而无监督学习什么类别也没标注,但是强化学习却给了稀疏的并且时间上有延迟的标注 - 奖励反馈(reward)。全靠这些奖励反馈,强化学习中的agent才能学习如何在环境中行动。
尽管这种思想比较符合咱们的直觉,但是实践中还是面临着许多挑战。还是拿打砖块游戏举例,当机器打掉了一块转,然后得分增加了,这常常与得分以前的最后几个动作没啥关系,而是与很多步以前的动作(比如你调整底部挡板的位置的动作)有更大的关系。
这个问题叫credit assignment problem(信用分配问题?) - 要确定某次得分与之前哪些动作有较为直接的关系,是一个比较难的问题。
一旦机器找到了一种获得奖励反馈的策略以后,是应该一直坚持它还是尝试一些别的路子来获得更大的奖励反馈呢?
这个问题叫explore-exploit dilemma(探索-开发困境) - 要一直采用已知的可行策略还是探索一些新的可能会更好的策略呢?
强化学习是动物学习过程中所采用的一种重要模型:爸妈的表扬,学校的成绩,工作中的薪水 - 这些都是奖励反馈的实例。
信用分配问题和探索-开发困境也都是我们每天都面临着的问题,这也是为什么要探索强化学习的原因;在这个探索过程中,游戏为我们提供了一个很棒的找到新方法的沙盒世界。
2 马尔科夫过程
现在我们的问题是该如何形式化一个强化学习的问题,最常用的方法将其表述为一个马尔科夫过程。
假如(你可以脑补打砖块游戏)环境中有一个agent能执行某些特定操作(i.e.左移木板,右移木板,发射球),这些操作有时(当游戏处于某些特定状态)能给agent带来奖励反馈;每个操作都会改变这个环境,并将环境带入一个新的状态;在新的状态中,agent又将继续执行操作,以此类推下去。
在此过程中,agent在选择操作时所形成的规律/准则就叫策略(policy);环境是随机的,这也意味着操作执行后到达的下一个状态也是随机的。
马尔科夫决策过程就是这三者组成:1) 环境可能出现的状态(state),2) agent所能执行的操作(action)以及3) 指导在所有状态下具体该如何执行操作的策略(policy)。
一段完整的马尔科夫过程会形成一段状态,动作和奖励反馈所构成的有限序列。
上图中 si 表示状态, ai 表示操作, ri+1 表示操作执行后得到的奖励反馈。 sn 是这段马尔科夫过程的结束状态。值得一提的是,马尔科夫过程有一个假设前提: si+1 仅仅由 si 和 ai 联合决定,之前的状态和动作则完全不起作用。
3 折扣未来奖励 Discounted Future Reward
为了在长期过程中得到最优的结果,我们不仅需要考虑即时的奖励反馈,也需要把未来的奖励反馈纳入考虑。
对于一段马尔科夫决策过程,整个过程中的反馈奖励用以下等式表示:
基于整个等式,从 t 时刻到最终状态所得到的全部奖励反馈可以用以下等式表示:
但环境是随机的,我们就没法确定当我们下次做同样动作时是否还能得到同样的奖励反馈。而我们越接近未来,就越能确定未来,所以取而代之,我们采用折扣未来奖励这种做法(discounted future reward):
上式中, γ 是0和1之间的折扣因子 - 越接近未来的奖励反馈,对
如果我们将 γ 设为0,那么得到的策略将非常“短视”,因为我们只考虑即时的奖励反馈。如果我们想要在即时奖励反馈和未来奖励反馈这两者间取得平衡,那么我们就应该将γ因子设为0.9之类的。当然,如果环境是确定的,所有同样的动作总是能导致同样的奖励反馈,那就可以把γ设为1了。
总的来说,一个好的策略总是能帮助agent获得最多的未来奖励反馈。
4 价值函数 Value function
除非整个过程结束,否则我们无法得到每个状态对应的奖励反馈;因此,引入了价值函数Value Function,
从定义上看,价值函数就是回报的期望:
- 直接优化策略 π(a|s) 或者 a=π(s)