前言
从去年底开始接触机器学习,由于自己数学一直是不及格加毕业后就几乎没用过的状态,很多公式和原理都不记得或者上学时就没认真听过的,因此看机器学习的书,连看懂符号都很难。
之前看过网上一个关于如果让程序员来写的数学教材的段子
然后我看机器学习的书基本就是这样的状态,一头雾水,很多文章在推导公式的过程中不会说用到了什么公理,法则,或者不会提自己用到的变量符号的定义。
不过当自己学习了一段时间以后也发现要把公式推导过程清楚的记录下来确实太难了,需要精心的编排, 不过如果是听老师讲课,再结合自己查相关数学公式和知识,应该要快很多。
自己这篇文章希望能把机器学习中用到的数学公式和符号都串联起来,让后面学习的人可以更容易把里面用到的数学知识串联起来。
机器学习之一: 线性回归
1.线性回归简介
- 回归的定义: 指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析。
- 线性回归: 线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系的回归方法。
- 一元线性回归: 只有一个自变量的线性回归。
- 多元线性回归: 有多个自变量的线性回归。
2.一些术语
- 拟合: 形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示
- 欠拟合: 欠拟合就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据
- 过拟合: 过拟合是指为了得到一致假设而使假设变得过度严格。通常就是对训练数据判断非常准,但是泛化到新数据的时候就不准了的情况,避免过拟合是机器学习中一个核心任务。
自变量(Independent variable)
- f(x) = ax+b中, x就是自变量,是一个函数式中对结果产生影响的变量
- 看英文才知道,自变量是不受其他影响的变量
因变量(dependent variable)
- f(x) = y = ax+b 中,y就是因变量,是自变量导致的结果变量
- 也是看英文才知道,因变量是要受到其他影响的变量
3.用到的数学知识
- 线性代数中的向量,矩阵。
- 矩阵四则运算,逆矩阵,矩阵转置,矩阵的迹。
- 微积分中的导数,偏导数,求导方法,矩阵求导方法。
- 最小二乘法
数学符号
- 导数的符号
f′(x) f ′ ( x )
dydx d y d x
- 偏导数
∂∂θiJ(θ) ∂ ∂ θ i J ( θ )
- 矩阵转置T
AT A T
- 矩阵的迹tr
trA t r A
3.1导数
- 导数(Derivative)是微积分中的重要基础概念。当函数y=f(x)的自变量X在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f’(x0)或df/dx(x0)。
- 设有二元函数z=f(x,y),点(x0,y0)是其定义域D内一点.把y固定在y0而让x在x0有增量△x,相应地函数z=f(x,y)有增量(称为对x的偏增量)△z=f(x0+△x,y0)-f(x0,y0)。如果△z与△x之比当△x→0时的极限存在,那么此极限值称为函数z=f(x,y)在(x0,y0)处对x的偏导数(partial derivative)。记作f’x(x0,y0)。
f′(x)=lim△x→0f(x+△x)−f(x)△x f ′ ( x ) = lim △ x → 0 f ( x + △ x ) − f ( x ) △ x
- 导数和偏导没有本质区别,都是当自变量的变化量趋于0时,函数值的变化量与自变量变化量比值的极限.一元函数,一个y对应一个x,导数只有一个.二元函数,一个z对应一个x和一个y,那就有两个导数了,一个是z对x的导数,一个是z对y的导数,称之为偏导.
- 一元函数,一个y对应一个x,导数只有一个.
二元函数,一个z对应一个x和一个y,那就有两个导数了,一个是z对x的导数,一个是z对y的导数,称之为偏导.
求偏导时要注意,对一个变量求导,则视另一个变量为常数,只对改变量求导,从而将偏导的求解转化成了一元函数的求导了。
3.2求导运算法则
- 符号: y’ 表示y的导数
- 基本法则
(C)′=0 ( C ) ′ = 0
(xn)′=nxn−1 ( x n ) ′ = n x n − 1
4. 线性回归推导
4.1 场景和设定
- 我们想要分析房价(Y) 与一些输入特征,比如面积(x1),房间数(x2)之间的关系,这里面房价就是我们要预测的结果,就是因变量;房间数和面积就是对房价的影响变量,也就是自变量。
- 我们用h(x)表示我们要预测的房价结果,这里h是hypothesis(假设).
- θ是我们想要通过机器学习求出的影响参数(parameters),有多少个自变量就有多少影响参数。
- hθ(x)表示对特征x预测的花费(cost), 下面的方程也就是cost function
- n表示特征数量,i表示第i个特征
- m表示样本数量, j表示第j个样本
4.2方程表示
- 当只有一个自变量时,线性回归方程的写法是
h(x)=hθ(x)=θ0+θ1x1 h ( x ) = h θ ( x ) = θ 0 + θ 1 x 1
- 当有两个自变量时,就是多元线性回归
h(x)=hθ(x)=θ0+θ1x1+θ2x2 h ( x ) = h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2
- 为了简化写法,设定x0=1, 则可以写成求和方程,并简化为向量表示方法
hθ(x)=∑i=02θixi=θTX h θ ( x ) = ∑ i = 0 2 θ i x i = θ T X
- 显然hθ(x)是个实数
4.3最小二乘法求解(least square)
- 我们想通过求每个θ的值,带入到未知房屋求解房价,当针对每个样本用hθ(xi)求出的价格跟训练样本的已知价格误差之和最小时,说明我们的影响参数θ是最准的,因此是求让所有样本误差最小的参数θ
- 通过误差(残差)平方和的最小值来寻找数据的最佳函数匹配的方法就是最小二乘法.
求解目标的方程表示
J(θ)=minθ12∑i=1m(hθ(x(i))−y(i))2 J ( θ ) = m i n θ 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2
为什么要用1/2呢,是因为这对后面求解方程有好处,但是也不会影响最终结果才加上的
一般有两种最小二乘法的求解方法,noraml equation(一般函数求解)和Gradient Descent(梯度下降法)
- 先给出结果方程, noraml equation(一般函数求解),θ上面加个^表示是估计值。
θˆ=(XTX)−1XTy θ ^ = ( X T X ) − 1 X T y
- 梯度下降法求解的结果方程式
θi:=θi−α∑j=0m(hθ(x(j))−y(j))⋅x(j)i θ i := θ i − α ∑ j = 0 m ( h θ ( x ( j ) ) − y ( j ) ) ⋅ x i ( j )
4.4梯度下降法求解最小二乘法推导过程(Gradient Descent)
- 概念: 对于一个函数曲线,通过每次都向最陡峭的方向下降一个单位长度α(学习步长,learning rate),然后更新起点,递归的向最低处前进,直到找到最低位置的方法,找到函数曲线的最低点.
- α步长的值如果设的太大,可能会造成下降时跳过了最低点,而太小可能造成递归次数太多,因此需要取一个合适的值,一般从0.01开始尝试。
- 每次寻找最陡峭的位置,其实就是对θi求偏导数
为什么是偏导数呢?因为是趋近于0时的极限值,我们就是在求极限值
- 方程表示,注意冒号:是表示对θi重新赋值,每次重新赋值递归的执行。
θi:=θi−α∂∂θiJ(θ) θ i := θ i − α ∂ ∂ θ i J ( θ )
∂∂θiJ(θ)=∂∂θi12(hθ(x)−y)2 ∂ ∂ θ i J ( θ ) = ∂ ∂ θ i 1 2 ( h θ ( x ) − y ) 2
4. 根据链式求导法则
=2⋅12(hθ(x)−y)⋅∂∂θi(hθ(x)−y) = 2 ⋅ 1 2 ( h θ ( x ) − y ) ⋅ ∂ ∂ θ i ( h θ ( x ) − y )
5. 展开hθ(x), 把和θi无关的变量都去掉,因为他们根求θi的导数无关
=(hθ(x)−y)⋅∂∂θi(θ0x0+...+θnxn−y) = ( h θ ( x ) − y ) ⋅ ∂ ∂ θ i ( θ 0 x 0 + . . . + θ n x n − y )
=(hθ(x)−y)⋅∂∂θi(θixi) = ( h θ ( x ) − y ) ⋅ ∂ ∂ θ i ( θ i x i )
(hθ(x)−y)⋅xi ( h θ ( x ) − y ) ⋅ x i
6. 因此梯度下降的递归方程式可以更新为
θi:=θi−α(hθ(x)−y)⋅xi θ i := θ i − α ( h θ ( x ) − y ) ⋅ x i
7. 得到一个样本的计算公式后,当我们有m个样本时的计算公式就是对m个计算结果求和
θi:=θi−α∑j=0m(hθ(x(j))−y(j))⋅x(j)i θ i := θ i − α ∑ j = 0 m ( h θ ( x ( j ) ) − y ( j ) ) ⋅ x i ( j )
4.5 随机梯度下降算法(stochastic gradient descent)
- 上面的梯度下降,可以叫做批量梯度下降算法(Batch Gradient Descent),每一次的计算都需要使用所有的样本,在样本数特别大的时候效率会比较低
- 因此提出了随机梯度下降算法,每次的梯度计算只取J个样本
J=1tom J = 1 t o m
4.6 一般方程用矩阵的迹的求解方式(normal equation)用到的矩阵知识
单位矩阵
- 定义:在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,这种矩阵被称为单位矩阵。它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。记为I或者E。
- 特点: 任何矩阵与单位矩阵相乘都等于本身,I的转置还是I
逆矩阵
- 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。
- 意义: 逆矩阵可以类比成数字的倒数,比如数字5的倒数是1/5,矩阵A的“倒数”是A的逆矩阵。5*(1/5)=1, A*(A的逆矩阵) = I,I是单位矩阵。引入逆矩阵的原因之一是用来实现矩阵的除法。
矩阵运算公式
- 乘法分配律
A+B=B+A A + B = B + A
(A+B)C=AC+BC ( A + B ) C = A C + B C
(A+B)(C+D)=AC+AD+BC+BD ( A + B ) ( C + D ) = A C + A D + B C + B D
- 逆矩阵的应用
当满足
AB=C A B = C
则可得
B=A(−1)C B = A ( − 1 ) C
矩阵转置
- 定义: 把矩阵A的行换乘同序数的列得到的矩阵,叫做A的转置,记为A^T
- 例子
- 运算性质
(AT)T=A ( A T ) T = A
(A+B)T=AT+BT ( A + B ) T = A T + B T
(λA)T=λAT (λ∈ℝ) ( λ A ) T = λ A T ( λ ∈ R )
(AB)T=BTAT ( A B ) T = B T A T
矩阵的迹(Trace)
- 定义: 在线性代数中,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)
- 计算法则
trA=trAT t r A = t r A T
trλ=λ(λ∈ℝ) t r λ = λ ( λ ∈ R )
trAB=trBA t r A B = t r B A
trABC=trCAB=trBCA t r A B C = t r C A B = t r B C A
ddAtrAB=BT d d A t r A B = B T
ddAtrATB=B d d A t r A T B = B
ddAtrABATC=CAB+CTABT d d A t r A B A T C = C A B + C T A B T
4.7 一般方程求解(normal equation)推导过程
- 设定变量
ω=[ω1,ω2,...,ωm]T ω = [ ω 1 , ω 2 , . . . , ω m ] T
ωi=hθ(xi)−yi ω i = h θ ( x i ) − y i
x=[x1,x2,...,xn]T x = [ x 1 , x 2 , . . . , x n ] T
θ=[θ1,θ2,...,θn]T θ = [ θ 1 , θ 2 , . . . , θ n ] T
- 使用向量的方式表示有m个样本的X,Y和hθ(x)
X=⎡⎣⎢⎢⎢⎢(x(1))T(x(2))T...(x(m))T⎤⎦⎥⎥⎥⎥ X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ]
Xθ=⎡⎣⎢⎢⎢⎢(x(1))T(x(2))T...(x(m))T⎤⎦⎥⎥⎥⎥θ=⎡⎣⎢⎢⎢⎢(x(1))Tθ(x(2))Tθ...(x(m))Tθ⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢(hθ(x(1))(hθ(x(2))...(hθ(x(m))⎤⎦⎥⎥⎥⎥ X θ = [ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ] θ = [ ( x ( 1 ) ) T θ ( x ( 2 ) ) T θ . . . ( x ( m ) ) T θ ] = [ ( h θ ( x ( 1 ) ) ( h θ ( x ( 2 ) ) . . . ( h θ ( x ( m ) ) ]
y⃗=⎡⎣⎢⎢⎢⎢(y(1))(y(2))...(y(m))⎤⎦⎥⎥⎥⎥θ y → = [ ( y ( 1 ) ) ( y ( 2 ) ) . . . ( y ( m ) ) ] θ
Xθ−Y=⎡⎣⎢⎢⎢⎢h(x(1))−y(1))h(x(2))−y(2))...h(x(m))−y(m))⎤⎦⎥⎥⎥⎥=ω X θ − Y = [ h ( x ( 1 ) ) − y ( 1 ) ) h ( x ( 2 ) ) − y ( 2 ) ) . . . h ( x ( m ) ) − y ( m ) ) ] = ω
- 补充一个矩阵乘法的知识.
- 一个(m,n)的矩阵乘以(n,m)的矩阵结果是(m,m)的矩阵,第一个矩阵的列必须跟第二个矩阵的行相等才能相乘
- 行向量可以看作(1,m)的矩阵,列向量可看作(m,1)的矩阵,因此相乘就是1*1的矩阵,也就是数字。
- 因此行向量的转置乘以这个行向量,就是数字。
ωTω=∑i=1ω2i ω T ω = ∑ i = 1 ω i 2
- 因此,前面的残差方程可以写为
J(θ)=12∑j=1m(hθ(x(j))−y(j))2 J ( θ ) = 1 2 ∑ j = 1 m ( h θ ( x ( j ) ) − y ( j ) ) 2
=12(Xθ−Y)T(Xθ−Y) = 1 2 ( X θ − Y ) T ( X θ − Y )
- 我们的目标还是求J(θ)的最小值,因此还是对J(θ)求关于θ的偏导。
- 先把1/2移到求导外面
- 根据矩阵乘法分配律展开乘法
为什么?需要用泰勒展开,不过还是没看懂…
∂J(θ)∂θ ∂ J ( θ ) ∂ θ
=∂∂θ12(Xθ−Y)T(Xθ−Y) = ∂ ∂ θ 1 2 ( X θ − Y ) T ( X θ − Y )
=12∂∂θ(Xθ−Y)T(Xθ−Y) = 1 2 ∂ ∂ θ ( X θ − Y ) T ( X θ − Y )
=12∂∂θ(θTXTXθ−θTXTY−YTXθ+YTY) = 1 2 ∂ ∂ θ ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y )
5. 根据求导加减法法则,就可以分别对展开的4个组合求θ的偏导数
=12(∂∂θθTXTXθ−∂∂θθTXTY−∂∂θYTXθ−∂∂θYTY) = 1 2 ( ∂ ∂ θ θ T X T X θ − ∂ ∂ θ θ T X T Y − ∂ ∂ θ Y T X θ − ∂ ∂ θ Y T Y )
并且展开的4个式子的结果都是实数,参考前面迹的规则,实数可以看做1x1的矩阵,因此他们都和他们的迹相等。
=12(∂∂θtrθTXTXθ−∂∂θtrθTXTY−∂∂θtrYTXθ−∂∂θYTY) = 1 2 ( ∂ ∂ θ t r θ T X T X θ − ∂ ∂ θ t r θ T X T Y − ∂ ∂ θ t r Y T X θ − ∂ ∂ θ Y T Y )
6. 看看中间两个式子,根据矩阵转置的规则,
(AB)T=BTAT ( A B ) T = B T A T
7. 可以得出他们是相等的
∵XTY=(YTX)T ∵ X T Y = ( Y T X ) T
set B:=(YTX) s e t B := ( Y T X )
so BT=(YTX)T=XTY s o B T = ( Y T X ) T = X T Y
θTXTY=θTBT θ T X T Y = θ T B T
YTXθ=Bθ Y T X θ = B θ
∵(Bθ)T=θTBT ∵ ( B θ ) T = θ T B T
∴(θTXTY)T=YTXθ ∴ ( θ T X T Y ) T = Y T X θ
6. 参考前面迹的规则,分解的每个式子都是实数,实数可以看做1x1的矩阵,因此他们的迹的转置与迹本身相等. 因此中间两个式子是相等的
∵trAT=trA ∵ t r A T = t r A
A=trA(A∈ℝ) A = t r A ( A ∈ R )
∴tr(θTXTY)T=trθTXTY=trYTXθ ∴ t r ( θ T X T Y ) T = t r θ T X T Y = t r Y T X θ
7. 再对中间两个相等的式子求导数,根据迹的求导法则
∵trABC=trCAB ∵ t r A B C = t r C A B
∴trYTXθ=trθYTX ∴ t r Y T X θ = t r θ Y T X
∵ddAtrAB=BT ∵ d d A t r A B = B T
∴∂∂θtrθYTX=XTY ∴ ∂ ∂ θ t r θ Y T X = X T Y
这里补充以下,求导和求偏导本质都是一样的,只是求偏导数需要对另外一个变量视为常数,因此公式都是可用的。
- 再来看最后一个式子YTY,它并不包含要求偏导数的变量,因此可以视为常数,导数为0,因此从计算式中去掉这个。
- 再来解第一个式子,我们给第一个式子中加上一个单位矩阵I,因为任何矩阵乘以单位矩阵结果都不变,且单位矩阵的转置还是它本身这是为了应用前面的计算公式
θTXTXθ=trθTXTXθ θ T X T X θ = t r θ T X T X θ
=trθθTXTX = t r θ θ T X T X
=trθIθTXTX = t r θ I θ T X T X
∵ddAtrABATC=CAB+CTABT ∵ d d A t r A B A T C = C A B + C T A B T
∴∂∂θtrθIθTXTX=XTXθI+XTXθI=2XTXθ ∴ ∂ ∂ θ t r θ I θ T X T X = X T X θ I + X T X θ I = 2 X T X θ
- 因此我们的最终求解结果为
∂J(θ)∂θ=12(2XTXθ−2XTY) ∂ J ( θ ) ∂ θ = 1 2 ( 2 X T X θ − 2 X T Y )
=XTXθ−XTY = X T X θ − X T Y
=0 = 0
- 我们要让导数等于0,因此变为
XTXθ=XTY X T X θ = X T Y
- 因为有上面逆矩阵的应用公式,得出最终的结果方程式
∵AB=C ∵ A B = C
B=A−1C B = A − 1 C
∴θ=(XTX)−1XTY ∴ θ = ( X T X ) − 1 X T Y
4.8推导过程参考资料
- 网易公开课中的斯坦福大学公开课 :机器学习课程