- Objective: - Breadcrumb: # 概念阐释 多层感知器(Multilayer Perceptron,MLP)是一种基于[[Backpropagation 反向传播算法]]的人工神经网络。MLP 解决了[[perceptron 感知器]]不能解决线性不可分问题XOR的局限。 MLP 的结构: - 输入层 - 隐藏层 - 输出层 # 实例 # 相关内容 ## [[Transformer]]中的 MLP - **一句话版** - [[Attention]]注意力头类似于我们的工作记忆,在[[context length 上下文长度|上下文窗口]]中“看谁和谁有关”。 - MLP 类似于我们的长期记忆,可以存储事实性知识。 - **MLP 是什么** - 在 Transformer 里,MLP 就是一段对每个 token 单独运算的小型神经网络,通常只有两层线性变换Linear,中间一个“弯”的激活函数(如 GELU / SwiGLU/[[ReLU]]): - 先扩展维度(把信息摊开) - 过激活(产生非线性、能做“如果…则…”的决策) - 再收回到原维度 - ![](https://image.harryrou.wiki/2025-08-09-N2037cvU.jpg) - **举例子** - 例如 Michael Jordan plays ___ - 注意力会通过Michael + Jordan这个组合,向“basketball”方向引导 - 还会有其他和 Michael Jordan 相关的特征被关联上,例如 Chicago Bulls,number23,born 1963 - **MLP 在 transformer 中的作用** - **非线性决策** : - 只有 MLP 的激活函数能“拐弯”。这让模型不只会线性加权,还能学到“若同时满足 A 和 B的交叉条件,就倾向 C”这样的规则。 - 例如“如果这个词是动词并且前面是主语,就该用第三人称单数”。 - 能表达“若 A 且 B → C”之类的组合条件;这正是单层感知器无法处理 XOR 等非线性可分问题的由来。 - **特征提取** : - 它会在每个 token 的向量里生成抽象特征:是不是人名、是不是城市、是否在引号内、是否复数…… - 基于上下文的运算:在 MLP 中,每个 token 都是独立运算的,但输入的向量已经是被注意力头“注入了上下文”的。 - **为什么说 MLP 存储事实?** - 如果我们看 transformer 中的参数分布的话,MLP存储了大约 2/3 的参数。例如,在 GPT-3 中,MLP 部分的参数为115,964,116,992/1750 亿。 - 这些参数一开始是随机的,通过海量互联网数据的训练后([[LLM 预训练]])便“学会”了人类的知识。就好像人类通过阅读获得知识一样,只不过我们的物理介质是大脑中的神经元与突触联结。因此参数决定了模型的行为模式。 - [[预测即压缩压缩即智能,智能即具备理解力]] - 但是这种“学会”并不是把知识==硬编码==到大模型中,而是将特征、模式通过一种==“高度压缩”==的方式存储在大模型中。因此当模型在预测下一个词时,它可以==根据上下文语义(attention)+MLP 中的非线性决策+其他特征的提取==找到下一个 token 的“输出方向”。 - ilya 曾在不同场合提到“预测下一个Token”时,Ilya大概率会同时提到“**压缩**”,他认为预测即是压缩,压缩就是智能的来源。 - 这种压缩也以可比喻为“有损”的解压缩包:源文件->压缩->解压缩。 - **特征叠加:为什么transformer 的泛化能力很好?** - 证据显示,单一的神经元很少存储像Michael这样的概念。和人类的神经元一样,不存储概念,一个概念是通过一些神经元同时亮起而完成的。 - **[[superposition]]超叠加**:同一个神经元在不同上下文可能代表不同特征(今天检测“引号内”,明天检测“URL 模式”),而不是给每个神经元固定特征。 - 这样做提高了神经元的泛化能力(扩展性好)。而且随着模型变大后(维度更多),这些特征的扩展性会更好。 - 也是由于一个神经元表示多个特征,如果在陌生或含糊语境中,可能就会出现我们口中的“[[幻觉 Hallucinations]]”问题。 # 参考资料 - [多层感知器](https://zh.wikipedia.org/wiki/多层感知器) - [[how might LLMs store facts]] - [cwGPT](https://readwise.io/reader/shared/01k34vvs18zv898crt4h9nt37r)