机器学习中的基本数学知识有哪些

发布时间:2021-12-31 14:08:40 作者:iii
来源:亿速云 阅读:180

本篇内容介绍了“机器学习中的基本数学知识有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

注:本文的代码是使用Python 3写的。

线性代数(linear algebra)

第一公式

f(x)=xwT+b

这是在机器学习中,最常见的公式。我把这个称为机器学习的第一公式,实际上就是线性分类函数(linear classifier)。  
训练分类器的目标就是求出  (w,b)(w,b)。  
其中:  
 xx   是一个一行矩阵     [[x1,x2,...,xn]][[x1,x2,...,xn]]。  
 ww   是一个一行矩阵     [[w1,w2,...,wn]][[w1,w2,...,wn]]。  
 xx   和     ww   的维度相同。  
 bb   是一个数。  
 xwT=∑ni=1xiwixwT=∑i=1nxiwi,称为点积(dot product)。

有时,我们也会见到这个公式表示为类似下面的样子,它们的基本含义都是一样的。
f(x)=wx+bf(x)=wx+b
f(x)=wTx+bf(x)=wTx+b
f(x)=w⃗ ⋅x⃗ +bf(x)=w→⋅x→+b

注:这里ww表示为一个一维数组(或者向量、矢量(vector)) [x1,x2,...,xn][x1,x2,...,xn]。
注:一维数组:在数学上,可以理解为向量,表示多维空间上的一个点。
注:由于在线性代数中,矩阵乘法ab≠baab≠ba,所以对于表达式wTxwTx,严格地说,要把矢量(向量)看做一列的矩阵(而不是一行的矩阵),才符合数学上的定义。
注:表达式w⃗ ⋅x⃗ w→⋅x→和wxwx是正确的,因为ww和xx是矢量,这个符合矢量计算的定义。

矩阵的操作

由于,这篇文章是从数学的角度写的,所以我们先关注矩阵的操作。

换位(transpose)

矩阵的换位操作:将矩阵中的数按照对角线交换。
数学公式:wTwT
代码示例:

# Matrix Transposem = numpy.mat([[1, 2], [3, 4]])
print("Matrix.Transpose:")
print(m.T)''' Output:
Matrix.Transpose:
[[1 3]
 [2 4]]
'''
矩阵乘法

[1020][52]=10×5+20×2=90(2)(2)[1020][52]=10×5+20×2=90

我们可以看出矩阵相乘的约束:乘数1的列数要和乘数2的行数相等

m1⋅m2≠m2⋅m1(3)(3)m1⋅m2≠m2⋅m1

我们再看看交换乘数后,计算的结果:

[1020][52]=[10×520×510×220×2]=[501002040](4)(4)[1020][52]=[10×510×220×520×2]=[502010040]

比如:数2020的含义是2斤苹果多少钱。

举例说明它们的不同之处:

m1=[12](5)(5)m1=[12]

m2=[1020](6)(6)m2=[1020]

m1⋅m2m1⋅m2的计算方法是:

m1⋅m2=[12][1020]1∗10+2∗20=[50](7)(7)m1⋅m2=[1020][12]1∗10+2∗20=[50]

m2⋅m1m2⋅m1的计算方法是:

m2⋅m1=1020110∗120∗1210∗220∗2=[10202040](8)(8)m2⋅m1=121010∗110∗22020∗120∗2=[10202040]

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⎤⎦⎥(9)(9)x⋅y=[x1⋯xn][y1⋯yn]=[∑i=1nxiyi]x⋅y=[x1⋯xm][y1⋯yn]=[x1y1⋯x1yn⋯⋯⋯xmy1⋯xmyn]x⋅y=[x11⋯x1nx21⋯x2n⋯⋯⋯xm1⋯xmn][y11⋯y1qy21⋯y2q⋯⋯⋯yn1⋯ynq]=[∑i=1nx1iyi1⋯∑i=1nx1iyiq⋯⋯⋯∑i=1nxmiyi1⋯∑i=1nxmiyiq]

# Matrix Multiplicationprint("Matrix Multiplication")
a = numpy.mat([1, 2])
b = numpy.mat([[10], [20]])
print(a * b)
print(a.T * b.T)

a = numpy.mat([[1, 2], [3, 4]])
b = numpy.mat([[10, 20], [30, 40]])
print(a * b)''' Output:
[[50]]
[[10 20]
 [20 40]]
[[ 70 100]
 [150 220]]
'''
矩阵的各种乘积
操作数学符号PythonDemo
点积(dot product)ababa.dot(b)
numpy.dot(a, b)

