美文网首页
地表最强-强化学习笔记

地表最强-强化学习笔记

作者: 音符纸飞机 | 来源:发表于2021-08-25 15:58 被阅读0次

视频学习:
莫凡视频教程
李宏毅2018强化学习视频教程
马尔科夫决策过程
https://github.com/wangshusen/DeepLearning
Multi-Agent Reinforcement Learning: A Selective Overview of Theories and Algorithms
An Introduction to Deep Reinforcement Learning


术语

注:所有小写字母表示已观测到的值,大写字母表示未观测到的(随机变量)

  • state 当前的场景、状态
  • action 动作
  • agent 做动作的主体、可翻译成智能体
  • policy \pi 状态s下,各种动作的概率密度函数
  • reward 奖励 R_iS_i, A_i有关
  • 状态转移 state istate i+1通常是随机的
    条件概率密度函数

强化学习的随机性来源主要有两个

  • action是随机的 P[A=a|S=s] = \pi(a|s)
  • 状态转移(新状态)是随机的 P[S'=s'|S=s, A=a]=p(s'|s,a)

强化学习状态轨迹:
[(state, action, reward)] (s_1,a_1,r_1), ..., (s_T,a_T,r_T)

  • Return 回报,未来的累计奖励
    U_t = R_t+R_{t+1}+R_{t+2} +...

  • Discounted Return折扣回报,\gamma是折扣率
    U_t = R_t+ \gamma R_{t+1}+ \gamma^2 R_{t+2}+...
    显然在给定的s_tU_t依赖于A_t,A_{t+1},...S_{t+1},S_{t+2},...

  • Action-Value Function 动作价值函数Q(s,a)

U_t的条件期望
含义:如果用policy函数\pi,在s_t状态下做动作a_t的好坏,是否明智

求期望就是对A_{t+1},A_{t+2},...S_{t+1},S_{t+2},...求积分

最优动作价值函数Q^{*}(s_t,a_t)=\max_{\pi}Q_{\pi}(s_t,a_t)
含义:在s_t状态下做动作a_t好不好,就像一个先知,能告诉你每个action的平均回报

  • State-Value Function状态价值函数V(s)
    V_{\pi}(s_t)=\mathbb{E}_{A}[Q_{\pi}(s_t,A)]
    对A求积分,含义:当前局势好不好

强化学习的目标是学习 \pi或者Q^*

强化学习的几种思路

  • Value-based learning
    用神经网络(DQN)近似Q^*,参数学习利用了temporal different (TD) 算法
  • Policy-based learning
    用神经网络(DQN)近似\pi,参数学习利用了policy gradient梯度上升
  • Actor-critic method
    以上两种的结合

Value-based learning

如果我们知道Q^*(s,a),就能当前最好的action
a^* = \argmax_{a}Q^*(s,a)

本质:用神经网络Q(s,a;w)近似Q^*(s,a)

神经网络的输入是s,输出是很多数值,表示对所有可能动作的打分,根据观测到的奖励来更新参数

  • TD算法
    如何训练DQN?实际场景中,完成任务需要很多步的action,如果全部action都结束了,再来更新模型,效果一定很差,那么如何走一步更新一下呢?
    TD target : 实际已经得到的奖励和模型预测未来的奖励之和。
    越接近结束,TD target越准
    TD target(y)和全部都是模型预测的奖励Q(w)计算loss
    L=\frac{1}{2}(Q(w)-y)^2
    其中Q(w)-y被称为TD Error,换个角度,去掉相同的部分,其实就是实际奖励和预测奖励的误差。
    最后用梯度下降更新模型参数,不需要打完游戏再来更新参数。

Q(s_t,a_t;w) \approx r_t+\gamma \cdot Q(s_{t+1},a_{t+1};w)
t时刻未来奖励总和的期望约等于t时刻的奖励加上t+1时刻未来奖励总和的期望

Policy-based learning

本质:用神经网络\pi(a|s;\theta)近似策略函数\pi(a|s)

比如超级玛丽,输入是当前状态,输出是每个操作的概率分布

V_{\pi}(s_t)=\mathbb{E}_{A}[Q_{\pi}(s_t,A)]=\sum_{a}\pi(a|s_t)\cdot Q_{\pi}(s_t,a)

状态价值函数 V(s_t;\theta) = \sum_{a}\pi(a|s_t;\theta)\cdot Q_{\pi}(s_t,a)

给定状态s_t,策略网络越好,V的值越大
目标函数J(\theta)=\mathbb{E}_S[V(S;\theta)]越大越好,利用policy gradient ascent更新参数

Policy Gradient Ascent

观测到状态s,计算策略梯度\frac{\partial V(s;\theta))}{\partial \theta},更新模型参数
\theta \leftarrow \theta+\beta \cdot \frac{\partial V(s;\theta))}{\partial \theta}

  • 如何求策略梯度?


  • 整个算法过程:


