- Objective:
- Breadcrumb:
# 概念阐释
多层感知器(Multilayer Perceptron,MLP)是一种基于[[Backpropagation 反向传播算法]]的人工神经网络。MLP 解决了[[perceptron 感知器]]不能解决线性不可分问题XOR的局限。
MLP 的结构:
- 输入层
- 隐藏层
- 输出层
# 实例
# 相关内容
## [[Transformer]]中的 MLP
- **一句话版**
- [[Attention]]注意力头类似于我们的工作记忆,在[[context length 上下文长度|上下文窗口]]中“看谁和谁有关”。
- MLP 类似于我们的长期记忆,可以存储事实性知识。
- **MLP 是什么**
- 在 Transformer 里,MLP 就是一段对每个 token 单独运算的小型神经网络,通常只有两层线性变换Linear,中间一个“弯”的激活函数(如 GELU / SwiGLU/[[ReLU]]):
- 先扩展维度(把信息摊开)
- 过激活(产生非线性、能做“如果…则…”的决策)
- 再收回到原维度
- 
- **举例子**
- 例如 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)