强化学习学习
简介
- 强化学习是解决这样的一类问题:
- 每一步不能及时的获得标签,也就是要求强制在线
- 而且并不是执行操作后会马上获得结果,可能要等好多步才能获得结果
- 所以强化学习的过程是不断的环境互动,以此来总结学习
简单概念
- 状态(states): 顾名思义
- 动作(actions): 顾名思义
- 奖励(rewards): 进入每个状态,能带来正面或负面的
- 方案(policy): 每个状态所要采取的动作方案
奖赏统计模式
T步累积奖赏
$$
Q(k)=\frac{1}{T}\sum_{i=1}^T v_i\
Q_T(k)=\frac{1}{T}((T-1)*Q_{T-1}(k)+v_T)=Q_{T-1}(k)+\frac{1}{T}(v_T-Q_{T-1}(k))
$$
- 为什么奖赏要除以总数
- 因为不能直接累加,否则就会陷入不停的往次优的地方徘徊的状态
- 容易被异常奖赏带偏
$\gamma$折扣累积奖赏
$$
Q_{T}(k)=\sum_{t=0}^{∞}\gamma^tv_{t}=Q_{T-1}(k)+\gamma(v_T-Q_{T-1}(k))
$$
- 为什么要折扣
- 1、和上面的哪个一样
- 2、和上面哪个一样
- 3、可以调整$\gamma$来控制前面的步骤对自身的影响程度而不是平等看待,有一定的记忆作用
小trick
$\epsilon$-贪心
- 类似模拟退火的方法
- 在$\epsilon$在概率下每次选能获得回报最大的动作
- 在$1-\epsilon$的概率下选择随机的方式
梯度
- 在更新一个值的时候,不用直接赋值,而是加上残差的梯度,类似梯度下降
贝尔曼方程
- 定义U(S)为当前状态下能得到的最优值,Q(S,A)为当前状态S采取动作A能得到的最优值
$$
U(S)=R(S)+\gamma\sum_{S’}P(S->S’)U(S’)
$$
$$
Q(S,A)=\sum_{S’}P(S’->a)[R(S’->a)+\gamma\sum_{a’}Q(s’,a’)]
$$
当没有概率转移时,上述取最大值
- 能够证明(省略大量数学推导)
$$
U_{max}(S)=Q(S,A)_{max}
$$
Q learning(也叫时序差分学习,TD算法)
Q learning非常简单,就是根据state和action来建立一个表格Qtable
- 这个Qtable对应当前的Q(S,A)
$$
Q(S,A)=Q(S,A)+\alpha(R(S)+\gamma(\max_{A’}Q(A’,S’)-Q(A,S))))
$$- $\alpha $为学习率
DQN(Deep Q learning)
- Q learning 显然有一个很大的缺点,Qtable容易太大和维度灾难
值函数近似
把值函数(如上面的Q和U)表示为线性模型,如$U_{\theta}=\theta^Tx$
$\theta$为参数向量,x为状态向量就是上面的S,动作的元素隐含在参数向量中
为了接近真实值$U^{\pi}(x)$
$$
E_{\theta}=E_{x\text{~}\pi}[(U^{\pi}(x)-U(x))^2]
$$- 然后用Q learning的那一套就行
对于一些很高维的模型怎么办
- 使用核函数进行高维映射
加上神经网络
- 我们知道上面的$r+\gamma\max_{a’}Q(s’,a’,w)$可作为target,所以这个就能作为神经网络中的target
所以有NIPS 2013如下
ht