机器学习:研究能够从经验中自动提升自身性能的计算机算法。
从数学角度:机器学习就是从数据中学习一个函数 。
机器学习:能过从针对任务T的一些经验E和性能指标P中学习的计算机程序。同时它在任务T上的表现可以通过性能指标P来提高。
给出“正确答案”。
回归(Regression):输出连续的值。
分类(Classification):输出离散的值。
不给出任何标签,找到数据中暗含的结构或信息。
聚类算法(Clustering):
h:hypothesis假设函数: h θ ( x ) = θ 0 + θ 1 x {h_\theta }(x) = {\theta _0} + {\theta _1x} hθ(x)=θ0+θ1x,其中 θ 0 , θ 1 {\theta _0},{\theta _1} θ0,θ1表示要学习的参数。
cost function代价函数
目标:选出 θ 0 , θ 1 {\theta _0},{\theta _1} θ0,θ1使得在训练集上,给出 x x x能够合理准确地预测出 y y y的值。
学习目标:
m i n i m i z e θ 0 θ 1 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 \mathop {minimize}\limits_{{\theta _0}{\theta _1}} {1 \over {2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^2}} θ0θ1minimize2m1i=1∑m(hθ(xi)−yi)2
其中 ( x i , y i ) ({x_i},{y_i}) (xi,yi)表示第 i i i个样本; m m m表示样本总数。(之所以乘以 1 2 {1 \over 2} 21是为了方便求导)
令: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J({\theta _0},{\theta _1}) = {1 \over {2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^2}} J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)2
目标函数简写为: m i n i m i z e θ 0 θ 1 J ( θ 0 , θ 1 ) \mathop {minimize}\limits_{{\theta _0}{\theta _1}} J({\theta _0},{\theta _1}) θ0θ1minimizeJ(θ0,θ1)
m i n i m i z e \mathop {minimize} minimize:表示使得后面式子最小时, θ 0 , θ 1 {\theta _0},{\theta _1} θ0,θ1的取值。
J ( θ 0 , θ 1 ) J({\theta _0},{\theta _1}) J(θ0,θ1)称为:代价函数(cost function),优化目标(optimization objective)。
小提示: 损失函数“(Loss Function )是定义在单个样本上的,算的是一个样本的误差,而代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
h θ ( x ) = θ 1 x {h_\theta }(x) = {\theta _1}x hθ(x)=θ1x假设 θ 0 = 0 {\theta _0}=0 θ0=0
J ( θ 0 , θ 1 ) → J ( θ 1 ) J({\theta _0},{\theta _1}) \to J({\theta _1}) J(θ0,θ1)→J(θ1)
假设函数: h θ ( x ) = θ 0 + θ 1 x {h_\theta }(x) = {\theta _0} + {\theta _1}x hθ(x)=θ0+θ1x
可学习参数: θ 0 , θ 1 {\theta _0},{\theta _1} θ0,θ1
损失函数: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J({\theta _0},{\theta _1}) = {1 \over {2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^2}} J(θ0,θ1)=2m1i=1∑m(hθ(xi)−yi)2
目标: m i n i m i z e θ 0 θ 1 J ( θ 0 , θ 1 ) \mathop {minimize}\limits_{{\theta _0}{\theta _1}} J({\theta _0},{\theta _1}) θ0θ1minimizeJ(θ0,θ1)
问题描述:
有一些函数如: J ( θ 0 , θ 1 ) J({\theta _0},{\theta _1}) J(θ0,θ1),想要 m i n i m i z e θ 0 θ 1 J ( θ 0 , θ 1 ) \mathop {minimize}\limits_{{\theta _0}{\theta _1}} J({\theta _0},{\theta _1}) θ0θ1minimizeJ(θ0,θ1)。
解决步骤:
梯度下降算法:
repeat until convergence{ θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) {\theta _j}: = {\theta _j} - \alpha {\partial \over {\partial {\theta _j}}}J({\theta _0},{\theta _1}) θj:=θj−α∂θj∂J(θ0,θ1)(for j=0 and j=1)}
α \alpha α:学习率(learning rate)
注意:同时更新参数 θ 0 , θ 1 {\theta _0},{\theta _1} θ0,θ1
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) {\theta _j}: = {\theta _j} - \alpha {\partial \over {\partial {\theta _j}}}J({\theta _0},{\theta _1}) θj:=θj−α∂θj∂J(θ0,θ1)
α \alpha α:过小,收敛慢;过大,可能发散,不收敛。
梯度下降可以收敛到局部最小值,即使学习率 α \alpha α固定。
当我们接近局部最小值,梯度下降将要自动得到一个较小的步长。所以,不需要随时间减少学习率 α \alpha α。
最小化线性回归中的平方损失函数。
∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 = ∂ ∂ θ j 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x i − y i ) 2 {\partial \over {\partial {\theta _j}}}J({\theta _0},{\theta _1}) = {\partial \over {\partial {\theta _j}}}{1 \over {2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^2}}= {\partial \over {\partial {\theta _j}}}{1 \over {2m}}\sum\limits_{i = 1}^m {{{({\theta _0} + {\theta _1}{x_i} - {y_i})}^2}} ∂θj∂J(θ0,θ1)=∂θj∂2m1i=1∑m(hθ(xi)−yi)2=∂θj∂2m1i=1∑m(θ0+θ1xi−yi)2
θ 0 {{\theta _0}} θ0: j = 0 j=0 j=0, ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) {\partial \over {\partial {\theta _0}}}J({\theta _0},{\theta _1}) = {1 \over m}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^{}}} ∂θ0∂J(θ0,θ1)=m1i=1∑m(hθ(xi)−yi)
θ 1 {{\theta _1}} θ1: j = 1 j=1 j=1, ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i {\partial \over {\partial {\theta _1}}}J({\theta _0},{\theta _1}) = {1 \over m}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^{}}} {x_i} ∂θ1∂J(θ0,θ1)=m1i=1∑m(hθ(xi)−yi)xi
同时更新:
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) {\theta _0}: = {\theta _0} - \alpha {1 \over m}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^{}}} θ0:=θ0−αm1i=1∑m(hθ(xi)−yi)
θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i {\theta _1}: = {\theta _1} - \alpha {1 \over m}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^{}}} {x_i} θ1:=θ1−αm1i=1∑m(hθ(xi)−yi)xi
小提示:凸函数(convex function):只要一个全局最优
批量梯度下降:每次梯度下降使用所有的训练样本(虽然名字有点歧义)。
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。
矩阵维数:行数*列数
A A A:矩阵, A i j {A_{ij}} Aij:表示第 i i i行第 j j j列的元素。
向量: n ∗ 1 n*1 n∗1的矩阵
y y y:向量,n-dimension 向量
两个行列相等的矩阵才可以相加减:对应元素相加减
标量同一个矩阵相加减乘除:标量与每个元素分别运算,矩阵维数不变
A m × n × x n × 1 = y m × 1 {A_{m \times n}} \times {x_{n \times 1}} = {y_{m \times 1}} Am×n×xn×1=ym×1
y i {y_{i}} yi通过 A A A的第 i i i行与向量 x x x对应元素相乘再相加得到。
A m × n × B n × o = C m × o {A_{m \times n}} \times {B_{n \times o}} = {C_{m \times o}} Am×n×Bn×o=Cm×o
矩阵 C C C的第 i i i列是通过矩阵 A A A和矩阵 B B B的第 i i i列相乘得到的。
矩阵的逆:方阵才有逆,满足 A m × m {A_{m \times m}} Am×m A A − 1 = A − 1 A = I A{A^{ - 1}} = {A^{ - 1}}A = I AA−1=A−1A=I
没有逆的矩阵:奇异矩阵(singular),退化矩阵(degenerate)
矩阵的转置:
多元特征:特征数大于2
n n n表示特征数量; x ( i ) {x^{(i)}} x(i)表示第 i i i个训练样本的所有输入特征; x j ( i ) x_j^{(i)} xj(i)表示第 i i i个训练样本的第 j j j个输入特征。
假设函数: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n {h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + ... + {\theta _n}{x_n} hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
令 X ∈ R n + 1 X \in {R^{n + 1}} X∈Rn+1, θ ∈ R n + 1 \theta \in {R^{n + 1}} θ∈Rn+1, X 0 = 1 {X_0} = 1 X0=1则化简公式为: h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = θ T x {h_\theta }(x) = {\theta _0}{x_0} + {\theta _1}{x_1} + {\theta _2}{x_2} + ... + {\theta _n}{x_n} = {\theta ^T}x hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn=θTx
假设函数: h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = θ T x {h_\theta }(x) = {\theta _0}{x_0} + {\theta _1}{x_1} + {\theta _2}{x_2} + ... + {\theta _n}{x_n} = {\theta ^T}x hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn=θTx
可学习参数: θ 0 , θ 1 , . . . θ n {\theta _0},{\theta _1},...{\theta _n} θ0,θ1,...θn,其中 θ ∈ R n + 1 \theta \in {R^{n + 1}} θ∈Rn+1
损失函数: J ( θ 0 , θ 1 , . . . θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 = J ( θ ) J({\theta _0},{\theta _1},...{\theta _n}) = {1 \over {2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x_i}) - {y_i})}^2}} =J({\theta }) J(θ0,θ1,...θn)=2m1i=1∑m(hθ(xi)−yi)2=J(θ)
参数更新: θ j : = θ j − α ∂ ∂ θ j J ( θ ) 其 中 ( j = 0 , 1 , . . . , n ) {\theta _j}: = {\theta _j} - \alpha {\partial \over {\partial {\theta _j}}}J({\theta})其中(j=0,1,...,n) θj:=θj−α∂θj∂J(θ)其中(j=0,1,...,n)
思想:确保所有特征数值在相似地范围。这样可以走一条相对简单的路径到最优解,要求特征值组之间取值范围相差不大,默认 − 1 ≤ x i ≤ 1 -1 \le {x_i} \le 1 −1≤xi≤1。
做法:均值归一化(Mean normalization)。使用 x i − μ i {x_i} - {\mu _i} xi−μi代替 x i {x_i} xi 确保 0 0 0均值。
x i ← x i − μ i S i {x_i} \leftarrow {{{x_i} - {\mu _i}} \over {{S_i}}} xi←Sixi−μi,其中 μ i {{\mu _i}} μi表示该特征均值, S i {{S_i}} Si表示取值范围(最大值减去最小值)
如何判断梯度下降算法是否正确工作?
若正常工作在每次迭代后, J ( θ ) J(\theta ) J(θ)都应该减少,可以绘制 J ( θ ) J(\theta ) J(θ)随迭代次数变化的函数判断。
自动收敛测试(automatic convergence test):每次迭代后 J ( θ ) J(\theta ) J(θ)下降的值超过 ε ( 小 正 数 如 : 1 0 − 3 ) \varepsilon (小正数如:{10^{ - 3}}) ε(小正数如:10−3)。
如果未正常工作可以使用更小的 α \alpha α。
对于足够小的 α \alpha α, J ( θ ) J(\theta ) J(θ)应该每次迭代均会下降,但是如果 α \alpha α太小,则会导致收敛速度太慢。
如何选择 α \alpha α?
. . . , 0.001 , 0.003 , 0.01 , 0.03 , 0.1 , 0.3 , 1... ...,0.001,0.003,0.01,0.03,0.1,0.3,1... ...,0.001,0.003,0.01,0.03,0.1,0.3,1...,采用3倍策略(经验)
例: θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 {\theta _0} + {\theta _1}x + {\theta _2}{x^2} + {\theta _3}{x^3} θ0+θ1x+θ2x2+θ3x3映射到多元线性回归 h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 {h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + {\theta _3}{x_3} hθ(x)=θ0+θ1x1+θ2x2+θ3x3可以用少量特征学习更加复杂的关系。
x 1 = ( s i z e ) , x 2 = ( s i z e ) 2 , x 3 = ( s i z e ) 3 {x_1} = (size),{x_2} = {(size)^2},{x_3} = {(size)^3} x1=(size),x2=(size)2,x3=(size)3,这时特征缩放更为重要。
自觉:对于一维的情况,好像在 J ( θ ) J(\theta ) J(θ)导数为0时可以取得最优解。
J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 , θ ∈ R n + 1 J({\theta _0},{\theta _1},...,{\theta _n}) = {1 \over {2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x^{(i)}}) - {y^{(i)}})}^2}} ,\theta \in {R^{n + 1}} J(θ0,θ1,...,θn)=2m1i=1∑m(hθ(x(i))−y(i))2,θ∈Rn+1
∂ ∂ θ j J ( θ ) = . . . = 0 {\partial \over {\partial {\theta _j}}}J(\theta ) = ... = 0 ∂θj∂J(θ)=...=0
对于 θ 0 , θ 1 , . . . , θ n {\theta _0},{\theta _1},...,{\theta _n} θ0,θ1,...,θn,可得 θ = ( X T X ) − 1 X T y \theta = {({X^T}X)^{ - 1}}{X^T}y θ=(XTX)−1XTy,其中 X ∈ R m × ( n + 1 ) X \in {R^{m \times (n + 1)}} X∈Rm×(n+1)
无需特征缩放。
梯度下降 V S VS VS正规方程
梯度下降 :
正规方程:
如果 θ = ( X T X ) − 1 X T y \theta = {({X^T}X)^{ - 1}}{X^T}y θ=(XTX)−1XTy无法求逆,则可以求伪逆(大多数求逆矩阵的库,在矩阵不可逆时,自动返回伪逆)。
为什么 X T X {X^T}X XTX不可逆?
X T X {X^T}X XTX不可逆的解决方案:删除一些特征,或者进行正则化。
主要讲解 Octave语言,但是人生苦短,我选python,跳过!!!