有文章说现在很多CNN的工作都是很枯燥的调参数,因为训练一次周期很长,超参数的调整又跟具体的要识别的东西相关性很强,比如说训练10种类别,跟训练1000种类别的网络深度就是不同的,前面我写踩坑日志的时候就犯了这个错误,拿一个很简单的网络去训练很多种类,结果一直不收敛。loss很大。
当然关于调参数也有一些很实用的实践性经验分享,大家可以自行去找找。这里我就不细说了。
虽然我们刚才说的都是图像上的,但是文字跟音频也可以转化成这种输入,类似说1*N的矩阵。
---------------------------------------------------------------------------(这看上去跟第一根线没什么区别)-------------------------------------------------------------------------------
RL:强化学习(reinforcement learning)
关于RL的详细内容可以看 Deepmind 的公开课
这里给大家分享一个B站带中文字幕的视频,每课100分钟左右,总共10课,16个小时也能看完,不过因为相对比较晦涩,我建议是不要一次性看完,不然一脸懵逼的进去,一脸懵逼的出来。遇到不懂的就去问问,懂了再继续看。 https://www.bilibili.com/video/av9831889/
强化学习核心的原理是:
造一个agent(智能代理者)跟环境(state)交互(action)然后根据获得的反馈(reward)反复训练后,这个agent可以在遇到任意的state时都能选择最优的决策(action),这个最优的决策会在未来带来最大化的reward。
RL解决的问题是连续决策问题,就是有一系列的决策之后才会获得奖励的现实问题。比方说某baby 3岁,暂且先叫A酱,A酱还不会拿杯子喝东西。我们知道最优策略就是
:靠近杯子,拿起来,倒进嘴巴里。
但是她一开始的时候并不知道看到一个杯子在远处,究竟是应该靠近,还是远离。而且就算反复做了这2件事,也没有一些立即奖励给她(喝到东西)。所以说奖励是滞后的,但是我们希望可以对动作的打分,根据分数的高低让智能体决定要做的事情,比方说 靠近杯子10分,远离杯子-10分。如果每一步都有这样的标量作为衡量标准的话,那么她就可以知道要获得奖励的最优策略是什么了,当然有些动作在不同的场景下会导致不同的效果,所以这里的打分要针对 state-action pair(状态-动作对) 评分。
所以RL的作用就是经过反复的训练,为每对action-state 提供一个分数。这就Value based(其中的一种的RL算法实现方式)。
如果先假设 最终的奖励分数是 100分。那么究竟前一步应该分配多少分呢?然后前前一步又是多少?这里就用到了贝尔曼方程
具体细节可以看这篇
s :state
a:action
Q就是我上面讲的分数。然后Qπ 指的就是最优策略下的分数函数。
P是指状态s下决定某动作a之后 =》下一个状态s的转移概率。(比方说A酱虽然见到了杯子,然后她使用了动作a1(拿起来)但是不一定能够成功,这里有个转移概率P)。
R是指立即奖励。
指折扣率,是一个0-1的数,就是指未来的Q值对当前Q的影响有多少,如果是1的话就是100%影响。
这里我们可以看到,当前的Q值是由两部分组成,当前R值+下一个状态的Q值。
假设 折扣率这里是0.5,最终的奖励分数是 100分。
反过来推导的话,A酱在喝到杯中物的时候 Q值等于R值,因为没有下一个状态了。在往前一个动作 (拿起杯子)因为只有1个动作,而且立即奖励R=0,所以Q值等于 0+ 0.5*100=50 。
然后再往前面一步,状态1(见到杯子)的时候 选择 (靠近),所以Q值 是 0+0.5*(0+ 0.5*100)=25
这是我们通过已知最优策略然后用贝尔曼方程反推Q值,这样便于理解Q值的含义。