AI的可解释性问题可太吸引人了,没人能说清楚为啥GPT具有这么强的能力,所以很多人都说这是大力出奇迹,大语言模型的涌现能力。
最近OpenAI发了一篇paper来试图解释这个问题,Language models can explain neurons in language models,今天我们就来看看这篇论文。
Explanation
那解释大模型从何处入手呢?一般来说,是分而治之,先理解每个神经元是怎么工作的。那如何理解?第一次看到这个问题,我其实还挺百思不得其解的,怎么根据神经元的输出来知道它的作用呢?神经元的输出的就是数字,怎么根据数据来判断它的功能呢?
说穿了很简单,和生物神经元类似,根据神经元何时起反应(activate),来猜测它的作用。比如如果一个神经元每次读到带ing后缀的词语就输出大数值,那么这个神经元就可以被认为是一个进行时神经元。所以实际上解释一个神经元,我们只需要提供提示词和神经元的激活值就可以了,也就是若干【词-激活值】对。
传统的方法是把这些交给人工专家来解释,但是这对于参数量多达十亿的大模型显然不现实。所以OpenAI决定用魔法打败魔法,用AI来解释AI,让GPT4根据提示词-激活值来做出解释。
在这篇文章里,为了方便处理,激活值会被归一化到0-10范围,并被离散成整数值,0以下映射到0,最大激活映射到10。同时由于对于大部分提示词,单个神经元的激活值都是0,只有较少比例是非0。如果把这些都输入给GPT4来做解释,发现给出的解释的准确性较低,相反,如果去掉0值,只保留非0的【词-激活值】对, GPT4往往能给出准确性更高的解释。整个工作流程类似于下面这张图:
Scoring
现在我们拿到GPT4对某个神经元的解释了,那如何知道这个解释得好不好呢?简单的方法是和人类专家对比,让人类专家来评分。
这篇论文里提出了一个fancy的方法,让GPT4来根据解释模拟该神经元,这样我们就可以通过对模拟神经元与真实神经元做比较来对该解释进行打分。
怎么打分,简单的方法是直接用真实激活值和模拟激活值的方差。这里存在两个问题,一个是分布不同,模拟激活值的分布是0-10, 而真实激活值是任意分布的。所以这里需要一个校准行为,将模拟激活值校准后再和真实值去对比 。另外一个问题就是只对比当前神经元的激活值是否真的有意义呢?有可能这个神经元对模型的最终输出影响很小,即便偏差很大也不影响最终输出。论文里就测试了两种,一种是对比激活值,另外一种是对比整个模型的输出,发现结果曲线是基本吻合的。
整个框架大概长这样[1]:
流程长这样:
Revision
论文里提到了一个有意思的Score Revision,核心思想是让GPT4根据解释生成examples,将这些examples再次输入给神经元,通过神经元的激活值来验证当前的解释。
论文中给出了这样一个例子:下面的绿色标注的词汇是当前神经元输出激活值较高的词汇,输入给GPT4,GPT4认为这个神经元的作用是寻找"All"。
然后GPT4根据这个生成了大量的exapmle,这些example里大部分都包含All。再次将example输入给神经元,我们发现神经元对第二个例子中的all的输出激活值并不高,最后总结发现,这个神经元的作用是寻找"not All", 不是“all”。
论文中有一张对比图,是对GPT2中神经元进行解释的score,其中revision便是加入了上述的调整,可以看到,revision相比baseline,score是有明显提升的。
Results
那GPT4有没有成功解释神经元呢?论文给出了下面的表格[2],即便是最强大的GPT4作为explainer model,拿到的explaination score也是很低的,只有0.035,可以说大部分神经元都没有很好的解释。当然就算换成人类来解释,score也还是很低的。所以更大的可能是大部分神经元的就不具备可解释的功能。
所以,看了半天,结果大概率还是不可解释。。
现在的大模型铺天盖地,我们可以用AI来评价AI,比如用GPT4来给各种GPT的平替模型打分,也可以用AI来运行AI,比如autoGPT,GodMode。这篇论文用AI来解释AI,也挺好玩,期待这个方法后续的扩展和泛化吧。
参考
- ^https://speech.ee.ntu.edu.tw/~hylee/ml/ml2023-course-data/AIexpAI-v5.pdf
- ^https://openaipublic.blob.core.windows.net/neuron-explainer/paper/index.html#sec-revisions
原文链接:https://www.zhihu.com/question/596345036