海北藏族自治州网站建设_网站建设公司_网站备案_seo优化
2026/1/3 2:39:11 网站建设 项目流程

原文:towardsdatascience.com/introduction-to-maximum-likelihood-estimates-7e37f83c6757

简介

最大似然估计(MLE)是一种基本方法,它使任何机器学习模型都能从可用数据中学习独特的模式。在这篇博客文章中,我们将通过将其应用于下一个词语预测问题来了解最大似然估计的概念,使解释更加直观。

注意:本文将使用一些来自概率和机器学习理论的概念。我会尽力使其尽可能通用,并在介绍必要概念时提供背景阅读链接。

问题设置

一个好的键盘应用的一个常见特性是预测即将出现的词语。随着你使用该应用,这些预测会越来越好,从而节省用户的精力。文本预测的另一个应用是在搜索引擎中。预测搜索节省了精力,并引导访客到结果,而不是让他们输入略微偏离的搜索词,而这些搜索词不会返回大量结果。作为这些应用的消费者,我相信你至少有一次想过“这个预测究竟是如何工作的?”让我们来了解一下最大似然估计如何帮助我们解决这个问题。

文本预测可以被视为一个 3 步骤的过程:

  • 第 1 步:用参数数学模型表示问题。

  • 第 2 步:使用历史数据调整模型的参数。

  • 第 3 步:使用调整后的数学模型进行预测。

让我们详细看看每个步骤包含的内容。

建模问题

这个步骤也被称为表示步骤,其中我们使用数学模型来表示我们对问题的理解。对于这个步骤,我们的目标是选择一个模型,它能准确地捕捉句子/段落/文章中词语之间的关系。捕捉这种关系将使我们能够理解某些词语的出现如何影响后续词语的出现。

用于文本预测应用的一种流行模型类别被称为语言马尔可夫模型。语言马尔可夫模型的想法是,一个词语出现的可能性取决于它前面的词语。这是可以理解的,因为任何文本都有一定的明确结构。这种结构控制着文本中的后续词语。从数学上讲,我们可以用条件概率来表示这一点:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f3d76ec403c81de4c3c3e2b78dad70c1.png

在这一点上需要注意的一点是,这是一个非常复杂的模型,因为我们正在考虑所有前面的单词来定义当前单词的可能性。然而,在现实中,一个单词的出现仅受前面几个单词的影响,即每个单词由有限上下文定义。从数学上讲,这可以表示为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/738c679737336451b92ffb4fa913b243.png

在这里,我们只考虑前n-1个单词来定义第l个单词的可能性。参数n控制模型复杂度。如果n很大,模型将能够捕捉到单词之间的复杂关系,但调整参数将非常昂贵。因此,在选择n时存在权衡。该模型被称为n-gram模型。对于这篇介绍性文章,我们将考虑二元模型(n=2)进行预测,然而,这里阐述的程序仍然适用于更高阶模型。

对于本文,我们考虑的另一个简化是位置不变性,这意味着只要单词的顺序相同,可能性就不依赖于单词在文本中的位置。如果V是某些单词的词汇,这可以数学上表示为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c19dd456c17389574369a10be616ecc0.png

在深入探讨更多细节之前,让我定义一些我将在此后经常使用的术语:

  • 信念网络(BN)- 它是一个有向无环图(DAG),其中每个节点代表一个随机变量,每条边代表条件依赖。

  • 条件概率表(CPT)- 对于一个节点,CPT 定义了给定其父节点状态的节点条件概率。我们可以用以下方式将L个单词的二元模型表示为 BN:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/945b78116c92a6e151ac4c6835585d9e.png

该模型的 CPTs 为

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3b35f517134149b877f7f163c9a440a3.png

其中ww′可以取词汇V中的任何值。这些 CPTs 是我们下一步必须调整的参数。

参数调整

此步骤也称为学习步骤,因为我们将在前一步中介绍模型的参数(CPTs)。为了便于此,我们将收集包含原始文本的历史数据(或训练数据),我们假设这是语言结构的自然表示。这可以通过从多个文本丰富的来源汇总数据来实现。在此步骤中,我们的目标是学习最佳解释训练数据的参数。这是通过最大化训练数据中单词出现的可能性来实现的。从数学上讲,这意味着我们必须最大化P(w_1,w_2,....,w_L),其中L是训练数据中单词的总数。

现在,最大化P(w_1,w_2,....,w_L)的目标与最大化log(P(w_1,w_2,....,w_L))的目标相同。后一个函数被称为 对数似然,它将在后面的计算中大大简化。因此,我们必须最大化:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ba21b62541a33b73c37f14f3bd510ac0.png

使用 乘法法则 可以很容易地找到模型似然与 CPTs 之间的关系,如下所示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2818ce3de645515fbbbd7ba7946ecb41.png

在贝叶斯网络(BN)中,pa(w_l)wl的父节点。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/630e06dd816fc6fd6273f1f317974fd5.png

