Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
大唐爆破僧
apachecn-dl-zh
提交
17f763c6
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,发现更多精彩内容 >>
提交
17f763c6
编写于
1月 23, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-23 16:13:06
上级
50d9a385
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
33 addition
and
24 deletion
+33
-24
new/rl-tf/01.md
new/rl-tf/01.md
+33
-24
未找到文件。
new/rl-tf/01.md
浏览文件 @
17f763c6
...
...
@@ -108,7 +108,7 @@ Sigmoid是一种平滑且连续可微的功能。 这导致非线性输出。 Si
![](
img/ba07be70-2b01-4112-be20-9689a19ac370.png
)
查看下面的 Sigmoid 函数的梯度,我们观察到取决于
`x`
的平滑曲线。 由于梯度曲线是连续的,因此很容易反向传播误差并更新参数
!
[](
img/62159668-8474-4e17-be25-39d5adf63489.png
)
和!
[](
img/aff45916-8e2d-4140-9b75-9ce9f0681b4e.png
)
:
查看下面的 Sigmoid 函数的梯度,我们观察到取决于
`x`
的平滑曲线。 由于梯度曲线是连续的,因此很容易反向传播误差并更新参数
`W`
和
`b`
:
![](
img/d8011c52-5574-4521-a42d-e18893417c8d.png
)
...
...
@@ -136,7 +136,7 @@ softmax 函数主要用于处理分类问题,并且最好在输出层中使用
![](
img/38a1827e-ea6a-4f2d-8a42-0474cdd3ab8f.png
)
例如,
!
[](
img/932dfe28-76c9-4a99-bf95-b85e77b640ac.png
)
,其中
`x`
涉及四个类别。
例如,
`x ∈ {1, 2, 3, 4}`
,其中
`x`
涉及四个类别。
然后,softmax 函数将得出结果(四舍五入到小数点后三位):
...
...
@@ -172,7 +172,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
![](
img/c3952215-4eed-4655-855c-80bd5a590460.png
)
这防止了梯度在负侧变为零,并且由于
!
[](
img/f5c373db-725f-4f61-b28b-835eccc7443d.png
)
的值较低,权重训练持续但缓慢地进行。
这防止了梯度在负侧变为零,并且由于
`a`
的值较低,权重训练持续但缓慢地进行。
# 如何选择正确的激活函数
...
...
@@ -194,7 +194,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
对于任何神经网络的所有预测输出层而言,答案都是正确的,即预测输出应遵循概率分布。 正常来说,输出具有
`N`
个类别。 对于具有例如
`d`
维的输入数据,这将导致
`N`
个概率。 因此,此一个输入数据的
`N`
概率之和应为 1,并且这些概率中的每一个应在 0 到 1 之间(含 0 和 1)。
一方面,在大多数情况下,
`N`
个不同类别的 Sigmoid 函数之和可能不为 1。 因此,在二进制的情况下,使用 Sigmoid 函数来获得一个类别的概率,即
`p(y = 1 | x)`
,而对于另一个类别,则是概率,即
`p(y = 0 | x) = 1 - p(y = 1 | x)`
。 另一方面,softmax 函数的输出是满足概率分布属性的值。 在图中,
!
[](
img/b10ccd66-8bc6-433c-9367-1d501eb4c414.png
)
指的是 Sigmoid 函数:
一方面,在大多数情况下,
`N`
个不同类别的 Sigmoid 函数之和可能不为 1。 因此,在二进制的情况下,使用 Sigmoid 函数来获得一个类别的概率,即
`p(y = 1 | x)`
,而对于另一个类别,则是概率,即
`p(y = 0 | x) = 1 - p(y = 1 | x)`
。 另一方面,softmax 函数的输出是满足概率分布属性的值。 在图中,
`σ`
指的是 Sigmoid 函数:
![](
img/b2853099-2f91-4eee-a8aa-958bd42e566f.png
)
...
...
@@ -210,54 +210,63 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
# 符号
假设数据的格式为
!
[](
img/2a696620-78be-4764-81a7-796d17cc3e0f.png
)
,其中:
假设数据的格式为
`(x^(i), y^(i))`
,其中:
*
!
[](
img/b96e05e4-1ee4-4e3c-93da-14f7530246bb.png
)
和!
[](
img/bb96a6c5-1f64-4fff-9ad7-487e22a513d2.png
)
(类数为 2,因为它是二分类)
*
`x^(i) ∈ R`
和
`y^(i) ∈ {0, 1}`
(类数为 2,因为它是二分类)
*
!
[](
img/b6b4eb94-afc8-4e5d-9fff-19e8fa5f384b.png
)
是
`n`
维,即!
[](
img/95734265-d69f-4487-a73e-6ddc1d135ead.png
)
(请参见上图)
*
`x^(i)`
是
`n`
维,即
`x^(i) = {x[1]^(i), x[2]^(i), ..., x[n]^(i)}`
(请参见上图)
*
训练示例的数量是
`m`
。 因此,训练集如下所示:
* ![](img/21aef233-5c4f-4455-90f3-619163f54e10.png)
。
* ![](img/21aef233-5c4f-4455-90f3-619163f54e10.png)
* `m`为训练数据集的大小。
* 并且,由于
![](img/cb84ddb4-fcba-4909-aac3-b8f7185db475.png),其中每个![](img/36c81c30-320b-4f2a-9dd5-321faf371ec1.png)
。
* 并且,由于
`x = {x[1], x[2], ..., x[m]}`,其中每个`x^(i) = {x[1]^(i), x[2]^(i), ..., x[m]^(i)}`
。
* 因此,
![](img/c233847f-4846-4b12-902d-78a9d3800b45.png)是大小为`n * m`的矩阵,即特征数*训练示例数
。
* 因此,
`X`是大小为`n * m`的矩阵,即`特征数*训练示例数`
。
*
![](img/fc47da79-6303-41a3-9b0d-90f0fbb2b525.png)是`m`个输出的向量,其中每个![](img/5fa83ce4-add3-4c72-a5c9-273354011eb5.png)
。
*
`Y = [y^(1), y^(2), ..., y^(m)]`是`m`个输出的向量,其中每个`y^(i) ∈ {0, 1}`
。
* 参数:权重
![](img/8879d006-5caf-42d8-a4bb-733f18c32e90.png)和偏差![](img/9ff62907-da72-4bf9-b4a6-143a0e22b3f3.png),![](img/c72dc1a7-6a58-4da3-ba4f-1ad4d5628d09.png),其中![](img/8919a196-f23c-4f57-b388-ba944cf1ed5a.png)和![](img/39c10f16-d8db-413c-8312-51eef5e7b5ae.png)
是标量值。
* 参数:权重
`W ∈ R`和偏差`b ∈ R`,`W = {W[1], W[2], ..., W[n]}`,其中`W[i]`和`b`
是标量值。
# 目的
任何监督分类学习算法的目的都是以较高的概率预测正确的类别。 因此,对于每个给定的
!
[](
img/3aa2496b-c386-4a3c-8645-14160f7a3f90.png
)
,我们必须计算预测的输出,即概率!
[](
img/5dc96bf9-54b4-42a2-ac85-6823ac9d5939.png
)
。 因此,!
[](
img/c14f3b76-faa1-4f83-a7b0-6e58d5f36444.png
)
。
任何监督分类学习算法的目的都是以较高的概率预测正确的类别。 因此,对于每个给定的
`x^(i)`
,我们必须计算预测的输出,即概率
`y_hat^(i) = P(y^(i) = 1 | x^(i))`
。 因此,
`y_hat^(i) ∈ [0, 1]`
。
参考上图中的二进制逻辑回归:
*
预测的输出,即
!
[](
img/46e0323f-698a-4145-a085-d03c1221d008.png
)
。 在此,Sigmoid 函数将!
[](
img/182eba67-ac7b-4c57-93ef-6d771c9f9d95.png
)
的值缩小为 0 到 1。
*
预测的输出,即
`y_hat^(i) = σ(Wx^(i) + b)`
。 在此,Sigmoid 函数将
`Wx^(i) + b`
的值缩小为 0 到 1。
*
这意味着,当
!
[](
img/c35a1710-98bc-4851-9e88-30e5636f5c72.png
)
时,它是 Sigmoid 函数,即!
[](
img/288e6755-493a-4f96-bbb8-2e215db3d11b.png
)
。
*
这意味着,当
`Wx^(i) + b -> +∞`
时,Sigmoid 函数,即
`σ(Wx^(i) + b) -> 1`
。
*
当
!
[](
img/0e16d4e3-033d-4627-9719-4f5e26bd0d00.png
)
时,它的 Sigmoid 函数即!
[](
img/0cca4fa7-fa1b-4aae-be53-cf3cc9b032c7.png
)
。
*
当
`Wx^(i) + b -> -∞`
时,它的 Sigmoid 函数即
`σ(Wx^(i) + b) -> 0`
。
一旦我们计算出
!
[](
img/ca330c46-9a8d-4f2e-95b7-b69222f6ee85.png
)
,即预测的输出,就完成了前向传播任务。 现在,我们将使用成本函数计算误差值,并尝试通过梯度下降来更改参数
`W`
和
`b`
的值,从而反向传播以最小化误差值。
一旦我们计算出
`y_hat`
,即预测的输出,就完成了前向传播任务。 现在,我们将使用成本函数计算误差值,并尝试通过梯度下降来更改参数
`W`
和
`b`
的值,从而反向传播以最小化误差值。
# 成本函数
代价函数是一个度量,它确定关于实际训练输出和预测输出执行的机器学习算法的好坏。 如果您还记得线性回归,其中误差平方和用作损失函数,即
!
[](
img/c59586ad-0111-436d-858d-3e84b8158711.png
)
。 这在凸曲线上效果更好,但是在分类的情况下,曲线是非凸曲线; 结果,梯度下降效果不好,也不会趋于全局最优。 因此,我们使用交叉熵损失作为成本函数,它更适合分类任务。
代价函数是一个度量,它确定关于实际训练输出和预测输出执行的机器学习算法的好坏。 如果您还记得线性回归,其中误差平方和用作损失函数,即
`L(y^(i), y_hat^(i)) = 1/2 (y^(i) - y_hat^(i))²`
。 这在凸曲线上效果更好,但是在分类的情况下,曲线是非凸曲线; 结果,梯度下降效果不好,也不会趋于全局最优。 因此,我们使用交叉熵损失作为成本函数,它更适合分类任务。
交叉熵作为损失函数(对于!
[](
img/4af8f978-8a14-46ca-ac30-5e7965bc0e85.png
)
输入数据),即!
[](
img/9c987b8f-71cb-4bd1-98be-7b8f3e3eb331.png
)
,其中
`C`
表示不同的输出类别。
因此,成本函数=平均交叉熵损失(对于整个数据集),即!
[](
img/9e200f44-5fdf-4d20-8d0f-b9d08be64ffa.png
)
。
交叉熵作为损失函数(对于第
`i`
个输入数据),即:
在二元逻辑回归中,输出类别只有两个,即 0 和 1,因为类别值的总和始终为 1。因此(对于!
[](
img/84bca31b-1742-4adc-a9fb-b8561fcfca83.png
)
输入数据),如果一个类别为!
[](
img/ab14ce63-9f74-4505-82e0-8269503180c9.png
)
,则输出类别为 其他将是!
[](
img/6bd0dc61-602b-439c-b4e5-661485be1de0.png
)
。 类似地,由于类别!
[](
img/04eccd1a-7c7b-4639-8e66-24ae0826839e.png
)
的概率为!
[](
img/19d65ca4-2bc2-420d-9670-7c82ff14bf80.png
)
(预测),因此另一类别(即!
[](
img/f4416b83-45d9-40d7-a968-3aecd771add1.png
)
)的概率将为!
[](
img/e44e0ac4-6ac2-4b15-b3a9-5dd182cc4bd7.png
)
。
![](
img/9c987b8f-71cb-4bd1-98be-7b8f3e3eb331.png
)
因此,损失函数修改为!
[](
img/f38e0490-568b-4304-bd59-cfed5d179d13.png
)
,其中
:
其中
`C`
表示不同的输出类别。因此,成本函数=平均交叉熵损失(对于整个数据集),即
:
*
如果!
[](
img/57941af9-9a91-464e-9c7b-264ee8e7266d.png
)
,即!
[](
img/6ff98b14-d28f-49f7-bca6-bad89811071a.png
)
=-!
[](
img/6dc21fc6-f2c2-495d-9aa8-fa6c72c538c9.png
)
。 因此,为了使!
[](
img/f1ff7571-440f-4db3-b630-c8d6e32ea781.png
)
最小化,!
[](
img/acf849c4-02b1-47c9-8db6-9b1eff4bb0dc.png
)
应该较大,即接近 1。
![](
img/9e200f44-5fdf-4d20-8d0f-b9d08be64ffa.png
)
*
如果!
[](
img/d0db0ac6-9742-4fbc-905f-dddbc30cbf2e.png
)
,即!
[](
img/4da2a48a-9385-4c47-afe2-4989350a9732.png
)
=-!
[](
img/9c44051a-1dba-4450-856c-e8e5b3ef4385.png
)
。 因此,为了使!
[](
img/d827463c-5d29-4a30-aa46-211a7414eced.png
)
最小化,!
[](
img/3dfc404a-2201-48a1-87e6-c1caffdbd0ba.png
)
应该较小,即接近于 0。
在二元逻辑回归中,输出类别只有两个,即 0 和 1,因为类别值的总和始终为 1。因此(对于第
`i`
个输入数据),如果一个类别为
`y^(i)`
,则其他输出类别将是
`1 - y^(i)`
。 类似地,由于类别
`y^(i)`
的概率为
`y_hat^(i)`
(预测),因此另一类别(即
`1 - y^(i)`
)的概率将为
`1 - y_hat^(i)`
。
因此,损失函数修改为:
![](
img/f38e0490-568b-4304-bd59-cfed5d179d13.png
)
其中:
*
如果
`y^(i) = 1`
,即
`L(y^(i), y_hat^(i)) = -log y_hat^(i)`
。 因此,为了使
`L`
最小化,
`y_hat^(i)`
应该较大,即接近 1。
*
如果
`y^(i) = 0`
,即
`L(y^(i), y_hat^(i)) = -log(1 - y_hat^(i))`
。 因此,为了使
`L`
最小化,
`y_hat^(i)`
应该较小,即接近于 0。
损失函数适用于单个示例,而成本函数适用于整个训练批量。 因此,这种情况下的成本函数为:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录