未验证 提交 22f39df4 编写于 作者: 布客飞龙 提交者: GitHub

Merge pull request #24 from hlhtddx/patch-1

Update 4.md to fix image paths
......@@ -80,7 +80,7 @@ X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
```
![](img/图 4-1.PNG)
![](img/图4-1.PNG)
图 4-1:随机线性数据集
......@@ -155,25 +155,25 @@ array([[4.21509616],[9.75532293]])
具体来说,开始时,需要选定一个随机的`Θ`(这个值称为随机初始值),然后逐渐去改进它,每一次变化一小步,每一步都试着降低损失函数(例如:均方差损失函数),直到算法收敛到一个最小值(如图:4-3)。
![](img/图 4-3.PNG)
![](img/图4-3.PNG)
图 4-3:梯度下降
在梯度下降中一个重要的参数是步长,超参数学习率的值决定了步长的大小。如果学习率太小,必须经过多次迭代,算法才能收敛,这是非常耗时的(如图 4-4)。
![](img/图 4-4.PNG)
![](img/图4-4.PNG)
图 4-4:学习率过小
另一方面,如果学习率太大,你将跳过最低点,到达山谷的另一面,可能下一次的值比上一次还要大。这可能使的算法是发散的,函数值变得越来越大,永远不可能找到一个好的答案(如图 4-5)。
![](img/图 4-5.PNG)
![](img/图4-5.PNG)
图 4-5:学习率过大
最后,并不是所有的损失函数看起来都像一个规则的碗。它们可能是洞,山脊,高原和各种不规则的地形,使它们收敛到最小值非常的困难。 图 4-6 显示了梯度下降的两个主要挑战:如果随机初始值选在了图像的左侧,则它将收敛到局部最小值,这个值要比全局最小值要大。 如果它从右侧开始,那么跨越高原将需要很长时间,如果你早早地结束训练,你将永远到不了全局最小值。
![](img/图 4-6.PNG)
![](img/图4-6.PNG)
图 4-6:梯度下降的陷阱
......@@ -181,7 +181,7 @@ array([[4.21509616],[9.75532293]])
事实上,损失函数的图像呈现碗状,但是不同特征的取值范围相差较大的时,这个碗可能是细长的。图 4-7 展示了梯度下降在不同训练集上的表现。在左图中,特征 1 和特征 2 有着相同的数值尺度。在右图中,特征 1 比特征 2 的取值要小的多,由于特征 1 较小,因此损失函数改变时,`Θ[1]`会有较大的变化,于是这个图像会在`Θ[1]`轴方向变得细长。
![](img/图 4-7.PNG)
![](img/图4-7.PNG)
图 4-7:有无特征缩放的梯度下降
......@@ -242,7 +242,7 @@ array([[4.21509616],[2.77011339]])
看!正规方程的表现非常好。完美地求出了梯度下降的参数。但是当你换一个学习率会发生什么?图 4-8 展示了使用了三个不同的学习率进行梯度下降的前 10 步运算(虚线代表起始位置)。
![](img/图 4-8.PNG)
![](img/图4-8.PNG)
图 4-8:不同学习率的梯度下降
......@@ -262,7 +262,7 @@ array([[4.21509616],[2.77011339]])
另一方面,由于它的随机性,与批量梯度下降相比,其呈现出更多的不规律性:它到达最小值不是平缓的下降,损失函数会忽高忽低,只是在大体上呈下降趋势。随着时间的推移,它会非常的靠近最小值,但是它不会停止在一个值上,它会一直在这个值附近摆动(如图 4-9)。因此,当算法停止的时候,最后的参数还不错,但不是最优值。
![](img/图 4-9.PNG)
![](img/图4-9.PNG)
图 4-9:随机梯度下降
......@@ -300,7 +300,7 @@ array([[4.21076011],[2.748560791]])
图 4-10 展示了前 10 次的训练过程(注意每一步的不规则程度)。
![](img/图 4-10.PNG)
![](img/图4-10.PNG)
图 4-10:随机梯度下降的前 10 次迭代
......@@ -327,7 +327,7 @@ sgd_reg.fit(X,y.ravel())
小批量梯度下降在参数空间上的表现比随机梯度下降要好的多,尤其在有大量的小型实例集时。作为结果,小批量梯度下降会比随机梯度更靠近最小值。但是,另一方面,它有可能陷在局部最小值中(在遇到局部最小值问题的情况下,和我们之前看到的线性回归不一样)。 图 4-11 显示了训练期间三种梯度下降算法在参数空间中所采用的路径。 他们都接近最小值,但批量梯度的路径最后停在了最小值,而随机梯度和小批量梯度最后都在最小值附近摆动。 但是,不要忘记,批量梯度需要花费大量时间来完成每一步,但是,如果你使用了一个较好的`learning schedule`,随机梯度和小批量梯度也可以得到最小值。
![](img/图 4-11.PNG)
![](img/图4-11.PNG)
图 4-11:参数空间的梯度下降路径
......@@ -335,7 +335,7 @@ sgd_reg.fit(X,y.ravel())
表 4-1:比较线性回归的不同梯度下降算法
![](img/表 4-1.PNG)
![](img/表4-1.PNG)
> 提示
>
......@@ -353,7 +353,7 @@ X = 6 * np.random.rand(m, 1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(m, 1)
```
![](img/图 4-12.PNG)
![](img/图4-12.PNG)
图 4-12:生产加入噪声的非线性数据
......@@ -378,7 +378,7 @@ array([-0.75275929, 0.56664654])
(array([ 1.78134581]), array([[ 0.93366893, 0.56456263]]))
```
![](img/图 4-13.PNG)
![](img/图4-13.PNG)
图 4-13:多项式回归模型预测
......@@ -394,7 +394,7 @@ array([-0.75275929, 0.56664654])
如果你使用一个高阶的多项式回归,你可能发现它的拟合程度要比普通的线性回归要好的多。例如,图 4-14 使用一个 300 阶的多项式模型去拟合之前的数据集,并同简单线性回归、2 阶的多项式回归进行比较。注意 300 阶的多项式模型如何摆动以尽可能接近训练实例。
![](img/图 4-14.PNG)
![](img/图4-14.PNG)
图 4-14:高阶多项式回归
......@@ -428,7 +428,7 @@ lin_reg = LinearRegression()
plot_learning_curves(lin_reg, X, y)
```
![](img/图 4-15.PNG)
![](img/图4-15.PNG)
图 4-15:学习曲线
......@@ -458,7 +458,7 @@ plot_learning_curves(polynomial_regression, X, y)
+ 在训练集上,误差要比线性回归模型低的多。
+ 图中的两条曲线之间有间隔,这意味模型在训练集上的表现要比验证集上好的多,这也是模型过拟合的显著特点。当然,如果你使用了更大的训练数据,这两条曲线最后会非常的接近。
![](img/图 4-16.PNG)
![](img/图4-16.PNG)
图 4-16:多项式模型的学习曲线
......@@ -505,7 +505,7 @@ plot_learning_curves(polynomial_regression, X, y)
对线性回归来说,对于岭回归,我们可以使用封闭方程去计算,也可以使用梯度下降去处理。它们的缺点和优点是一样的。公式 4-9 表示封闭方程的解(矩阵`A`是一个除了左上角有一个`0``n * n`的单位矩,这个`0`代表偏差项。译者注:偏差`θ[0]`不被正则化)。
![](img/图 4-17.PNG)
![](img/图4-17.PNG)
图 4-17:岭回归
......@@ -544,7 +544,7 @@ Lasso 回归(也称 Least Absolute Shrinkage,或者 Selection Operator Regre
图 4-18 展示了和图 4-17 相同的事情,仅仅是用 Lasso 模型代替了 Ridge 模型,同时调小了`α`的值。
![](img/图 4-18.PNG)
![](img/图4-18.PNG)
图 4-18:Lasso 回归
......@@ -552,7 +552,7 @@ Lasso 回归的一个重要特征是它倾向于完全消除最不重要的特
你可以从图 4-19 知道为什么会出现这种情况:在左上角图中,后背景的等高线(椭圆)表示了没有正则化的均方差损失函数(`α = 0`),白色的小圆圈表示在当前损失函数上批量梯度下降的路径。前背景的等高线(菱形)表示`l1`惩罚,黄色的三角形表示了仅在这个惩罚下批量梯度下降的路径(`α -> ∞`)。注意路径第一次是如何到达`θ[1] = 0`,然后向下滚动直到它到达`θ[2] = 0`。在右上角图中,等高线表示的是相同损失函数再加上一个`α = 0.5``l1`惩罚。这幅图中,它的全局最小值在`θ[2] = 0`这根轴上。批量梯度下降首先到达`θ[2] = 0`,然后向下滚动直到达到全局最小值。 两个底部图显示了相同的情况,只是使用了`l2`惩罚。 规则化的最小值比非规范化的最小值更接近于`θ = 0`,但权重不能完全消除。
![](img/图 4-19.PNG)
![](img/图4-19.PNG)
图 4-19:Ridge 回归和 Lasso 回归对比
......@@ -600,7 +600,7 @@ array([ 1.54333232])
对于迭代学习算法,有一种非常特殊的正则化方法,就像梯度下降在验证错误达到最小值时立即停止训练那样。我们称为早期停止法。图 4-20 表示使用批量梯度下降来训练一个非常复杂的模型(一个高阶多项式回归模型)。随着训练的进行,算法一直学习,它在训练集上的预测误差(RMSE)自然而然的下降。然而一段时间后,验证误差停止下降,并开始上升。这意味着模型在训练集上开始出现过拟合。一旦验证错误达到最小值,便提早停止训练。这种简单有效的正则化方法被 Geoffrey Hinton 称为“完美的免费午餐”
![](img/图 4-20.PNG)
![](img/图4-20.PNG)
图 4-20:早期停止法
......@@ -647,7 +647,7 @@ Logistic 函数(也称为 logit),用`σ()`表示,其是一个 sigmoid
![](img/tex-bec5b0923c70096e7336e2debb62ce82.gif)
![](img/图 4-21.PNG)
![](img/图4-21.PNG)
图 4-21:逻辑函数
......@@ -688,7 +688,7 @@ Logistic 函数(也称为 logit),用`σ()`表示,其是一个 sigmoid
我们使用鸢尾花数据集来分析 Logistic 回归。 这是一个著名的数据集,其中包含 150 朵三种不同的鸢尾花的萼片和花瓣的长度和宽度。这三种鸢尾花为:Setosa,Versicolor,Virginica(如图 4-22)。
![](img/图 4-22.PNG)
![](img/图4-22.PNG)
图 4-22:三种不同的鸢尾花
......@@ -721,7 +721,7 @@ plt.plot(X_new, y_proba[:, 1], "g-", label="Iris-Virginica")
plt.plot(X_new, y_proba[:, 0], "b--", label="Not Iris-Virginica")
```
![](img/图 4-23.PNG)
![](img/图4-23.PNG)
图 4-23:概率估计和决策边界
......@@ -734,7 +734,7 @@ array([1, 0])
图 4-24 表示相同的数据集,但是这次使用了两个特征进行判断:花瓣的宽度和长度。 一旦训练完毕,Logistic 回归分类器就可以根据这两个特征来估计一朵花是 Virginica 的可能性。 虚线表示这时两类情况出现的概率都等于 50%:这是模型的决策边界。 请注意,它是一个线性边界。每条平行线都代表一个分类标准下的两两个不同类的概率,从 15%(左下角)到 90%(右上角)。越过右上角分界线的点都有超过 90% 的概率是 Virginica 花。
![](img/图 4-24.PNG)
![](img/图4-24.PNG)
图 4-24:线性决策边界
......@@ -825,7 +825,7 @@ array([2])
array([[ 6.33134078e-07, 5.75276067e-02, 9.42471760e-01]])
```
![](img/图 4-25.PNG)
![](img/图4-25.PNG)
图 4-25:Softmax 回归的决策边界
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册