x代表w_l可以取的所有值,π代表pa(w_l)可以取的所有值,C_xπ代表w_l取值xpa(w_l)取值π同时出现的次数。那么,似然可以写成:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d8ad1c6ad335e6a2d2b28bb5732c3bea.png

以这种形式写出对数似然,将允许对每个父节点配置π独立优化 CPTs。由于P(w_l=x|pa(w_i)=π)是给定π的概率分布,它必须加起来等于 1。为了在最大化对数似然时考虑这个约束,我们将使用一个 拉格朗日乘数。因此,要优化的函数变为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d6f2eb1462acdd8e36881fb4ed4eccbd.png

其中λ是拉格朗日乘数。我们可以通过将每个词相对于每个词的第一偏导数设为零来找到每个词(以及每个父节点配置π)的最优解。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e092088c3517c3598ae4daaa4d6d7f05.png

解上述方程以获得我们的二元模型,我们会得到以下结果:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ae8ecba0958cc8cdddd0be7229672b14.png

这些 CPTs 的值最大化了训练数据的似然,因此被称为最大似然估计

预测

我们的最后一步是使用之前步骤中学习的参数进行预测。假设,我们已经写了l个词,并需要预测(l+1)th个词。想法是从训练数据中检索所有跟随lth词的词,并选择出现概率最大的一个。数学上,(l+1)th可以通过以下方式获得:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e2181df04c694f8de6a0d6a34a72e05f.png

从这一点,我们可以得出预测质量取决于训练数据。如果我们有大量的数据,计数将趋向于自然发生词的真实代表。因此,预测质量会很好。键盘应用/搜索引擎通常从之前的聊天/查询中学习写作模式,并在使用应用时继续这样做。这就是为什么预测质量会随着时间的推移而提高。

一个玩具问题

让我们在 Kaggle 上可用的新闻类别数据集(CC BY 4.0)中的文本专家上实现所提出的方法,以观察概念的实际应用,并分析它们的运行方式。

这里有一些我准备好的数据文件,用于高效地进行预测:

vocab.txt

unigram.txt

bigram.txt

文件 vocab.txt 包含一个 500 个标记的列表,对应于单词、标点符号和其他文本标记。文件 unigram.txt 包含这些标记在每个大型文本语料库中的计数。文件bigram.txt包含这个语料库中相邻单词对的计数。用count(w_1,w_2)表示单词w_1后面跟随单词w_2的次数。计数以简单的三列格式存储:

index(w1)index(w2)count(w1,w2)

关于我们初始词汇的一个特别要注意的事情是,有一个“未知”标记,它代表所有出现在这个基本词汇之外的单词。这个标记非常有用,因为不可能将所有可能的单词都放入我们的词汇表中,尤其是在开始的时候。

现在,让我们假设,我们刚刚输入了单词THE,并想要给出下一个单词的前三个预测。下面是相同的Python 实现,我将在本文中简要解释。从步骤 3 中,我们知道我们可以使用以下方法获得下一个单词:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0684a5b6e136caead9b18b2a4dec28ac.png

其中π对应于这种情况下的标记THE。使用vocab.txt,我们首先获得THE的索引。然后,我们可以从unigram.txt中的相应索引获得C_π。接下来,所有跟随THE的单词都可以从bigram.txt中的条目中获得,其中第一列包含THE的索引。这些条目中的每一列的第三列提供C_xπ。现在,我们已经拥有了计算跟随标记THE的单词似然所需的所有数量。如步骤 2 中所述,我们可以使用

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9f8ffec1cfc12599f7db74c2d10c6df2.png

用于计算似然。一旦我们完成这个步骤,我们只需选择似然最高的前三个单词。如果我们运行我们的大词模型实现,基于似然,在THE之后的 top-5 标记是:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/645e995b6ee355bd8b9336ae8cddc78b.png

出现<UNK>作为最有可能出现的标记是预期的,因为大多数在THE之后频繁出现的单词都不在我们的小词汇表中。这个问题可以通过随着时间的推移,在遇到新单词时增加新单词来缓解。但在此之前,我们不得不推荐其他有效的标记,在这种情况下是U.,FIRST, 和COMPANY。这种行为可以追溯到键盘应用程序的行为。最初,它们要求你允许它们访问你之前的聊天以“个性化”预测。从那里,它构建了其初始字典。之后,随着你使用应用程序,它通过记录你输入的单词来增加其词汇量,并提高其预测质量。

结论

这就带我们来到了关于如何使用最大似然估计方法预测文本的文章的结尾。如果你已经读到这儿,我会很感激如果你能在故事上鼓掌。如果你有任何疑问/反馈,请通过评论告诉我。

如果你觉得内容有用,并想了解更多关于机器学习和 AI 的知识,请关注我的个人资料,以便在未来的帖子中收到通知。本帖中的所有图片都是我创作的。

欢迎访问我的网站以取得联系rishabhmisra.github.io/– 我经常就现实世界的 AI 应用进行咨询。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询