AB=(1,2)(1020)=1∗10+2∗20=50(10)(10)AB=(1,2)(1020)=1∗10+2∗20=50

内积(inner product)a⋅ba⋅b
⟨a,b⟩⟨a,b⟩
numpy.inner(a, b)

a⋅b=abT(11)(11)a⋅b=abT

外积(outer product)a⊗ba⊗bnumpy.outer(a, b)

A⊗B=(12)(1020)=(1∗102∗101∗202∗20)=(10202040)(12)(12)A⊗B=(12)(1020)=(1∗101∗202∗102∗20)=(10202040)

元素积(element-wise product, point-wise product, Hadamard product )a∘ba∘b
a⊙ba⊙b
numpy.multiply(a, b)

A⊙B=(1324)(1020)=(1∗103∗102∗204∗20)=(10304080)(13)(13)A⊙B=(1234)(1020)=(1∗102∗203∗104∗20)=(10403080)

注:Python中,矩阵数据可以表示为matrix和ndarray两种类型。
这两种类型的操作非常接近,但是有细微的不同。
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.

内积

英文: inner product, scalar product。
矢量的降维运算,变成一个数。
矩阵的内积是每行每列的内积的矩阵。

xy=⟨x,y⟩=∑ni=1xiyi(14)(14)xy=⟨x,y⟩=∑i=1nxiyi

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]]
'''
外积

矢量的升维运算, mm维矢量和nn维矢量的外积是m∗nm∗n为矩阵。
矩阵的并集运算, a1∗a2a1∗a2维矢量和b1∗b2b1∗b2维矩阵的外积是(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⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥(15)(15)x⊗y=[x1⋯x1nx2⋯x2n⋯⋯⋯xm⋯xmn][y1⋯y1qy2⋯y2q⋯⋯⋯yp⋯xpq]=[x1y1⋯x1y1qx1y2⋯x1ypq⋯⋯⋯⋯⋯⋯x1ny1⋯x1ny1qx1ny2⋯x1nypqx2y1⋯x2y1qx2y2⋯x2ypq⋯⋯⋯⋯⋯⋯xmny1⋯xmny1qxmny2⋯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]]
'''

注:有没有发现matrix outer 是vector outer的并集。

