学习资料:
深度强化学习课程-王树森
目录
- 一、 概率论知识
- 二、 强化学习专业术语
- 三、 强化学习的随机性来源
-
- 1. action
- 2. state transition
- 四、 Rewards, Returns & Value Fuctions
-
- 1. Return
- 2. Value Function
- 五、 强化学习用AI控制agent
-
- 1. Policy-based learning
- 2. Value-based learning
一、 概率论知识
- Random Value
- 随机变量: X X X
- 随机变量的观测值(没有随机性): x 0 , x 1 , x 2 . . . . . . x_0,x_1,x_2...... x0,x1,x2......
- X \mathcal X X:随机变量 X X X的定义域
- Probability Density Function:随机变量在某个确定的取值点附近的可能性
- 概率密度函数: p ( x ) p(x) p(x)
- 连续分布: ∫ X p ( x ) d x = 1 \int_\mathcal Xp(x)dx = 1 ∫Xp(x)dx=1
- 离散分布: ∑ x ∈ X p ( x ) = 1 \sum_{x\in \mathcal X}p(x) = 1 ∑x∈Xp(x)=1
- Expectation:函数 f ( x ) f(x) f(x)的期望
- 期望: E [ f ( x ) ] E[f(x)] E[f(x)]
- 连续分布: E [ f ( x ) ] = ∫ X p ( x ) ⋅ f ( x ) d x E[f(x)]=\int_\mathcal Xp(x)\cdot f(x)dx E[f(x)]=∫Xp(x)⋅f(x)dx
- 离散分布: E [ f ( x ) ] = ∑ x ∈ X p ( x ) ⋅ f ( x ) E[f(x)]=\sum_{x\in \mathcal X}p(x)\cdot f(x) E[f(x)]=∑x∈Xp(x)⋅f(x)
- Random Sampling
二、 强化学习专业术语
- agent:动作的发出者
- policy:策略 π \pi π,根据观测到的状态做出决策来控制agent运动
- 强化学习学的就是policy函数
- agent动作随机,根据policy来做动作
- reward:奖励 R R R
- agent做出一个动作后会得到一个奖励,通常需要自己定义
- 奖励定义的好坏十分影响强化学习的结果
- 强化学习的目标:获得的奖励总和尽量高
- state transition:状态转移
- 当前状态下做出一个动作后转移到新的状态
- 状态转移可以是确定的也可以是随机的,通常是随机的(随机性来源于环境)
- 状态转移函数 p ( s ′ ∣ s , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) p(s'|s,a)=P(S'=s'|S=s,A=a) p(s′∣s,a)=P(S′=s′∣S=s,A=a)
- trajectory:轨迹 (state, action, reward)
- s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , . . . , s T , a T , r T s_1,a_1,r_1,s_2,a_2,r_2,...,s_T,a_T,r_T s1,a1,r1,s2,a2,r2,...,sT,aT,rT
- agent与environment交互
- 环境给出当前state s t s_t st
- agent根据 s t s_t st做出动作 a t a_t at
- 环境更新状态state为 s t + 1 s_{t+1} st+1,并给agent奖励 r t r_t rt
- 状态、动作奖励等变量如果被观测到了就用小写字母表示,没被观测到就是随机变量用大写字母表示
三、 强化学习的随机性来源
1. action
2. state transition
-
环境用状态转移函数 p ( ⋅ ∣ s , a ) p(\cdot |s,a) p(⋅∣s,a)算出概率,用概率随机抽样得到下一个状态 S ′ S' S′
P [ S ′ = s ′ ∣ S = s , A = a ] = p ( s ′ ∣ s , a ) P[S'=s'|S=s,A=a]=p(s'|s,a) P[S′=s′∣S=s,A=a]=p(s′∣s,a)
四、 Rewards, Returns & Value Fuctions
1. Return
Return:回报(aka cumulative future reward,即未来累计奖励)
- t t t时刻的回报 U t = R t + R t + 1 + R t + 2 + R t + 3 + ⋯ U_t = R_t+R_{t+1}+R_{t+2}+R_{t+3}+\cdots Ut=Rt+Rt+1+Rt+2+Rt+3+⋯ 从 t t t 时刻的奖励开始一直加到结束
- 未来的奖励 R t + 1 R_{t+1} Rt+1没有现在的奖励 R t R_t Rt值钱→ R t + 1 R_{t+1} Rt+1的权重应低于 R t R_t Rt
Discounted return:折扣回报(aka cumulative discounted future reward)
- γ \gamma γ:折扣率, γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ∈[0,1],超参数,需要自己调
- 未来的权重和现在一样: γ = 1 \gamma=1 γ=1
- 奖励越不重要, γ \gamma γ越小
- t t t时刻的折扣回报 U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + ⋯ U_t = R_t+\gamma R_{t+1}+\gamma ^2R_{t+2}+\gamma ^3 R_{t+3}+\cdots Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+⋯
2. Value Function
Value Function:价值函数
U t U_t Ut是随机变量,依赖于未来的所有动作 A t , A t + 1 , A t + 2 , ⋯ A_t,A_{t+1},A_{t+2},\cdots At,At+1,At+2,⋯以及未来的所有状 S t , S t + 1 , S t + 2 , ⋯ S_t,S_{t+1},S_{t+2},\cdots St,St+1,St+2,⋯
Action-value Function:动作价值函数
与当前的状态 s t s_t st和动作 a t a_t at以及policy函数 π \pi π有关
Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_{\pi}(s_t,a_t)=E[U_t|S_t=s_t,A_t=a_t] Qπ(st,at)=E[Ut∣St=st,At=at]
直观意义:已知policy函数 π \pi π, Q π Q_\pi Qπ给当前状态下所有的动作 a a a打分,从而得知动作的好坏
Optimal action-value function:最优动作价值函数
对 Q π Q_\pi Qπ关于 π \pi π求最大值,即选择使用让 Q π Q_\pi Qπ值最大的 π \pi π
Q ∗ ( s t , a t ) = m a x π Q π ( s t , a t ) Q^*(s_t,a_t)=\underset{\pi}{max}\space Q_\pi(s_t,a_t) Q∗(st,at)=πmax Qπ(st,at)
直观意义:观测到状态 s t s_t st后对动作 a a a做评价,agent可以根据此对动作做出决策
State-value function:状态价值函数
对 Q π Q_\pi Qπ关于动作 A A A求期望把 A A A消掉,得到的 V π V_\pi Vπ只与 π \pi π和状态 s s s有关
V π ( s t ) = E A [ Q π ( s t , A ) ] = ∑ a π ( a ∣ s t ) ⋅ Q π ( s t , a ) V_\pi(s_t)=E_A[Q_\pi(s_t,A)]=\sum_a\pi(a|s_t)\cdot Q_\pi (s_t,a) Vπ(st)=EA[Qπ(st,A)]=a∑π(a∣st)⋅Qπ(st,a)
V π ( s t ) = E A [ Q π ( s t , A ) ] = ∫ π ( a ∣ s t ) ⋅ Q π ( s t , a ) d a V_\pi(s_t)=E_A[Q_\pi(s_t,A)]=\int\pi(a|s_t)\cdot Q_\pi (s_t,a)\space da Vπ(st)=EA[Qπ(st,A)]=∫π(a∣st)⋅Qπ(st,a) da
直观意义:
- 已知policy函数 π \pi π,可以判断出当前的局势如何(状态越好数值越大)
- 判断policy函数 π \pi π的好坏。 π \pi π越好, E S [ V π ( S ) ] E_S[V_\pi(S)] ES[Vπ(S)]越大
五、 强化学习用AI控制agent
1. Policy-based learning
策略学习:学习policy函数 π ( a ∣ s ) \pi(a|s) π(a∣s),用 π \pi π控制agent做动作:
- 每观测到一个状态 s t s_t st,把 s t s_t st作为policy函数的输入, π \pi π函数输出每一个动作的概率
- 用得到的概率做随机抽样得到 a t ∼ π ( ⋅ ∣ s t ) a_t\sim\pi(\cdot|s_t) at∼π(⋅∣st)
- agent执行动作 a t a_t at
2. Value-based learning
价值学习:学习最优价值函数 Q ∗ ( s , a ) Q^*(s,a) Q∗(s,a),用 Q ∗ Q^* Q∗控制agent做动作:
-
每观测到一个状态 s t s_t st,把 s t s_t st作为 Q ∗ Q^* Q∗函数的输入,用 Q ∗ Q^* Q∗函数对每一个动作做评价,得到每一个动作的Q值
-
选择让 Q ∗ Q^* Q∗函数最大化的动作 a a a作为下一个动作 a t a_t at: a t = a r g m a x a Q ∗ ( s t , a ) a_t=argmax_aQ^*(s_t,a) at=argmaxaQ∗(st,a)
-
强化学习的任务就是学习 π ( a ∣ s ) \pi(a|s) π(a∣s)函数或 Q ∗ ( s , a ) Q^*(s,a) Q∗(s,a)函数
-
强化学习的目的是学会怎样控制agent,让agent根据当前的状态 s t s_t st来做出相应的动作 a t a_t at,争取在未来得到尽量多的奖励
-
常用标准库:OpenAI Gym https://gym.openai.com/