代码改变世界

自然语言处理(NLP) - 数学基础(1) - 总述

2019-12-11 23:45  叶伟民  阅读(1829)  评论(1编辑  收藏  举报

正如我在<2019年总结>里说提到的, 我将开始一系列自然语言处理(NLP)的笔记.

 

很多人都说, AI并不难啊, 调现有库和云的API就可以啦.

 

然而实际上并不是这样的.

首先, AI这个领域十分十分大, 而且从1950年图灵提出图灵测试, 1956年达特茅斯会议开始, AI已经发展了五十多年了, 学术界有的认为有六个时期, 有的认为有三起二落.

所以Ai发展到今天, 已经有相当的规模了, 不可能有一个人熟悉AI的所有领域, 最多也就是熟悉相关联的几个领域, 比如NLP和OCR以及知识图谱相关联, 这已经顶天了.

所以我不敢说我会AI, 我只敢说我做过自然语言处理(NLP)项目.

换种我们所熟知的方式表达, AI就相当于.NET, .NET有七龙珠, 遍及web, 桌面, 移动端, 手游端等等, 一个人不可能熟悉所有领域, 能够熟悉web和桌面端两三个领域已经很顶天了.

当一个做惯了web和桌面端的程序员突然去做移动端和手游端, 因为缺乏对应领域的基础知识, 是不能马上上手的, 也是通不过面试的, 也就是为什么很少.NET程序员能够从web和桌面端转型做手游端一样. 最典型一个问题, 让一个做web的.NET程序员去做手游客户端的自动寻路功能, 并不容易, 并不是调API就能解决的.

所以虽然我做过NLP项目, 现在让我突然去做阿拉法狗, 我也是不行的.

我接触到不少人做过NLP项目, 因为只会调现有库和云的API, 最终效果不佳, 不得不回退到用正则表达式处理的方式, 甚至乎类似于"价值一个亿的AI核心代码". 或者采取人工+智能的方式.

在此我并没有嘲笑以上各种方法的意思, 毕竟第一我的水平也不怎么样嘛, 第二正则表达式和人工+智能的方式的确临时解决了部分问题.

但是人总是要有追求的, 就像Eric说的, 就算做咸鱼都要做一条有理想的咸鱼, 而且从长远的角度来说还是要靠数学才能根本性的解决问题.

 

数学和AI一样五花八门种类繁杂, 同样是研究数学, 研究计算共形几何和研究范畴论的两个人是很难沟通的.

自然语言处理(NLP)对应的数学分支是概率论. 而概率论中又会用到微分和积分, 合称微积分.

然而概率论子分类也很多, 这里就简单列一下NLP所用到的概率论知识点吧:

  1. 概率(probability)
  2. 最大似然估计(maximum likelihood estimation)
  3. 条件概率(conditional probability)
  4. 全概率公式(full probability)
  5. 贝叶斯决策理论(Bayesian decision theory)
  6. 贝叶斯法则(Bayes' theorem)
  7. 二项式分布(binomial distribution)
  8. 期望(expectation)
  9. 方差(variance)

然而要弄懂上面9点, 还需要理解以下概念:

  1. 排列组合
  2. 频率与概率
  3. 古典概型与几何概型
  4. 条件概率
  5. 全概率公式
  6. 一维和二维离散型随机变量
  7. 一维和二维连续随机变量
  8. 协方差和相关系数
  9. 大数定律及中心极限定理
  10. 样本与抽样分布
  11. 点估计

后面我会对具体每个概念写心得.