Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
冰.封万里
apachecn-dl-zh
提交
54b5d615
A
apachecn-dl-zh
项目概览
冰.封万里
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
54b5d615
编写于
1月 22, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-22 17:19:38
上级
175458a9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
13 deletion
+13
-13
new/handson-nlp-pt-1x/1.md
new/handson-nlp-pt-1x/1.md
+13
-13
未找到文件。
new/handson-nlp-pt-1x/1.md
浏览文件 @
54b5d615
...
...
@@ -50,7 +50,7 @@
![](
img/Formula_01_001.jpg
)
这里,
!
[](
img/Formula_01_002.png
)
是
`x`
轴截距,!
[](
img/Formula_01_003.png
)
是直线的斜率。
这里,
`θ[0]`
是
`x`
轴截距,
``θ[1]``
是直线的斜率。
模型可以包含数百万甚至数十亿个输入功能的(尽管当功能空间太大时,您可能会遇到硬件限制)。 模型的输入类型也可能有所不同,模型可以从图像中学习:
...
...
@@ -80,7 +80,7 @@
## 模型如何学习?
为了学习模型,我们需要某种评估模型性能的方法。 为此,我们使用称为损失的概念。
**损失**
是衡量如何根据其真实值接近模型预测的一种度量。 对于我们数据集中的给定房屋,损失的一种度量可能是真实价格(
`y`
)与我们的模型预测的价格(
!
[](
img/Formula_01_004.png
)
)之间的差。 我们可以通过对数据集中所有房屋的平均损失进行评估,从而评估系统中的总损失。 但是,从理论上讲,正损失可以抵消负损失,因此,更常见的损失度量是
**均方误差**
:
为了学习模型,我们需要某种评估模型性能的方法。 为此,我们使用称为损失的概念。
**损失**
是衡量如何根据其真实值接近模型预测的一种度量。 对于我们数据集中的给定房屋,损失的一种度量可能是真实价格(
`y`
)与我们的模型预测的价格(
`y_hat`
)之间的差。 我们可以通过对数据集中所有房屋的平均损失进行评估,从而评估系统中的总损失。 但是,从理论上讲,正损失可以抵消负损失,因此,更常见的损失度量是
**均方误差**
:
![](
img/Formula_01_005.png
)
...
...
@@ -88,27 +88,27 @@
### 梯度下降
在这里,我们绘制了损失函数,因为它与房价模型
!
[](
img/Formula_01_006.png
)
中的单个学习参数有关。 我们注意到,当!
[](
img/Formula_01_007.png
)
设置得太高时,MSE 损失就很高;而当!
[](
img/Formula_01_008.png
)
设置得太低时,MSE 损失也就很高。
*最佳点*
或损失最小的点位于中间位置。 为了计算该算法,我们使用梯度下降。 当我们开始训练自己的神经网络时,我们将更详细地看到这一点:
在这里,我们绘制了损失函数,因为它与房价模型
`θ[1]`
中的单个学习参数有关。 我们注意到,当
`θ[1]`
设置得太高时,MSE 损失就很高;而当
`θ[1]`
设置得太低时,MSE 损失也就很高。
*最佳点*
或损失最小的点位于中间位置。 为了计算该算法,我们使用梯度下降。 当我们开始训练自己的神经网络时,我们将更详细地看到这一点:
![
Figure 1.6 – Gradient descent
](
img/B12365_01_6.jpg
)
图 1.6 –梯度下降
我们首先用随机值初始化
!
[](
img/Formula_01_009.png
)
。 为了使损失最小化,我们需要从损失函数进一步下移,到达山谷的中部。 为此,我们首先需要知道向哪个方向移动。在我们的初始点,我们使用基本演算来计算坡度的初始坡度:
我们首先用随机值初始化
`θ[1]`
。 为了使损失最小化,我们需要从损失函数进一步下移,到达山谷的中部。 为此,我们首先需要知道向哪个方向移动。在我们的初始点,我们使用基本演算来计算坡度的初始坡度:
![](
img/Formula_01_010.png
)
在我们前面的示例中,初始点处的梯度为正。 这表明我们的
!
[](
img/Formula_01_011.png
)
值大于最佳值,因此我们更新了!
[](
img/Formula_01_012.png
)
的值,使其低于我们先前的的值。 我们逐步迭代此过程,直到!
[](
img/Formula_01_013.png
)
越来越接近 MSE 最小化的值。 这发生在梯度等于零的点。
在我们前面的示例中,初始点处的梯度为正。 这表明我们的
`θ[1]`
值大于最佳值,因此我们更新了
`θ[1]`
的值,使其低于我们先前的的值。 我们逐步迭代此过程,直到
`θ[1]`
越来越接近 MSE 最小化的值。 这发生在梯度等于零的点。
### 过拟合和欠拟合
考虑以下场景,其中基本线性模型无法很好地拟合到我们的数据。 我们可以看到,我们的模型(由方程
!
[](
img/Formula_01_014.png
)
表示)似乎不是很好的预测指标:
考虑以下场景,其中基本线性模型无法很好地拟合到我们的数据。 我们可以看到,我们的模型(由方程
`y = θ[0] + θ[1] x`
表示)似乎不是很好的预测指标:
![
Figure 1.7 – Example of underfitting and overfitting
](
img/B12365_01_7.jpg
)
图 1.7 –欠拟合和过拟合的示例
当我们的模型由于缺乏功能,数据不足或模型规格不足而无法很好地拟合数据时,我们将其称为,
**欠拟合**
。 我们注意到我们数据的梯度越来越大,并怀疑如果使用多项式,则模型可能更合适。 例如
!
[](
img/Formula_01_015.png
)
。 稍后我们将看到,由于神经网络的复杂结构,欠拟合很少成为问题:
当我们的模型由于缺乏功能,数据不足或模型规格不足而无法很好地拟合数据时,我们将其称为,
**欠拟合**
。 我们注意到我们数据的梯度越来越大,并怀疑如果使用多项式,则模型可能更合适。 例如
`y = θ[0] + θ[1] x + θ[2] x^2`
。 稍后我们将看到,由于神经网络的复杂结构,欠拟合很少成为问题:
考虑以下示例。 在这里,我们使用房价模型拟合的函数不仅适用于房屋的大小(
`X`
),而且适用于二阶和三阶多项式
`(X2, X3)`
。 在这里,我们可以看到我们的新模型非常适合我们的数据点。 但是,这不一定会产生良好的模型:
...
...
@@ -142,17 +142,17 @@
# 神经网络
在前面的示例中,我们主要讨论了
!
[](
img/Formula_01_019.png
)
形式的回归。 我们接触过使用多项式来拟合更复杂的方程式,例如!
[](
img/Formula_01_020.png
)
。 但是,随着我们向模型中添加更多功能,何时使用原始功能的转换成为反复试验的案例。 使用
**神经网络**
,我们可以将更复杂的函数
`y = f(x)`
拟合到我们的数据中,而无需设计或转换我们现有的功能。
在前面的示例中,我们主要讨论了
`y = θ[0] + θ[1] x`
形式的回归。 我们接触过使用多项式来拟合更复杂的方程式,例如
`y = θ[0] + θ[1] x + θ[2] x`
。 但是,随着我们向模型中添加更多功能,何时使用原始功能的转换成为反复试验的案例。 使用
**神经网络**
,我们可以将更复杂的函数
`y = f(x)`
拟合到我们的数据中,而无需设计或转换我们现有的功能。
## 神经网络的结构
当我们学习
!
[](
img/Formula_01_021.png
)
的最优值时,该最优值将回归中的损失降到最低,这实际上与
**一层神经网络**
相同:
当我们学习
`θ[1]`
的最优值时,该最优值将回归中的损失降到最低,这实际上与
**一层神经网络**
相同:
![
Figure 1.10 – One-layer neural network
](
img/B12365_01_10.jpg
)
图 1.10 –一层神经网络
在这里,我们将每个功能
!
[](
img/Formula_01_022.png
)
作为输入,在此通过
**节点**
进行说明。 我们希望学习参数!
[](
img/Formula_01_023.png
)
,在此图中将其表示为
**连接**
。 我们对!
[](
img/Formula_01_024.png
)
和!
[](
img/Formula_01_025.png
)
之间所有乘积的最终总和为我们提供了最终预测
`y`
:
在这里,我们将每个功能
`X[i]`
作为输入,在此通过
**节点**
进行说明。 我们希望学习参数
`θ[i]`
,在此图中将其表示为
**连接**
。 我们对
`X[i]`
和
`θ[i]`
之间所有乘积的最终总和为我们提供了最终预测
`y`
:
![](
img/Formula_01_026.png
)
...
...
@@ -162,7 +162,7 @@
图 1.11 –全连接网络
每个输入节点都连接到另一层中的每个节点。 这被称为
**全连接层**
。 然后,将来自的全连接层的输出乘以其自身的附加权重,以便预测
`y`
。 因此,我们的预测不再只是
!
[](
img/Formula_01_027.png
)
的函数,而是现在包括针对每个参数的多个学习权重。 功能!
[](
img/Formula_01_028.png
)
不再仅受!
[](
img/Formula_01_029.png
)
影响。 现在,它也受到!
[](
img/Formula_01_030.png
)
的影响。 参数。
每个输入节点都连接到另一层中的每个节点。 这被称为
**全连接层**
。 然后,将来自的全连接层的输出乘以其自身的附加权重,以便预测
`y`
。 因此,我们的预测不再只是
`X[i]θ[i]`
的函数,而是现在包括针对每个参数的多个学习权重。 功能
`X[1]`
不再仅受
`θ[1]`
影响。 现在,它也受到
`θ[1,1], θ[2,1], θ[2,2], θ[2,3]`
的影响。 参数。
由于全连接层中的每个节点都将
`X`
的所有值作为输入,因此神经网络能够学习输入特征之间的交互特征。 多个全连接层可以链接在一起,以学习更复杂的功能。 在本书中,我们将看到我们构建的所有神经网络都将使用该概念。 将不同品种的多层链接在一起,以构建更复杂的模型。 但是,在我们完全理解神经网络之前,还有另外一个关键要素要涵盖:激活函数。
...
...
@@ -190,7 +190,7 @@ ReLU 是非常简单的非线性函数,当`x <= 0`,返回`y = 0`;当`x > 0
![](
img/Formula_01_032.png
)
此处,
!
[](
img/Formula_01_033.png
)
是网络内每个给定节点的输出。 因此,总而言之,在神经网络上执行梯度下降时我们采取的四个主要步骤如下:
此处,
`o[j]`
是网络内每个给定节点的输出。 因此,总而言之,在神经网络上执行梯度下降时我们采取的四个主要步骤如下:
1.
使用您的数据执行正向传播,计算网络的总损失。
2.
使用反向传播,计算每个参数相对于网络中每个节点损失的梯度。
...
...
@@ -237,7 +237,7 @@ The cat sat on the mat -> [2,1,0,1,1,1]
The
dog
sat
on
the
cat
->
[
2
,
1
,
1
,
1
,
1
,
0
]
```
然后,该数字表示形式可用作特征向量为
!
[](
img/Formula_01_034.png
)
的机器学习模型的输入特征。
然后,该数字表示形式可用作特征向量为
`X[0], X[1], ... ,X[n]`
的机器学习模型的输入特征。
## 序列表示
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录