论文阅读笔记:(ICLR 2023)EMERGENT WORLD REPRESENTATIONS: EXPLORING A SEQUENCE MODEL TRAINED ON A SYNTHETIC TASK
ps:world representation(世界表现)是游戏AI中常见的一种术语,它表示将实际的地图和路线表示为节点&连线构造的图结构。
世界模型:
摘要:自己的理解:语言模型能力强大但能力来源不明晰->在综合环境(黑白棋,博弈场景)下研究->在没有先验知识前提下找到了棋盘的内部表示证据->反过来用内部表示引入来控制输出。
Part1:Introduction
序列建模任务(sequence modeling task)为什么可以通过“next token”来得到一些惊人的结果?关于这个问题,有很多争执:
从哲学到数学方面的争执范围增加下,产生了对模型性能的疑问:序列模型是否只是“记住了”表面数据?而不是去理解其中的因果关系?
但是又有线索表明,LM能够构建属可解释的世界模型。然而,相关研究并没有去探索内部模型的解释,因此产生motivation。
本文贡献:
(1)我们为 GPT 变体中的新兴世界模型提供了证据,该模型经过训练可以在奥赛罗中产生合法的棋步;
(2)我们比较了线性和非线性探测方法的性能,发现非线性探测在这方面更优越;
(3)我们提出了一种干预技术,表明在某些情况下,可以使用涌现世界模型来控制网络的行为;
(4)我们展示了如何使用探针来生成潜在显着性图,以阐明模型的预测。
Part2 训练一个游戏LM
一、准备
①游戏选择:黑白棋(游戏树够大避免单纯记忆、游戏规则简单)
②策略:不提供游戏及棋盘结构的先验知识,仅允许GPT变体观察游戏记录。
③数据集:
a.Championship:从两个渠道收集“奥赛罗(Othello)锦标赛”比赛数据(7,605+132, 921 ),按照8:2分训练集和测试集。“有策略的、双方为了获胜的”
b.Synthetic:从游戏树的叶子节点进行均匀采样的结果,得到20,000,000(训练集)+3,796,010(测试集)。“无策略的、约等于乱下的”
④棋盘建模:用60个单词来表示除了中间四个以外的格子。
⑤训练模型底座:8-layer GPT model+512维隐藏空间 =>以得到 Othello GPT
二、训练过程:利用了因果掩码
S1:对于每一个部分游戏(partial game)。首先输入由60个向量组成的可训练词嵌入(随机初始化权重),每个向量对应一个词,得到初始化特征。
S2:在训练过程中,第l层第t个标记只可见(也就是前一层的前t个token),并最终得到编码,并利用线性分类器其预测。
S3:训练时利用梯度下降算法,以最小化真实移动和预测之间的交叉熵损失。
三、实验结果:
提供给GPT一个验证集下的部分棋局,利用检测top-1是否合法来计算错误率。结果上,在Synthetic上训练的错误率0.1%,在Championship上训练的错误率5.17%,未经训练的则是93.29%。
这说明Othello-GPT在预测上做的比原先更好。但也不排除是它记住了所有可能。
进一步实验:对Synthetic数据集,将开局可能的4个动作(C5,D6,E3,F4)四个步骤下的数据集删掉C5节点。[构造倾斜数据集],用该数据集训练模型。但是在这种情况下,Othello GPT依然保持住在0.02%的错误率(没有大幅度提升),这说明Othello GPT不是“死记硬背”顺序的。
PART3 利用探针探索内部展示
1.探针:一个分类器/回归器,输入是待探测网络的内部激活,输出是对于某个特征的预测结果。如果这个探针在训练后能够准确预估某个特征,就说明这个特征的表示在网络的激活中。
2.探测目标:对棋盘状态的表示=>探针预测目标:预测棋盘的某个位置是空/持有黑子/持有白子。(动机:函数好写)
输入:(研究不同层l结果)
输出:(一个三向分类概率分布)
参照概率:52.95%(在验证集中猜测所有图块为空的结果)=>参考错误率:47.05%
3.实验结果:
①使用线性探头的结果:略有提高,性能较差
表示:,
其中
baseline:在随机初始化网络上训练的探针
②使用非线性探头的结果:错误率较低
表示:
补充:Othello-GPT是怎么对棋盘建模的?
为每个格子训练的探针本质保留了该格子的原型向量知识,认为其具有“概念向量”。
利用PCA将维度降到3,连接在棋盘上直接临近的两个点,同时,如果它们是水平临近的,就用橙色线来连线。
图片中,非线性情况下Championship和Synthetic的建模是一种“球形抹布”结构,作者认为这就是Othello GPT对棋盘的建模方法(我的理解是:因为橙色的部分)
但是,它是否真的利用这个棋盘建模来帮助自己进行建模呢?
Part4 干预实验验证指针
干预实验:给定Othello-GPT一组激活,探针预测棋盘状态B;然后修改激活,检测出B’。如果B'符合预期,而非是和B一样的结果,则认为是相关的。
(1)干预
在这里的例子中,干预实验的目的在于修改某个部分的状态,从而使得预测的状态从某个颜色top1越过边界到达另一种颜色的top1(图A)
而图B展示了一种例子,左上是实际的情况,左下是原来的世界状态下对于棋盘颜色的预测结果(一致);而在参数改动之后,模型预测的下一步落子发生了改变(废话),且模型的世界状态下棋盘上有一颗白子变成了黑子。
图C则回答了"动哪些地方?”的问题。
其选择一个初始层,修改其与后续层的激活。浅蓝色表示未修改的激活;深蓝色代表受干预影响的激活。
从预定义层开始,作者对时间上最后的标记进行干预。用干预后的内部表示替换原始的内部表示,并恢复下一层的计算。
部分错误信息得到纠正(浅蓝色),但我们交替这种干预和计算过程,直到最后一层,从中进行下一步预测。
如果只修改中间层的激活,高层的激活会直接受到干预的影响。
(简单说:改变当层最后一个->得到下一层->把下一层除了最后一个以外的全部恢复成原来的表示->继续计算循环)
具体干预的办法:训练探针的方法依旧是采用探针预测的概率和棋盘状态之间的交叉熵损失,但是这里不再优化探针的权重,而是优化x
解释:使用梯度下降来修改最后一个timestamp的关键激活向量。
(2)实验
设计了一个评估的base。测试包括:游戏、目标棋盘图块和目标状态组成。
实验过程:将部分博弈交给Othello-GPT执行,并且进行干预。具体来说,就是计算时提取模型激活,然后修改激活从而改变棋盘的表示,并将修改后的表示返回要求其进行预测。
基准集:1000个干预案例下的两个子集:
①自然子集:所有游戏内按照规则可以到达的地方集合。
②非自然子集:游戏内按照规则不可以到达的地方集合(严格测试,远离训练分布中的任何内容)
在这里,相当于先进行计算过程中激活的修改,然后再拿改变了之后的题目来询问,因此,做过干预的结果会比没做过干预的错误率更低。实验结果上,layer4取得了最低的错误率(性能最好),且干预实验在自然子集和非自然子集上都取得了效果。
Part5 干预实验验证指针
摆了,直接用汇报ppt里的内容。
Over。