符号 | 含义 |
---|---|
m m m | 训练集样本数量 |
n n n | 特征数量 |
( x ( i ) , y ( i ) ) ({{x}^{(i)}},{{y}^{(i)}}) (x(i),y(i)) | 训练集中第 i i i个样本 |
x ( i ) {x}^{(i)} x(i) | 第 i i i个输入值 |
y ^ ( i ) \hat{y}^{(i)} y^(i) | 第 i i i个输出值 |
x j ( i ) {x}^{(i)}_j xj(i) | 第 i i i个输入值的第 j j j个特征 |
h ( x ) h(x ) h(x) | 假设函数 |
图1中, h h h代表 h y p o t h e s i s hypothesis hypothesis 假设(在机器学习中一般这么叫,andrew觉得不太好听~),它是一个从模型输入到输出的函数映射,在线性回归问题中, h h h的表达方式为 :
h θ ( x ( i ) ) = θ 0 x 0 ( i ) + θ 1 x 1 ( i ) + θ 2 x 2 ( i ) + . . . + θ n x n ( i ) (1) h_{\theta} (x^{(i)})={\theta_{0}}{x_{0}^{(i)}}+{\theta_{1}}{x_{1}^{(i)}}+{\theta_{2}}{x_{2}^{(i)}}+...+{\theta_{n}}{x_{n}^{(i)}} \tag{1} hθ(x(i))=θ0x0(i)+θ1x1(i)+θ2x2(i)+...+θnxn(i)(1)
其中, θ 0 , θ 1 , ⋅ ⋅ ⋅ , θ n \theta_0, \theta_1 ,···,\theta_n θ0,θ1,⋅⋅⋅,θn为模型参数, x 0 ( i ) x_{0}^{(i)} x0(i)规定为1。 h θ ( x ( i ) ) h_{\theta} (x^{(i)}) hθ(x(i)): R n + 1 → R R^{n+1}\to R Rn+1→R。
模型输出表达式为:
y ^ ( i ) = h θ ( x ( i ) ) (2) \hat{y}^{(i)}=h_{\theta} (x^{(i)})\tag{2} y^(i)=hθ(x(i))(2)
将式 ( 1 ) (1) (1)写为矩阵形式:
h θ ( x ( i ) ) = θ T x ( i ) (3) h_{\theta} (x^{(i)})={\theta ^Tx^{(i)}} \tag{3} hθ(x(i))=θTx(i)(3)
其中, θ = [ θ 0 , θ 1 , ⋅ ⋅ ⋅ , θ n ] T \theta =[\theta_{0},\theta_{1},···,\theta_{n}]^T θ=[θ0,θ1,⋅⋅⋅,θn]T, x ( i ) = [ x ( 0 ) , x ( 1 ) , ⋅ ⋅ ⋅ , x ( n ) ] T x^{(i)}=[x^{(0)},x^{(1)},···,x^{(n)}]^T x(i)=[x(0),x(1),⋅⋅⋅,x(n)]T。
对于训练集中的所有样本,模型输入输出的表达式为:
Y ^ = X θ (4) \hat{Y}= X \theta \tag{4} Y^=Xθ(4)
其中: Y ^ = [ y ^ ( 1 ) , y ^ ( 2 ) , ⋅ ⋅ ⋅ , y ^ ( m ) ] T \hat{Y}=[\hat{y}^{(1)},\hat{y}^{(2)},···,\hat{y}^{(m)}]^T Y^=[y^(1),y^(2),⋅⋅⋅,y^(m)]T, X = [ − ( x ( 1 ) ) T − − ( x ( 2 ) ) T − ⋅ ⋅ ⋅ − ( x ( m ) ) T − ] ∈ R m × n X=\begin{bmatrix}-(x^{(1)})^T- \\ -(x^{(2)})^T- \\ ··· \\-(x^{(m)})^T- \end{bmatrix} \in R^{m \times n} X=⎣⎢⎢⎡−(x(1))T−−(x(2))T−⋅⋅⋅−(x(m))T−⎦⎥⎥⎤∈Rm×n。
建模误差,指的是模型输出值(预测或估计值)与训练集中实际值之间的差距,即:
e r r o r = y ^ ( i ) − y ( i ) (5) error=\hat{y}^{(i)}-y^{(i)}\tag{5} error=y^(i)−y(i)(5)
学习算法的目标是选择出使得建模误差平方和能够最小的模型参数,即使得代价函数最小。线性回归问题中常用的代价函数表达式为:
J ( θ 0 , θ 1 , ⋅ ⋅ ⋅ , θ n ) = 1 m ∑ i = 1 m c o s t ( y ^ ( i ) , y ( i ) ) (6) J ( \theta_0, \theta_1 ,···,\theta_n) = \frac{1}{m}\sum\limits_{i=1}^m cost(\hat{y}^{(i)},y^{(i)}) \tag{6} J(θ0,θ1,⋅⋅⋅,θn)=m1i=1∑mcost(y^(i),y(i))(6)
其中, c o s t ( y ^ ( i ) , y ^ ( i ) ) = 1 2 ( y ^ ( i ) − y ( i ) ) 2 cost(\hat{y}^{(i)},\hat{y}^{(i)})=\frac{1}{2}(\hat{y}^{(i)}-y^{(i)})^{2} cost(y^(i),y^(i))=21(y^(i)−y(i))2。
将式 ( 5 ) (5) (5)转换为矩阵形式为:
J ( θ ) = 1 2 ( Y ^ − Y ) 2 (7) J(\theta )=\frac{1}{2}{{(\hat{Y} -Y)}^{2}} \tag{7} J(θ)=21(Y^−Y)2(7)
其中, Y = [ y ( 0 ) , y ( 1 ) , ⋅ ⋅ ⋅ , y ( m ) ] T Y=[y^{(0)},y^{(1)},···,y^{(m)}]^T Y=[y(0),y(1),⋅⋅⋅,y(m)]T。
当 n = 1 n=1 n=1时, J ( θ 0 , θ 1 ) J (\theta_0, \theta_1) J(θ0,θ1)示意如图2所示:
求解模型参数的过程可以表示为无约束最优化问题,即:
m i n θ ∈ R n J ( θ ) (8) \mathop{min}\limits_{\theta \in R^n}J(\theta) \tag{8} θ∈RnminJ(θ)(8)
故, θ = a r g m i n θ ∈ R n J ( θ ) \theta=arg \mathop{min}\limits_{\theta \in R^n}J(\theta) θ=argθ∈RnminJ(θ)。
梯度下降是一个用来求函数最小值的方法,该方法通过不断的迭代模型参数,使得目标函数(这里即为代价函数 J J J)达到局部最小值。
梯度下降的迭代公式为:
{ θ 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ ) θ 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ ) ⋅ ⋅ ⋅ θ n : = θ n − α ∂ ∂ θ n J ( θ ) (9) \begin{cases} {\theta_{0}}:={\theta_{0}}-\alpha \frac{\partial }{\partial {\theta_{0}}} J(\theta) \\ {\theta_{1}}:={\theta_{1}}-\alpha \frac{\partial }{\partial {\theta_{1}}} J(\theta) \\···\\{\theta_{n}}:={\theta_{n}}-\alpha \frac{\partial }{\partial {\theta_{n}}} J(\theta) \end{cases}\tag{9} ⎩⎪⎪⎪⎨⎪⎪⎪⎧θ0:=θ0−α∂θ0∂J(θ)θ1:=θ1−α∂θ1∂J(θ)⋅⋅⋅θn:=θn−α∂θn∂J(θ)(9)
其中, α \alpha α称为学习率, ∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial }{\partial {\theta_{j}}}J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{j}^{(i)} ∂θj∂J(θ)=m1i=1∑m(hθ(x(i))−y(i))xj(i)。
式 ( 8 ) (8) (8)写成矩阵形式为:
θ : = θ − α ∇ J ( θ ) (10) \theta:=\theta-\alpha \nabla J(\theta) \tag{10} θ:=θ−α∇J(θ)(10)
其中, ∇ J ( θ ) = [ ∂ ∂ θ 0 J ( θ ) , ∂ ∂ θ 1 J ( θ ) , ⋅ ⋅ ⋅ , ∂ ∂ θ n J ( θ ) ] T \nabla J(\theta)=[\frac{\partial }{\partial {\theta_{0}}}J(\theta),\frac{\partial }{\partial {\theta_{1}}}J(\theta),···,\frac{\partial }{\partial {\theta_{n}}}J(\theta)]^T ∇J(θ)=[∂θ0∂J(θ),∂θ1∂J(θ),⋅⋅⋅,∂θn∂J(θ)]T。
参数 | 可取方法 |
---|---|
模型参数初始值 | 随机选取 |
学习率 | 0.01 → 0.03 → 0.1 → ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.01\rightarrow0.03\rightarrow0.1\rightarrow······ 0.01→0.03→0.1→⋅⋅⋅⋅⋅⋅ |
迭代停止条件 | 代价函数收敛 |
判断代价函数 J ( θ ) J(\theta) J(θ)收敛的办法一般为画出“代价函数值——迭代次数”图,如图3所示。即每进行一次式 ( 9 ) (9) (9)的计算,便进行一次式 ( 6 ) (6) (6)的计算。
正规方程通过求解 ∂ J ( θ ) ∂ θ = 0 \frac{\partial J\left( \theta \right)}{\partial \theta }=0 ∂θ∂J(θ)=0来求解模型参数。
J ( θ ) = 1 2 ( Y ^ − Y ) 2 = 1 2 ( Y ^ − Y ) T ( Y ^ − Y ) = 1 2 ( θ T X T − Y T ) ( X θ − Y ) = 1 2 ( θ T X T X Θ − Θ T X T Y − Y T X θ − Y T Y ) (11) \begin{aligned} J(\theta ) &=\frac{1}{2}{{(\hat{Y} -Y)}^{2}}\\ &=\frac{1}{2}{{( \hat{Y} -Y)}^{T}}( \hat{Y} -Y) \\ &=\frac{1}{2}\left( {{\theta }^{T}}{{X}^{T}}-{{Y}^{T}} \right)\left(X\theta -Y \right)\\ &=\frac{1}{2}\left( {{\theta }^{T}}{{X}^{T}}X\Theta -{{\Theta}^{T}}{{X}^{T}}Y-{{Y}^{T}}X\theta -{{Y}^{T}}Y \right)\end{aligned}\tag{11} J(θ)=21(Y^−Y)2=21(Y^−Y)T(Y^−Y)=21(θTXT−YT)(Xθ−Y)=21(θTXTXΘ−ΘTXTY−YTXθ−YTY)(11)
∂ J ( θ ) ∂ θ = 1 2 ( 2 X T X θ − X T Y − ( Y T X ) T ) = X T X θ − X T Y (12) \begin{aligned} \frac{\partial J\left( \theta \right)}{\partial \theta } &=\frac{1}{2}\left(2{{X}^{T}}X\theta -{{X}^{T}}Y-{}({{Y}^{T}}X )^{T} \right)\\ &={{X}^{T}}X\theta -{{X}^{T}}Y\end{aligned}\tag{12} ∂θ∂J(θ)=21(2XTXθ−XTY−(YTX)T)=XTXθ−XTY(12)
∂ J ( θ ) ∂ θ = 0 ⇒ θ = ( X T X ) − 1 X T Y (13) \frac{\partial J\left( \theta \right)}{\partial \theta }=0\Rightarrow \theta ={{\left( {X^{T}}X \right)}^{-1}}{X^{T}}Y\tag{13} ∂θ∂J(θ)=0⇒θ=(XTX)−1XTY(13)
以下两种情况(非数学角度)可能导致 X T X X^TX XTX不可逆,无法求出 θ \theta θ的解析解:
1. 特征之间存在线性相关关系。
2. 样本数量过少或特征维数过大,即 m ≥ n m \ge n m≥n。
梯度下降 | 正规方程 |
---|---|
需要选择学习率 α \alpha α | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量 n n n大时也能较好适用 | 需要计算 ( X T X ) − 1 {{\left( {{X}^{T}}X \right)}^{-1}} (XTX)−1 如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为 O ( n 3 ) O\left( {{n}^{3}} \right) O(n3),通常来说当 n n n小于10000 时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
补充说明:
• 最优化相关知识后面看情况再补上。(ps:上课笔记丢了,难受n+1)
• B a t c h Batch Batch梯度下降是指计算代价函数时用到了训练集所有样本。
• 机器学习中的“梯度下降”实际上是指最速下降算法,即搜索方向为负梯度方向。学习率即为搜索步长。
• 正规方程实际上是利用了无约束最优化问题局部最优解的一阶必要性条件,即 ∇ J ( θ ) = 0 \nabla J(\theta)=0 ∇J(θ)=0。由于在线性回归问题中,代价函数 J ( θ ) J(\theta) J(θ)为凸函数,故求得的局部最优解(最小值)即为全局最优解(最小值)。
• 学习率取值不合适可能导致代价函数发散、不收敛或收敛速度慢等问题。