A3C(Asynchronous advantage actor-critic )/异步优势actor-critic 算法

A3C(Asynchronous advantage actor-critic )/异步优势actor-critic 算法_第1张图片

     

  • 回忆下之前的DQN算法,为了方便收敛使用了经验回放的技巧。那么我们的Actor-Critic是不是也可以使用经验回放的技巧呢?当然可以!不过A3C更进一步,还克服了一些经验回放的问题。经验回放有什么问题呢? 回放池经验数据相关性太强,用于训练的时候效果很可能不佳。举个例子,我们学习下棋,总是和同一个人下,期望能提高棋艺。这当然没有问题,但是到一定程度就再难提高了,此时最好的方法是另寻高手切磋。
  •  A3C的思路也是如此,它利用多线程的方法,同时在多个线程里面分别和环境进行交互学习,每个线程都把学习的成果汇总起来,整理保存在一个公共的地方。并且,定期从公共的地方把大家的齐心学习的成果拿回来,指导自己和环境后面的学习交互。
  • 通过这种方法,A3C避免了经验回放相关性过强的问题,同时做到了异步并发的学习模型。
  •  我用神经网络举例;实际上你可以用线性函数、kernel等等方法做函数近似。
  •  Actor(玩家):为了玩转这个游戏得到尽量高的reward,你需要实现一个函数:输入state,输出action,即上面的第2步。可以用神经网络来近似这个函数。剩下的任务就是如何训练神经网络,让它的表现更好(得更高的reward)。这个网络就被称为actor
  •  Critic(评委):为了训练actor,你需要知道actor的表现到底怎么样,根据表现来决定对神经网络参数的调整。这就要用到强化学习中的“Q-value”。但Q-value也是一个未知的函数,所以也可以用神经网络来近似。这个网络被称为critic。

A3C(Asynchronous advantage actor-critic )/异步优势actor-critic 算法_第2张图片

  • Actor-Critic的训练。
  1.        Actor看到游戏目前的state,做出一个action。
  2.        Critic根据state和action两者,对actor刚才的表现打一个分数。
  3.        Actor依据critic(评委)的打分,调整自己的策略(actor神经网络参数),争取下次做得更好。
  4.        Critic根据系统给出的reward(相当于ground truth)和其他评委的打分(critic target)来调整自己的打分策略(critic神经网络参数)。
  5.        一开始actor随机表演,critic随机打分。但是由于reward的存在,critic评分越来越准,actor表现越来越好。

 

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