AI MBTI 分类的原理

AI MBTI 是 SoulStation 的一个功能模块:输入一段文字,输出这段文字属于每种 MBTI 人格类型的概率,高亮哪些句子如何影响结果。

背后的模型,是用 MBTI 互猜和用户反馈中收集的数据样本训练出来的分类模型。

不少用户会默认这个模型像大语言模型那样「读懂」了这段话:先分析句意,再对照人格理论,最后得出结论,中间存在一条可以复述的逻辑链。其实不是的。

分类模型和大语言模型虽然在技术上有一些共性,但工作方式完全不同。

本文将涉及拟合、词向量、CNN、RNN、Transformer、BERT、LLM等概念的简述。

一、拟合,从精确解到近似解

人类解决计算问题的传统路径是:写出方程,求精确解。这类问题的共同点是,规律本身是已知的、可以写成公式的。

但还有类问题,规律本身写不出来。没有方程,只有「输入 → 已知答案」的样本对数据。

这时候思路只能反过来:既然写不出方程,那就先选定一些可调参数的函数,再结合数据把参数调到最合适的位置。

这个过程叫「拟合」:用一条函数曲线去逼近数据背后隐藏的规律。拟合最经典的工具是最小二乘法,1805 年由勒让德(Legendre)在天文学领域提出:观测数据总有误差,不追求曲线穿过每一个观测点,只追求总体误差最小。

机器学习里的「学习」,指的就是这个过程:用数据拟合函数参数。

图 1:拟合示意

二、文字分类如何变成数学问题

2.1 把词变成向量

第一步是分词(tokenization):把句子切成词或子词单元。「今天心情很好」→「今天 / 心情 / 很 / 好」。

第二步是给每个词一个向量。目前通行的方案是词嵌入(word embedding):用一段向量表示一个词,并且让语义相近的词向量也相近。

语言学家哈里斯(Harris,1954)提出分布式假说,词的语义由其分布(语境)决定。

2013 年米科洛夫(Mikolov)等人在 Google 提出 word2vec,把这个思想做成了一个纯粹的拟合问题:用每个词预测其上下文(或反过来),训练一个浅层神经网络。

训练完把中间层权重拿出来当词向量。

最著名的结果是:king − man + woman ≈ queen。

图 2:word2vec示意图

2.2 分类,在向量空间里划界

文字变成数字之后,「分类」就成了标准的数学问题:拟合一个函数 f,把向量映射到类别上的概率分布。

图 3:文本分类示意

2.3 为什么「用文字判断人格」是可能的

到此为止,解决了「怎么算」,但整个任务还建立在一个前提上:人格真的会体现在文字里,能被统计方法捕捉。

1999 年,彭尼贝克(Pennebaker)和金(King)在《人格与社会心理学杂志》(Journal of Personality and Social Psychology)上发表了一项研究:收集被试的写作样本,用 LIWC(Linguistic Inquiry and Word Count,语言查询与字词计数)工具统计各类词汇的使用频率,与人格问卷得分对照。

结果是个体用词与人格特质存在小而稳定的相关:外向者更多用社交类词汇和「我们」;情绪不稳定者更多用第一人称单数「我」和负面情绪词;尽责性高的人更多用工作与成就类词汇;开放性高的人更多用分析性、思辨性的词。

单看任何一条都微弱,但这些关联在大量样本上方向一致、被反复复现。

对分类模型来说,「小而稳定」的信号叠加起来就是可学习的。

前提既然成立,剩下的就是工程问题:这个 f 该是什么。接下来介绍两种文本分类模型:TextCNN 和 BERT。

三、CNN,从图片分类讲起

图片天然就是数字。一张 64×64 像素的彩色图,就是 3 个 64×64 的像素数值矩阵(RGB 三通道)。

但「知道图片是矩阵」和「能分类」之间隔了半个多世纪。

直接把所有像素展成一个长向量、接全连接网络,参数量会爆炸,而且目标挪到图片边缘就认不出来了(缺乏平移不变性)。

突破口来自生物学:1959 到 1962 年,休伯尔(Hubel)和威泽尔(Wiesel)在猫的初级视觉皮层记录到两类神经元。

「简单细胞」对视野中特定位置的边缘起反应,「复杂细胞」对边缘出现在哪里更宽容,且信号呈现层级组织(两人获 1981 年诺贝尔生理学或医学奖)。