Actor-Critic Methods

V_{\pi}(s)=\sum_{a}\pi(a|s)\cdot Q_{\pi}(s,a)\approx \sum_{a}\pi(a|s;\theta)\cdot q_{\pi}(s,a;w)
Actor是策略网络,可以看成是运动员。用神经网络\pi(a|s;\theta)近似策略函数\pi(a|s)
Critic是价值网络,可以看成裁判员,给运动员打分。用神经网络q(s,a;w)近似价值函数Q_{\pi}(s,a)

策略网络
价值网络

训练过程

  1. 观测当前状态s_t

  2. 根据策略网络得到当前action a_t

  3. 实施a_t,然后观察s_{t+1}r_{t}

  4. 用TD算法更新价值网络参数w

  5. 用策略梯度更新策略网络参数\theta

总结:


AlphaGo

主要设计思路

棋谱大小19x19,一共361个点,所以action的数量一共是361个。可以用19x19x2的矩阵代表黑白棋子的状态state

策略网络
状态矩阵:1表示有棋子,0表示没有,黑白棋子分别记录最近8个状态,所以一共是16,还有一个表示当前是黑棋下还是白棋下(全0或者全1) 策略网络
  • 训练三步走
  1. Behavior cloning 通过对人类棋谱有监督的学习(16w局)是一个分类任务,初步学习策略网络 (这一步可有可无)
    • 网络只会对见过的state表现比较好,所以想要战胜它,只需要做一些出乎寻常的操作就行了
  1. 强化学习进一步学习这个网络,自我博弈(利用策略梯度)

    • 一个模型参数需要更新的策略网络作为player,上一个策略网络作为opponent
    • 进行一局比赛得到 s_1,a_1,s_2,a_2, ..., s_T, a_T
    • 奖励 u_1=u_2=...=u_T, 赢了全为1,否则全为-1
    • 计算策略梯度 g_\theta = \sum_{t=1}^{T} \frac{\partial \log \pi (a_t|s_t, \theta)}{\partial \theta } \cdot u_t
    • 更新策略网络 \theta \leftarrow \theta+\beta \cdot g_\theta
  2. 利用策略网络训练一个价值网络

    • 用神经网络 v(s;w) 近似 V_\pi(s)
      两个网络共享卷积层
    • 进行一场比赛
    • 奖励 u_1=u_2=...=u_T, 赢了全为1,否则全为-1
    • 计算Loss: L = \sum_{t=1}^{T} \frac{1}{2} [v(s_t;w)-u_t]^2
    • 更新模型参数
  • 执行的时候用的是Monto Carlo Tree Search (MCTS),利用策略网络和价值网络指导搜索(人类高手在下棋的时候会往前看好几步)
    • 搜索的主要思想
      1. 根据策略网络,在分数高的action中随机选择一个
      2. 自我博弈,根据胜负和价值函数给该动作打分
      3. 选择打分最高的那个action
1.Selection 2.Expansion 3.Evaluation 4.Backup
score(a)=Q(a) + \eta \cdot \frac {\pi (a|s_t; \theta)}{1+N(a)} V(s_{t+1}) = \frac{1}{2}(v(s_{t+1};w)+r_(T)) Q(a_t)=mean(Records) a_t=\argmax_{a}N(a)
其中Q(a)是动作价值,初始值都为0,N(a)表示动作a已经被选择的次数 s_{t+1} 是根据策略函数随机采样模拟动作之后的状态
后面就是自我博弈,根据最终的胜负计算奖励r_{T}
综合考虑奖励和价值函数,对状态 s_{t+1} 打分Record,分数越高胜算越大 计算动作的Q值,循环很多次之后选择被选中次数最多的动作

蒙特卡洛

一种数值算法,靠随机样本对目标做近似
待补充

TD Learning 之 Sarsa算法

  • 用来学习动作价值函数 Q_\pi (s,a)
  • TD target: y_t=r_t+\gamma \cdot Q_\pi (s_{t+1},a_{t+1})
  • Sarsa方法来更新价值网络(critic)

