读书笔记——数学之美 1 文字和语言 vs 数字和信息 2 自然语言处理 - 从规则到统计 3 统计语言模型 4 分词 5 隐含马尔科夫模型 6 信息的度量和作用 7 贾里克尼和现代语言处理 8 布尔代数和搜搜引擎 9 图论和网络爬虫 10 PageRange-google网页排名 11 网页查询的相关性 12 有限状态机-地图和本地搜索 13 阿米特 辛格 博士 14 余弦定理和新闻分类 15 矩阵运算和文本处理 16 信息指纹 17 密码学 18 搜索引擎反作弊和搜索结果的权威性 19 数学模型的重要 20 最大熵模型 21 拼音输入法的数学原理 22 自然语言处理教父马库斯 23 布隆过滤器 24 马尔科夫链扩展——贝叶斯网络 25 条件随机场 26 维特比和维特比算法 27 期望最大化算法 28 逻辑回归和广告搜索 29 google云计算的基础 30 google大脑和人工神经网络 31 数据的重要性
读完数学之美,收获很多,在这里我对我的收获进行简要的总结,这些总结中不包括对具体算法和模型的详解,详解请参考其他资料,这里只进行简要的总结。
文字、数字、语言和数学是天然的内在的联系。我们的祖先过去在处理问题、设计语言的时候遵循的法则和我们今天探求的研究方法背后有着共同的东西,那就是数学规律。
通信模型:
信息 —— 编码 ——> 信道 —— 解码 ——> 信息
2 自然语言处理 - 从规则到统计
任何一种语言都是一种编码方式,语言的语法规则就是编解码算法。
1 机器智能
- 由图灵提出, 如果让一个人和机器进行交流,这个人无法分清与他交流的对象是人还是机器,那这个机器就具有智能。
- 当时的科学家认为要做好自然语言理解,要做好两件事: 分析语义和获取语义
- 学习语法规则、词性和构词法等。
- 分析句子采用的文法规则通常称为重写规则
2 从规则到统计
基于规则的句法分析很快走到了尽头:
- 多义词很难用规则来描述,是严重依赖上下文,甚至是‘世界知识’或者常识。
- 句法分析更加复杂,语法成分对另一个语法成分的修饰关系不一定相邻,而是中间隔了很多很多短语。
只有基于有向图的统计模型才能很好的解决复杂的句法分析。
基于统计方法的核心模型:
通信系统 + 隐马尔科夫模型
3 统计语言模型
如何衡量一个句子s在文本中出现的可能性- s在文本中出现的概率p(s)
s = w1 w2 w3 ... wm
p(s) = p(w1 w2 w3 ... wm)
= p(w1)*p(w2|w1)*p(w3)*p(w3|w1,w2)*...*p(wm|w1,w2,...,wm-1)
p(w1) 表示词w1出现的概率
p(w2|w1) 表示w2出现在w1之后的概率
p(w1)好统计, p(w2|w1) 也还好统计,但是p(wm|w1,w2,...,wm-1)无法统计!
马尔科夫提出了马尔科夫假设:
假设任意一个词wi出现的概率只与他前面的词wi-1有关
则有
s = w1 w2 w3 ... wm
p(s) = p(w1 w2 w3 ... wm)
= p(w1)*p(w2|w1)*p(w3)*p(w3|w2)*...*p(wm|wm--1)
对应的统计模型是二元模型 bi-gram
假设一个词的概率又他前面n-1个词共同决定,则成他为n元模型 n-gram
4 分词
很多亚洲语言、中日韩泰等,还有手写的英语,需要一些手段将词分开。
- 词是表达语义的最小单位
- 西方拼音语言有明显的分词符
- 亚洲语言词之间没有明显的分界符号
- 首先用要对句子进行分词,然后才能做进一步的自然语言处理
分词方法的演变
- 早期使用查字典的方式进行分词,这种方法能解决七八成的分词问题
- 后来使用基于统计的方法进行分词
衡量分词结果
- 人和人分词的结果都不一定一样
- 清华二年级本科生30人,进行人工分词,结果他们的一致性只有85% ~ 90%
- 多个统计模型分词器分词结果的差异要小于不同人之间分词结果的差异。
- 分词准确性很难衡量,不能说这个达到95%准确率的分词器就好于另一个90%准确率的分词器。只能说它与人工分词的吻合度稍微高一些而已。
词的粒度和层次
- 分词的结果不同各有各的道理,最主要的是分词的粒度不同
- 清华大学, 可以分成 清华和大学两个词 也可以当成一个词来看待,都有道理。
- 一般索引擎当中,小粒度分词效果更好
- 机器翻译、问答系统等一般大粒度分词效果更好
5 隐含马尔科夫模型
通信模型
信息 —— 编码 ——> 信道 —— 解码 ——> 信息
- 语音识别:听者去猜测说话者要表达的意思。接收端根据收到的信号来还原、理解说话者的意思。说话的时候,大脑是信源,声带、空气就是信道。耳朵就是接收器。
- 汉英翻译:说话者讲的是汉语,信道传送的编码方式是英语,根据接收到的英语,推测说话者要表达的意思,就是机器翻译。
- 几乎所有的自然语言处理问题都可以表达为编解码问题。
- 利用贝叶斯条件概率公式,从收到的消息中,还原信源的真实信息。
隐含马尔科夫模型
模型的具体详情,这里不做讲述,需要参考其他资料。
一个系统,内部有很多个状态,这些状态我们不知道,但是我们能看到不同的观察序列。状态之间的转移有概率,每个状态发出哪个观察值也有概率。这样一个模型为隐含马尔科夫模型。
用途:
- 语音识别 —— 声学模型
- 机器翻译 —— 翻译模型
- 拼写矫正 —— 纠错模型
- ...
使用:
- 给定一个模型,计算输出特定序列的概率 —— forward-backward算法
- 给定一个模型和输出序列,找到概率最大的状态序列 —— viterbi算法
- (训练)有足够多的观测数据,估计模型内部参数 —— 有监督:统计; 无监督:EM算法
6 信息的度量和作用
信息熵
信息和不确定性有直接关系。如果要搞清楚一件非常不确定的事情,需要大量的信息。如果对事情了解比较多,则不需要太多的信息就能把他搞清楚。信息量就等于不确定性的多少。
香浓提出信息熵的概念,用来衡量信息量的多少。
信息熵的具体数学原理在这不多说,还需参考其他资料。
信息的作用
- 获取相关的信息,能够减少事件的不确定性,信息量越大,不确定性越小
- 不相关的信息不论获取多少信息,事件的不确定性是不会有减少的。
互信息
衡量事件的相关性。
在自然语言处理中,用来衡量语义的相关性。
相对熵、交叉熵
用来衡量两个取值为整数的函数的相似性。
7 贾里克尼和现代语言处理
一个传奇科学家的一生的故事。向老师致敬!
8 布尔代数和搜搜引擎
布尔代数
- 两个值: 真和假 也是 0 和1
- 三种运算: 与 或 非
搜索引擎的索引:
就像擦字典一样, 需要先去查到这个字的页码,在去这个页看这个字的解释。
就像图书馆找书一样,需要先查到这本书在哪个货架哪个位置,再去这个位置找到这本书。
类似,关键词、网页之间建立起了索引,这种快速拿关键词去查找网页的技术运用了布尔代数来实现。
9 图论和网络爬虫
图论
- 深度优先遍历
- 广度优先遍历
网络爬虫
搜索引擎实际上是一个大图,每个网页都是一个结点,网页之间的超链接就是结点之间的弧。
通过爬虫,在网页的连接之间来回搜索网页,也就是对图进行尽量完全的遍历,来实现了搜索引擎的数据。
在这里,如果快速、不重复又完整的遍历所有网页是技术关键。
10 PageRange-google网页排名
搜索引擎把什么搜索结果排在前面?什么排在后面?
一般来说,一个权威专家说, xxx 和xxx 是该领域的专家, 那么绝大多数人都会觉着一定是这样。
如果一个偷鸡摸狗的不良少年说xxx是一个专家,可能大家都会笑笑就过去了,并不会信以为真。
google rank 把所有网页(结点)和网页之间的链接(边)建立起联系。 不同的边有不同的权重,是对结点优先级的贡献程度。 权威一点的网站指向来的路径权重会稍大一些。 通过这样的数学模型,把网页的排序搞定了。
简而言之如上所述,但是实际上要复杂得多。 具体的数学模型这里不做叙述。
11 网页查询的相关性
作者在这个章节讲了 TF-IDF作为一种度量,来衡量查询的关键词和检索出网页的语义相关性。
- TF: 词频, 一个词在一个网页中出现的频率。 该词出现次数 / 该网页总词数
它反映出一个词在该网页中的重要程度。 但是一个实词往往不及 的 着 了 这些虚词来的频率高,而这些虚词没什么实际意义。 - IDF: 逆文本频率, log(出现该词的文档数/总文档数) , 衡量了一个词在是否在所有文档中都出现,这个词在一个文档中是否对核心思想 关键词有贡献。
12 有限状态机-地图和本地搜索
有限状态机
是一张图, 有开始状态和结束状态还有中间状态,所有状态都是结点,状态之间能转移,就有通路。这样一个图模型,为有限状态机。总能经过有限次状态转换从起始状态到终点状态。
- 可以用于文本的地址分析,xx省xx市xx市xx区xx县xx街道xx号,这种状态转移
图论中的动态规划-导航
城市之间的道路可以构建一个图结构,道路的距离可以定义成图的边权。在这种情况下,导航两个地点的最短路径的时候,使用动态规划算法进行最短路径搜索。
13 阿米特 辛格 博士
向伟大的老师致敬。这是一位前辈科学家的故事。主要讲述他设计和实现的算法又简单又好用。
14 余弦定理和新闻分类
新闻的特征向量
对于一篇新闻中所有的实词,计算他们的tf-idf,把这些值按照对应的实词词汇表的位置依次排序,得到一个向量。
比如:
词表总有5个词: a b c d e
文章x中所有实词是: a d, 计算a d在文章x中的tf-idf 为 0.1 0.3
则 x的特征向量: [0.1, 0, 0, 0.3, 0]
词向量间的度量
作者在这里提出余弦相似度,用来衡量两篇文章的中心思想的相似程度
对于两篇文章的向量 a和b
cos<a,b> = <a, b> / |a| * |b|
分子是两个向量的内积,分母是两个向量模长的乘积。
算两个向量的余弦的大小,也就是两个向量夹角的大小。虽然两篇文章使用的关键词的数量不一定一样,但如果用词比例接近,那么向量方向就几乎相同。
如果两个向量同向共线,那么他们语义完全相同
如果两个向量正交,那么语义无关
如果两个向量反向共线,那么语义完全相反
余弦相似度进行聚类
可以使用余弦相似度对文本进行聚类或者分类,把新闻分成不同类别。
当类别太多的时候,分类任务很难,可以使用自动聚类,把文档从多到少最后聚类成一个类别,认为决定哪个中间结果是最好的聚类结果。
计算余弦的小技巧
- 去掉虚词:可以在构件文本向量的时候,去掉全文本中所有的虚词,因为这些词在所有文章都出现很多次,对文章主题基本没什么贡献。
- 位置加权:标题、总结部分的实词明显对中心思想有贡献,可以提升权重。
15 矩阵运算和文本处理
文本和词汇矩阵
用一个大矩阵来表示词和文章的关联性。
假如有N个词,M篇文章,可以得到一个M*N的矩阵:
A = (a_i,_j)_m*_n
其中aij表示第i行第j列元素,也表示第i篇文章在字典中第j个词的加权词频(可以用tf-idf或其他的)
对A 进行奇异值分解,为
Am*n = X_m*_x B_x*_x Y_x*_n
- X 是对词进行分类的结果。一行代表一个词,一列代表一个相近的词类, Xij表示第i个词和第j个类别的相关程度
- Y是对文本分类的结果。 每一列对应一个文本,每一行对应一个主题。 Yij表示第j个文本和第i个主题的相关程度。
- B是词类和文章类别的相关情况。Bij表示第i个词类和第j个文本类别的相关程度。
16 信息指纹
信息指纹
是一种技术手段,在大量文档中,给每个文档一个指纹,所有文档的指纹长度相同,每个文档有唯一的指纹,并且不同文档的指纹相同的概率非常小。
生成指纹的方法:
- SHA-1
- MD5
- ...
信息指纹的用途
- 集合相同的判定: 将两个集合的元素指纹相加,判断两个集合的指纹是否相同
- 判定集合基本相同: 挑选两个集合中元素尾数相同的元素的指纹来比较,可以判定集合中元素80%~90%的重复
- 反盗版: 图像、视频等赋予指纹,指纹相同的文件,则后产生的文件为盗版。用在了youtube上传视频当中的自动化监测。
指纹的重复性和相似哈西
- 指纹是可能重复的,根据设计不同,重复的概率也不同,但可以把这种重复概率控制在极小
- 相似哈西:一种特殊的信息指纹
17 密码学
密码学的自发时代
- 古老的密码学主要是建立一个表,来查明文和暗纹
- 截获一些情报,统计一下字母频率,可以破解出这种密码。
- 好的编码方法,破译这应该无法从密码中统计出明码的规律
信息时代的密码学
介绍了一些算法,在信息论的指导下,加密算法在解密上的难度大大增加。
18 搜索引擎反作弊和搜索结果的权威性
搜索引擎反作弊
作弊:利用不正当手段提高自己网页的排名
- 重复关键词
- 创建多个网页引用
- ...
反作弊
- 对网站的外连接建立向量,计算余弦相似度,发现大量网站余弦几乎方向相同,则这些网站都是专门链接别人网站的作弊网站。
- ...
搜索结果的权威性
- 对网页文本进行句法分析
- 找到主题短语
- 找到信息俩元
- 利用互信息,找到短语和信息源的相关性
- 对主题短语进行聚合
- 对网站中网页进行聚合
这样针对不同主题和信息源,能够得到得到全维度相关矩阵。具体方法请参考原书。
19 数学模型的重要
例举了古代先哲研究航天问题的一些故事,道出了数学模型的重要性。
- 一个正确的数学模型在形式上应当很简单。
- 一个正确的模型一开始可能不如一个精雕细琢的模型来的准确。
- 大量准确的数据对研发很重要
- 正确的模型可能会受到噪声干扰,显得不准确,不应该用一种凑合的模型来修补,应该找到噪声的根源,此时有可能会有重大发现。
20 最大熵模型
最大熵原理
对一个随机事件概率分布进行预测的时候,我们的预测应当满足全部已知条件,而对未知情况不要做任何主观的假设。在这种情况下,概率分布最均匀,预测的风险也最小。因为这时候概率分布的信息熵最大,所以叫做最大熵模型。
模型算法具体内容不叙述,请参考其他资料。
最大熵模型的训练:
采用通用的迭代算法GIS算法:
- 假定初始为均匀分布
- 用第n次迭代的模型来估算每一种信息特征的分布,如果超过实际,就把参数调小,否则调大。
- 重复上一步骤直到收敛
后来有科学家提出了改进的gis算法为 IIS 算法,加快了模型的训练。
21 拼音输入法的数学原理
输入法与编码
对汉字的编码氛围两部分:
- 对拼音的编码 —— 找到对应按键的速度
- 消除歧义性的编码 —— 找到正确词的速度
两部分都进行优化才能达到快速输入
拼音转汉字的算法
- 有限状态机
- 最短路径搜索
每当按下一个新拼音字母的时候,计算 对应汉字的最大概率的状态转移路径。
个性化语言建模
- 不同学历、不同地区、层次的人习惯用语都不一样
- 不同主题的写作过程中主要用语也不一样
- 既要对个体进行语言建模,也要总和通用模型才能达到好的效果
- 最好的办法是采用最大熵模型总和两种模型
- 用简单的线性组合可以简化最大熵模型的参数,且能达到还不错的效果。
22 自然语言处理教父马库斯
向伟大的前辈致敬。讲了这位老前辈在管理和教学上的优秀成果。
23 布隆过滤器
一个快速从集合中查找是否已经存在某元素的算法。
- 对不同元素进行特定编码放入一个很长的向量中
- 检查一个新元素,编码后得知在向量哪个位置,进行波尔代数运算就能知道是否在集合中。
- 布隆过滤器有错误识别的可能性。
算法详细过程不进行介绍,还请参考其他资料。
24 马尔科夫链扩展——贝叶斯网络
- 马尔科夫链是贝叶斯网的特例,贝叶斯网是马尔科夫链的推广。
- 马尔科夫链:描述了一个状态序列,每个状态取决于他前面有限个状态。
- 贝叶斯网:每个状态只跟与其直接相连的(一个或多个)状态有关,与他间接相连的状态没有直接关系
- 每个节点的概率可以又贝叶斯公式计算
- 贝叶斯网络也称作信念网络
贝叶斯网络的具体算法不进行介绍,还请参考其他材料
贝叶斯网络在词分类中的应用
- 主题模型:
基于统计的模型分析文本,抽取概念,分析主题。
概念:取得文本关键词矩阵,转置90度,进行奇异值分解,或者对每个词以文本作为维度,建立向量,进行聚类,得到对词的分类,每个类叫做概念。
一个词可以属于多个概念,一个概念可以属于多个文档,这样建立一个贝叶斯网。
贝叶斯网的训练
- EM算法
25 条件随机场
条件随机场是联合概率分布的有效模型。
文法分析
- 文法分析指根据根据文法对一个句子进行分析,建立这个句子的文法树。
- 有时候也指对一个句子各个成分的语义进行分析,得到这个句子的语义树。
- 以前一直采用基于规则的方法,不断使用规则向上合并,一旦某一步走岔路了,就要回溯很多步骤。因此这种方法计算复杂度大的不得了。
- 后有科学家统计出文法规则的概率,在选择文法规则时,坚持让被分析的句子的语法树概率达到最大。一下降低了很多复杂度,准确率也大大提高。
- 上世纪90年代,科学家们采用条件随机场大大提高了浅层分析的正确性达到95%,使得文法分析得以应用到很多产品如机器翻译上。
条件随机场
在隐含马尔科夫模型中,观察值序列中某一个时刻都观察值xi只与同时刻状态有关yi,如果xi与该时刻前后的状态yi-1 yi yi+1 都考虑有关,对应的模型就是条件随机场。
- 条件随机场是对隐含马尔科夫模型的一种扩展
- 条件随机场是一种特殊的概率图模型
- 顶点是一个个随机变量比如x1 y1,边表示他们的依赖关系,通常是一种概率分布p(x1,y1)
- 变量之间要遵循马尔科夫假设,每个状态的转移概率只取决于相邻节点
- 贝叶斯网络是有向图,条件随机场是无向图
- 条件随机场的节点为状态机和Y和观察值集合X,两个集合的联合概率分布P(X,Y)为模型参数
条件随机场应用在文法分析
x为看到的东西,在浅层分析中,他是句子的词、每个词的词性等。
y为要推导的东西,语法成分,比如 名词短语、动词短语、时间短语等。
条件随机场其他方面的应用
曾用于每个城市犯罪的时间地点预测,去的相当不错的成果。
26 维特比和维特比算法
讲述了科学家维特比的故事。向伟大的科学家致敬。
维特比算法是一种图中最短路径的动态规划搜索算法。
该算法主要用于隐马尔科夫模型中。
27 期望最大化算法
在这本书中,我看到的EM算法,我感觉就是k-means聚类算法,没有感觉到他和kmeans的不同。在学校的模式识别课上也学到了EM算法,当时觉着特别难理解,根本理解不上去。在这里我就不胡乱给出见解了。还望大神多多指点。
- em算法有可能根据不同的初始化值,没有到达最优点而收敛在次优点
- EM算法分成E步和M步,两个步骤迭代直到收敛
E 计算期望值 —— 输入数据计算期望
M 最大化期望值 —— 计算新的模型参数
28 逻辑回归和广告搜索
广告搜索三阶段
-
第一阶段——竞价排名,谁给的钱多谁排在前面
猜想:给得起钱的公司都是卖好东西的大公司。
结果:很多给大钱的公司是卖残次品获得高昂利润的公司。 -
第二阶段——预测用户点击广告的概率
-
第三阶段——进一步进行全局优化
广告推荐这里有很多数学问题,不能进行详细说明。还请参阅其他材料。
logistic 回归
logistic回归算法不做介绍,请参考其他材料。
后来各个公司纷纷采用logistic模型来做自己的广告点击率预测模型。
29 google云计算的基础
分治算法思想,把大问题逐个分解成小问题,小问题的解合并成大问题的解。
google开发出mapreduce之后,实现了把超大问题放在多个不那么强悍的计算机上进行分治求解,从而实现了云计算的基础。
30 google大脑和人工神经网络
主要讲了google利用神经网络算法构建出了google大脑,神经网络算法不进行详细介绍请参考更多权威资料。
31 数据的重要性
这章中作者讲了很多内容 很有意思,很有作者的个人观点,却也我感到十分认同。
数据的重要性
- 人类的文明和进步是通过数据收集、处理和总结而达成的。
- 为啥有人相信算卦?因为算卦出结果之后,相信的人身边有其他真实情况把算卦结果应验了!所以这些人对算卦深信不疑。这就是数据
- 天气不好出征打仗不顺利,这是一代又一代人总结出来的经验,也是数据的总结。
- 啥时候更低,啥时候丰收,都是口口相传的经验,是数据的提炼
其他内容就不细说了,总之带有了作者主观色彩却又让人折服。
个人读完数学之美的总结。希望对其他人有帮助,也留给自己今后回来参考。
欢迎披露与指正