zoukankan      html  css  js  c++  java
  • 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来看,确实权重是从终点到起点逐渐减小的。
  • 相关阅读:
    安卓学习第一课——电话拨号器
    CodeForces 644B【模拟】
    hdu5861【线段树】
    CodeForces 41A+43A【课上无聊刷水题系列】
    hdoj5493【树状数组+二分】
    HDU5894【组合数学】
    Codeforces643A【一种暴力】
    CodeForces 689C【二分】
    CodeForces 665B 【水-暴力】
    CodeForces 653A【水】
  • 原文地址:https://www.cnblogs.com/aitashi/p/12364709.html
Copyright © 2011-2022 走看看