正如我在<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所用到的概率论知识点吧:
- 概率(probability)
- 最大似然估计(maximum likelihood estimation)
- 条件概率(conditional probability)
- 全概率公式(full probability)
- 贝叶斯决策理论(Bayesian decision theory)
- 贝叶斯法则(Bayes' theorem)
- 二项式分布(binomial distribution)
- 期望(expectation)
- 方差(variance)
然而要弄懂上面9点, 还需要理解以下概念:
- 排列组合
- 频率与概率
- 古典概型与几何概型
- 条件概率
- 全概率公式
- 一维和二维离散型随机变量
- 一维和二维连续随机变量
- 协方差和相关系数
- 大数定律及中心极限定理
- 样本与抽样分布
- 点估计
后面我会对具体每个概念写心得.