1. 策略梯度算法

强化学习有3个组成部分:演员(actor)、环境奖励函数。环境与奖励函数不是我们可以控制的,它们是在开始学习之前给定的。我们唯一需要做的就是调整演员里面的策略,使得演员可以得到最大的奖励

策略一般记作π\pi。假设我们使用深度学习来做强化学习,策略就是一个网络。网络里面有一些参数,我们用θ\theta来代表π\pi的参数。网络的输入是智能体看到的东西,输出是我们可以执行的动作,有几个动作,输出层就有几个神经元

我们把初始状态记作s1s_1,把第一次执行的动作记作a1a_1,把第一次执行动作以后得到的奖励记作r1r_1。不同的人有不同的记法,有人觉得在s1s_1执行a1a_1得到的奖励应该记为r2r_2,这两种记法都可以

一场游戏称为一个回合。将这场游戏里面得到的所有奖励都加起来,就是总奖励(total reward),也就是回报,我们用RR来表示它

在一场游戏里面,我们把环境输出的ss与演员输出的动作aa全部组合起来,就是一个轨迹,即

τ={s1,a1,s2,a2,,st,at}\tau = \{ s_1, a_1, s_2, a_2, \cdots, s_t, a_t \}

给定演员的参数θ\theta,我们可以计算某个轨迹τ\tau发生的概率为

pθ(τ)=p(s1)pθ(a1s1)p(s2s1,a1)pθ(a2s2)=p(s1)t=1Tpθ(atst)p(st+1st,at)\begin{aligned} p_\theta \left( \tau \right) &= p\left( s_1 \right) p_\theta \left( a_1 | s_1 \right) p\left( s_2|s_1,a_1 \right) p_\theta \left( a_2 | s_2 \right)\cdots \\ &= p\left( s_1 \right) \prod_{t=1}^T p_\theta \left( a_t | s_t \right) p\left( s_{t+1}|s_t,a_t \right) \end{aligned}

p(st+1st,at)p\left( s_{t+1}|s_t,a_t \right)代表的是环境,通常我们无法控制环境,因为环境是设定好的。我们能控制的是pθ(atst)p_\theta \left( a_t | s_t \right)

我们把轨迹所有的奖励rr都加起来,就得到了R(τ)R\left( \tau \right),其代表某一个轨迹τ\tau的奖励。我们要做的就是调整演员内部的参数θ\theta,使得R(τ)R\left( \tau \right)的值越大越好