1980 年,福岛邦彦据此造出认知机(Neocognitron),这是卷积网络的直系祖先。

1989 年起,勒昆(LeCun)把它和反向传播结合,做出识别手写邮编的 LeNet,在银行支票系统里实际部署了多年。

2012 年,克里泽夫斯基(Krizhevsky)、苏茨克维(Sutskever)和辛顿(Hinton)的 AlexNet 在 ImageNet 竞赛上把 top-5 错误率降到 15.3%,比同届第二名低了近 11 个百分点。

凭借 GPU 算力与大规模数据,深度学习由此进入主流。

卷积网络(CNN)的设计可以概括成三条机制:

  • 局部连接:每个神经元只看输入的一小块(比如 3×3 的窗口),小特征逐步组合成大特征:边缘 → 纹理 → 部件 → 物体。

  • 权重共享:同一个 3×3 的权重模板(卷积核)滑过整张图,哪里出现「目标」都能被同一个卷积核检出,参数量也骤降。

  • 池化:对局部区域取最大值或平均值,压缩尺寸。

多个卷积核各学各的,一层层堆叠,最后一层接 softmax 输出目标概率。

卷积核的参数学习过程,就是用带标签的图片数据拟合的过程。

图 4:CNN图像识别示例图

四、TextCNN:把句子当成一张「图」

2014 年,纽约大学的金允(Yoon Kim)在 EMNLP 会议上发表论文《Convolutional Neural Networks for Sentence Classification》(用于句子分类的卷积神经网络),把 CNN 做成了一个文本分类结构,后来被称为 TextCNN。

它的输入就是词向量矩阵。接下来分三层:

  • 卷积层:定义一批卷积核,可以把它理解成一批「词组探测器」。每个探测器盯住固定长度的连续几个词(比如 3 个、4 个或 5 个),在句子上从前往后滑。滑到一个位置,就把这几个词的向量加权求和打一个分。这个分数表示探测器对当前这截词的响应强度:越像它要找的那种词组搭配,分越高。金允的配置是窗口 3、4、5 三种,每种各 100 个,共 300 个。

  • 池化层:每个探测器滑完整个句子,得到一长串响应分数,然后只留最高的那一个(max 池化)。意思是「它在整句里最强的一次响应有多强」。句子长短不一也不影响。

  • 输出层:300 个探测器各交一个数,拼成一个 300 维向量,过 dropout 正则,接全连接 + softmax,输出各分类别的概率。

图 5:图像卷积与文本卷积示意
图 6:TextCNN 示意

TextCNN 的优缺点

优点:

  • 快、小:单个卷积核只有千个上下参数,三百个卷积核加起来约 36 万,CPU 都能训练和推理。

  • 小数据也能胜任:几千条句子的小数据集,TextCNN 加预训练词向量就能接近或达到当年最好水平。

  • 可解释性相对好:每个核对应一种词组搭配,能定位「证据在句中哪里出现」。

缺点:

  • 只见局部:窗口典型只有 3~5 个词,隔着半句话的转折关系、长距离依赖看不到。

  • 丢弃词序与位置:max 池化只取最强烈的响应,不关心「在哪一段、顺序如何」,本质上是对词组搭配的统计。

  • 词向量是静态的:word2vec 里「苹果」只有一个向量,既表示水果也表示公司,上下文无法消除歧义。

  • 表达能力上限低:对否定、反讽、长句嵌套等复杂语义结构缺乏建模手段。

五、Transformer、BERT 与大语言模型

5.1 RNN 到 Transformer

在 Transformer 之前,处理序列的主流是循环神经网络(Recurrent Neural Network,RNN)及其改进版长短期记忆网络(Long Short-Term Memory,LSTM)。

前面的 TextCNN 用滑动窗口去看句子,窗口之间的词没有直接联系,词序只是被窗口间接带上一点。

如果判断依赖上下文信息,就得有个机制把前面读到的信息带到后面去。

RNN 的做法是逐词读入,一边读一边维护一个记忆(隐状态,hidden state)读完一个词就更新一次隐状态,再带着隐状态去读下一个词。

每一步用的是同一组权重,不是每步换一套新参数。这就是「循环」两个字的实际含义,也是它能处理任意长度句子的原因:五个词五步,五十个词五十步,参数数量不变。

