人工智能的本質是發現事物之間的規律,然后對未來作出預測,一般方法是建立模型、求解模型。
“線性代數”、“概率論”、“優化論”這三門數學課程,前兩門是建模,后一門是求解,是學習人工智能的基礎。
線性代數
線性代數是學習人工智能過程中必須掌握的知識。線性代數中我們最熟悉的就是聯立方程式了,而線性代數的起源就是為了求解聯立方程式。只是隨著研究的深入,人們發現它還有更廣闊的用途。
在數據科學中,經常需要知道個體間差異的大小,進而評價個體的相似性和類別。衡量個體差異的方法有很多,有的方法是從距離的角度度量,兩個個體之間的距離越近就越相似,距離越遠就越不相似;有的方法是從相似的角度度量。
用距離衡量個體之間的差異時,最常用的距離就是歐氏距離,它和我們中學時學過的兩點間距離一樣,只不過現在的點是多維空間上的點了。
歐氏距離計算公式:
對應的Python代碼如下:
import numpy as np
users=['u1','u2','u3']
rating_matrix=np.array([4,3,0,0,5,0],[5,0,4,0,4,0],[4,0,5,3,4,0])
#根據公式計算用戶u1和u2的距離
d1=np.sqrt(np.sum(np.square(rating_matrix[0,:]-rating_matrix[1,:])))
#計算結果
d1
5.196152422706632
除了使用距離,還可以使用相似度來衡量用戶的相似性。常用的相似度是夾角余弦相似度。
兩個向量a、b的夾角余弦公式:
可以用下面的代碼計算兩個向量的夾角余弦相似度:
def mod(vec):
#計算向量的模
x=np.sum(vec**2)
return x**5
def sim(vec1,vec2):
#計算兩個向量的夾角余弦值
s=np.dot(vec1,vec2)/mod(vec1)/mod(vec2)
return s
#計算前兩個用戶的相似度
cos_sim=sim(rating_matrix[0],rating_matrix[1])
#計算結果為
0.749268649265355
夾角余弦值越接近1代表越相似。
Python中很多工具包已經實現了絕大多數距離和相似度的計算,可以直接調用。
向量運算、矩陣運算、向量空間模型、多項式回歸、嶺回歸、Lasso回歸、矩陣分解等都屬于線性代數的范疇。
除了使用數學公式以外,還可以利用概率進行建模。
概率論
“概率統計”是統計學習中重要的基礎課程,因為機器學習很多時候就是在處理事務的不確定性。
- 最大似然估計
最大似然思想是頻率學派使用的概率建模思想基礎,它是基于最大似然原理提出的。
最大似然原理,實質是以下兩點:
- 概率大的事件在一次試驗中更容易發生;
- 在一次試驗中發生了的事件,其概率應該最大。
在用概率思想對數據建模時,通常會假設這些數據是從某一種分布中隨機采樣得到的,比如正態分布。但是我們并不知道這個正態分布是什么樣的,均值和方差兩個參數未知,“模型已定,參數未知”。這時就可以用最大似然的思想建模,最終得到對模型參數的估計。
總之,最大似然估計的目標是找出一組參數,使得模型生成觀測數據的概率最大即可。
除此之外,還可以用貝葉斯方法和采樣的方法估計參數。
- 貝葉斯建模
人們在研究事件的統計規律時,會用隨機變量對一個隨機現象進行量化。如果兩個隨機變量不獨立,就可以得到著名的貝葉斯公式:
貝葉斯公式之所以非常重要,是因為在機器學習中建的模型可以表示成 P(HD)。D代表擁有的數據,而H則代表對數據中隱藏的模型做出的假設。根據貝葉斯公式就有:
貝葉斯公式從形式上看似乎很簡單,而且計算也不復雜,但它是貝葉斯學派的法寶。它成功地引入了先驗知識,對頻率學派的最大似然估計法進行了改進。
業界大牛曾這樣評價貝葉斯建模方法:“人工智能領域出現過3個最重要的進展:深度神經網絡、貝葉斯概率圖模型和統計學習理論。”
樸素貝葉斯的一個成熟應用是垃圾郵件分類問題,網上有很多案例,大家可以學習。
優化
模型建立起來后,如何求解這個模型屬于優化的范疇。優化,就是在無法獲得問題的解析解的時候,退而求其次找到一個最優解。當然,需要提前定義好什么是最優,就好像足球比賽之前得先定義好比賽規則一樣。
通常的做法是想辦法構造一個損失函數,然后找到損失函數的最小值進行求解。
梯度下降算法是最經典的求解算法,除此之外還有邏輯回歸算法和凸優化等。
————
以上數學知識是入門人工智能領域必知必會的數學知識,只有打好基礎,才能筑牢“上層建筑”。
參考資料:《人工智能基礎——數學知識》,作者:張曉明。