学习材料:数学之美
学习计划:每天1~2章
学习时长:7.20左右【超时,预计8月初完成】
第一章 文字和语言 vs 数字和信息
- 香农:信息论之父
- 非洲是人类文明的摇篮
- 汉字大约有十万个,常用的七千个
- 信息的载体不仅可以是文字,也可以是数字(0和1)
- 信息冗余,虽然麻烦但是信息会更安全。比如有多个语言的书
- 十进制的原因是人类有十根手指
- 古印度人创造了阿拉伯数字,而不是阿拉伯人
- 实践是检验真理的唯一标准
第二章 自然语言处理 从规则到统计
- 任何一种语言都是一种编码方式,语言的语法规则是编解码的算法[一种很好理解算法的描述方式]
- 机器翻译和语音识别不是靠理解自然语言工作的,而是数学统计模型
第三章 统计语言模型
- 判断一个句子是否合理,通过概率实现。贾里尼克,马尔可夫解决了概率难算的问题(二元模型)
- 数学的魅力在于把复杂问题简单化。而编程的魅力在于可以创造一个完全逻辑的世界
第四章 谈谈分词
- 想实现分词,ABCDE,如果AB可以连起来AB一组,如果ABC可以连起来就ABC一组,以此类推
- 颗粒度,经常看到这个词,指的是划分的块大小,专业的描述法
- 对于暴力实现分词的方法。有更好的实现方法,先按最小颗粒度划分,再到复合词表去优化。具体细节不清楚,只知道有这个方法去做
第五章 隐含马尔可夫模型
- 通信的本质是一个编码和解码的过程
- 隐含马尔可夫模型是机器学习的主要工具之一
第六章 信息的度量和作用
- 信息熵和变量的不确定性成正比;互信息 = 加入一个信息后的信息熵改变量;相对熵,两个函数的差异越小,相对熵越小。凭借这个原理可以实现查重
- 信息的作用:消除不确定性
第七章 贾里尼克和现代语言处理
- 我一直认为,一个人想要在自己的领域走到世界一流,他的周围必须有非常多的一流人物
第八章 简单之美
- 所有的数学和逻辑运算,加减乘除,乘方开发全都可以转化成二进制运算
- 假设当前有n个网页,m个词,那就会有一张m*n的索引表,当索引多个关键词的时候,就可以进行&操作,判断哪个文章有我们想要的数据,然而数据太大,采用分布式,相当多个服务器分担压力
第九章 图论和网络爬虫
- 上一章说了如何建立索引,这章分析如何加载所有的网站(作为资源库)
- 网络爬虫:把每一个网页当作一个节点,超链接当作弧;实现:BFS + 优先队列
- 欧拉图:从一个顶点出发,每条边不重复地遍历每一个顶点。要求每个顶点的度为2。证明:一进一出
- 情景:表信息太大,性能遇到瓶颈怎么办?首先分布式,明确每台下载服务器的分工,这样一看到某个tag就知道这个URL要往哪个服务器去搜索。往服务器发数据的时候,把多个小数据合在一起再发,减少TCP启动,结束(三次握手,四次挥手)带来的时间消耗
第十章 PageRank
- 本章目的是介绍度量网页质量的方法。PageRank算法:一个网页如果被很多其他网页链接,说明它受到普遍的信赖和认可。PageRank算法的实现:矩阵乘法,证明最后收敛,再进行平滑处理,得到最后的迭代公式
第十一章 如何确定网页的查询和相关性
- 如今搜索引擎进行搜索和排序的主要依据有:完备的搜索引擎,网页质量的度量(PageRank),用户偏好(很多浏览器下载完成之后会提示输入感兴趣的话题),确定一个网页和某个查询的相关性算法(TF-IDF)
- TF-IDF公式为;D指网页总数,D_w指和关键词w相关的网页数。用IDF作为w的权重
第十二章 有限状态机和动态规划
- 顺便复习了一下Dijkstra,终于理解了算法的核心思想:S->....->A->B,假设是S到B的最短路,那么S->A此时也一定是最短路,否则肯定有从S->B更短的路径。因此,每次从当前距离远点最小的点开始更新,扩散到附近的点,一定是S->now->next最短的路径。而dis最小的点,也肯定不能被其他dis比他大的点所更新
第十三章 Google AK-47的设计者
- AK-47冲锋枪,从不卡壳,不易损坏,可以在任何环境下使用,可靠性好,杀伤力大,操作简单
- 许多失败并不是因为人不优秀,而是做事情的方法不丢,一开始追求大而全的解决方案
- 寻找简单有效的解决方案,相信简单哲学(经过深思熟虑,给出合理的解释)
第十四章 余弦定理和新闻的分类
- 新闻的分类,很大程度上是依靠余弦定理,用余弦值确定关联
第十五章 矩阵运算和文本处理中的两个分类问题
- 对于一个矩阵A,使用奇异值分解可以将其分解为A = X * B * Y,即三个矩阵的乘积,这样可以减少计算量。在实际应用中,可以先进行奇异分解得到粗分类结果,再利用向量余弦方法进行迭代
第十六章 信息指纹及其应用
- 哈希,散列表,密码,时间复杂度,空间复杂度
第十七章 谈谈密码学的数学原理
第十八章 谈谈搜索引擎反作弊问题和搜搜结果的权威性问题
- 噪音存在于任何通信系统,而好的通信系统需要过滤掉噪音,还原真实信号。搜索引擎是一个特殊的通信系统,反作弊和确定权威性就是去噪音的过程。而这一过程背后依靠的是数学模型和方法
- 原始的信号混入噪音相当于给两个信号做卷积,噪音消除相当于是解卷积的过程
第十九章 谈谈数学模型的重要性
- 近日点运行比远日点快?
- 开普勒定律:相同时间内,日地连线扫过的面积相等
- 一个正确的数学模型应该足够简单
- 思考:就像一个工程框架应该足够清晰一样
- 正确的模型可能会存在噪音的干扰,而不正确,这时候不应该采用一种“凑活的修正方法加以弥补”,而是找到噪音的根源,这也许能通往重大的发现
- 思考:当在开发过程中,碰到BUG应该认真找出问题的根源,而不是特判,仅仅着眼于眼前的问题
第二十章 谈谈熵最大模型——不要把鸡蛋放到一个篮子里
- 最大熵:保留全部的不确定性,将风险降到最小。他可以解决将各种信息整合到一个统一的模型中的问题,它有很多良好的特性:形式简单,效果好
- 不要把鸡蛋放到一个篮子里是一个最大熵模型
第二十一章 语音输入法的数学原理
- 不同的问题,可能背后的原理,数学模型是相同的
第二十二章 自然语言处理的教父马库斯和他的优秀弟子们
- 马库斯让他的学生自选题目去研究。典型有两种数学模型:追求完美和简单才美。一种是复杂但优化到极致,一种是简单效果好
第二十三章 布隆过滤器(散列表强化版本)
- 布隆过滤器的原理是用多个随机数对用的bit都为1的概率去judge,用少量空间存储大量信息
- 思考:设计思路比较暴力。。 我的第一反应是用字典树,如果只允许使用字母和数字的情况下,36层,每层36种可能。每次查找的复杂度是O(36)