跳转至

概率出奇迹

1. 引言

概率,作为衡量不确定性的数学工具,它在人工智能领域扮演着至关重要的角色。今天这讲让我们一起见证那些由概率编织的奇迹。

在前面的课程中,我们提到过“大语言模型”,社会对这项技术充满了无限期待。它正在帮助我们以前所未有的方式进行创作和理解,无论是在文学创作、数据分析,还是在教育和研究中,都展现出了巨大的潜力。在这股热潮背后,是什么让这些模型能够如此神奇呢?这里又有哪些数学问题呢?在本小节,我们将要聚焦人工智能背后的一个神秘力量——概率。去看一看是哪些概率知识的应用使得语言模型如此神奇。

2. N-gram模型

首先,让我们来理解一下什么是语言模型。语言模型是一种建模自然语言的概率模型。简单来说,语言模型的核心任务是预测文本中下一个词出现的概率,可以用于评估一个词序列在现实表达中出现的合理性。

图像

例如,当我们说‘今天天气很’,人类语言表达中会衔接“好”,而不是“苹果”。语言模型给出的预测结果,下一个词可能是‘好’而不是‘苹果’。转化为数学问题就是,在已经观察到一些词语序列的情况下,预测下一个词的概率,例句中“好”的概率大于“苹果”。

想一想: 当你与朋友聊天时,你是如何理解之前说的话并猜测接下来会讲什么的呢?

图像

然而,当所需处理的文本长度远超过这个简单的例子时,直接计算条件概率变得复杂且不切实际。这时需要引入一个重要的概念——马尔可夫假设。马尔可夫假设提供了一种简化问题的方法,它指出,当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;通俗来讲,就是“已知现在,将来如何,与过去无关”。这就意味着,当预测下一个词时,我们只需要考虑紧接在前面的几个词,而不是整个句子或段落。这种假设显著减少了需要考虑的信息量,从而简化了预测任务,使我们能够更高效地构建语言模型。

N-gram模型正是基于马尔可夫假设,认为一个词的出现仅与它之前的n-1个词有关。假设有N个词,如何衡量这N个词组成一个句子的概率呢?

$$ p(w_1,w_2,…,w_n )= ∏p(w_i│w_{i-1}…w_{i-N-1} ) $$

当我们引入马尔可夫假设,整个句子出现的概率可以表示为所有词的联合概率,而这个联合概率就可以拆解为每个词出现的条件概率乘积。假设下一个词的出现概率依赖于前一个词,我们就称之为Bi-gram模型:

$$ p(S)=p(w_1,w_2,...,w_n )= p(w_1 )·p(w_2│w_1 )…p(w_n |w_{n-1}) $$

但是仅仅考虑前一个词是否足够呢?Tri-gram模型正是在Bigram的基础上更进一步,预测下一个词的出现概率依赖于前两个词。这种扩展的窗口使得模型可以更好地理解词语之间的连贯性和复杂关系:

$$ p(S)=p(w_1,w_2,...,w_n )= p(w_1 )·p(w_2│w_1 )·p(w_3│w_2 w_1 )…p(w_n |w_{n-1} w_{n-2}) $$

【例】

图像

以“今天天气很好”这句为例, 分别用到表示句子中的4个词。当采用Bi-gram模型时,在当前语境下,根据文本库的统计情况,“今天”这个词作为开头词的概率为0.82,在“今天”给定的条件下,我们需要知道第二个词“天气”出现的概率,利用条件概率进行计算即在成立的基础上的概率,得到0.41,依次类推,最后算出“好”作为句子结尾的概率。将这些概率值逐一相乘即得到整个句子的概率。在求解过程中,我们的目标就是选择使得整个句子概率最大的下一个词。假设计算到“很”下一词时,候选词的选择有“好”、“坏”、“糟”三种,我们选取能够使得句子概率最大的那个词即可。如果候选词中有“苹果”,那概率值一定非常低。

想一想:使用Tri-gram模型时该怎么计算呢?

3. 文本处理

了解了语言模型后,现在有一个关键问题——这些条件概率从哪里来呢?

答案是:统计。事实上,N-gram模型就是基于统计的语言模型,我们需要统计给定文本库中词和词序列的出现次数,利用词频进行条件概率的计算,计算过程可表示为:

