强化学习入门概览

一、把机器学习按照学习方式分类:

监督式学习、无监督式学习、半监督式学习、强化学习

二、预备知识

随机变量:用大写字母表示,取值取决于某个随机事件的结果。

随机事件的结果:用小写字母表示,表示对随机变量的的观测值。

概率密度函数:是一个取值在[0,1]区间的函数,反映了随机变量等于某个值的概率。

三、强化学习基本概念

以下内容总结自B站:深度强化学习(Deep Reinforcement Learning)_哔哩哔哩_bilibili

以超级玛丽游戏为例,介绍强化学习基本概念(有些不太严谨,但是能快速入门):

   

1、Agent(智能体):

会做动作的主体,例如:超级玛丽游戏里的马里奥。

2、Environment(环境):

超级玛丽游戏程序。

3、State(状态 s):

超级玛丽游戏的一帧画面。

4、Action(动作 a):

马里奥做的动作,比如:向上跳,前进,后退。

5、Policy(策略 \pi

控制Agent做动作。

策略\pi: \pi(s,a) \mapsto [0,1],是一个概率密度函数

策略\pi 定义为:\pi(a | s) = \mathbb{P}(A=a | S=s)表示给定状态s,做出动作a的概率。

例如:\pi (left|s)=0.2; \pi(right|s)=0.1; \pi(up|s)=0.7,表示在状态s下,马里奥向左走、向右走、向上跳的概率分别是0.2,0.1,0.7.

强化学习可以就学策略\pi,得到了策略\pi,就能控制Agent的动作(控制马里奥打赢游戏)了。

注意:策略\pi是一个概率密度函数。在给定状态s时,Agent的动作应该是从所有可能的动作中依据\pi这个概率密度函数随机抽样出来的(即具有随机性),而不能把策略\pi设为某个固定值,设为固定值在双方博弈时肯定输(想象石头剪刀布的例子,固定出布肯定输)。

Reward(奖励 R):

Agent做出一个动作,环境就会给一个奖励(需要自己定义,如何定义奖励见仁见智)。

例如:马里奥吃到一个金币,奖励R=+1;赢得游戏,奖励R=+10000;被敌人打死,奖励R=-10000;什么也没发生,奖励R=0.

强化学习的目标是奖励的总和尽量大。

State transition(状态转移p):

每当Agent做一个动作,状态就会变化(马里奥向上跳一下,屏幕就发生了变化)。

状态转移的定义:p(s^\prime | s, a) = \mathbb{P}(S^\prime = s^\prime | S = s, A = a),是一个条件概率密度函数表示在状态s做出动作a的条件下,状态变化为s'的概率。状态转移是随机的,因为是环境(游戏程序)决定了下一个状态是什么,而Agent并不知道状态转移函数具体是什么。

例如:马里奥向上跳了一下,此时敌人向左移动的概率是0.8,向右移动的概率是0.2. 但我们不知道这个0.8和0.2的概率分布,只有环境自己知道,因此状态转移具有随机性。

强化学习中随机性的两个来源:

(1)动作具有随机性,每次Agent做的动作是依据策略\pi(a,s)随机抽样决定的;

(2)状态具有随机性,下一个状态总是环境根据状态转移函数p(s^\prime | s, a)随机抽样得到的。

用AI玩游戏的简单过程:

观察到一帧画面(state s1)→ 做动作a1→观察到一帧画面(state s2)和奖励r1 → 做动作 a2 →……

(state, action, reward) 轨迹:s1, a1, r1, s2, a2, r2, ...

回报(Return U_t 

Return(回报 U_t):也叫cumulative future reward(未来奖励的累计),表示t时刻开始未来执行一组动作后能够获得的奖励之和。

U_t = R_t + \gamma R_{t+1} + \gamma ^2R_{t+2} + \gamma ^3R_{t+3} + \cdots

\gamma是折扣因子,取[0,1]之间。未来的奖励不确定,所以需要在未来奖励上打个折扣。

在任意时刻tR_i值依赖于S_iA_iS_iA_i分别是从策略函数\pi和状态转移函数p抽样得到的,因此R_i是随机的,从而U_t也是随机的。

给定状态s_t,随机变量回报U_t依赖于以下随机变量(t时刻及之后的所有动作,以及t+1时刻及之后的所有状态):

A_t, A_{t+1},A_{t+2}, \cdots, S_{t+1},S_{t+2}, \cdots

Agent的目标就是使折扣回报U_t的值越大越好。

Action-value function(动作价值函数 Q(s,a)

基于策略\pi的动作价值函数记为:Q_{\pi}(s_t,a_t) = \mathbb{E}[U_t|S_t = s_t, A_t = a_t]表示t时刻状态s_t下做动作a_t之后能获得的回报的期望。

这里U_t本来是和A_t, A_{t+1},A_{t+2}, \cdots, S_{t+1},S_{t+2}, \cdots都相关,A和S都是随机变量,其值需要分别从策略\pi和状态转移函数p随机抽样获得,但通过求期望可以把t时刻之后的动作和状态都去掉,因此Q_\pi(s_t, a_t)只依赖于策略\pi,状态s_t和动作a_t。 策略\pi 不同,则期望值不同 。

动作价值函数Q_\pi(s_t, a_t)的现实意义:如果用策略\pi ,我们能知道在状态s_t下做动作a_t是否明智,即Q_\pi(s_t, a_t)会对动作空间中的每一个动作a_t打分。如果有了Q_\pi(s_t, a_t),Agent就能根据Q_\pi(s_t, a_t)对动作的评价做决策,选择得分最高的动作。

用不同的策略\pi函数,会得到不同的Q_\pi(s_t, a_t)

下面尝试把Q_\pi(s_t, a_t)中的\pi去掉:对Q_\pi(s_t, a_t)求关于\pi的最大值:

Optimal action-value function(最优动作价值函数Q^* (s, a)Q^*(s_t,a_t)):

Q^*(s_t,a_t) = max_\pi Q_\pi(s_t, a_t)表示在状态s_t下,做 a_t能得到最好的回报。

最优动作价值函数的现实意义: 在状态s_t下,会对动作空间中的每一个动作a_t打分,选取最高分对应的动作a_t即可。 

State-value function(状态价值函数V_\pi(s_t)):

基于策略\pi对当前状态s_t打分,用于评价当前状态是好是坏。

V_\pi(s_t)也能评价策略\pi的好坏。

状态价值函数只跟策略\pi和t时刻的状态 s_t有关,将动作a作为随机变量A,求关于A的期望就能把它消掉。具体做法:先用动作空间中做每个动作的概率乘以它对应的价值,然后把乘积的结果相加。  

 

四、AI如何控制Agent的动作?

两种途径:

  1. 得到一个好的策略函数\pi(a|s),每观测到一个状态s_t,就根据概率密度函数\pi(a|s)随机抽样一个动作a_ta_t \sim \pi(\cdot | s_t)
  2. 得到一个最优动作价值函数Q^*(s,a), 每观测到一个状态s_t,就选择使状态价值函数值最大的动作 a_ta_t = argmax_a Q^*(s_t, a)

学习的几种思路:

  1. 得到一个好的策略函数\pi(a|s),对应的强化学习方法为:Policy-based learning(策略学习),使用神经网络Policy network来近似\pi(a|s),使用策略梯度(policy gradient),通过梯度上升来学习神经网络的参数。
  2. 得到一个最优动作价值函数Q^*(s,a), 对应的强化学习方法为:Value-based learning(价值学习),使用神经网络Deep Q network(DQN)来近似学习Q^*(s,a),使用时间差分(TD:temporal different)算法来学习神经网络的参数。
  3.  Actor-critic method:Policy network + Value network.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值