TD Leaning 之 Q-Learning

  • 用来学习Q^*(s,a)
  • TD target: y_t=r_t+\gamma \max_{a} Q^*(s_{t+1},a)

Multi-Step TD Target

多个action之后再更新参数,相当于有累计多次奖励
m-step TD target for Sarsa
y_t=\sum_{i=0}^{m-1} \gamma ^i \cdot r_{t+i}+\gamma ^m \cdot Q_\pi (s_{t+m},a_{t+m})

Experience Replay

经验回放

定义

  • A transition(s_t,a_t,r_t,s_{t+1}), \delta_t
  • Experience: 所有的transition

之前训练方式的缺点:

  • 每个r_t只是用了一次,相当于对经验的浪费
  • s_ts_{t+1} 之间的相关性太强,理论上打乱顺序更好

replay buffer: 最近n个transition,训练的时候每个batch从replay buffer中随机选k个transition 做随机梯度下降

一种对经验回放的改进Prioritized Experience Replay:用非均匀抽样代替均匀抽样

  • 用TD error \delta_t 判断transition的重要性
  • 用不同的学习率(np_t)^{-\beta} 抵消不同样本抽样频率的不用,其中p_t是抽样概率,\beta \in [0,1],实战中先比较小,然后慢慢变大。

Target Network 和 Double DQN

TD target: y_t=r_t+\gamma \cdot \max_aQ(s_{t+1},a;w)
TD error : \delta_t = Q(s_t,a_t;w)-y_t
SGD: w \leftarrow w - \alpha \cdot \delta_t \cdot \frac{\partial Q(s_t,a_t;w)}{\partial w} = w - \alpha \cdot ( Q(s_t,a_t;w) - y_t) \cdot \frac{\partial Q(s_t,a_t;w)}{\partial w}
我们发现在t时刻更新参数的时候,计算梯度的时候用到了y_t,而y_t又包含了对t+1时刻的预测,就出现了bootstapping的问题,自己把自己举起来了

DQN的高估问题

  • 原因一:计算TD target的时候会最大化价值函数
  • 原因二:上面提到的bootstrapping

结论:DQN对价值的高估是非均匀的,非常有害

解决方案:

  1. target network来计算TD targets
    DQNQ(s,a;w),用来控制agent
    target network: Q(s,a,w^-) 用来计算TD targets y_t=r_t+\gamma \cdot \max_aQ(s_{t+1},a;w^-)
    结构一样,参数不一样
  2. double DQN 缓解高估的问题
  • selection: a^* = \argmax_{a}Q^*(s_{t+1},a;w)
  • evaluation: y_t=r_t+\gamma \cdot Q(s_{t+1},a^*;w^-)
compute TD target selection evaluation
naive DQN DQN
using target network Target Network Target Network
Double DQN DQN Target Network

Dueling Network

Optimal advantage function
A^*(s,a) = Q^*(s,a) - V^*(s)
以最优状态函数为基准,最优动作价值函数的优势
Dueling Network
Q^*(s,a) = V^*(s) + A^*(s,a) - \max_{a}A^*(s,a)

A* V* Dueling Network

实际实验中发现把max换成mean效果更好
Q^*(s,a;w) = V(s;w^V) + A(s,a;w^A) - mean_{a}A(s,a;w^A)

数学原理待补充

Multi-Agent 强化学习

四种设定
  • 合作关系 共同的目标,奖励一致,如多个工业机器人协同装配汽车
  • 竞争关系 一方的收益是另外一方的损失,如零和博弈,拳击比赛
  • 合作竞争混合 足球比赛,星际争霸
  • 利己主义 股票自动交易系统,无人车

