zoukankan      html  css  js  c++  java
  • 强化学习7日打卡营-世界冠军带你从零实践--基于表格型方法的 RL

    强化学习 Reinforce Learning 

    强化学习区别于机器学习的一点是,强化学习是来做决策的。根据环境的反馈,做出决策。 外界环境情况复杂,和环境的交互主要有 环境的状态 stat、智能体的动作、和对动作带来收益的评价 reward。

    这里面涉及2个对象,agent 和 env。 agent 根据环境状态 做出动作即决策,环境env根据 agent 当前的状态和动作,返回下一个状态。 循环往复,直到环境给出结束的状态。

    在算法实践里,环境 env 是人为设计好的,这个需要精心的构造,来反映客观世界的环境。学习者不用关心这部分,有现成的一些环境供实验。

    这里介绍的表格型算法,主要解决的是有限状态和有限动作的情况。这方面典型算法 SARSA 和 QLearning 。

    Sarsa  (state-action-reward-state'-action')
    Sarsa 是 On Policy 算法,学习特定 stat 、action 下的价值 Q,最终建立一个 Q 表格,stat 行、action 列。
    根据与环境交互得到的 reward 来更新 Q 表格。
     Q 表格更新公式: Q(St,At) = Q(St,At) + α * [ Rt+1 +γ * Q(St+1,At+1) - Q(S, At)]
    Rt+1 来自与环境对(St,At)得奖励。

    SARSA 在行动中学习。 只有1个 Policy ,使用了两次 greedy-epsilon 选出 Q(St,At) 和 Q(St+1,At+1)。

     
    Q Learninng
    Q learning 是 Off Policy 算法

    更新 Q 表格得公式:
    Q(St,At) = Q(St,At) + α * [ Rt+1 +γ * max ( Q(St+1, : ) ) - Q(S, At)] 
     
    SARSA 和 Q learning  差别仅在 下一步的  Q(St+1, At+1) 计算这里不一样。

    关于算法主要有2点:
    1. Q 表格更新 看似是需要用到下一个动作和状态的奖励,似乎是个迭代的过程,如何计算?
    当前的价值 要由 当前(St,At)和(St+1,At+1)的价值来确定,这样迭代下去不就是追溯到结束才能算出第一个动作的价值。其实这里做了简化处理,初始化 Q 表格后,确定性的动作和状态知道后就知道价值了,所以不用考虑那么长远,即 next_obs,reward = env.step(action) ,再根据 next_obs, 根据策略选择(有一定几率随机)next_action, 然后查 next_q 。
    2. 什么是 on Policy 和 off Policy ?
    知乎@三笠 On Policy 与 off Policy 的区别在于:更新价值所使用的方法沿着既定的策略(on Policy)抑或是新策略(off Policy) 。
    Sarsa 当前的Q是是基于既定策略, next_Q选择也是基于按既定策略多走一步得到的 Q。(这里有一定概率不是当前最优的。)
    而Q learning, 当前动作的 Q 既定策略的(有一定随机概率), 但 next_Q 直接选 max(Q(next_obs,:)) 最优的, 不选随机的项。
  • 相关阅读:
    多媒体(2):WAVE文件格式分析
    多媒体(1):MCI接口编程
    EM算法(4):EM算法证明
    EM算法(3):EM算法运用
    EM算法(2):GMM训练算法
    EM算法(1):K-means 算法
    Support Vector Machine (3) : 再谈泛化误差(Generalization Error)
    Support Vector Machine (2) : Sequential Minimal Optimization
    Neural Network学习(二)Universal approximator :前向神经网络
    Neural Network学习(一) 最早的感知机:Perceptron of Rosenblatt
  • 原文地址:https://www.cnblogs.com/parkin/p/13189067.html
Copyright © 2011-2022 走看看