记忆的维度是固定的,比如 256 维,句子再长也只有这么大。它必须把所有读过的内容压进一个定长容器里。

由此产生两个缺陷。

一是不能并行。第二步必须等第一步算完,一句一百个词的话就要串行一百次。GPU 有几千个核心,在这里却只能一个接一个地用,训练时间随句长线性增长。

二是长距离信息衰减。每传一步,记忆都要过一次压缩,排在前面那个词的信息传到第三十个词时只剩很小一份。

图 7:RNN的衰减与串行示意

LSTM 和门控循环单元(Gated Recurrent Unit,GRU)是针对第二点的补救:在更新记忆的通路上加几道「门」,让模型自己学出这一步该写进多少新信息、该保留多少旧信息、该往外输出多少,重要内容于是能近乎原样地穿过很多步,不必每一步都压缩一次。

经验上,这能把有效记忆的距离从几十步拉长到几百步,但串行还是串行。

2017 年 6 月,Google 的瓦斯瓦尼(Vaswani)等人发表论文《Attention Is All You Need》,提出 Transformer 架构,核心是自注意力(self-attention):

第一步,这个词和句子里所有词两两打分:两个词的语义越相关,分越高,分数直接由两个词的向量算出来。

第二步,把一列分数归一化成一组加起来等于 1 的权重。

第三步,把所有词的向量按这组权重加权平均,得到这个词的新表示。权重高的词贡献大。

多组注意力并行计算,各自学习不同的关注模式。

图 8:Transformer示意

这样得以解决 RNN 的两个缺陷。

一是不再有距离衰减。信息不靠接力传递,任意两个词之间的影响不经过任何中间词。

二是能并行。所有加权平均都是一次矩阵运算,没有「第二步等第一步」,GPU 的几千个核心派上用场。这使得 2017 年之后模型规模能一路飙升。

5.2 GPT & BERT

Transformer 是个通用的特征提取模块。2018 年,两项工作用不同的训练任务把它装成了两个模型:

  • 2018.06,OpenAI 的 GPT:用 Transformer 解码器的堆叠。注意力只向左连接,训练任务是预测下一个词。猜出一个词,接到句尾,再猜下一个,一句一句接下去,就是文本生成。这个循环叫自回归(autoregressive)。

  • 2018.10,Google 的德夫林(Devlin)等人提出的 BERT:用 Transformer 编码器的堆叠。注意力全连接,句子里任何两个词都互相可见。训练任务之一是完形填空(Masked Language Model,MLM)。

图 9:GPT与BERT示意图

完形填空这个任务只有一个要求:猜对原词。

能把词猜对,就意味着「懂」语法、搭配、代指等概念了。

BERT 预训练还有第二个任务,叫下一句预测:给两句话,判断第二句是不是真的跟在第一句后面。

输入最前面那个特殊符号 [CLS] 不对应任何词,就是专门用来输出这个判断的。为此它必须把整句的信息汇到自己身上。

训完之后是微调(fine-tuning):在 BERT 顶部加一个小的分类层,取最后一层 [CLS] 的向量送进去。

用几千条带标签的数据把整个模型再训练几轮,就能胜任各种下游任务了。

所以用 BERT 做文本分类的系统,结构上与 TextCNN 同构。

都是输入矩阵、特征提取层(换成了 Transformer 编码器堆叠)、softmax 输出。

图 10:BERT 文本分类示意
TextCNN(2014)BERT(2018)
词的表示静态词向量:一个词在全语料里只有一个向量,无法区分「苹果」是水果还是公司动态上下文向量:同一个词在不同句子里得到不同向量,逐层融合全文信息
能看多远固定窗口(典型 3~5 个词),max 池化还会丢掉位置和顺序自注意力直接连接句中任意两个词,没有距离衰减,长距离依赖、否定、转折结构都能进入特征
参数数量约 36 万1.1 亿(base)至 3.4 亿(large)

5.3 大语言模型:把「预测下一个词」拟合到极限

GPT 这条路线不断放大,就得到了大语言模型(LLM):

GPT-2(2019,15 亿参数)已经能续写通顺段落;

GPT-3(2020,1750 亿参数)展示了上下文学习能力:不改参数,仅在提示词里给几个示例,模型就能照着示例完成新任务;

