1. Q-learning与Sarsa
两个方法结构相似,都是迭代求解贝尔曼方程,将最后结果按学习率和衰减率扩散到所有状态。
每一个状态都是当前操作得到的奖励,加上下一状态传递过来的奖励值(Sarsa是加上他做当前操作后到达的下一状态的奖励值衰减回来;Q-learning是加上下一状态所有操作得到的最大奖励值传递回来)。
如果程序没有收敛, 奖励会一直往外扩展,直到扩展出去的奖励超过衰减率。如果只有正向奖励,相当于记录了统计上的最短距离。如果有负向奖励或者多种奖励,相当于记录了当前状态做当前操作的期望收益。
2. DQN
DQN将qlearning里的状态操作收益矩阵做成两个神经网络,一个是当前状态当前操作收益(网络1),另一个是下一状态下一操作收益(网络2)。更新依然是当前状态当前操作收益=当前奖励+系数*下一状态最大操作收益。 每次更新时先将网络2固定,更新网络1。更新一段数据后再将网络1之数据拷贝到网络2。
double DQN在网络1更新时,不是直接取网络2算出来的最大值,而是用网络2算出来最大值对应的动作,然后用这个动作去网络1取相应的奖励值进行更新。
dueling DQN将最后的奖励值分成两部分,第一部分相当偏置,第二部分与原来的做法相同,但对第二部分做了标准化,相当于将矩阵行列均值推到了0,这样更新的偏置就自然积累到了第一部分。
3. 策略梯度
如果希望策略网络最后收益最大化,能操作的空间即是改变当前状态的输出动作概率,因为不同动作会对应不同的奖励。如果有一批现成的动作奖励数据,最后网络训练后的结果就是将最大奖励的动作输出概率最大。也即网络对于训练数据的带权值似然估计值最大。每一次状态动作概率的变化是自变量,相对应的奖励变化/概率变化即是策略梯度。