线性回归模型
假设函数
为了描述监督学习问题,我们的目标是,通过一个训练集,学习一个函数 \(f : X \rightarrow Y\),使得 \(f(x)\) 对于对应值 \(y\) 是一个很好的预测器。\(f(x)\) 被称为假设函数(hypothesis function)。
\(x\) 表示输入参数 (input feature)
\(y\) 表示目标值 (target)
\(\hat{y}\) 表示预测值 (estimated)
\(f\) 表示假设函数 (hypathesis function)
\(\(f_{w,b}(x)=wx+b\)\)
代价函数
如何确定 模型(假设函数) 中的参数 \(w,b\) 取什么值?
代价函数(Cost Function) 是用来^衡量预测值与实际值之间的误差^。它的目的是找到一组参数,使得预测值与实际值之间的误差最小(确定最优参数)。评价模型是否拟合的准确,值越小,拟合的越准确。
线性回归的代价函数:最小二乘法。所谓“二乘”就是平方的意思。
\(\(J(w,b)=\frac{1}{2m}\sum_{i=1}^m\bigl(f_{w,b}\bigl(x^{(i)}\bigr)-y^{(i)}\bigr)^2\)\) \(J_{w,b}(x^{(i)})\) 中的 \(i\) 表示第 \(i\) 项, 即为 \(\hat{y}^{(i)}\) , 那么 \(\hat{y}^{(i)} - y^{(i)}\) 表示预测值与实际值的误差, 平方用于放大误差, 将所有项累加起来得到误差和, 除 \(m\) 得到平局误差, \(1/2m\) 中的 2 仅仅是为了后续求导计算简化计算步骤.
损失函数
代价函数中, \(\bigr(f_{w,b}\bigl(x^{(i)}\bigr)-y^{(i)}\bigr)^2\) 这一部分又叫 损失函数(Loss Function) 用 \(L\) 表示 \(\(L=(f_{w,b}\bigl(x^{(i)}\bigr)-y^{(i)}\bigr)^2\)\) 损失函数衡量的是在单个训练样例上的表现如何,而代价函数衡量你在整个训练集上的表现。
梯度下降
梯度下降(Gradient descent ) 是计算代价函数图中找到最小值所在的点。
-
梯度下降的工作是找到希望最小化代价函数 \(J\) 的参数 \(w\) 和 \(b\)
-
如何快速到达最优点:从山顶一步一步走到山谷,先在原地转一圈,选最陡的地方走一步,在转一圈,在选最陡的一步。这一步一步就是多个梯度下降的步骤。
-
不同的 \(w, b\) 值决定你在那个位置
梯度下降算法: $$ \begin{aligned} w &= w - \alpha \frac {d_{J(w,b)}}{d_w}\ b &= b - \alpha \frac {d_{J(w,b)}}{d_b} \end{aligned} $$
- 梯度下降(Gradient descent )同时更新 w,b。同时更新目的在于,能够确保是在原点寻找最陡方向。赋值就像迈出了一步,先迈出左脚寻找最陡的地方和在原地寻找最陡的地方不一样。
左侧为同时更新 w b,同一个w用到两个公式上;右侧即为错误更新,不是同时更新,此处先更新w,在将更新后的w值带入b公式中
-
α学习率决定你迈出的一步有多大
-
导数决定梯度下降方向,学习率决定步长
理解梯度下降
为什么这个学习率和导数相乘时,会导致参数w和b的更新?
\(\frac {d_{J(w,b)}}{d_w}\) 会有正负,
算法详解
梯度下降的具体算法实现过程是:
- 确定模型的假设函数和损失函数
- 相关参数的初始化,包括:参数、算法终止距离和步长
- 确定当前位置损失函数的梯度
- 用步长乘以梯度,得到当前位置下降的距离
- 确定是否所有参数梯度下降的距离都小于算法终止距离,如果小于则算法终止,否则进行下一步
- 更新所有参数,更新完毕转到步骤1