2022 年,InstructGPT / ChatGPT 用人类反馈强化学习(RLHF)把「续写器」校准成了「对话助手」。

在接近整个互联网的文本上,训练一个超大规模的自回归「下一个词预测器」。目标函数和预测「今天天气很___」填什么词是同一个。

六、「涌现」与大语言模型的「推理」争议

大模型参数规模上去之后,出现了一类现象:小模型原本完全没有,但大模型突然就拥有了新的能力,比如多位数算术、多步问答、按指令格式输出。

2022 年,Google 的韦(Wei)等人将其正式命名为涌现能力(emergent abilities):不存在于较小模型、出现在较大模型中、且无法从小模型的表现外推预测的能力。

名字借自物理学家安德森(P. W. Anderson)1972 年的名文《More Is Different》(多者异也):系统复杂度跨过某个门槛后,出现无法从微观规律直接推出的新性质。

图 11:大模型能力涌现示意

同年,同一团队提出的思维链提示(Chain-of-Thought prompting)进一步强化了这种印象:在提示词里给出几道「带中间步骤」的例题,模型会模仿着把推理过程一步步写出来,多步推理任务的正确率大幅跃升。

看起来,思维链把中间步骤写在了输出里。

不过写出来的推理过程是否是真实的计算过程仍存在争议。

2023 年特平(Turpin)等人的《Language Models Don't Always Say What They Think》(语言模型并不总是说出其所想)展示了思维链里陈述的理由可以被提示词中的偏见、选项顺序等因素操纵。

模型给出正确答案时引用的理由与实际影响答案的因素并不一致。

同年麦考伊(McCoy)等人的《Faith and Fate》(忠实与宿命)在精心设计的组合推理任务上测试发现:当任务推理深度超过训练模式覆盖的范围,模型的表现呈现「忠实或听天由命」,要么照搬见过的模式,要么崩溃,而不是像符号系统那样组合已掌握的规则。

对模型内部的可解释性研究也给出了双向证据:既找到了与真实计算对应的内部机制,也发现过「答案先定、理由后补」式的内部路径。

大语言模型在大量任务上表现出与推理难以区分的行为,但在机制层面,它是统计模式的学习与补全这一点并未被推翻。

目前对使用者来说,或许恰当的态度是把它当成一个推理表现不稳定、需要验证的强大工具,而不是一个会思考的主体。

七、分类模型到底在不在「推理」?

回到开头那个问题的答案:不在,而且和「看起来在推理」的大语言模型还差着一大截。

一个分类模型(无论是 TextCNN 还是 BERT 分类器)的完整「思考过程」是:输入矩阵,做一次前向传播,也就是一连串矩阵乘法、加权求和与非线性变换,得到类目数量的数字,softmax 归一化成概率,取最大值,结束。

中间没有生成的步骤,也没有假设与验证。

大语言模型至少把「步骤」外化成了逐词生成的文本(这也是思维链能提升它表现的机制);分类模型连这个过程都没有,输出端只有一个概率分布。

图 12:模型与推理示意

那这个「判断」能不能被解释?要分情况,学界称之为可解释性光谱:

模型可解释性原因
线性回归 / 逻辑回归天然可解释系数直接就是每个特征的贡献方向和大小
决策树可解释一条从根到叶的 if-then 规则路径就是一个完整决策依据
TextCNN部分可解释能定位哪个卷积核、句中哪个位置的 n-gram 贡献最大,但证据如何组合成最终分数仍不透明
BERT / 深度网络黑盒上亿参数分布式地共同编码模式,任何单个参数都不对应任何人类概念

对于黑盒模型,只能做事后解释:模型照常工作,另用专门的方法去考察「它为什么这么判断」。

一个常见的误解是把注意力权重当成解释。

2019 年贾恩(Jain)与华莱士(Wallace)的论文《Attention Is not Explanation》(注意力并非解释)给出实证证据:注意力权重与基于梯度的特征重要性常常对不上;把注意力换成差别很大的一组,模型的预测也几乎不变。

我们结果页里高亮句子的来源,正是事后解释方法里流传最广的一种:LIME。

八、LIME:结果页里高亮句子的由来

