【强化学习】强化学习的笔记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()