皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

语言识别模型的起源,一个数学家数了数小说中的 20000 字母

语言识别模型源于一个数学家读小说的故事。

1913年,俄罗斯数学家安德雷·安德耶维齐·马尔科夫拿起一本俄罗斯文学的经典作品,亚历​​山大·普希金的歌剧小说《尤金·奥涅金》。不过马尔科夫只是为了测试自1909年发展起来的概率论。数学家更想看到一个个字母后面的数学结构。那时的概率论主要用来分析轮盘赌局和硬币翻转等现象,认为之前的结果不会影响到的当前事件的可能性。但是马尔科夫不赞同,他觉得大多数事情都有因果关系,他想要通过概率分析一些事情,并建立模型。

语言识别模型的起源,一个数学家数了数小说中的 20000 字母

德雷·安德耶维齐·马尔科夫

《尤金·奥涅金》成为马尔科夫的试验材料。他的假设听上去匪夷所思——这本经典文学作品中,某个位置会出现什么字母,某种程度上取决于它之前的字母。

计算机还没出现的1913,马尔科夫抄录了《尤金·奥涅金》书中的前 20000 个字母,不包括标点和空格。然后按10*10的排列方式,填在200个网格中,开始逐行逐列对元音字母进行计数。统计完发现,43%的字母是元音,57%是辅音。马尔科夫还将这些字母分成成对的元音和辅音组合,结果是:1104个元音对、3827个辅音对、15069个元音-辅音和辅音-原因对。从统计学看,这证明,在普希金文本中的任何给定字母,如果是元音,则下一字母可能是辅音,反之亦然。

马尔科夫用这个结果证明《尤金·奥涅金》的文本不是字母的随机分布,而是具有可以建模的基本统计的性质。后来,人们称马尔科夫这是给自己的数学技能找到一个实际用途——用链模型来模拟俄罗斯文学中辅音和元音的头韵法。

链模型就是马尔科夫链,又称离散时间马尔科夫链,指在状态空间中,从一个状态转换到另一个状态的随机过程,该过程是“无记忆”性质的,下一状态的概率分布只能由当前状态决定。马尔科夫在随机过程领域的研究成果还有马尔科夫决策过程,它提供面对部分随机、部分可由人类决策的状态下,如何进行决策,经过演化,被广泛应用在机器人学、自动化控制等领域。在马尔科夫链衍和马尔科夫决策过程理论基础上,20世纪60年代,Leonard E. Baum 和其它一些作者描述了一种隐性马尔科夫模型,这是大多数现在自动语音识别系统的基础。

维基百科上有一个事例来解释隐形马尔科夫模型。

假设你有一个住的很远的朋友,他会每天打电话说当天做了什么。他只会做三件事:公园散步、购物、清理房间,他根据天气选择做什么事。你不知道他住处每天的天气怎么样,但是你知道总趋势,在他告诉你每天做了什么事情的基础上,你要猜测他所在地的天气状况。

也就是说,在这个隐形马尔科夫模型中,“雨”和“晴”的状态对你来说是隐藏的,可观察的数据就是“公园散步”、“购物”、“清理房间”,那么用 Python 写下来就是:

 states = ('Rainy', 'Sunny')
 
 observations = ('walk', 'shop', 'clean')
 
 start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
 
 transition_probability = {
    'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
    'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
    }
 
 emission_probability = {
    'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
    'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
    }

在这些代码中,start_probability 代表第一次打电话的不确定性,此时概率分布不平均。transition_probability 表示基于马尔科夫链模型的天气变迁。emission_probability 表示了你朋友每天做某件事的概率。

再以语音系统为例,隐形马尔科夫模型在语音处理上,可以通过隐藏条件猜测下一个音,具体可从语义和发音两方面看。一是单字的发音有前后关系,如英语中的”They are”常常发音成”They’re”,或是”Did you”会因为”you”的发音受”did”的影响,常常发音成”did ju”。语音识别需要考虑到每个音节的前后关系,才能有较高的准确率。二是,句子中的前后字节间的关系,比如英文中动词后常接固定介词或对应名词,中文也类似。

当然,从马尔科夫数字母,到隐性马尔科夫模型的提出,再到语言识别、生成模型应用,期间还有很多人提出了各种各样的理论。其中影响比较大的是信息论创造者克劳德·艾尔伍德·香农。

语言识别模型的起源,一个数学家数了数小说中的 20000 字母

香农对马尔科夫数字母背后的思想很是着迷,像马尔科夫一样,香农尝试建立语言的统计模型,通过统计规则生成文本。

香农最初的实验,通过26个字母加1个空格,共计27个符号,随机抽取字母生成句子,每个字母概率相同,得到:

XFOML RXKHRJFFJUJ ZLPWCFWKCYJ FFJEYVKCQSGHYD QPAAMKBZAACIBZLHJQD

香农说生成的这句话毫无意义,因为当我们交流时,不会选择同等概率的字母组合。正如马尔科夫的实验表明,辅音比元音更可能出现。但是在更高的粒度上,E 比 S 更普遍,S 比 Q 更普遍。为了解决这个问题,香农修改了原始实验字母,使其更精确模拟英语中每个字母出现的概率。比如 E 出现的概率比 Q 高11%,这样得出一个新的结果,更接近一个正确的句子:

OCRO HLI RGWR NMIELWIS EU LL NBNESEBYA THEI EEI ALHENHTTPA OOBTTVA NAH BRL

在之后的系列实验中,香农证明了,随着统计模型变得更加复杂,可以得到更容易理解的结果。

马尔科夫和香农的实验,被看做是对语言的统计属性进行建模提供了一种新的思路,他们的语言建模和生成的统计方法为自然语言处理开创了一个新的时代。

参考:

https://spectrum.ieee.org/tech-talk/artificial-intelligence/machine-learning/andrey-markov-and-claude-shannon-built-the-first-language-generation-models

https://zh.wikipedia.org/wiki/%E5%AE%89%E5%BE%B7%E9%9B%B7%C2%B7%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB

转自 https://www.oschina.net/news/117916/history-of-language-generation