Reinforcement Learning 笔记(1)
研究生方向终于尘埃落定。开始学习RL,计划先看莫烦的视频教程,然后看silver的书。
终究还是没能跑掉深度学习啊,但是能离开模拟电路已经是万幸力。
基本上是相当于学习笔记。
以上。
莫烦RL教程:https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/
首先讲解的是名为Q Learning的学习模式。请原谅我确实看了几遍视频也没弄明白意思。。。于是直接看后面的简单例子,才逐渐明白过来。
在状态空间和行为模式都是离散且有限的情况下,QLearning将学习过程分为状态State 奖励Reward 行为Action几个部分,通过一张Qtable来选择action,通过之前的Qtable和Reward来更新Qtable
直至Qtable达到某种最优。
仍以2.1的简单例子为例:状态空间就是位置,从左到右为0~5,其中5为重点,到达即成功(学习终止)。行为包括【向左走,向右走】,在位置0向左走等于不走,在位置4向右走即成功,位置5实际上不包含行为。
因此,实际上 只有在状态:“处于位置4”,且行为:“向右走”的情形下, 才会获得奖励。
接下来是核心的学习过程:基本上就是把公式变成代码,
q_predict = q_table.loc[S, A]
q_target = R + GAMMA * q_table.iloc[S_, :].max()
q_table.loc[S, A] += ALPHA * (q_target - q_predict)
S = S_
q_predict即是当前状态的权重值,q_target即是未来预期的权重值(由reward和下一状态的权重值求得),然后用q_predict和q_target对q_table内当前状态的权重值进行更新
需要注意的是,仅有S_=terminate的时候,reward才为1,而q_table初始化为0,所以,实际上权重更新是从终点逐渐向起点推进的,在第一次乱撞得到reward之后,对位置4的权重更新,然后当S_=位置4时,对位置3进行权重更新,诸如此类。
left right
0 0.000000 0.004320
1 0.000000 0.025005
2 0.000030 0.111241
3 0.000000 0.368750
4 0.027621 0.745813
5 0.000000 0.000000
从最后的table来看,确实权重是从终点到起点逐渐减小的。