【强化学习】强化学习的笔记1——基本概念


本篇博客是对b站的一门强化学习的课程的学习笔记,视频的链接如下:
深度强化学习(全)

概率论的基本知识:

  • 随机变量:一个变量,值取决于随机事件的结果
    • 大写:随机变量,小写:观测值
  • 概率密度函数(PDF)
  • 期望
    • 连续分布:$ E[f(X)]=\int_xp(x)*f(x)dx $
    • 离散分布:$ E[f(x)]=\sum_{x∈X}p(x)*f(x) $
  • 随机抽样

强化学习中的专业术语(terminology)

  • 状态(state)
  • 动作(action)
  • 智能体(agent)
  • 策略(policy):$ \pi(a|s)=P(A=a|S=s) $
  • 奖励(reward):R
  • 状态转移(state transition):状态转移是随机的,随机性从环境而来
    • $ p(s'|s,a)=P(S'=s'|S=s,A=a) $

智能体与环境交互:


强化学习中的随机性

  • 动作具有随机性,根据策略函数随机抽样得到

  • 状态转移具有随机性,环境用状态转移函数算出概率,然后进行随机抽样得到下一个状态

使用AI玩游戏

  • 观测当前状态s1
  • 用策略函数做出动作a1
  • 观测新的状态s2以及给智能体奖励r1
  • 用策略函数做出动作a2
  • ...

最终就得到了一个关于(状态,动作,奖励)的轨迹(trajectory):
$ s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T $

reward和return

  • return:回报,也可以成为未来累计奖励(cumulative future reward)
    $ U_t=R_t+R_{t+1}+R_{t+2}+R_{t+3}+... $

现在的奖励比未来的奖励要更重要,因此Rt+1的权重应该比Rt要低,因此需要定义

  • discounted return:折扣回报
    • γ:discount rate
    • $ U_t=R_t+\gamma R_{t+1}+\gamma2R_{t+2}+\gamma3R_{t+3}+... $

Ut是随机的,随机性源于两个方面:

  • 动作是随机的:$ P[A=a|S=s]=\pi(a|s) $
  • 下一个状态是随机的:$ P[S'=s'|A=a,S=s]=p(s'|a,s) $
  • 对于任意时刻i≥t,奖励Ri取决于Si和Ai
    • 对于给定的st,汇报Ut取决于随机变量~ A_t,A_{t+1},A_{t+2,...}和S_{t+1},S_{t+2,...} ~

价值函数(value function)

  • 策略π的动作价值函数:$ Q_{\pi}(s_t,a_t)=E[U_t|S_t=s_t,A_t=a_t] $
    • 最优动作价值函数:$ Q^*(s_t,a_t)=\max_{\pi}Q_{\pi}(s_t,a_t) $
    • 动作价值函数计算了使用策略π时,智能体处于状态s时采用动作a是否明智
  • 状态价值函数:$ V_{\pi}(s_t)=E_A[Q_{\pi}(s_t,A)]=\sum_a\pi(a|s_t)*Q_{\pi}(s_t,a) $
    • 动作是连续的:$ V_{\pi}(s_t)=E_A[Q_{\pi}(s_t,A)]=\int\pi(a|s_t)*Q_{\pi}(s_t,a)da $
    • 状态价值函数计算了使用策略π时,当前状态s是好是坏

AI控制智能体

  • 策略:$ a_t~\pi(*|s_t) $
  • 最优动作价值函数:$ a_t=argmax_aQ^*(s_t,a) $

OpenAI Gym是强化学习最常用的标准库
示例:

import gym

env = gym.make('CartPole-v0')
state = env.reset()

for t in range(100):
    env.render()
    print(state)

    action = env.action_space.sample()
    state, reward, done, info = env.step(action)
    if done:
        print("Finished")
        break
    

env.close()