什么是DQN(价值学习)?

基础知识

  1. 价值学习的基本想法就是学习出来一个函数近似Q*。

  1. Q*(st,at)与策略π无关,根据当前状态选择动作a的好坏程度。所以Q*可以指导智能体做决策,智能体观测到当前状态st,Q*给所有的动作进行打分,智能体根据分数进行决策,选择分数最高的,这样期望回报最大化。

  1. 强化学习的目标:在游戏结束的时候(假设场景是打游戏)获得的奖励综合越大越好。

DQN

DQN是一种价值学习的方法。

DQN用一个神经网络近似Q*函数(最优价值函数)。这个网络记为Q(s,a,w),w是神经网络的参数,神经网络的输入是状态s,神经网络的输出是很多数值,这些数值是对所有可能的动作的打分,每一个动作对应一个分数。我们通过奖励去学习这个神经网络,这个神经网络给动作打分会出现改进,打分会越来越准

对于不同的问题DQN的结构可能不一样,这里举一个超级玛丽的例子。

将游戏的画面作为输入,使用卷积层将图片变成特征向量,使用几个全连接层将特征映射成输出的向量,这个输出的向量是对每一个动作的打分,向量每一个元素对应一个动作。

什么是DQN(价值学习)?_第1张图片

应用DQN进行游戏

当前观测到st,用DQN将st作为输入给所有的动作打分,选出得分最高的动作作为at,agent做完at后环境会改变状态,用状态转移p函数来随机抽一个新的状态st+1,环境还会告诉我这一步的奖励rt,奖励可以是正负或者零。奖励就是强化学习中的监督信号,DQN要靠奖励来进行训练。有了新的状态st+1,DQN在对所有的动作进行打分,如此循环直到游戏结束。

什么是DQN(价值学习)?_第2张图片

如何训练DQN

强化学习就是根据奖励来更新模型参数,让模型越来越好。

怎么样根据奖励来更新模型参数呢?其中最常用的是TD算法,TD是学习DQN最常用的算法。

TD算法不断重复如下过程:

(1)观察当前状态st和已经执行的动作at

(2)用DQN做一次计算,qt=Q(st,at,w)输入是st输出是对于动作的打分,把输出记作qt

(3)用反向传播对DQN求导得到梯度dt(pytorch和tensorflow,都可以直接自动求梯度)

(4)环境更新新的状态st+1和奖励rt

(5)根据公式求出TD target yt

(6)做一次梯度下降更新模型参数w

什么是DQN(价值学习)?_第3张图片

你可能感兴趣的:(深度强化学习,学习)