自然语言处理中的一些算法总结

图灵汇官网

作为一名数学与计算机领域的初学者,我希望通过对计算机领域经典算法的学习,掌握数学的思维方式,并学会运用相关的数学工具,以便更好地理解计算机和数学领域专家的思想和方法。这样一来,我就能在未来与计算机领域的伙伴们更有效地合作,将这些经典的数学算法从计算机领域的应用中迁移至金融投资领域。

在这篇文章中,我将简要介绍这些经典算法背后的数学原理,包括统计语言模型、马尔可夫假设、零概率问题、隐马尔可夫模型、Baum-Welch算法以及Viterbi算法。

一、从规则到统计

长期以来,人类在人工智能和自然语言理解方面走了不少弯路。过去,学术界普遍认为,要让计算机实现翻译或语音识别等任务,必须让计算机理解自然语言。这需要计算机具备类似人类的智能。在20世纪50到70年代,科学家们受传统语言学的影响,试图通过语法分析和语义获取来解决这一问题,但收效甚微。直到20世纪70年代以后,一些先驱者开始尝试基于数学和统计的方法,最终推动了这一领域的发展。

二、统计语言模型

一个句子的合理性取决于其概率大小,概率可以通过统计来评估。假设S是一组有意义的句子,由一系列特定顺序排列的词语Q1、Q2、Q3……Qn组成,n是句子的长度。S的概率可以表示为P(S)=P(Q1,Q2…Qn)。通过条件概率公式展开,我们可以得到:

P(Q1,Q2,Qn)=P(Q1)P(Q2|Q1)P(Q3|Q1,Q2)…*P(Qn|Q1,Q2…Qn-1)

P(Q1)容易通过统计获得,而P(Qn|Q1,Q2…Qn-1)因可能性过多难以估计。因此,我们引入马尔可夫假设,即假设每个词语出现的概率只与其前一个词语有关,从而简化问题。这便是二元统计语言模型。

三、零概率问题(Good-Turing估计)

对于未曾见过的现象,不应将其概率设为零。应该从总概率中分配少量比例给未见过的现象。具体来说,当某个现象出现的频率超过某一阈值T时,可以认为统计量足够,其概率为f(Qi|Qi-1);而当出现频率低于T时,则应降低该概率,并将部分概率分配给未出现的现象。这种方法称为Good-Turing估计。

四、隐马尔可夫模型

隐马尔可夫模型在近几十年来广泛应用于机器翻译、拼写纠错、手写识别、图像处理、基因序列分析、股票预测和投资等多个领域。自然语言处理本质上是一个通信问题,通信的核心在于编码、解码和传输。在通信中,我们需要根据接收端的观测信号O1、O2、O3……来推断信号源发送的信息S1、S2、S3……通过贝叶斯公式,可以将这一问题转化为求解条件概率P(S1,S2,S3…|O1,O2,O3…)的最大值。马尔可夫假设指出,随机状态的概率分布只与前一个状态有关。隐马尔可夫模型假设每个时刻的状态是不可见的,但会输出一个与之相关的符号Ot。

五、Baum-Welch算法(参数估计)

Baum-Welch算法是一种迭代方法,旨在找到一组能产生序列O的模型参数,然后不断迭代以优化这些参数,使其输出概率最大化。这一过程被称为期望最大化(EM)过程。尽管EM过程保证算法能收敛到局部最优解,但未必能找到全局最优解。

六、Viterbi算法(寻找最大值)

Viterbi算法用于寻找最有可能产生观测序列O的状态序列S。例如,当我们输入拼音O1、O2、O3……时,想要找出用户实际想输入的汉字S1、S2、S3……。尽管穷举法可以找到最有可能的路径,但计算量巨大。Viterbi算法通过动态规划逐步计算最短路径,大大减少了计算量,适用于大规模问题。

本文来源: 图灵汇 文章作者:
    下一篇