假设有n个agent,S状态A^i 第i个agent的动作
那么状态转移方程为(条件概率密度函数):p(s'|s,a^1,...,a^n)=\mathbb{P}(S'=s'|S=s,A^1=a1,...,A^n=a^n)

假设R^i表示第i个agent的奖励(Reward),那么
合作关系 R^1=R^2=···=R^n
竞争关系 R^1 \propto -R_2

假设R_{t}^{i}表示第i个agent在t时刻的奖励(reward)
那么回报(return) U_t^i = R_{t}^i + R_{t+1}^i + R_{t+2}^i + ···
折扣回报 U_t^i = R_{t}^i + \gamma R_{t+1}^i + \gamma ^2 R_{t+2}^i + ···

每个agent有自己的策略网络 \pi(a^i|s;\theta^i),不同agent的参数\theta^i可以相同(比如自动驾驶)也可以不相同(比如机器人足球队)

状态价值函数 V^i(s_t;\theta^1,···,\theta^n)=\mathbb{E}[U_t^i|S_t=s_t],依赖于所有策略网络

部分可观测

multi-agent通常假设agent只能看到状态s的一部分 o^io^i \neq s

纳什均衡 Nash Equilibrium

纳什均衡用来判断多个agent的策略网络收敛的标准。
当其他所有agent的策略保持不变,单独优化某一个agent的策略不会得到更好的回报

Multi-Agent 学习的难点

如果直接把single-agent学习的方法直接用到multi-agent上的话,收敛会很困难
原因是一个agent的策略更新会导致其他所有agent策略网络的目标函数J发生变化
所以在训练一个agent策略网络的时候最好能拿到其他agent的信息 (通信)

中心化centralized与去中心化decentralized通信方式
  • Fully decentralized
    agent之间完全没用通信,其实就是上文说的
    每个agent都是一个actor-critic,一个策略网络和一个价值网络


  • Fully centralized
    所有agent把所有信息(observation, actions, rewards)发送给中央控制器central controller,由中央控制器来决定每个agent的action
    agent没有策略网络和价值网络,中央控制器学习n个策略网络、n个价值网络
    主要的问题是执行速度慢,不能实时做决策

  • Centralized training and decentralized execution
    • 中央控制器帮助训练策略网络,运行的时候直接由agent决定action
    • 每个agent有自己的策略网络(actor) \pi(a^i|o^i;\theta^i),中央控制器有n个价值网络(critic)q(\textbf {o} | \textbf {a} ;w^i)

Policy Gradient with Baseline (Reinforce)

在策略梯度中加入baseline,降低方差,使得收敛更快。baseline可以是任何东西,且与A无关



如果b选的比较好,和Q_\pi很近似,那么会减小方差,实际计算中会用蒙特卡洛对期望求近似
  • V_\pi当做b

细节待补充


A2C Advantage Actor-Critic

本质上就是在actor-critic的基础上加上了baseline

复习actor-critic,注意这里用的状态价值网络v作为critic,与之前的q不一样
A2C的训练过程

数学推导待补充

A2C vs. Reinforce

连续控制

Deterministic policy gradient (DPG)

确定策略梯度

Stochastic policy network

相关文章

  • 地表最强-强化学习笔记

    视频学习:莫凡视频教程[https://www.bilibili.com/video/av16921335?fro...

  • 地表最强

    女人啊,你是这个星球上最强大的生物。男人主宰了世界,你们主宰了男人。 任哪个男人也不能轻易的猜出女孩为什么生气;女...

  • 【地表最强】

    强不一定大却肯定厉害 最强当能大小通杀无敌地存在 再强也会有天敌所以善变 遇强越强是真强所以君子自强不息 然而君子...

  • 【地表最强】

    那是一股无形的动力最初弥漫于无垠地表然后占据广邈空间最终渗透大气铸成不灭的历史继续往外扬升以星为伴与光同行 说来巧...

  • 最强地表

    20220520和0521分别播放了周杰伦2013和2019年演唱会。 见证了周杰伦的六年成长, 这张照也看出了,...

  • 强化学习读书笔记 - 01 - 强化学习的问题

    请看原文强化学习读书笔记 - 01 - 强化学习的问题

  • 地表最强——LBJ

    北京时间2017年4月21日,NBA季后赛首轮第三场焦点战,印第安纳步行者主场迎战克里夫兰骑士,本轮系列赛,骑士先...

  • 地表最强,嗯?

    今晚6:48,好久不见的陈先生一手拎着箱水果站在家门口,我跑过去抱住他,但他的眼睛里只看到他女儿,笑眯眯地看着他女...

  • 地表最强老爸

    文|橙子 其实,小时候,三省觉得自己是世界上最不幸福的小孩。因为她的家庭与其他小孩不太一样。幼儿园过母亲节,三省总...

  • 地表最强-伦敦

    我有的时候觉得自己是个假粉。首先胖伦的歌我没听全,其次听过的大部分记不住歌词,更过分的是名字和歌经常对不上号。出了...

网友评论

      本文标题:地表最强-强化学习笔记

      本文链接:https://www.haomeiwen.com/subject/usntfctx.html