正如我在<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點, 還需要理解以下概念:
- 排列組合
- 頻率與概率
- 古典概型與幾何概型
- 條件概率
- 全概率公式
- 一維和二維離散型隨機變量
- 一維和二維連續隨機變量
- 協方差和相關系數
- 大數定律及中心極限定理
- 樣本與抽樣分布
- 點估計
后面我會對具體每個概念寫心得.