AI有意识了?A Global Workspace in Language Models解析

   1、目前主流的language model还是transformer架构,对于该架构的评价,大佬们明显分成了两派:

  • 一派认为transformer架构本质仅仅是个概率模型,完全没有人类的意识,也不会像人一样思考,next token的预测就是个文字接龙的游戏
  • 另一派就不同了,认为目前的language model已经在一定程度上学会了人类思考的方式,next token的预测表面看确实是概率预测,但在中间的hidden layer已经有了思考的能力
    • 压缩即智能:模型规模变大后,训练的token增加后,为了记住甚至理解这些token的含义,model必须学会压缩,提取、归纳训练样本的文字内容,比如提取公式、定律、规律等

  两派谁也说服不了谁,所以目前的language model到底有没有人类这样的意识?有没有学会人类这样的思考了?

  openAI在2024.9首推COT模式,在正式输出答案前会先输出thinking内容,再根据thinking的内容输出正式的回答。从表现形式看,已经实现了思考的功能,但究其本质:还是人类可见的显示prompt engineering,并不是神经网络的“生物学”涌现,这些未知的问题都是要深入hidden layer去探索的,近期antropic的研究员就干了这件事:https://transformer-circuits.pub/2026/workspace/index.html  ,检测大模型是否已经发展出了属于它自己的表征层面的“潜意识思考”! 先说结论:大模型在hidden layer确实在思考了

  2、先用人类比下:人遇到复杂任务的时候,肯定是要先思考的,等思考完成后才回把最终的答案表达出来,大模型(非COT)模式是不是也这样了?众所周知,transformer架构从几十到几百层都有,用户看到的回答只是最后一层output的结果。既然中间有这么多层,input经过中间层层的线性转换和非线性激活,中间这些层都在干啥了?有没有像人脑一样思考了?

  2.1 先说一个简单的例子:计算(4+17)*2+7的结果。 人是怎么做的了?肯定用四则运算的规则啊!先计算优先级最高的括号里面的4+17=21,再计算优先级次高的21*2=42,最后计算优先级最低的42+7=49,那么问题来了:language model是怎么做的了?也像人一样分成三个步骤来计算么?如果是,岂不是坐实了language model也和人类一样有思考能力了?

     image

   transformer是很多个block组成的,每个block就是一个做线性变换的matrix + MLP(hidden layer),并没有专门做四则运算的模块,怎么探索其内部有没有像人一样分步骤计算了?既然内部都是很多层的hidden layer,那就只能从hidden layer下手咯!input经过hidden layer不是会有一个输出么,那就看看这个输出是什么呗!神奇的事情发生了,按照antropic这篇文章的阐述,在不同的layer得到了不同的内容:

  Layer 58:Math  

       Layer 75:21

       Layer 83:42

       Layer 99:   49

      看到了吧:

  • layer的输出明显是层层递进的,说明不是巧合,而是真的像人一样在思考
  • 数字本身就是模型内部推理时最有用的可言语化概念(verbalizable representation)
  • 越往后,hidden layer的输出越接近人的思路
  • 21 并没有出现在输入里,也没有出现在输出里,而是 J-Lens 在中间层直接读出的内部概念。这也是 文章认为 J-space 更像"工作记忆(working memory)"而不是普通隐藏状态的重要原因

  2.2 另一个例子:输入下面的prompt,然后开始逐层检查,发现:

     image

   Layer67: spider  -> 在这里已经找到正确答案了

        Layer83:    legs

        Layer88:    eight  -> 这里已经对了

        以上两个测试说明:language model在输出答案之前,其实内部的hidden layer已经在向答案靠拢了!直观理解:用户输入prompt,本质是在缩小后续输出token的概率取值范围,自然中间的hidden layer会向最终的答案靠拢

   3、上述的探索都是通过对特定hidden layer的output做计算得到的,这又是用了什么样的计算方案了? 以上面2.2为例:Layer67是多个hidden layer中的一个,这层输出的也只是个向量h_67,怎么确定这个向量表达的就是spider、而不是其他token了?这就涉及到J-Lens 的核心了!

  • 如果希望模型以后更容易说出 "spider",hidden state 的output应该往哪个方向移动?如果希望model更容易说出“ant”了,又应该让hidden state的output又该往哪个方向移动了?
    • 词表中每个token都有一个向量,说明了这个token的方向[注意:这不是某个hidden layer的输出],比如v_spider=[-0.11,0.48,....0.22],    v_ant=[0.26,-0.81,....0.37]
    • 这些方向是通过 Jacobian 计算出来的,不是人工指定的。论文称它们是"使模型更倾向于在未来说出该词的内部活动模式"。
  • 比较 hidden state 和每个token方向的相似度
    • 相似度的计算方法:向量点积(dot product)最终得到一个数值;通过比较数值大小就能知道hidden layer输出的信号接近哪个token了!比如hidden layer的向量h_67和spider接近,还是和ant接近了?那就分别计算dot product呗,h_67分别乘以v_spider、v_ant,看看最终的数值哪个更大!

   整篇paper最难的部分来了:v_spider、v_ant这类token的向量是怎么通过 Jacobian 计算出来的了

   4、以v_spider为例,计算方法:LM Head 的 Spider 那一行(负责把 Final Layer 翻译成词表),再乘以后面所有 Transformer 的 Jacobian(这里是Layer67)

  • v_spider=WU(spider)×J67
    • ​WU(spider): LM Head 的 Spider 那一行(负责把 Final Layer 翻译成词表)
    • J67: 负责把 Layer67 "搬运"到 Final Layer;
      • "搬运"的方法:前向传播(forward propagation),但不是普通意义上的"再跑一次前向传播",而是把"Layer67 → Final Layer"这个复杂的前向传播,用一个 Jacobian 矩阵做局部线性近似 这是 J-space 的核心思想
      • J 是后续所有 Transformer 层在当前点附近的"一阶线性代理(first-order linear approximation)",它近似描述了 Layer67 的微小变化会如何传播到 Final Layer
      • 比如:F(x) = 2X+3; x = 2的时候做一次foward,那么F(2)=2*3+1=7; 如果改变x =2.001,再做一次forward = 2.001*2+3=7.002,输入x增加0.001,输出F(x)增加0.002,那么J=2;这个J反应了输入对输出的改变力度[输出变化 ÷ 输入变化≈梯度,也就是说hidden layer的ouput的某个维度改变了,对最终结果影响有多大,最终结果有多敏感];后续如果x增加0.1,没必要再老老实实继续foward了,为了节约算了和时间,可以直接用原始的结果 7 + J* 0.1=7.2,是不是简单很多啊!这就是线性近似!
    • 反应了一个事实:hidden layer在某些方向/维度做了改变,对最终结果的输出有多大影响?第一次把"相关性(correlation)"变成了"因果性(causality)

  5、总结一下整个过程:核心就是把hidden layer的某些特定层的output向量读取出来,想尽一切办法解析其中的语义,说白了就是这些hidde layer输出了哪些信息,所以最关键的问题来了: hidden layer输出的都是向量,怎么解析这些向量中大量维度包含的语义信息了

  • 先看看简单的:最后一层output经过softmax后得到一个向量,向量的维度和词表的维度是一样的,这时就可以通过各种不同的解码方式(Greedy search、Beam search、Top-K sampling、Top-p sampling)得到输出的token了,也就是确定了最后这一层output的语义了;或者更简单一点:最后一层output的哪个维度最大,该维度对应词表的那个token,那就可以确定这个output就是该token的语义了(直接用词表中每个词的one-hot向量和output做dot product,数值最大的就是语义最接近的)!最后一层是output层了,确实可以这个干,但中间的hidden layer可以这么干么?
    • hidden layer的dimension可能和词表的dimension不一样,没法做dot product啊!
    • 语义也不是一个空间的!最后一层output语义和词表是一样的,但中间的hidden layer就未必了,所以中间会经过多次的线性变换+MLP来调整output向量的语义,确保最后一层output的语义和词表保持一致!

  既然直接用hidden layer的output和词表的one-hot向量做dot product不行,那怎么探索hidden layer输出的output所表达的语义的了?hidden layer只能输出一个高维向量啊,LLM所有的中间“思考”过程全都隐藏在了这些output向量的维度中,如果无法研究清楚这些维度的语义,那么研究人员在面对这些维度的时候纯粹就只是一堆数字了,完全找不到研究的突破点啊!比如hidde_layer_67 = [-0.13, 0.87,1.76, 0.41  ......   0.218],面对这一串数字,怎么确定哪些个维度是spider的语义了?哪些个维度又是Math的语义了

  回到transformer架构,从第一层开始就要经过一个embedding矩阵,把词表中原始的token one-hot向量转成embedding向量,这个向量就是token的语义representation了!后续又经过层层的embedding矩阵的线性变换+MLP转换, hidden layer每个维度的语义都是中间这些变换定的,这些变换的方向又是根据最终loss做back proporgation时确定的,全程都是数学上的公式算法调整的,完全没有人工干预,所以截止目前,还没有人知道怎么直观判断hidden layer的output中每个维度语义的!那么问题来了: 既然没法直观判断每个维度的语义,那能不能间接判断这些维度的语义了

  • 中国有句古话:解铃还须系铃人!上面说了, 这些变换的方向又是根据最终loss做back proporgation时确定的,全程都是数学上的公式算法调整的那能不能通过loss的BP来确定hidden layer中每个维度的语义了
    • 如果loss大,通过梯度下降和链式的方式对中间多个hidden layer层的神经元权重做调整,这里就很微妙了:有些神经元权重调整后能大幅影响loss,有些对loss的影响微乎其微,那么就可以断定:对loss影响大的神经元和目标token肯定有强烈的语义关联!这不就能确定hidden layer的output向量中每个维度语义了么?  jacobian矩阵就是这么来的!

    image

 

