提交 17f763c6 编写于 作者: W wizardforcel

2021-01-23 16:13:06

上级 50d9a385
......@@ -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.
先完成此消息的编辑!
想要评论请 注册