DataScience 板


LINE

小弟刚换新工作两个礼拜,需要应用一些RL(Reinforcement Learning)的知识 以前对这领域没什麽接触,背景知识就只有最近看的几堂David Silver 所以有些概念讲得不清楚或不对还请各位前辈指正 这篇文章算是小弟研究DQN(Deep Q Learning)的一个小笔记 DQN被提出来也已经五年了,除了原始论文外,後续改进的paper也很多 不太可能在一篇文章内全部概括完 这篇文章是根据这个网站 https://goo.gl/nXArSB 所提到的几个概念,小弟去阅读原始论文後做个简单地介绍 希望能帮助到跟我一样刚入门的新手 那麽就开始了 I.Playing Atari with Deep Reinforcement Learning 网址:https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf 这篇是提出DQN的paper,作者们就是大名鼎鼎的DeepMind 这篇paper的出版年份是2013年,也就是DL(Deep Learning)正开始火热的时候 当时DL已经在电脑视觉已经语音辨识方面非常成功 主要就是归功於CNN(Convolutional Neural Network)及RNN(Recurent Neural Network) 等概念以及硬体的进步(当然还有ReLu) 然後DL目前在SL(Supervised Learning)方面的成功也倚赖於大量经过人工标注的资料, 这个在RL中是没有的 并且RL所要预测的reward,常常是非常的稀疏、充满杂讯且延迟的 笔者注:这边可以用走迷宫想像,若走到出口才会得到reward其余都是0,则刚开始训练 时会有大量没有reawrd=0的state-action pair 另外在DL中训练的资料常常都被假设为是独立取样的,并且符合某个固定的distribution (也就是常说的i.i.d.) 然而在RL时训练资料(state, action, reward)往往都是有因果关系 并且训练的过程中会因为决策(policy)的改变而使得资料的distribution也跟着改变,既 不i也不d! 这些都会对训练造成影响 还有一点与SL不同的是DQN跟传统的Q-Learning一样,是用TD(0)的方法来更新Q值 (target Q=R+gamma*max_over_a(Q(s_next,a|w_i-1)) ) 也就是说target本身也跟网路的系数有关,这会大幅地增加收敛难度 训练时的损失函数则是采用mean squared error paper中的DQN是被训练来玩Atari 2600(一款游戏主机)的各种游戏,输入为游戏的原始 影像 影像只经过灰阶化及resize,没有任何手动提取的特徵 值得一提的是大部分的电动游戏是没办法只靠单张影像就得知所有资讯的 例如有时候我们需要知道角色或物体的速度才能判断接下来怎麽操作 所以paper中的输入是将最近的四个frame预处理过後叠在一起 (paper中似乎有将action也加入state,但我没看到他怎麽使用action的) DQN的训练中应用了一个方法叫experience replay,跟传统的Q-Learning不同 在DQN中每做一个action、经过一个state及得到的reward,都会储存到replay memory里 在更新系数时并不是用最新的state及action来更新,而是从replay memory内随机取样一 小群样本当作mini-batch replay memory的大小N,是hyper parameter 使用experience replay有两个优点 1.随机取样可以打破资料间的关联性 2.每笔资料有可能被多次使用,提升资料的利用率 paper最後有把DQN跟人类以及其他演算法做比较 DQN的不管是平均或是最佳分数都是赢过其他演算法很多 且这些演算法都是有用到游戏相关的知识,DQN是直接使用raw pixel 简言之就是很好很强大 至於跟人类玩家比较则是有输有赢,几款输给人类很多的游戏是需要long-term strategy II.Human-Level Control Through Deep Reinforcement Learning 网址:https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf 以往在使用non-linear function approximator(例如神经网路)代表Q值时往往会预到训 练过程不稳定甚至发散的情况 原本计算TD error时的target Q是直接用现有的网路,所以会每一次更新也都会跟着改变 可以想像成你往目标方向跨了一步,目标却也又走了一步 这篇的解决方法是把计算target Q值的网路(称为target network)固定C个iteration後, 再换成最新的系数 C是hyper parameter 这个方法在实作上相当简单,但大大地提昇了训练的稳定性跟收敛速度 III.Deep Reinforcement Learning with Double Q-LearningQ Learning 网址:https://arxiv.org/pdf/1509.06461.pdf 在估计target Q值时,常因为在action space做maximize而造成Q值的高估 而1993年有篇paper有论述这个现象确实会对最後policy有负面的影响 2010年时有另一篇paper提出dounle Q learing,使用两个Q table轮流更新彼此 解耦action selection及target value estimation来改善最後的结果(笔者注:为何解 耦能改善Q的高估?我也不知道) Double DQN的精神即与此相似,而且做起来更方便,因为我们本来就有第二个 network:target network 实作上就是在用target network估计Q值的action使用基於current network的greedy policy 如此又进一步加强了DQN IV.Prioritized Experience Replay 使用experience replay时原本都是用uniform sampling,意即每个样本被采样到的机率 都一样但事实上并非每个样本的重要性都一样 尤其是在sparse reward的task replay memory里可能有大量的样本reward都为0好不容易有非0的样本却又不一定被采样到 我们知道那些TD-error较大的样本代表网路的预测与估计值相差甚远 可以给系数有较大的改进 因此第一直觉就是:若将样本依照TD error决定prioritization,由大排到小 每次只固定取前几大的那些样本来更新 这样是否更好呢?答案是否定的 主要原因是每个样本的TD-error是以上次被采样到时的网路去计算的 随着网路的更新原先TD-error值也已经不准了 若一直没有机会被采样到的话,也无法更新它的TD-error 这个样本就永远没机会被使用了 因此我们还是要采用机率的方式,让TD-error高的样本只是具有较高的机率被取样 作者提出了两个决定prioritization(p_i)的方式 第一种是proportional prioritization,让p_i直接等於TD-error 第二种是rank-based prioritization,p_i=1/rank(i) rank(i)是第i个样本的error在所有样本中的排名 这边引入了一个hyper parmeter:alpha来控制这个机率分布 但因为用这个机率去采样样本的话会使样本偏离真正的data distribution 所以需要使用IS(Importance Sampling)来消除这个bias 这边引入了第二个hyper parameter:beta,来控制IS(beta跟learning rate一样训练中 会变化的) beta=1时就是常规的IS,等於是回到uniform sampling 在训练前期由於policy的变化迅速,资料的distribution也会剧烈变化 此时unbiased sampling并没那麽重要,可以让beta较低 在训练快结束时再慢慢增加beta到1,以确保采样的样本有符合真正的distribution 使用IS也有另一个好处是TD-error与IS的权重成反比 刚好可以平衡各个样本的step size 原本error大的样本step size也会较大,使gradient desecent的更新不准确 paper另外有解释实作上怎麽采样才能节省时间跟空间,细节就要请各位去看paper了 网路上也有很多的程式码可以参考(其实我也还没完全搞懂XD) V.Dueling Network Architectures for Deep Reinforcement Learning 网址:https://arxiv.org/pdf/1511.06581.pdf 这篇的概念是我个人觉得最有趣的,也是本文章中唯一不是由DeepMind发表的paper 作者们在原先DQN的CNN後用两个独立的FCN把输出分成两个部分 一个部分是预测目前state本身的value:V(s) 另一个部分预测在当前state上采取不同action所造成的影响:A(s,a) (笔者注:可以想像这个做法是把共同的部分V(s)提取出来後让你有机会把各个action的 差异分得更明显) 最後再通过一个aggregate layer把他们整合起来 在整合时若直接让Q(s,a)=V(s)+A(s,a),会发现当给定一个Q值时,V与A有无限种可能的 组合,无法将他们识别出来的 实际上采用这个equation的时候也会发现效果很差,需要重新思考一下 回到Q与V的定义,可以推出如果采用greedy-policy,当我们在state s选择到action a* 时,A(s,a*)=0 因此我们可以强迫A(s,a*)=0,实际上的作法就是让新的 A'(s,a)=A(s,a)-max_over_a[A(s,a)] 这样V(s)就符合一般RL领域state-value function的意义了 但最後他们选择让A'是减去所有A的平均,应该实验过这样收敛比较好 下一个部分他们用走迷宫做了一个小实验,这个迷宫只有一条路,action则有上、下、左 、右、不动 在这个环境显然有很多action是没有差别的(会撞墙的跟不动),这时能独立学习共同的 value:V(s)就很有用 作者们把透过增加,不动来比较有duel network跟没有的差别,可以发现行为类似的 action越多,优势越大 最後就是一样训练DQN去玩Atari 2600来跟之前的结果做比较,这边就不再详述了 VI.结论 其实这几篇paper用到的概念都不是新东西了,只是以前没有人能够将它们很好地整合进 DRL(Deep Reinforcement Learning) 第一篇DQN的起始paper是用experience replay,解决了资料关联性太强的问题 第二篇及第三篇都是在改善target Q value的估计,让训练更stable及更快 第四篇提升了replay memory的利用效率,对於sparse reward的task帮助相当大 第五篇算是比较有创意,对於action space很大的task尤其有帮助 後面几篇改进paper的共通点就是他们对於DQN架构的改动都非常少 第二第三篇甚只是数行程式码的程度 但提供的效果却是很显着,从简单的cart-pole平衡问题就可以看到很明显的差别 DQN可说是DRL的开山始祖,在DL内RL相对於SL来说还算是很稚嫩 对於这种快速火热起来的领域当然也免不了一些吐槽文章,其中一篇比较知名的: https://www.alexirpan.com/2018/02/14/rl-hard.html 不过他也不是在唱衰,只是想提醒人们:我们还有很多问题没有解决 并且大部分你想用DRL解决的问题都已经有很好的解决方法,还不用training! (当然就是需要很多domain knowledge) 我目前的心得是DQN虽然主打不需要prior knowledge 就像DL可用CNN feature取代hand-crafted feature 但要能发挥得好,还是得定义一个良好的reward function 这还是需要prior knowledge呀QQ 另外我最近在试时总有一个感觉,DQN对hyper parameter好像超级敏感? 有时候只是微调结果却天差地远,可以从不会收敛变成快速收敛,不知道是不是我的错觉 最後如果有前辈或跟我一样正在学习的板友想讨论RL领域(不一定要是DQN) 也欢迎来信给我 在公司目前还没有人可以讨论更别说请教了QQ,有点闭门造车的感觉 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.114.212.150
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1535120997.A.106.html ※ 编辑: thefattiger (58.114.212.150), 08/24/2018 22:31:56 ※ 编辑: thefattiger (58.114.212.150), 08/24/2018 22:35:14 ※ 编辑: thefattiger (58.114.212.150), 08/24/2018 22:38:39 ※ 编辑: thefattiger (58.114.212.150), 08/24/2018 22:39:54
1F:→ skgg: 建议先看rainbow(1710.02298),17年以前常见的DQN优化都有 08/24 23:02
2F:→ skgg: 还有今年的NoisyNet(1706.10295)也是简单有效的方法 08/24 23:03
3F:→ skgg: 两篇都是DeepMind的,上面数字是arxiv编号 08/24 23:03
4F:→ thefattiger: 太感谢了,自己瞎摸索真的很没效率 08/24 23:20
5F:推 DarkIllusion: 推 RL我也找不太到人讨论QQ 08/25 00:06
6F:推 EGsux: 刚好我在写RL的论文写完也来发一篇好了 09/04 05:24
7F:推 wei1204: 推这篇 详细! 09/09 15:15
8F:推 i5201122: 推,也推rainbow 09/15 03:35
9F:推 daniel0523: 感谢t大整理与详细分享! 10/25 12:35
10F:推 juijuijuijui: 感谢分享~ 01/14 13:02
11F:推 clonsey1314: 论文会用到RL, 谢谢详尽的说明 10/14 22:20







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP