Deep Reinforcement learning
agent会观察environment的state
图中的state和observation是等价的
agent会根据观察到的state,同时让environment的reward达到最大,满足以上两个条件后,会采取合适的action
比如:
图一:agent看到水,采取的action是打翻,然后environment会给agent一个reward,告诉它不要这样
图二:state的变化是连续性的,agent看到的reward较小,同时又看到打翻的水,会采取action:打扫一下,这样会得到很高的reward
这是下围棋的阿尔法狗,难点是选取合适的reward计算方法,因为大多数情况下,reward可能都是0
reinforcement learning和supervised learning的区别?
监督学习:会训练好一组weight,当棋盘是的,机器会告诉你下一步会走,相当于是有一个老师会一直告诉你准确答案
强化学习:机器会自己去根据experience来不断的学习,不会有一个唯一且正确的下法
可以让两个agent,不断的下来让阿尔法狗有很强的下棋能力
在训练chat-bot,让两个机器人不断的对话,避免几百万的train data,这样很方便
reward通过事先定义好的rule来进行评价,看看像不像人
、
适用范围:如果这个任务刚好人也不知道咋办(因为它能不断的学习)
应用:
1:交互式检索
2:无人机飞行
3:无人驾驶
4:打英雄联盟
5:产生text
machine玩游戏和人的过程是一样的
玩游戏,让分数最大
强化学习的两个难点
1:reward delay:只有fire才能得到reward,左移和右移却没有reward,但其实左移和右移才是至关重要的步骤
2:agent要去探索自己没做过的东西,不能只是左移和右移
强化学习的分类:
基于value:critic相当于批评家
基于policy:actor负责做事
我们往往需要actor和critic的结合,A3C算法应用的比较多
基于policy--learning a actor
actor往往也被称为policy
,actor是一个function,action是output,observation作为input,reward类似loss function
input可以是矩阵或向量
output是各个action的概率,我们往往选概率最大的action
用neural network当做actor,能够不断的训练,解约空间
如何去衡量一个函数actor的好坏呢?
通过求N次游戏的(等于每一次action的reward和)的期望值,让越大越好trad
如何来实际求呢?(代表actor所采用的neural network的最佳weight)
就代表一次游戏的回合,这是有无数种情况的,然后取N次回合,代表这一个回合发生的概率,利用公式来求,相当于加权平均呗
如何来求最佳的function?
因为是求最大,所以用gradient ascent
其中是对求偏导数
在求时,不能求偏导数,暂且看成是一个常数
数学变形又来了,求,可以利用公式来化简得到,因为都是随机的,其中为1/N
来计算
来取对数,求梯度时,删除与无关的项
推导的梯度上升的公式
为啥取log,为了保证累积变成累加
如果a被选上,它的梯度就会上升
一般情况下为了保证有正有负,加一个baseline b
critic:每一个state丢到会得到一个数值,越小说明越快over