Machine Learning Notes Ⅱ 监督学习的应用:梯度下降
样例问题:由房屋大小、房间个数来估计房屋价格。
一些定义:
- (m):样本数量。
- (x):输入变量(又叫特征),用(x_{j}^{(i)})来表示第(i)个样本的第(j)个特征量。
- (y):输出变量(又叫目标),用(y_{(i)})来表示第(i)个样本的标准答案。
- ((x,y)):样本点。
对于该样例题目来说,样本表示方式如下:
房屋大小((x_{1})) | 卧室个数((x_{2})) | 房屋价格((y)) |
---|---|---|
(cdots) | (cdots) | (cdots) |
机器学习要实现的功能:
输入样本数据 ( ightarrow) 运行机器学习算法 ( ightarrow) 得到假设函数h ( ightarrow) 通过假设函数对新数据进行预测。
解决步骤:
- 决定假设函数h的表示方式。针对样例问题,我们采取线性表示方法,即(h(x)=h_{ heta}(x)= heta _{0}+ heta _{1} * x _{1} + heta _{2} * x _{2})。
不妨定义(x _{0}=1),(n)为特征数目,则(h(x)=sum _{i=0}^{n}{ heta _{i} * x _{i}})。 - 决定“优化判据”,即对拟合结果优劣的评价,一般数值越小拟合结果越好。在这里,我们定义(J( heta)=frac{1}{2}*sum_{i=1}^{m}{(h_{ heta}(x^{(i)})-y^{(i)})^2})为优化判据,通过最小化(J( heta))的值得到最优的假设函数(h_{ heta})。
- 设计算法得到较优或最优的假设函数。对于样例,我们可以采取搜索算法或针对上面的判据而推导出的最小二乘法公式。
算法讲解:
首先讲解搜索算法,这里我们采用梯度下降算法来求得最优的一组( heta)。
算法的核心就是假定一个起始解,不断地向(J( heta))减小的地方移动,最终到达一个局部极小值。对于这种二次函数,可以证明只存在一个全局最优解,没有其他局部最优解。
对于在一个解处找到如何移动才能使(J)函数减小,我们采取求偏导的方法来解决。
对于( heta_{i})来说,每一次变化为
其中(frac{partial J( heta)}{partial heta_{i}})表示函数(J( heta))对于( heta_{i})的偏导,每次依据偏导向使(J( heta))的值减小的方向移动。而(alpha)则是我们自己给定的一个学习速率,用于控制每次移动的步长,(alpha)过大会导致跨过最优解,(alpha)过小会导致收敛缓慢。
注意到在上面的过程中,我们每次更新一个( heta_{i})需要做(n imes m)次运算,当样本量较大使,运行速度缓慢。这时,我们可以改造一下梯度下降算法,每次只用一组样本去更新( heta),这样可以大大减小运行时间,但得到的( heta)可能不是最优方案。
对步骤的简化:
对于一个矩阵到实数的映射(y=f(A)),(A)为一个(p imes q)的矩阵,我们定义该映射的梯度矩阵为
这样,如果我们把一个解( heta)写成一个(1 imes n)的矩阵,(J( heta))就是一个矩阵到实数的映射。那么梯度下降时,每次的操作就变成了( heta\,:= heta - alpha imes abla _{ heta}J)。
最小二乘法公式推导
一些定义:
定义(n imes n)方阵(A)的迹为(tr(A)=sum_{i=1}^{n}{A_{ii}})
有以下性质:
- (tr(A B) = tr(B A)),(tr(x_{1} x_{2} cdots x_{n})=tr(x_{n} x_{1} cdots x_{n-1}))。
- 令(y=tr(A B)),有( abla_{A}y=B^{T})。
- (tr(A)=tr(A^{T}))。
- 若(a in R),则(tr(a)=a)。
- 令(y=tr(A B A^{T} C)),有( abla _{A}y = C A B + C^{T} A B^{T})。
推导过程:
定义设计矩阵(X),由所有样本数据构成:
定义( heta)为列向量:
则有:
接下来定义
此时:
所以(frac{1}{2} (X heta - y)^{T} (X heta - y) = frac{1}{2} sum_{i=1}^{m}{(h_{ heta}(x^{(i)})-y^{(i)})^2} = J( heta))。
在最小值处,有
((1))处的推出,用到了括号内各项乘积结果为是一个(1 imes 1)的矩阵,可以把它们看成一个实数,所以它们之和的迹等于他们的迹之和。然后利用性质1把第一项中最后一个矩阵提前,把第二项转置后调整顺序,第三项调整顺序,第四项与( heta)无关求梯度后为(0)。
然后(
abla_{ heta}tr( heta heta^T X^TX))可以在中间加入一个单位矩阵变为(
abla_{ heta}tr( heta I heta^T X^TX)),根据性质5可以得出该项等于(X^TX heta I + X^TX heta I),忽略单位矩阵后等于(2X^TX heta)。
对于(
abla_{ heta}tr( heta y^TX)),应用性质2可以得到该项等于(X^Ty)。
所以
所以
对于迹的性质的证明:
-
设(A)为(n imes m)的矩阵,(B)为(m imes n)的矩阵,则
[egin{align*} tr(AB)&=sum_{i=1}^{n}{(AB)_{ii}} \ &=sum_{i=1}^{n}{sum_{k=1}^{m}{A_{ik} B_{ki}}} \ &=sum_{k=1}^{m}{sum_{i=1}^{n}{B_{ki} A_{ik}}} \ &=sum_{k=1}^{m}{(BA){kk}} \ &=tr(BA) \ end{align*} ] -
由刚才推出的式子有 (tr(AB)=sum_{i=1}^{n}{sum_{k=1}^{m}{A_{ik} B_{ki}}})。对于(A_{ik})来说,它只出现了一次,系数是(B_{(k)(i)}),所以( abla_{A}tr(AB)=B^T)。
-
矩阵的迹就是对角线元素的和,转置后对角线元素不变。
-
将(a)看作一个(1 imes 1)的矩阵,那么(tr(a)=a)。
-
设(A)为(n imes m)的矩阵,则(A^T)为(m imes n)的矩阵,那么(B)就是一个(m imes m)的矩阵,(C)就是一个(n imes n)的矩阵。将内部的矩阵乘法的结果设为(X),有
[X_{ij}=sum_{l=1}^n{sum_{t=1}^m{sum_{k=1}^m{A_{ik}B_{kt}A^T_{tl}C_{lj}}}}\ egin{align*} tr(X)&=sum_{i=1}^n{X_{ii}}\ &=sum_{i=1}^n{sum_{l=1}^n{sum_{t=1}^m{sum_{k=1}^m{A_{ik}B_{kt}A^T_{tl}C_{li}}}}}\ &=sum_{i=1}^n{sum_{l=1}^n{sum_{t=1}^m{sum_{k=1}^m{A_{ik}B_{kt}A_{lt}C_{li}}}}}\ end{align*} ] 对于(A_{pq})来说,它在的次数最多为2。考虑次数为(1)的项的系数为:
[egin{cases} sum_{l=1}^n{sum_{t=1,(l,t) eq (p,q)}^m}{B_{qt}A_{lt}C_{lp}};, &quad (p,q)=(i,k) \[2ex] sum_{i=1}^n{sum_{k=1,(i,k) eq (p,q)}^m{A_{ik}B_{kq}C_{pi}}};,&quad (p,q)=(l,t) end{cases} ] 求偏导后的结果就是上面两项的和,也就是:
[egin{align*} &left[(sum_{l=1}^n{sum_{t=1}^m{B_{qt}A_{lt}C_{lp}}}) - B_{qq}C_{pp}A_{pq} ight]+left[(sum_{i=1}^n{sum_{k=1}^m{A_{ik}B_{kq}C_{pi}}}) - B_{qq}C_{pp}A_{pq} ight]\ \ &=(sum_{l=1}^n{sum_{t=1}^m{B_{qt}A_{lt}C_{lp}}}+sum_{i=1}^n{sum_{k=1}^m{A_{ik}B_{kq}C_{pi}}}) - 2B_{qq}C_{pp}A_{pq} end{align*} ] 次数为(2)的项的系数为(B_{qq}C_{pp}),求偏导后为(2B_{qq}C_{pp}A{pq})。和上面的求和后为:
[egin{align*} &sum_{l=1}^n{sum_{t=1}^m{B_{qt}A_{lt}C_{lp}}}+sum_{i=1}^n{sum_{k=1}^m{A_{ik}B_{kq}C_{pi}}}\ \ &=(C^TAB^T)_{pq}+(CAB)_{pq}\ \ &=(C^TAB^T+CAB)_{pq} end{align*} ] 所以( abla _{A} = C imes A imes B + C^{T} imes A imes B^{T})。