第二遍:2020.04.20
主要讲述了文字、数字和语言的历史。
语言和数字的出现都是为了传递信息(通信)。
讲了通信模型。
语言的数学本质:每一门语言都是一种编码规则,而语言的语法规则则是解编码的算法。
每次我们想表达一句话,都先在头脑中使用某种编码规则编码一次。而对方听到后,在脑中解码,才能听懂对方想要表达的意思。
罗塞塔石碑 (Rosette stone),不列颠博物馆镇馆三宝之一,世界级文物。
制作于公元前 196 年,刻有古埃及国王托勒密五世登基的诏书。石碑上用希腊文字、古埃及文字和当时的通俗体文字刻了同样的内容,这使得近代的考古学家得以有机会对照各语言版本的内容后,解读出已经失传千余年的埃及象形文之意义与结构,而成为今日研究古埃及历史的重要里程碑。
由于其知名度与重要性,除了石碑本身外,罗塞塔石碑或罗塞塔这名词也被引伸用来意指或暗喻一些其他的事物。
其中,由于石碑上的刻文被用来作为语言翻译用途,因此有一款非常受欢迎的多国语言学习软件,也以《罗塞塔石碑》来命名。
除此之外,由于是破解埃及象形文这种如谜题般的事物之起始点,“罗塞塔石碑” 也被用来暗喻要解决一个谜题或困难事物的关键线索或工具,举例来说,欧洲航天局(ESA)就将其发展的太空探测器命名为罗塞塔,因为透过此计划,将会破解太阳系生成的秘密,是天文研究上的关键突破。
主要讲了自然语言处理的两大流派:规则流派和统计流派。
所谓的自然语言处理,即让机器读懂人类的语言
本章主要讲述了让机器处理自然语言的两种方法:基于语法规则和基于统计。
历史表明,基于语法规则的方向是错的。
[SEC] 在上个世纪70年代,基于规则的句法分析(包括文法分析或者语义分析)很快就走到了尽头。
[SEC] 1970年以后统计语言学的出现使得自然语言处理重获新生,并取得了今天的非凡成就。推动这个技术路线转变的关键人物是弗里德里克·贾里尼克(Frederick Jelinek)和他领导的IBM华生实验室(T.J.Watson)。
在讲述从基于规则到基于统计的历史时,笔者提出了一个很有趣的问题:为什么这场争议持续了15年呢?
他解释,首先,一种新的研究方法的成熟需要很多年。
第二,用基于统计的方法代替传统的方法,需要等原有的一批语言学家退休。
简单地介绍了,基于统计的方法的核心模型 = 通信系统 + 隐含马尔科夫模型
主要讲了统计语言模型的定义、基于马尔科夫假设的 N 元模型,以及对零概率的平滑处理方法。
自然语言的表达、传递具有上下文相关的特性。
而针对这种特性建立的数学模型,即是统计语言模型(Statistical Language Model)。
统计语言模型是自然语言处理的基础。
假定S是一个有意义的句子,由一连串特定顺序的词 w 1 w_1 w1, w 2 w_2 w2,…, w n w_n wn组成。
马尔科夫假设:假设在句子S中, w i w_i wi出现的概率只和它之前(紧邻)的N个词有关。
当N为1时,我们称之为二元模型(Bigram Model),
当N为N -1时,我们称之为N元模型。
我们先来考虑最简单的情况,N = 1,即 w i − 1 w_{i-1} wi−1 w i w_i wi。由之前的假设, w i w_i wi的出现与 w i − 1 w_{i-1} wi−1有关,
所以P( w i − 1 w_{i-1} wi−1, w i w_i wi) = P( w i w_i wi | w i − 1 w_{i-1} wi−1) P( w i w_i wi),
可以预见,随着N的增大,组合词的概率会越来越难算。
但同样的,模型的效果也越好。
四元以上的模型鲜有人用。Google的罗塞塔翻译系统和语音搜索系统,使用的是四元系统。该模型存储在500+台的服务器上。
马尔科夫假设的局限性:再高阶的模型也不能覆盖所有的语言现象。
可以采用一些长程的依赖性来弥补这方面的不足。
在延伸阅读部分,笔者还介绍了,零概率问题(总会有新词出现的嘛,或者说样本不到位)、模型不平滑问题(其实就是零概率问题导致的)、Zipf定律( 20% 的词占了 80% 的出现次数)。
笔者引申这些就是想表达,统计语言模型形式上看似简单,实际上水深着呢(要考虑的东西很多…)。
但数学的魅力就在于将复杂的问题简单化,哈哈。
[SEC] 当初只是简单读了一遍,在正式接触 NLP 后,再回来看这章,能更深刻地理解这章的内容,果然实践出真知啊!LM 的作用是基于统计的方法,对一个句子的出现的可能性(合理性)建模。N-gram 模型是对 LM 的简化。2003 年 Bengio 将神经网络引入了 LM,在NNLM 训练过程中的副产物——词向量——改变了传统文本表示的方法。
如章名所言,简单谈了中文分词方法的演变(词典→统计语言模型),以及如何衡量分词结果的好坏。
和中文语系相比,英语是不存在分词问题的。
不过,笔者也举了一个栗子:英语连续手写软件需要使用分词(单词和单词间没有停顿)。
[SEC] 这里给出后来的学习笔记。
中文分词算法总结
正向最大、反向最大、双向最大匹配算法
但显然地,这种基于词典的算法具有一定局限性:不考虑语义,不能发现新词等。
改进:加入语言模型,如下:
遍历择优の效率不高,何以更快?——vierbi 算法!
viterbi 维特比算法解决的是栅栏图的最短路径问题,属于动态规划(DP)算法的一种。
栅栏图的节点按列组织,每一列的节点只能和相邻列的节点相连,不能跨列相连,节点之间有着不同的距离。
安德鲁·维特比(Andrew J. Viterbi),CDMA(码分多址)之父,IEEE Fellow ,高通公司创始人之一,高通首席科学家。他开发了卷积码编码的最大似然算法而享誉全球。
viterbi 算法思想很简单,S-A 不用说,在 S-A-B 的所有路径中能确定 3 条分别到 B1、B2、B3 的最短路径,则整体最短路径在这 3 条最短子路径中产生,以此类推。由此,在不断筛选最短子路径的过程中,过滤掉了那些“不可能是最短路径的构成”的子路径。
viterbi 算法如何应用到分词上?
将概率取对数加符号,从而使得求最大值问题转化为求最小值问题。(注:部分概率没有给出,但默认知道)
此时,分词问题的最优解等价于从图的最左端点到最右端点的最短路径问题。
DP算法核心:把大问题拆成小问题,递进解决。例:如何赚 1 个亿?先赚一千,一万,十万…
https://blog.csdn.net/zhangping1987/article/details/42460677
信息量的大小如何度量?一本50多万字的《史书》到底有多少信息量?
信息论的创始人香农(Shannon)从信息的反面——不确定性,对信息量的度量进行了定义。换句话来说,我们消除了多少不确定性,就得到了多少信息量。
不确定性的度量用信息熵来表示,单位为Bit。信息熵越大表示不确定性越大。
信息熵公式如下(无特别说明,log的底都为2):
H ( X ) = − ∑ x ∈ X P ( x ) l o g 2 P ( x ) H(X) =-\sum _{x∈X}P(x)log_{2}P(x) H(X)=−x∈X∑P(x)log2P(x)
举个栗子,我们知道抛硬币的随机分布为:
正面 | 反面 | |
---|---|---|
概率P | 0.5 | 0.5 |
则抛硬币这一事件的不确定性(熵)为:H(X) = - (0.5 log0.5 + 0.5 log0.5) = 1 Bit
条件熵(Conditional Entropy)公式:
H ( X ∣ Y ) = − ∑ x ∈ X , y ∈ Y P ( x , y ) l o g P ( x ∣ y ) H(X | Y) =-\sum _{x∈X, y∈Y}P(x, y)logP(x | y) H(X∣Y)=−x∈X,y∈Y∑P(x,y)logP(x∣y)
其中,P(x, y)为联合分布概率,P(x | y)为条件概率。
互信息公式:
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) I(X; Y) = H(X) - H(X | Y) I(X;Y)=H(X)−H(X∣Y)
即引入事件Y后,对事件X的不确定性的消除量。所以互信息也称为信息增益。
相对熵(Relative Entropy)公式:
K L ( f ( x ) ∣ ∣ g ( x ) ) = ∑ x ∈ X f ( x ) ▪ l o g f ( x ) g ( x ) KL(f(x) || g(x)) = \sum _{x∈X}f(x)▪ log\frac{f(x)}{g(x)} KL(f(x)∣∣g(x))=x∈X∑f(x)▪logg(x)f(x)
又可以译作交叉熵,英文为Kullback-Leibler Divergence。
KL(P || Q) 表示当用概率分布 Q 来拟合真实分布 P 时,产生的信息损耗。其中 P 表示真实分布,Q 表示 P 的拟合分布。
损耗越大,两个随机分布的的差异性越大。
因此相对熵用于度量两个随机分布的的差异性。
从上面可以看出,相对熵是不对称的。
为了让它对称,詹森(J)和香农(S)提出了一种新的相对熵计算方法:
J S ( f ( x ) ∣ ∣ g ( x ) ) = 1 2 [ K L ( f ( x ) ∣ ∣ g ( x ) ) + K L ( g ( x ) ∣ ∣ f ( x ) ) ] JS(f(x) || g(x)) = \frac{1}{2}[KL(f(x) || g(x)) + KL(g(x) || f(x))] JS(f(x)∣∣g(x))=21[KL(f(x)∣∣g(x))+KL(g(x)∣∣f(x))]
相对熵最早用在信号处理上。比如有两个随机信号,它们的KL越小,说明这两个信号越接近。
其他方面,比如说论文抄袭检测。
用于衡量语言模型的好坏。
原理很简单,即在给定上下文的条件下,文章中每个位置平均可以选择的单词数量。
介绍了自然语言处理大师——贾里尼克的生平。
有兴趣的可以去看下。这里摘录了几个有趣的观点:
1)小学生和中学生其实没有必要花那么多的时间读书,而他们(这时候)培养(或积累)的生活能力、社会经验以及树立的志向将帮助他们的一生。因为中小学阶段积累的优势,会随着年纪的增长,理解力的增强而消失殆尽。
这个观点,我同意一半吧。多读点书还是有用的,毕竟优势不是朝夕,而是一点一点建立起来的。但不能只读书,我想这正是笔者所强调的。
2)想要在自己的领域做到世界一流,他的周围必须有非常多的一流人物。
3)不需要我告诉你们做什么,我只需要告诉你们不要去做什么(这样可以少犯很多错误)
技术分为术和道两种,具体的做事方法是术,做事的原理和原则是道。
(对于一个问题)不要总是指望靠一个算法、一个模型就能毕其功于一役,这是不现实的。
笔者说的布尔代数和搜索引擎的关系,其实就是搜索时对键入的关键词做的逻辑运算。
笔者在Google最常用得到一道面试题:如何构建一个网络爬虫:
1)首先,用BFS还是DFS?
2)页面的分析和URL的提取
3)URL表——记录已爬过的网页
在图论出现后的很长时间里,很难体会到这个领域的研究有什么实际用处。
但是随着互联网的出现,图论一下子就有了用武之地。
很多数学方法都是这样。
思路:利用网页之间的联系来衡量网页的质量。(这是一个系统的观点,把整个互联网当做一个整体对待,而不是像信息检索那样,把每个网页当成独立的个体)
网页间的联系,即有多少个网页指向了同一个网页,这个数量我们称之为权重(当然不只是数量)。则一个网页的排名来自于指向它的所有网页的权重总和。
使用矩阵来实现所有网页各自权重的计算。
在给定关键词的情况下,网页权重的衡量:
W = ∑ i = 1 n T F i ⋅ I D F i W = \sum_{i =1}^{n}TF_{i}·IDF_{i} W=i=1∑nTFi⋅IDFi
其中,TF是词频(Term Frequency),即关键词在网页中的占比。
IDF是逆文本频率指数(Inverse Document Frequency)。IDF听着很复杂,其实就是包含关键词的网页在所有网页中的占比。俗话说,物以稀为贵,正是这个理。越稀有,则IDF越大。
TF-IDF 实际上是:TF * IDF。主要思想是:如果某个词或短语在一篇文章中出现的频率高(即TF高),并且在其他文章中很少出现(即IDF高),则认为此词或者短语具有很好的类别区分能力,适合用来分类。
通俗理解TF-IDF就是:TF刻画了词语 w 对某篇文档的重要性,IDF 刻画了词语 w 对整个文档集的重要性。
从信息论的角度,一个查询(Query)中的每个关键词的权重反映了这个Key Word对这个查询提供了多少信息。
有限状态机(Finite-state machine, FSM),是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
FSM 是一种算法思想。简单而言,有限状态机由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。
讲述了阿米特·辛格博士的一些事迹。
在计算机科学领域,一个好的算法应该像AK-47冲锋枪那样:简单、有效、可靠性好而且容易读懂,而不是故弄玄虚。
我们将一篇新闻出现过的所有实词的TF-IDF值组织成一个向量,用这个向量代表这篇新闻——特征向量。
那怎么衡量两个向量间的差异程度呢?
向量夹角!夹角越大,相关性越小。当两向量垂直(正交)时,两向量无关。
上面这种做法,在我们知道一些新闻类别的特征向量时,很容易实现。
但当我们事先没有这些新闻类别的特征向量时怎么办?
解决:自底向上不断合并的办法。
1)计算所有新闻间两两的余弦相似性,将相似性大于一个阈值的新闻合并成一个小类(Subclass)
2)把每个小类中所有的新闻作为一个整体,计算所有小类的特征向量。
3)…
这种新闻归类的方法(余弦相似性)适用于被分类的文本集在百万数量级。如果大到亿级,计算时间会比较长。在下一个章节笔者介绍了一种更快速但相对粗糙的算法。
即矩阵运算中的奇异值分解(SVD,Singular Value Decomposition)。
首先我们使用一个大矩阵来描述所有文章、词的关联性,再将它分解成三个矩阵相乘。这三个矩阵都有着非常清晰的物理含义。
通过SVD,我们可以一次性得到分类的结果。
对于两个大文件是否相同,我们去比较它们的每一个字节,是非常耗时耗资源的。
就像人一样,每个人的指纹都是独一无二的。我们通过比较指纹,就能确定是否为同一个人。
同理,对于一个文件,我们通过一种算法,将其所有字节随机映射到16个字节中——特征值。通过比较两个文件的特征值,达到比较两个文件的目的。
当然,也存在两个不同文件的特征值相同的情况,但几率非常小。
密码学的最高境界是无论敌方获取多少密文,也无法消除己方情报系统的不确定性。
介绍了RSA算法。
笔者将搜索引擎比作一个特殊的通信系统,作弊就是加入噪音,反作弊和确定权威性就是去噪音的过程。(实际上我仍然无法理解)
介绍了托勒密的贡献。