机器学习中的基本数学知识
注:本文的代碼是使用Python 3寫的。
- 機(jī)器學(xué)習(xí)中的基本數(shù)學(xué)知識(shí)
- 線性代數(shù)(linear algebra)
- 第一公式
- 矩陣的操作
- 換位(transpose)
- 矩陣乘法
- 矩陣的各種乘積
- 內(nèi)積
- 外積
- 元素積(element-wise product/point-wise product/Hadamard product
- 加
- 低等數(shù)學(xué)
- 幾何
- 范數(shù)(norm)
- 拉格朗日乘子法和KKT條件
- 微分(differential)
- 表示形式
- 法則
- 常見導(dǎo)數(shù)公式
- 統(tǒng)計(jì)學(xué)/概率論
- 信息論
- 香農(nóng)熵(Shannon Entropy)
- 博弈論
- 不知道放到哪兒
- 機(jī)器學(xué)習(xí)
- 激活函數(shù)
- 損失函數(shù)
- 附錄
- 希臘字母的含義和發(fā)音
- 數(shù)學(xué)符號(hào)的含義和發(fā)音
- 參照
- 線性代數(shù)(linear algebra)
線性代數(shù)(linear algebra)
第一公式
?
f(x)=xwT+b
這是在機(jī)器學(xué)習(xí)中,最常見的公式。我把這個(gè)稱為機(jī)器學(xué)習(xí)的第一公式,實(shí)際上就是線性分類函數(shù)(linear classifier)。
訓(xùn)練分類器的目標(biāo)就是求出(w,b)。
其中:
x 是一個(gè)一行矩陣 [[x1,x2,...,xn]]。
w 是一個(gè)一行矩陣 [[w1,w2,...,wn]]。
x 和 w 的維度相同。
b 是一個(gè)數(shù)。
xwT=∑ni=1xiwi
,稱為點(diǎn)積(dot product)。
有時(shí),我們也會(huì)見到這個(gè)公式表示為類似下面的樣子,它們的基本含義都是一樣的。
f(x)=wx+b
f(x)=wTx+b
f(x)=w???x??+b
?
注:這里w
表示為一個(gè)一維數(shù)組(或者向量、矢量(vector)) [x1,x2,...,xn]。
注:一維數(shù)組:在數(shù)學(xué)上,可以理解為向量,表示多維空間上的一個(gè)點(diǎn)。
注:由于在線性代數(shù)中,矩陣乘法ab≠ba,所以對(duì)于表達(dá)式wTx,嚴(yán)格地說,要把矢量(向量)看做一列的矩陣(而不是一行的矩陣),才符合數(shù)學(xué)上的定義。
注:表達(dá)式w???x??和wx是正確的,因?yàn)閣和x
是矢量,這個(gè)符合矢量計(jì)算的定義。
矩陣的操作
由于,這篇文章是從數(shù)學(xué)的角度寫的,所以我們先關(guān)注矩陣的操作。
換位(transpose)
矩陣的換位操作:將矩陣中的數(shù)按照對(duì)角線交換。
數(shù)學(xué)公式:wT
代碼示例:
矩陣乘法
-
矩陣相乘的含義
如果一斤蘋果10元,5斤蘋果多少元?答案是:10?5=50
如果一斤蘋果10元,一斤梨20元,5斤蘋果2斤梨一共多少元?
答案是:
[1020][52]=10×5+20×2=90
-
我們可以看出矩陣相乘的約束:乘數(shù)1的列數(shù)要和乘數(shù)2的行數(shù)相等。 -
矩陣乘法不滿足交換律
?m1?m2≠m2?m1
- 我們?cè)倏纯唇粨Q乘數(shù)后,計(jì)算的結(jié)果:
[1020][52]=[10×520×510×220×2]=[501002040]
比如:數(shù)20-
的含義是2斤蘋果多少錢。
舉例說明它們的不同之處:
?m1=[12]
?m2=[1020]
m1?m2的計(jì)算方法是:m1?m2=[12][1020]1?10+2?20=[50]
?
m2?m1
的計(jì)算方法是:m2?m1=1020110?120?1210?220?2=[10202040]
?
- 計(jì)算公式
矩陣相乘是:用矩陣1的每一行和矩陣2的每一列的點(diǎn)積,得到一個(gè)矩陣。
l?m
- 的矩陣。
?
x?y=[x1?xn]???y1?yn???=[∑ni=1xiyi]x?y=???x1?xm???[y1?yn]=???x1y1?xmy1???x1yn?xmyn???x?y=?????x11x21?xm1????x1nx2n?xmn???????????y11y21?yn1????y1qy2q?ynq??????=???∑ni=1x1iyi1?∑ni=1xmiyi1???∑ni=1x1iyiq?∑ni=1xmiyiq???
?
- 代碼演示:
矩陣的各種乘積
操作數(shù)學(xué)符號(hào)PythonDemo 點(diǎn)積(dot product) ab ? a.dot(b)
numpy.dot(a, b)AB=(1,2)(1020)=1?10+2?20=50
? 內(nèi)積(inner product) a?b
?a,b?? numpy.inner(a, b) a?b=abT
? 外積(outer product) a?b ? numpy.outer(a, b) A?B=(12)(1020)=(1?102?101?202?20)=(10202040)
? 元素積(element-wise product, point-wise product, Hadamard product ) a°b
a⊙b? numpy.multiply(a, b) A⊙B=(1324)(1020)=(1?103?102?204?20)=(10304080)
? 注:Python中,矩陣數(shù)據(jù)可以表示為matrix和ndarray兩種類型。
這兩種類型的操作非常接近,但是有細(xì)微的不同。
ndarray * operation :element-wise product.
matrix * operation :dot product.
numpy.multiply for ndarray :element-wise product. same.
numpy.multiply for matrix :element-wise product. same.
numpy.dot for ndarray : inner product. 1-d array.
numpy.dot for matrix :dot product. shape determined by values.
numpy.inner for ndarray :inner product. 1-d array.
numpy.inner for matrix :inner product. shape determined by values.
numpy.outer for ndarray :outer product. same.
numpy.outer for matrix :outer product. same.內(nèi)積
英文: inner product, scalar product。
?
矢量的降維運(yùn)算,變成一個(gè)數(shù)。
矩陣的內(nèi)積是每行每列的內(nèi)積的矩陣。xy=?x,y?=∑ni=1xiyi
?
x = numpy.array([1, 2]) y = numpy.array([10, 20]) print("Array inner:") print(numpy.inner(x, y)) ''' Output: Array inner: 50 '''x = numpy.mat([[1, 2], [3, 4]]) y = numpy.mat([10, 20]) print("Matrix inner:") print(numpy.inner(x, y)) ''' Output: Matrix inner: [[ 50][110]] '''外積
矢量的升維運(yùn)算, m
維矢量和n維矢量的外積是m?n為矩陣。
矩陣的并集運(yùn)算, a1?a2維矢量和b1?b2維矩陣的外積是(a1?a2)?(b1?b2)為矩陣。x?y=?????x1x2?xm????x1nx2n?xmn???????????y1y2?yp????y1qy2q?xpq??????=???????????x1y1?x1ny1x2y1?xmny1??????x1y1q?x1ny1qx2y1q?xmny1qx1y2?x1ny2x2y2?xmny2??????x1ypq?x1nypqx2ypq?xmnypq???????????
?
x = numpy.array([1, 3]) y = numpy.array([10, 20]) print("Array outer:") print(numpy.outer(x, y)) ''' Output: Array outer: [[10 20][30 60]] '''x = numpy.mat([[1, 2], [3, 4]]) y = numpy.mat([10, 20]) print("Matrix outer:") print(numpy.outer(x, y)) ''' Output: Matrix outer: [[10 20][20 40][30 60][40 80]] '''注:有沒有發(fā)現(xiàn)matrix outer 是vector outer的并集。
元素積(element-wise product/point-wise product/Hadamard product
- 計(jì)算公式
?
x?y=[x1?xn][y1?yn]=[x1y1?xnyn]x?y=[x1?xn]???y1?ym???=???x1y1?x1ym???xny1?xnym???x?y=???x11?xm1???x1n?xmn??????y11?ym1???y1n?xn???=???x11y11?xm1ym1???x1ny1n?xmnynn???
?
x = numpy.array([1, 3]) y = numpy.array([10, 20]) print("Array element-wise product:") print(x * y) ''' Output: Array element-wise product: [10 60] '''加
x = numpy.mat([[1, 2], [3, 4]]) y = numpy.mat([[10, 20],[30, 40]]) print("Matrix Add :") print(x + y) ''' Output: Matrix Add : [[11 22][33 44]] '''低等數(shù)學(xué)
-
求總和公式
?
這個(gè)大家應(yīng)該都知道。∑i=1Nxi=x1+x2+?+xn
-
-
?
-
求總積公式
?∏i=1Nxi=x1×x2×?×xn
-
?
- 對(duì)數(shù)
- 對(duì)數(shù)的含義:
- 求數(shù)的長度。
- 將乘法轉(zhuǎn)變成加法。
- 解決下溢出問題:由于太多很小的數(shù)相乘造成的問題。
-
數(shù)學(xué)表達(dá)
?log(x)=log10xlog2xln(x)
-
?
由于不同底的對(duì)數(shù)的結(jié)果是等比關(guān)系,所以,有時(shí)底數(shù)是誰,是無所謂的。
等比
a
a?ba∝b
?
下取整(floor)和上取整(ceil)
?floor:??x?ceil:??x?
-
?
幾何
范數(shù)(norm)
-
L1范數(shù)
∥w∥1
: L1范數(shù),也就是各項(xiàng)目絕對(duì)值的和。
∥w∥1=∑ni=1|wi|
-
?
-
L2范數(shù)
∥w∥?or?∥w∥2 - : L2范數(shù),也就是各項(xiàng)目平方和的平方根。
∥w∥=∑ni=1w2i???????√
-
?
拉格朗日乘子法和KKT條件
如果方程式f(x)=wx+b
有不等式約束條件,拉格朗日乘子法和KKT條件提供了一種方法,可以計(jì)算(w,b)L(w,b,α)
關(guān)于拉格朗日乘子法和KKT條件,請(qǐng)看:
深入理解拉格朗日乘子法(Lagrange Multiplier)和KKT條件微分(differential)
表示形式
?
f′(x)or partial differential in Leibniz notation:?f(x)?xdydxor:?f(x)?x?: the gradient of f at x
?
含義
?
df(x)dx=limh→0f(x+h)?f(x)hwhereddx?is an operation of f(x)
?
數(shù)學(xué)含義是在x
點(diǎn)上,f(x)的變化除以x的變化。
數(shù)學(xué)上可以認(rèn)為是:斜率
機(jī)器學(xué)習(xí)中指的是:梯度。
計(jì)算梯度后,乘以一個(gè)比值(步長),可以得到矯正值,用于反向傳播(矯正)權(quán)值。
partial differential:偏微分,表示函數(shù)在某個(gè)維度上的微分。這時(shí),可將其它維度看做常量。法則
法則微分偏微分 和法則(sum rule) (f+g)′=f′+g′ ? ?(u+v)?x=?u?x+?v?x
? 積法則(product rule) (f?g)′=f′?g+f?g′ ? ?(u?v)?x=u??v?x+v??u?x
? 鏈?zhǔn)椒▌t(chain rule of differentiation) (f(g(x)))′=f′(g(x))g′(x) ? ?z?x=?z?y??y?x
? 常見導(dǎo)數(shù)公式
f(x)f'(x) ax ? a ? xn ? nxn?1 ? x+c ? 1 ? ex ? ex ? ln(x) ? 1x ? 統(tǒng)計(jì)學(xué)/概率論
- 貝葉斯公式(Bayes formula)
?
p(A|B)=p(B|A)p(A)p(B)wherep(A)?: the probability of observing event A.p(B)?: the probability of observing event B.p(A|B)?: the probability of observing event A given that B is true.p(B|A)?: the probability of observing event B given that A is true.
?
比如:在判斷垃圾郵件的算法中:
P(A) : 所有郵件中,垃圾郵件的概率。
P(B) : 出現(xiàn)某個(gè)單詞的概率。
P(B|A) : 垃圾郵件中,出現(xiàn)某個(gè)單詞的概率。
P(A|B) : 出現(xiàn)某個(gè)單詞的郵件,是垃圾郵件的概率。信息論
香農(nóng)熵(Shannon Entropy)
-
熵的定義
在信息論中,熵是接收的每條消息中包含的信息的平均量,又被稱為信息熵、信源熵、平均自信息量。
熵定義為信息的期望值。
熵實(shí)際是對(duì)隨機(jī)變量的比特量和順次發(fā)生概率相乘再總和的數(shù)學(xué)期望。
熵的單位通常為比特, bit 或者sh(annon) (基于2),但也用nat(基于自然對(duì)數(shù))、Hart(基于10)計(jì)量,取決于定義用到對(duì)數(shù)的底。
熵的單位不重要。(因?yàn)槭乔髮?duì)數(shù),所以是等比的。不理解這句話也無所謂。)
熵值是一個(gè)>=0的值。
如果為0,則表明結(jié)果可以準(zhǔn)確預(yù)測。從下面的公式可以看出,其概率為1. - 熵的特征
- 發(fā)生概率越小的信息,熵值越大。
- 常識(shí)的熵為0。
- 從計(jì)算損失的角度來說:熵值越大,說明損失越大。
-
期望值
在概率論和統(tǒng)計(jì)學(xué)中,一個(gè)離散性隨機(jī)變量的期望值(或數(shù)學(xué)期望、或均值,亦簡稱期望,物理學(xué)中稱為期待值)是試驗(yàn)中每次可能結(jié)果的概率乘以其結(jié)果的總和。
比如擲骰子, 其點(diǎn)數(shù)的期望值是3.5:
E(x)=1?1/6+1?2/6+1?3/6+1?4/6+1?5/6+1?6/6=3.5
-
?
- 通俗的理解
信息熵是:- 各個(gè) (值的概率 * 值的長度) 的總和。
-
數(shù)據(jù)集的信息熵的計(jì)算公式
?
H(X)=E[I(X)]=E[?lnP(X)]=∑i=1nP(xi)I(xi)=?∑i=1nP(xi)logP(xi)(1)(2)(3)(4)whereH(X):數(shù)據(jù)集合X的信息熵值。E():求期望值。I():求信息值(驚奇值)。X:數(shù)據(jù)集合X。xi:數(shù)據(jù)集合X的標(biāo)簽的一個(gè)枚舉值。I(xi):xi的資訊量(informationself).I(xi)=?log(P(xi))P(xi)?: 發(fā)生x_i的概率。x的機(jī)率質(zhì)量函數(shù)(probability mass function)。P(xi)=count(xi)/len(X).
?
- 熵的作用
- 計(jì)算損失(Loss function)
用于調(diào)整梯度遞減的步長。(本次熵(損失)比上次熵(損失)大,說明步長太大了。) - 用于決策樹
熵越大,說明特征(feature)的劃分?jǐn)?shù)據(jù)能力越強(qiáng)。
- 計(jì)算損失(Loss function)
博弈論
- 傾向關(guān)系(preference relation)
描述了玩家的傾向,x?y
- 意味著“x至少和y一樣好”。
不知道放到哪兒
- 求最大化參數(shù)
數(shù)學(xué)表示
argmaxcP(c)
解釋
可以用于返回一個(gè)可能性對(duì)大的分類。
返回當(dāng)P(c)為最大值時(shí)c的值。
例如:
?c∈{1,2}P(1)=0.9P(2)=0.1∴argmaxcP(c)=1
?
-
返回最大值
數(shù)學(xué)表示
maxa∈AP(a)
解釋
在所有a∈A的計(jì)算中,返回最大值P(a) -
-
。
-
約束條件(Subject to)
數(shù)學(xué)表示
y=2x+1,s.t.?x>0 - 解釋
當(dāng)約束條件x>0,成立時(shí),有y=2x+1 -
。
-
定義上相等
數(shù)學(xué)表示
A?B -
解釋
A的定義為B。 -
2補(bǔ)數(shù)(2's complement)
一種使用2進(jìn)制表示有符號(hào)數(shù)的方法。
第一位為符號(hào)位,
如果是0,則記做0;
如果為1,則記做?2n?1, n is the size of the number
-
。
例如: 0010為2; 1010為-6。
機(jī)器學(xué)習(xí)
激活函數(shù)
請(qǐng)看我的另外一個(gè)博文:
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)筆記 - 激活函數(shù)的作用、定義和微分證明
損失函數(shù)
請(qǐng)看我的另外一個(gè)博文:
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)筆記 - 損失函數(shù)的定義和微分證明
附錄
希臘字母的含義和發(fā)音
| 1 | Α | α | alpha | a:lf | 阿爾法 | ? |
| 2 | Β | β | beta | bet | 貝塔 | ? |
| 3 | Γ | γ | gamma | ga:m | 伽馬 | ? |
| 4 | Δ | δ | delta | delt | 德爾塔 | δ: delta value,偏差值 |
| 5 | Ε | ε | epsilon | ep'silon | 伊普西龍 | ? |
| 6 | Ζ | ζ | zeta | zat | 截塔 | ? |
| 7 | Η | η | eta | eit | 艾塔 | ? |
| 8 | Θ | θ | thet | θit | 西塔 | ? |
| 9 | Ι | ι | iot | aiot | 約塔 | ? |
| 10 | Κ | κ | kappa | kap | 卡帕 | ? |
| 11 | ∧ | λ | lambda | lambd | 蘭布達(dá) | ? |
| 12 | Μ | μ | mu | mju | 繆 | ? |
| 13 | Ν | ν | nu | nju | 紐 | ? |
| 14 | Ξ | ξ | xi | ksi | 克西 | ξ: slack variable,松弛變量 |
| 15 | Ο | ο | omicron | omik'ron | 奧密克戎 | ? |
| 16 | ∏ | π | pi | pai | 派 | π: 圓周率 |
| 17 | Ρ | ρ | rho | rou | 肉 | ? |
| 18 | ∑ | σ | sigma | 'sigma | 西格馬 | ? |
| 19 | Τ | τ | tau | tau | 套 | ? |
| 20 | Υ | υ | upsilon | jup'silon | 宇普西龍 | ? |
| 21 | Φ | φ | phi | fai | 佛愛 | ? |
| 22 | Χ | χ | chi | phai | 凱 | ? |
| 23 | Ψ | ψ | psi | psai | 普西 | ? |
| 24 | Ω | ω | omega | o'miga | 歐米伽 | ? |
松弛變量(slack variable):在SVM中,為了處理異常點(diǎn)(跑到另一個(gè)分類中的點(diǎn)),設(shè)定的容忍值。
數(shù)學(xué)符號(hào)的含義和發(fā)音
| 1 | ? |
| ? | ? | partial | - | 偏分 | 偏分 |
| 1 | ∞ |
| ? | ? | infinity | - | 無窮 | 無窮 |
參照
- Bayes' theorem
- 希臘字母表(配讀音)
- cs231n.github.io
- 矩陣乘法的本質(zhì)是什么?
如有希望介紹的數(shù)學(xué)概念,請(qǐng)寫到評(píng)論中,我有空會(huì)加上。
原文:https://www.cnblogs.com/steven-yang/p/6348112.html
總結(jié)
以上是生活随笔為你收集整理的机器学习中的基本数学知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从入门到高阶,读懂机器学习需要哪些数学知
- 下一篇: 研究机器学习需要什么样的数学基础?