讨论 2023-03-01 = # 语言模型 ## 简述 目前的大模型彻底改变了NLP研究的潮流,本学期的分享内容也会作以调整。由于大模型本身的原理和理论还处于早期探索阶段,所以分享内容主要还是以相对成熟的老内容为主,同时结合大模型上的新现象进行分析。除了大模型之外,还会讲解更多RL相关的内容,因为RL在NLP中的应用越发广泛。 语言模型的目标是建模自然语言本身的分布,即对任意一段自然文本进行密度估计,比如我要说出某一句话的概率是80%。假设文本为随机变量$X$,语言模型就是要求$P(X)$。 ## Causal Language Model ![](https://i.imgur.com/7cxie2Z.png) 经典的语言模型利用全概率公式,把一句话的密度估计转换为依次从左向右估计每个词的概率。 $P(X=\{w_1, w_2, \cdots, w_N \}) = P(w_0) \prod_t P(w_t| w_{<t})$ 需要注意的是全概率公式可以按任意顺序展开,不一定是从左到右,不过目前研究中发现从左到右是一种很好的顺序,也最符合人写作的顺序。 ![](https://i.imgur.com/BBDU3Gm.png) https://aclanthology.org/2021.findings-emnlp.298.pdf ## Mask Langauge Model ![](https://i.imgur.com/alTNPyv.png) 既然全概率公式可以用任意顺序,那么我们可以找到一种顺序让没有被mask的token在已展开部分,而被mask的token在未展开部分。但有多个mask出现时,现在模型实际是同时预测所有缺失位置,并没有顺序。严格来说,这种情况下,MLM不能用全概率公式来解释了,但我们可以借助另一套理论,Gibbs Sampling来讨论MLM和LM之间的关系。 [Gibbs Sampling](https://projecteuclid.org/journals/annals-of-statistics/volume-22/issue-4/Markov-Chains-for-Exploring-Posterior-Distributions/10.1214/aos/1176325750.full) 本身属于统计学的讨论范畴,这里不深入展开,他的基本思想就是对于一组未知变量的联合概率$P(X_0,X_1,\cdots,X_N)$,可以通过不断地采样$P(X_i|X_{-i})$来逼近这个联合分布。有兴趣的同学可以看一下推导,这里只讲结论,如果采样过程和目标分布满足一定条件,那么Gibbs Sampling在无穷次迭代后可以收敛到目标分布。 不过很难严格对比MLM和Gibbs Sampling之间的关系,之前有工作利用Gibbs Sampling对MLM训练好的模型进行采样,从而生成完整的句子。 ## LM建模了什么特征 语言模型到底学到了什么信息,为什么会对下游任务有帮助?目前对此的解释还都比较模糊,但还是提供几种说法以供参考。 ### 聚类说 语言模型可以把文字片段聚类,让那些有相似上下文的文字聚集在一起。这一点比较显然,我们考虑模型在预测某一个词的时候,其实就是把前面所有文字内容整合成一个向量,然后和词表中的每个词向量做内积。根据三角不等式,我们可以猜测如果两段文字后面跟了相同的后文,他们的向量表示应该是接近的。当然这里的后文只是指下一个单词(根据loss而定),但其实可以拓展到后续的全部文字内容(假如我们认为神经网络有连贯性的,且输入词向量也有连贯性)。 ### 语义说/惊讶说 语言模型可以学习到语义表示,我个人更喜欢称之为语言模型可以判断一句话是否会让人惊讶。比如我们说了一句明显不符合事实的话,那么人们的反应应该是惊讶的,其数学内涵是这句话应该是极小概率说出的,所以语言模型也会给他打低分。判断一句话是否会让人惊讶明显是需要语义信息的,比如“苹果是红的”和“苹果是蓝的”,语法结构完全一致,但人们都会觉得后者很奇怪。凡是影响了自然语言密度的因素都可能在语言模型中体现。 ### LM as MDP ![](https://i.imgur.com/Wvbmcqq.png) 语言模型还可以看作一个马尔科夫决策过程。首先,马尔科夫决策过程需要定义动作(Action), 状态(State),转移方程(State+Action->State)。并且动作只由上一个状态决定,而并非状态的历史。显然,要满足这个定义,语言模型的动作就是挑选一个词,而状态则是所以上文的综合。LSTM和Transformer其实都显示地建模了上文的综合特征,即状态。据此,我们可以有两个合理的猜想 - LM可以有长远考虑 - 分步奖励和多样本融合 长远考虑的意思是语言模型不光关注于下一个词的生成,而是整个后文的变化。因为马尔科夫决策过程的奖励通常可以用期望收益来表达,即 $$V(s) = \max_a R^s_a + \gamma \sum_{s' \in S} P^a_{ss'} V(s'), $$ 其中a为动作,s为当前状态,s'为采取动作a之后转移到的状态。P为转移概率,R为即时反馈,V是期望收益。设想一个语言模型,我们在求导更新的时候,其实会追溯到很早的上文,与这里给的贝尔曼等式有类似的思想,区别是语言模型没有枚举所有action。但当我们的数据足够多时,其实可以认为已经覆盖了所有的高概率动作。当然,这里还有一个假设时有限的,临近的上文不足以完全决定后文的走向,否者梯度回传会中断。这一点可以通过之前分析不同上文长度的工作加以佐证。 多个相似样本对语言模型的影响可以看作是从类似状态出发,采取不同动作形成的轨迹,所以语言模型天然有能力融合相似样本的信息,填补出最可能路径,在某种意义上实现举一反三。这种视角的一个现在作用时可以评价状态和动作的划分,比如我们可以把单词作为动作,也可以把subword作为动作。同理,把全部历史作为状态,或临近的一部分历史作为状态都是可以的。但其对应的MDP过程不同,这里的转移矩阵也不同,以至于不同样本之间的融合也不同。 ## 语言模型的天然缺陷 ### 关注均值而不是实际分布 语言模型是有采样随机性的,但需要通过多次独立采样完成(每次选词都有独立噪声引入),这就导致了语言模型可能只关注了分布的平均而忽略具体分布样式。比如一段上文的后文有两种可能性,1,2,3,4,5,6和6,5,4,3,2,1,那语言模型学到的分布很可能是,第一个位置,1和6有可能,第二个位置,2和5有可能。那采样过程可能会出现1,5的搭配,因为两个位置的噪声是独立的。这里有些同学可能会觉得因为第一个位置不一样,所以语言模型是可以分清两种情况的,这当然可能,但前提是足够多其他可以对比的样本。如果只有这两组数据,模型很可能直接按位置记住,而不考虑依赖关系,因为按位置记更容易(梯度下降总是选取最简单,直接的方法获得答案)。根据梯度下降,其实我们可以简单认为模型的学习顺序是先学习不变量(与位置,输入内容都无关,比如哪些是高频词),然后只与位置相关的知识(与内容无关),与附近位置内容有关的知识,与远处位置内容有关的知识。在RNN和CNN模型中后两者是因为模型本身的偏置,但对于transformer模型,后两者是来自数据分布。这种顺序并不严格,但我们可以想象一下解空间的大小,约束越少解空间越大。比如输入的未知量组合后为常量,相当于$X+Y+Z=C$,X,Y,Z有两个自由度,并且可以取任意实数。但假如要位置相关,那就是$X+Y+Z=C \quad \mathrm{and} \quad W_1X=c_1, W_2X=c_2, W_3X=c_3$,如果要考虑相邻关系,那就是$f(x,y)=c_{xy}$,以此类推,我们可以近似的理解约束越来越多,自然解空间越来越小。那么假如我们的任务同时被一个大的解空间的和小的解空间覆盖,梯度下降有更高概率走进大的解空间(因为上一步状态在它周围的概率更高)。 如果对这方面有兴趣,推荐看bengio的经典工作,里面的内容会比我们的这个例子恰当很多 https://www.jmlr.org/papers/volume11/erhan10a/erhan10a.pdf ### 真理掌握在少数人手中 语言模型反映了人们说一句话的概率,但多数人说的话或共识未必是正确的,或符合科学的。比如很多生活常识和科学知识是不同的(如何养生,减肥等)。那么当我们希望模型给出科学客观的判断而非大多数人可能认可的观点时,语言模型就有其天然的劣势了。