1. 从梯度下降开始
这两天学习了机器学习课程的第二课,课程内容是围绕梯度下降展开的,下面就我的学习内容做一个总结。
- 什么是梯度下降?
梯度下降 (Gradient Decent) 是优化算法的一种,其思想是让损失函数沿着梯度的方向下降, 以最快的速度取到最小值。为啥是沿梯度的方向?因为梯度 (gradient) 就是函数变化最快的方向,贴一个梯度的定义: 梯度-维基百科,想深入了解的同学可以自取。
2. 批梯度下降 (Batch Gradient Decent)
批梯度下降是梯度下降最基本的形式,下面尝试在Linear Regression算法中使用批梯度下降来优化他的损失函数。
作为新手,在理解算法的时候,很多时候难住我们的不是逻辑,而是各种千奇百怪的符号,所以我先把公式中需要用到的符号列在这里,以消除符号的干扰。
符号解释:
- h ( x ) h(x) h(x) 学习算法的假设函数,本例中的学习算法是Linear Regression
- x i x_{i} xi 数据集的第 i 个特征
- θ i \theta_{i} θi 假设函数对第 i 个特征的系数
- n n n 数据集的特征数
- m m m 数据集的样本数目
- ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)) 第 i 条训练样本
图片可能更加直观,请原谅我拙劣的画技,原始图片取自课程课件:
Linear Regression 的假设函数为:
h ( x ) = ∑ i = 0 n θ i x i h(x) = \sum_{i=0}^{n}{\theta_{i}x_{i}} h(x)=i=0∑nθixi
其损失函数:
J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2} \sum_{i=1}^{m}{(h_{\theta} (x^{(i)}) - y^{(i)}) ^ 2} J(θ)=21i=1∑m(hθ(x(i))−y(i))2
在给定训练集的情况下, ( x , y ) (x, y) (x,y) 均已知,损失函数只与 θ \theta θ有关,记为 J ( θ ) J(\theta) J(θ) , 前面的系数 1 2 \frac{1}{2}