【花师小哲】当代炼金术(神经网络)前沿(22)——强化学习蒸馏到transformer
好几天没法专栏了,主要是最近确实没有什么太让人眼前一亮的论文。还是矮子里拔高个吧,先讲这篇吧。主要是能顺带介绍一些东西。


0.这篇文章做了什么
简单来说,这篇文章将一个强化学习策略网络蒸馏成了一个transformer模型。
搞AI的人应该比较好理解,不过还是要介绍一些基本名词的。

1.强化学习RL
不知道大家有没有有意无意中看过一些AI的好玩的文章,说在游戏中应用强化学习出现了很多离谱的事情,例如在赛艇比赛中反复绕圈碰一个点来增加分数而不考虑冲向重点;在养成游戏中让模拟生物生育后做煲仔饭(因为在那个游戏中生育不耗能量而进食能获得能量和分数)。其实背后都是强化学习。强化学习的最常见应用就是在游戏中了,或者说,强化学习主要是来做决策的,其核心可以看做是一个策略网络(注:一开始的强化学习,做决策的并不是神经网络,只不过目前大部分研究都用神经网络了)。
不过,强化学习真正地目的其实是从环境中学习,或者来处理一些监督学习搞不定的事情(非严谨说法,但应该更好理解)。我们知道,神经网络需要一个损失函数来评估网络的性能好坏,有了损失函数,我们才有办法去反向修改网络权重。但是有时候我们没法直接定义或者很难定义这么一个函数,例如一幅画到底画的好不好看。这时候我们就需要另外某种东西来告诉我们一个数值,这个东西可以是另一个AI程序,可以是传感器获取的环境数值,也可以是人类的反馈。
没错,ChatGPT之所以那么强就是因为它是从人类反馈中进行强化学习(即RLHF)的,所以它的语言能力和人类相似,让我们和它对话感觉比其他很多产品更舒服。
虽然其实强化学习还有很多值得研究的话题,但确实在很多领域都展现出了其强大的能力,AlphaGO、ChatGPT,造成如此轰动的AI都离不开强化学习。

2.离线强化学习
机器学习是分为离线(offline)和在线(online)的。在监督学习中常见的是离线的,在线是一个攻克方向,再强化学习这里差不多是反过来的。
稍微解释一下,离线是说我们的数据是一开始全部在本地的,我们可以任意访问和处理这些数据;而在线是说我们是要从别的地方一个个获得数据的,通常在流媒体里,例如我要在监控摄像头上装人物检测AI,数据只能是实时产生的而且你还要在足够短的时间内进行分析。
而强化学习天生是要和环境打交道的,所以经典的强化学习算法都是在线的。现今离线强化学习是一个重要研究方向。
一般的离线算法其实就是在线训练好策略网络后再把这个策略网络换成一个不需要交互的新网络(当然也有别的做法),或者说,把一个需要与环境交互的策略网络编程某种更通用的决策器。本文就是采取类似的做法的。

3.知识蒸馏
蒸馏也是AI近期研究比较火的一个领域,仍然是因为模型规模增大的锅。
模型越大,推理或预测的速度越慢;模型太大,也占用很多存储空间。换句话说,有时候我们是完全用不到那么大的模型的。蒸馏即是说我们用现有的强大的大型神经网络去训练一个更小体量的神经网络,或者说用教师网络去训练一个学生网络。学生的主要目的是从教师网络中学到“经验”或拟合某种结构。
一般来说,其实是运行教师网络获得输入输出对来训练学生网络的,这样做是完全不用担心数据量不够的问题的。
如果蒸馏方法选的好的话,小模型在一个特定领域的性能可能比大模型还要好。
当然,不是说某种网络只能蒸馏成一个小号的自己,教师网络和学生网络可以是完全不同结构的网络的。例如有人把神经网络蒸馏成一种类似于决策树的结构。
本篇论文也是做了这样的蒸馏。

4.本篇论文的方法
经过上面的说明这篇文章其实也就差不多了。
本篇论文其实是借鉴了语言模型里的ICL(上下文学习)方法。语言模型可以根据上下文来给出不同的回答,这个过程是没有梯度传播的,或者说模型的参数本身是不会变的。

于是作者就将强化学习的策略网络蒸馏成一个类似于语言模型的transformer网络,主要是根据历史信息来做决策。既然是上下文学习,说明这个策略已经具有一定的通用性了。
总体来说,这个研究还是有点意思的。