$$ p(w_n│w_{n-1}…w_2 w_1 )=\frac{C(w_1 w_2...w_{n-1} w_n )}{C(w_1 w_2...w_{n-1})} $$

什么是文本库呢?它可以是书籍、文章以及社交媒体上的帖子等多种形式的文本。简而言之就是一个大规模的文本集合,涵盖了广泛的主题和语言风格。这些文本经过精心挑选和整理,构成了一个宝贵的资源库,为语言模型提供了学习和预测的基础。

【例】

图像

图像

已知文本库中部分词语及其出现次数,根据统计结果制成表格,表格中每一行代表当前词,每一列代表在文本库中当前词和下一个词同时出现的次数,以“想”这个词为例,当计算“想”的下一个词是“吃”的概率时,我们只需要用“想 吃”同时出现的次数除以“想”字出现的次数。现在计算句子“我想吃”的下一个词时,首先获取相应词和词组出现的频次情况,然后根据语言模型的公式进行联合概率的计算得出整个句子的概率,可以选取使联合概率最大的词作为下一个词。比较三个概率大小得到此例中“我想吃”的下一个词最可能是“苹果”。

这样,我们就了解了N-gram语言模型中下一个词预测的方法。但我们会遇到一个新问题,如果某些词语在文本库中从未出现过,我们该如何计算他们的概率?

【例】某地的天气预报中,由于罕见的气候条件,可能会出现红色的雪。但这个词组从未在文本库中出现过,根据计算得到的词序列概率将会是0,进而导致整个句子的概率为0。

图像

这便是N-gram模型中的稀疏问题。对于那些在文本库中很少出现或者从未出现过的词序列,模型缺乏足够的统计信息来准确预测它们。

为了缓解稀疏问题,我们引入数据平滑技术。数据平滑是一种重新分配概率空间的方法,它可以帮助我们在遇到未见过的词序列时,依然能够给出合理的概率估计。

图像

它的本质是重新分配整个概率空间,利用概率知识使已经出现过的词序列的概率降低,补充未曾出现过的词序列,从而避免个别项概率为零的情况。

想一想:还有其他的解决方案吗?

缓解稀疏问题后,在现实中,人们并不会以词预测词的方式进行交流。在预测下一个词时,需要考虑更多的上文。

直观上,我们应该增大N的取值来捕捉更多的有用信息,但是N越大越好吗?答案是否定的,随着N的增大,特定的N-gram词序列变得更加独特和罕见,概率为0的序列组合越多,数据稀疏的问题越严重。

【例】

考试即将开始,学生们打开了(?)”

在这个句子中,如果不考虑前文的“考试”,N-gram模型只能依赖于相邻的词来做出预测,“打开了”的下一个词可能就会是更常见的“书本”,而不是与考试有关的“试卷”。考虑一下,在如下例句的情景中,模型又该怎么办呢?

编程考试即将开始,随着时间的临近,学生们打开了电脑

“老师在白板上展示了签到二维码,随着上课铃声响起,学生们打开了手机扫描二维码签到

4. 神经网络模型

随着语言任务越来越复杂,N-gram模型始终受限于固定短距离的“视野”,为了更好地获取长距离词语的语义依赖,一种新的范式出现了——神经语言模型。这些模型不再仅仅依赖于词序列的直接统计,而是采用了一种更为先进的方法:将文本转换为稠密的向量表示。这使得模型可以捕捉到词语之间的关系,以及它们在特定语境中的意义。

图像

这种方法一直发展并沿用到如今的大语言模型。大语言模型通常指具有大规模参数和计算能力的自然语言处理模型,它们利用更庞大的数据量、更广泛的上下文、更强大的语言模型,不仅能够处理超长的文本序列,还能够生成更加准确和连贯的文本。

图像

例如,执行这个预测任务时,大模型能够综合考虑整个文档的信息,生成更加准确的预测。在这个过程中,神经网络会通过其隐空间特征,捕捉文本中的关键信息和逻辑关系。在这个句子中,“考试”这个词虽然距离需要预测的位置较远,但模型依旧会捕捉到这个特殊的情景,反映了模型对上下文逻辑关系的理解。那么,大模型是如何实现的?其中包含了哪些概率知识呢?

