|
|
@@ -70,7 +70,7 @@ |
|
|
|
|
|
|
|
在房屋价格预测的例子中,给出了一系列的房屋面基数据,根据这些数据来预测任意面积的房屋价格。给出照片-年龄数据集,预测给定照片的年龄。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
2. 分类问题(Classification) |
|
|
|
|
|
|
@@ -80,7 +80,7 @@ |
|
|
|
|
|
|
|
视频中举了癌症肿瘤这个例子,针对诊断结果,分别分类为良性或恶性。还例如垃圾邮件分类问题,也同样属于监督学习中的分类问题。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
视频中提到**支持向量机**这个算法,旨在解决当特征量很大的时候(特征即如癌症例子中的肿块大小,颜色,气味等各种特征),计算机内存一定会不够用的情况。**支持向量机能让计算机处理无限多个特征。** |
|
|
|
|
|
|
@@ -105,7 +105,7 @@ |
|
|
|
|
|
|
|
**鸡尾酒问题** |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢\~~。 |
|
|
|
|
|
|
@@ -140,7 +140,7 @@ |
|
|
|
|
|
|
|
2. **问题解决模型** |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
其中 $h$ 代表结果函数,也称为**假设(hypothesis)** 。假设函数根据输入(房屋的面积),给出预测结果输出(房屋的价格),即是一个 $X\to Y$ 的映射。 |
|
|
|
|
|
|
@@ -180,7 +180,7 @@ $h_\theta(x)=\theta_0+\theta_1x$,为解决房价问题的一种可行表达式 |
|
|
|
> |
|
|
|
> $\left(x^\left(i\right),y^\left(i\right)\right)$: 训练集中的第 $i$ 个样本实例 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
上图展示了当 $\theta$ 取不同值时,$h_\theta\left(x\right)$ 对数据集的拟合情况,蓝色虚线部分代表**建模误差**(预测结果与实际结果之间的误差),我们的目标就是最小化所有误差之和。 |
|
|
|
|
|
|
@@ -205,7 +205,7 @@ $$J(\theta_0,\theta_1)=\dfrac{1}{2m}\displaystyle\sum_{i=1}^m\left(\hat{y}_{i}-y |
|
|
|
|
|
|
|
为了直观理解代价函数到底是在做什么,先假设 $\theta_1 = 0$,并假设训练集有三个数据,分别为$\left(1, 1\right), \left(2, 2\right), \left(3, 3\right)$,这样在平面坐标系中绘制出 $h_\theta\left(x\right)$ ,并分析 $J\left(\theta_0, \theta_1\right)$ 的变化。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
右图 $J\left(\theta_0, \theta_1\right)$ 随着 $\theta_1$ 的变化而变化,可见**当 $\theta_1 = 1$ 时,$J\left(\theta_0, \theta_1 \right) = 0$,取得最小值,**对应于左图青色直线,即函数 $h$ 拟合程度最好的情况。 |
|
|
|
|
|
|
@@ -215,21 +215,21 @@ $$J(\theta_0,\theta_1)=\dfrac{1}{2m}\displaystyle\sum_{i=1}^m\left(\hat{y}_{i}-y |
|
|
|
|
|
|
|
给定数据集: |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
参数在 $\theta_0$ 不恒为 $0$ 时代价函数 $J\left(\theta\right)$ 关于 $\theta_0, \theta_1$ 的3-D图像,图像中的高度为代价函数的值。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
由于3-D图形不便于标注,所以将3-D图形转换为**轮廓图(contour plot)**,下面用轮廓图(下图中的右图)来作直观理解,其中相同颜色的一个圈代表着同一高度(同一 $J\left(\theta\right)$ 值)。 |
|
|
|
|
|
|
|
$\theta_0 = 360, \theta_1 =0$ 时: |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
大概在 $\theta_0 = 0.12, \theta_1 =250$ 时: |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
上图中最中心的点(红点),近乎为图像中的最低点,也即代价函数的最小值,此时对应 $h_\theta\left(x\right)$ 对数据的拟合情况如左图所示,嗯,一看就拟合的很不错,预测应该比较精准啦。 |
|
|
|
|
|
|
@@ -241,7 +241,7 @@ $\theta_0 = 360, \theta_1 =0$ 时: |
|
|
|
|
|
|
|
下图根据不同的起始点,产生了两个不同的局部最小值。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围**下一步往哪走**下山比较快,然后就**迈出那一步**,一直重复,直到我们到达山下的某一处**陆地**。 |
|
|
|
|
|
|
@@ -259,7 +259,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th |
|
|
|
|
|
|
|
公式中,学习速率决定了参数值变化的速率即”**走多少距离**“,而偏导这部分决定了下降的方向即”**下一步往哪里**“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”**陆地**“。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
注意,在计算时要**批量更新 $\theta$ 值**,即如上图中的左图所示,否则结果上会有所出入,原因不做细究。 |
|
|
|
|
|
|
@@ -267,7 +267,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th |
|
|
|
|
|
|
|
该节探讨 $\theta_1$ 的梯度下降更新过程,即 $\theta_1 := \theta_1 - \alpha\frac{d}{d\theta_1}J\left(\theta_1\right)$,此处为了数学定义上的精确性,用的是 $\frac{d}{d\theta_1}J\left(\theta_1\right)$,如果不熟悉微积分学,就把它视作之前的 $\frac{\partial}{\partial\theta}$ 即可。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 $J\left(\theta\right)$ 在初始点处有**正斜率**,也就是说它有**正导数**,则根据梯度下降公式 ,${{\theta }_{j}}:={{\theta }_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta_0, \theta_1 \right)$ 右边的结果是一个正值,即 $\theta_1$ 会**向左边移动**。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。 |
|
|
|
|
|
|
@@ -281,13 +281,13 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th |
|
|
|
|
|
|
|
- 学习速率过小图示: |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
收敛的太慢,需要更多次的迭代。 |
|
|
|
|
|
|
|
- 学习速率过大图示: |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
可能越过最低点,甚至导致无法收敛。 |
|
|
|
|
|
|
@@ -295,7 +295,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th |
|
|
|
|
|
|
|
如图,品红色点为初始点,代价函数随着迭代的进行,变化的幅度越来越小。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
**最后,梯度下降不止可以用于线性回归中的代价函数,还通用于最小化其他的代价函数。** |
|
|
|
|
|
|
@@ -311,7 +311,7 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th |
|
|
|
|
|
|
|
直接将线性回归模型公式代入梯度下降公式可得出公式 |
|
|
|
|
|
|
|
当 $j = 0, j = 1$ 时,**线性回归中代价函数求导的推导过程:** |
|
|
|
当 $j = 0, j = 1$ 时,**线性回归中代价函数求导的推导过程:** |
|
|
|
|
|
|
|
$\frac{\partial}{\partial\theta_j} J(\theta_1, \theta_2)=\frac{\partial}{\partial\theta_j} \left(\frac{1}{2m}\sum\limits_{i=1}^{m}{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}} \right)=$ |
|
|
|
|
|
|
@@ -333,7 +333,7 @@ $\frac{\partial}{\partial\theta_1} J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}{{\ |
|
|
|
|
|
|
|
由于线性回归函数呈现**碗状**,且**只有一个**全局的最优值,所以函数**一定总会**收敛到全局最小值(学习速率不可过大)。同时,函数 $J$ 被称为**凸二次函数**,而线性回归函数求解最小值问题属于**凸函数优化问题**。 |
|
|
|
|
|
|
|
 |
|
|
|
 |
|
|
|
|
|
|
|
另外,使用循环求解,代码较为冗余,后面会讲到如何使用**向量化(Vectorization)**来简化代码并优化计算,使梯度下降运行的更快更好。 |
|
|
|
|
|
|
|