LIME 的思路是黑盒模型的全局行为难以解释,就在单个样本附近,用一个简单的线性模型去近似它的局部行为。对一条要解释的预测做四件事:

  • 扰动:把样本拆成人类可理解的单元(对文本来说,就是每个词或每句话「保留还是删掉」),随机删掉或替换其中一部分,生成几千个变体。

  • 打分:把每个变体喂给黑盒模型,记录它输出的概率。

  • 加权:按变体与原样本的相似度加权,越像原样本的变体,在后面的拟合里权重越大。

  • 拟合:用这些加权样本拟合一个稀疏线性模型,线性系数就是每个词/句子对预测结果的推动方向和力度。

图 13:LIME原理示意
图 14:LIME过程示意

为什么说「仅供参考」

它不是「模型内部的分类依据」,而是一个代理模型的结论:高亮句的权重来自那条局部线性虚线,不是黑盒本身。

同一句话换一段所处文字,对结果的推动情况可能完全不同。

局部解释不能外推成「模型一般认为某句话代表了某种人的特点」。

它回答的是「在这段话的附近,删掉哪些句子会让该分类的概率下降最多」。

这是一个近似的、局部的事后分析,不是对模型真实计算过程的复述。

结语

分类模型是用数据拟合出来的一个函数。

文字先被转成数字矩阵;TextCNN 用小窗口的卷积核在其中找局部词组证据,BERT 用注意力把全文上下文揉进每个词的向量;最后汇入 softmax,输出一组概率。

整个过程没有显在的逻辑链,也没有中间步骤。对黑盒的潜在逻辑的解释只能靠 LIME 这类事后方法,得到的也只是近似的、局部的结论。

大语言模型看似会推理,其「推理」也仍处于激烈争论之中。

参考文献

  1. Adrien-Marie Legendre. Nouvelles méthodes pour la détermination des orbites des comètes. 1805.
  2. Zellig S. Harris. Distributional Structure. Word, 1954.
  3. Tomas Mikolov et al. Efficient Estimation of Word Representations in Vector Space. ICLR Workshop, 2013. arXiv:1301.3781.
  4. James W. Pennebaker, Laura A. King. Linguistic Styles: Language Use as an Individual Difference. Journal of Personality and Social Psychology, 1999.
  5. David H. Hubel, Torsten N. Wiesel. Receptive Fields of Single Neurones in the Cat's Striate Cortex 等系列论文. Journal of Physiology, 1959~1962.
  6. Kunihiko Fukushima. Neocognitron: A Self-Organizing Neural Network Model for a Mechanism of Pattern Recognition Unaffected by Shift in Position. Biological Cybernetics, 1980.
  7. Yann LeCun et al. Backpropagation Applied to Handwritten Zip Code Recognition. Neural Computation, 1989.
  8. Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. ImageNet Classification with Deep Convolutional Neural Networks. NeurIPS, 2012.
  9. Yoon Kim. Convolutional Neural Networks for Sentence Classification. EMNLP, 2014. arXiv:1408.5882.
  10. Ashish Vaswani et al. Attention Is All You Need. NeurIPS, 2017. arXiv:1706.03762.
  11. Alec Radford et al. Improving Language Understanding by Generative Pre-Training. OpenAI 技术报告, 2018.
  12. Jacob Devlin et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL, 2019. arXiv:1810.04805.
  13. Jason Wei et al. Emergent Abilities of Large Language Models. TMLR, 2022. arXiv:2206.07682.
  14. P. W. Anderson. More Is Different. Science, 1972.
  15. Jason Wei et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS, 2022. arXiv:2201.11903.
  16. Miles Turpin et al. Language Models Don't Always Say What They Think: Unfaithful Explanations in Chain-of-Thought Prompting. NeurIPS, 2023. arXiv:2305.04388.
  17. R. Thomas McCoy et al. Faith and Fate: Limits of Transformers on Compositionality. NeurIPS, 2023. arXiv:2305.18654.
  18. Sarthak Jain, Byron C. Wallace. Attention Is not Explanation. NAACL, 2019. arXiv:1902.10186.
  19. Marco Tulio Ribeiro, Sameer Singh, Carlos Guestrin. "Why Should I Trust You?": Explaining the Predictions of Any Classifier. KDD, 2016. arXiv:1602.04938.

返回内容中心

跳转至微信公众号发表看法