Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
apachecn-dl-zh
提交
22f39df4
A
apachecn-dl-zh
项目概览
OpenDocCN
/
apachecn-dl-zh
大约 1 年 前同步成功
通知
298
Star
83
Fork
35
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
22f39df4
编写于
3月 29, 2023
作者:
布
布客飞龙
提交者:
GitHub
3月 29, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #24 from hlhtddx/patch-1
Update 4.md to fix image paths
上级
1bb7fbf3
cc451b7f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
25 addition
and
25 deletion
+25
-25
docs/hands-on-ml-2e-zh/4.md
docs/hands-on-ml-2e-zh/4.md
+25
-25
未找到文件。
docs/hands-on-ml-2e-zh/4.md
浏览文件 @
22f39df4
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录