在自然语言处理任务中,我们会将上下文编码后的信息送入神经网络中,得到一个丰富的语义表示。在这个编码过程中,概率在神经网络的应用是非常基础且广泛的。其中会使用到激活函数,这是神经网络设计的一个关键组成部分,通过引入非线性,使得网络能够学习和模拟复杂的数据模式,常用的激活函数包括RELU函数、tanh函数以及Sigmoid函数等。

图像

想一想:激活函数的作用机制?怎么选择合适的激活函数?

但现在我们得到的只是一个中间结果,怎么生成具体的文本呢?实际上,我们需要将这些表示转化为词的概率。神经网络的最后一层是一个线性层,它的作用是将隐藏层的输出映射到一个与词表大小一致的一维向量,这个向量中的每个值代表对应词的分数。

图像

为了将这些分数转化为概率分布,我们使用softmax函数。softmax是一种数学函数,可以将任意实数转换为0到1之间的概率值,并且这些概率值的总和为1。在语言模型中,这个概率分布表示在当前上下文中,每个词出现的概率。通过这种方式,softmax函数不仅能将输出转换为概率分布,还确保生成的概率分布是合理的。这意味着模型在生成文本时,都是基于上下文的概率分布去选择每个词,从而使生成的文本更加连贯和自然。

5. 模型训练

当有了预测的概率分布后,我们的目标就是通过训练模型来调整其中的参数,使得这个概率分布尽可能的接近真实的文本数据。

为了衡量模型的预测与实际文本之间的差异。我们在它们之间定义一个明确的计算方式,称之为损失函数。在语言模型中,我们希望预测输出句子的概率最大化,就是所谓的最大化联合概率。模型训练中就将这个问题转化为最小化损失函数值。训练模型正是以此为目标去迭代接近于正确的、高质量的预测。

图像

6. 模型及概率的应用

经过充分的训练,模型已经能够理解和运用整个文档的上下文信息。即使我们给它一篇很长的新闻报道,并要求总结其主要观点,它依旧能深入理解这种长文章的整体结构和逻辑,这不仅仅是压缩信息,更要求在深入理解的基础上,提炼出核心信息。这显示了模型在处理复杂文本和提取关键内容方面的高级能力。  图像

而随着这些能力的发展,语言模型已经不仅限于理解,还能创造性地运用语言。得益于模型对人类语言模式的理解和学习,我们现在能够与智能助手进行自然而流畅的对话。这些助手不仅能够回答我们的问题,还能参与到更深层次的讨论中。它们能够捕捉到诗歌的韵律、节奏和情感,生成既有艺术美感又能触动人心的诗句。这种从理解到创造的飞跃,展示了语言模型在模拟人类语言使用方面的潜力和进步。

除了语言模型,概率在人工智能领域的应用是无处不在的。在推荐系统中,我们使用概率模型来分析用户的行为模式和偏好,从而提供个性化的建议;在预测模型中,无论是天气预报、股市分析还是疾病传播,概率论都是我们量化未来不确定性和做出决策的基础。

想一想:在推荐系统中,如何利用概率来预测用户对某个商品或服务的兴趣?

扩展到多模态学习领域。我们处理的不仅是文本数据,还包括图像、视频和音频等多种形式的数据。在这样的环境中,概率能够帮助我们理解不同数据类型之间的关系和相互作用。例如在摘要任务中增加图像、音频等内容以后,系统需要同时理解多个模态的信息,以生成一个全面且准确的摘要。又或者直接利用其他模态的信息,例如用文本指导图像上色,可以直接用文字控制目标物体上色,如下例的“粉色衣着”;还可以根据文本中所提到的情感,为图片增加情感滤镜等。 图像 最后,为什么模型要以概率的形式输出呢?其实,这不仅仅是为了量化预测的不确定性,概率输出还可以提高模型的透明度和可信度。当模型给出一个概率分布作为输出时,它实际上在告诉我们每个可能结果的相对可能性。在许多情况下,我们需要理解模型为什么会做出特定的预测。概率输出可以帮助我们追溯模型的决策过程,从而更好地理解其内部机制。

7. 思考与互动

  1. 为什么人工智能相关模型中要用到概率?

  2. 为什么在使用大语言模型时,同样的问题会生成多种不同的答案?