机器学习基础-线性回归之梯度下降

刚刚开始接触机器学习,首先接触到的是线性回归(linear regression),梯度下降是接触到的第一个对于模型的优化。(以下内容来自coursera中斯坦福大学机器学习公开课即相关链接,附上公开课链接:https://www.coursera.org/learn/machine-learning/

首先是假设模型(hypothesis function):

hθ(x)=θ0+θ1x

很简单的一个线性函数,theta0和theta1是线性模型的两个参数,x是输入,y是输出

其次是该假设模型的代价函数:

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2

这个函数理解起来也很容易,m是data set的大小,利用data set的数据求了一个均方差(mean square error,也就是大名鼎鼎的MSE)

再接下来是梯度下降:

θj:=θjαθjJ(θ0,θ1)

其中alpha是learning rate,也就是学习速率,公式本身没有难度(公式后部为代价函数关于theta-j的导数),但是alpha系数却需要格外的理解,学习速率的设定不能太大,也不能太小,太大会导致震荡(简单来说因为每次更改的幅度都很大,在接近谷底的时候很容易产生越过谷底却无法逼近谷底的现象,曾经考虑过动态更改alpha的值,也就是在远离谷底的地方将alpha值放大,在靠近谷底的地方将alpha值减小,后来发现这是不需要的,因为导数值已经实现了这种放大缩小的功能),太小会导致每次收敛速度过慢。

接下来就是比较难理解的部分,即线性回归的梯度下降公式:

θ0:=θ1:=
θ0α1mi=1m(hθ(x(i))y(i))θ1α1mi=1m((hθ(x(i))y(i))x(i))


很显然的是这个公式是由上一步骤得来的,但是后面的导数如何变成了这个公式中看着像是MSE的部分呢?

要解决这个问题,需要回顾一个高数中的问题,即链式法则,(基本概念详见链接)。


θ0g(θ0,θ1)=θ012mi=1m(f(θ0,θ1)(i))2=2×12mi=1mf(θ0,θ1)21θ0θ01mi=1mf(θ0,θ1)(i)


theta1中最后需要乘x是因为在公式中将theta视为变量,x在求导过程中相当于常量,需要乘x是因为在求导过程中产生了这个产量,举个例子:

对(3x-4)^2求导使用链式法则为:2*(3x-4)*3,这里的x就相当于最后乘的那个3.





你可能感兴趣的:(机器学习)