元素积(element-wise product/point-wise product/Hadamard product

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⎤⎦⎥(16)(16)x⋅y=[x1⋯xn][y1⋯yn]=[x1y1⋯xnyn]x⋅y=[x1⋯xn][y1⋯ym]=[x1y1⋯xny1⋯⋯⋯x1ym⋯xnym]x⋅y=[x11⋯x1n⋯⋯⋯xm1⋯xmn][y11⋯y1n⋯⋯⋯ym1⋯xn]=[x11y11⋯x1ny1n⋯⋯⋯xm1ym1⋯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]]
'''

低等数学

∑i=1Nxi=x1+x2+⋯+xn(17)(17)∑i=1Nxi=x1+x2+⋯+xn

∏i=1Nxi=x1×x2×⋯×xn(18)(18)∏i=1Nxi=x1×x2×⋯×xn

log(x)=log10xlog2xln(x)(19)(19)log(x)=log10⁡xlog2⁡xln(x)

由于不同底的对数的结果是等比关系,所以,有时底数是谁,是无所谓的。

a ba∝b(20)(20)a ba∝b

floor: ⌊x⌋ceil: ⌈x⌉(21)(21)floor: ⌊x⌋ceil: ⌈x⌉

几何

范数(norm)

∥w∥1=∑ni=1|wi|(22)(22)‖w‖1=∑i=1n|wi|

∥w∥=∑ni=1w2i−−−−−−−√(23)(23)‖w‖=∑i=1nwi2

拉格朗日乘子法和KKT条件

如果方程式f(x)=wx+bf(x)=wx+b有不等式约束条件,拉格朗日乘子法和KKT条件提供了一种方法,可以计算(w,b)(w,b)

L(w,b,α)(24)(24)L(w,b,α)

关于拉格朗日乘子法和KKT条件,请看:
深入理解拉格朗日乘子法(Lagrange Multiplier)和KKT条件

微分(differential)

表示形式

f′(x)or partial differential in Leibniz notation:∂f(x)∂xdydxor:∇f(x)∇x : the gradient of f at x(25)(25)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)(26)(26)df(x)dx=limh→0f(x+h)−f(x)hwhereddx is an operation of f(x)

数学含义是在xx点上,f(x)f(x)的变化除以xx的变化。
数学上可以认为是:斜率
机器学习中指的是:梯度。
计算梯度后,乘以一个比值(步长),可以得到矫正值,用于反向传播(矫正)权值。
partial differential:偏微分,表示函数在某个维度上的微分。这时,可将其它维度看做常量。

法则

法则微分偏微分
和法则(sum rule)(f+g)′=f′+g′(f+g)′=f′+g′

∂(u+v)∂x=∂u∂x+∂v∂x(27)(27)∂(u+v)∂x=∂u∂x+∂v∂x

积法则(product rule)(f⋅g)′=f′⋅g+f⋅g′(f⋅g)′=f′⋅g+f⋅g′

∂(u⋅v)∂x=u⋅∂v∂x+v⋅∂u∂x(28)(28)∂(u⋅v)∂x=u⋅∂v∂x+v⋅∂u∂x

链式法则(chain rule of differentiation)(f(g(x)))′=f′(g(x))g′(x)(f(g(x)))′=f′(g(x))g′(x)

∂z∂x=∂z∂y⋅∂y∂x(29)(29)∂z∂x=∂z∂y⋅∂y∂x

常见导数公式

f(x)f'(x)
axaxaa
xnxnnxn−1nxn−1
x+cx+c11
exexexex
ln(x)ln(x)1x1x

统计学/概率论

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.(30)(30)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) : 出现某个单词的概率。
P(B|A) : 垃圾邮件中,出现某个单词的概率。
P(A|B) : 出现某个单词的邮件,是垃圾邮件的概率。

信息论

香农熵(Shannon Entropy)

H(X)=E[I(X)]=E[−lnP(X)]=∑i=1nP(xi)I(xi)=−∑i=1nP(xi)logP(xi)(31)(32)(33)(34)whereH(X):数据集合X的信息熵值。E():求期望值。I():求信息值(惊奇值)。X:数据集合X。xi:数据集合X的标签的一个枚举值。I(xi):xi的资讯量(informationself).I(xi)=−log(P(xi))P(xi) : 发生x_i的概率。x的机率质量函数(probability mass function)。P(xi)=count(xi)/len(X).(31)H(X)=E[I(X)](32)=E[−lnP(X)](33)=∑i=1nP(xi)I(xi)(34)=−∑i=1nP(xi)log⁡P(xi)whereH(X):数据集合X的信息熵值。E():求期望值。I():求信息值(惊奇值)。X:数据集合X。xi:数据集合X的标签的一个枚举值。I(xi):xi的资讯量(informationself).I(xi)=−log(P(xi))P(xi) : 发生x_i的概率。x的机率质量函数(probability mass function)。P(xi)=count(xi)/len(X).

博弈论

不知道放到哪儿

例如:

c∈{1,2}P(1)=0.9P(2)=0.1∴argmaxcP(c)=1(35)(35)c∈{1,2}P(1)=0.9P(2)=0.1∴argmaxcP(c)=1

机器学习

激活函数

请看我的另外一个博文:
神经网络学习笔记 - 激活函数的作用、定义和微分证明

损失函数

请看我的另外一个博文:
神经网络学习笔记 - 损失函数的定义和微分证明

附录

希腊字母的含义和发音

 大写小写English发音中文含义
1Ααalphaa:lf阿尔法 
2Ββbetabet贝塔 
3Γγgammaga:m伽马 
4Δδdeltadelt德尔塔δ: delta value,偏差值
5Εεepsilonep'silon伊普西龙 
6Ζζzetazat截塔 
7Ηηetaeit艾塔 
8Θθthetθit西塔 
9Ιιiotaiot约塔 
10Κκkappakap卡帕 
11λlambdalambd兰布达 
12Μμmumju 
13Ννnunju 
14Ξξxiksi克西ξ: slack variable,松弛变量
15Οοomicronomik'ron奥密克戎 
16πpipaiπ: 圆周率
17Ρρrhorou 
18σsigma'sigma西格马 
19Ττtautau 
20Υυupsilonjup'silon宇普西龙 
21Φφphifai佛爱 
22Χχchiphai 
23Ψψpsipsai普西 
24Ωωomegao'miga欧米伽 

松弛变量(slack variable):在SVM中,为了处理异常点(跑到另一个分类中的点),设定的容忍值。

数学符号的含义和发音

 大写小写English发音中文含义
1∂∂ partial-偏分偏分
1∞∞ infinity-无穷无穷

“机器学习中的基本数学知识有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 常见的机器学习算法有哪些
  2. 人工智能要学习的数学知识有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

机器学习

上一篇:机器学习基本术语有哪些

下一篇:Python如何实现过迷宫小游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》