这带来几个重要方向:

  1. 推理可解释性:看到模型在中间真正激活了哪些概念,而不仅是最后一句回答。
  2. 因果推理:打破神经网络黑盒的桎梏,实现真正的因果推理。
    • 准确找到隐变量,策底把神经网络的correlation变成了causality
    • 体温升高 -> 病人发烧, 统计的时候发现 体温高->死亡率高,所以得出的结论:体温导致死亡? 根因完全不是这个,而是:感染 -> 体温高 -> 死亡,体温只是中间一个指标Indicator而已!
    • 这里Layer 67出现了spider,但真正负责推理的可能并不是Layer67,而是之前的某些layer;论文一直强调 :Decodable ≠ Causal(可读出 ≠ 因果)
  3. 安全监测:论文展示了 J-space 中可能提前出现某些与欺骗、操纵相关的概念,有望帮助研究人员在输出之前发现潜在风险,但这仍需要进一步验证。
  4. 模型编辑:未来或许可以直接修改 J-space 中的表示,而不是通过大量微调整个模型。
  5. 认知科学交叉研究:J-space 被拿来与人脑的“全局工作空间”进行功能对比,但 Anthropic 明确没有声称 Claude 具有意识,只是认为两者在信息组织方式上存在值得研究的相似性。
posted @ 2026-07-09 11:36  第七子007  阅读(19)  评论(0)    收藏  举报