《深度学习》花书 - 第六章 深度前馈网络

6 深度前馈网络

6.1 实例:学习XOR

6.2 基于梯度的学习

6.2.2 输出单元

输出单元即网络最终层得到的结果。输出单元的选择影响了代价函数的选择。
原则上用作输出单元的神经网络单元也可以用作隐藏层的单元。
在本节中,我们假设前馈网络提供了一组定义为 h = f ( x ; θ ) h = f(x; θ) h=f(x;θ) 的隐藏特征。输出层的作用是随后对这些特征进行一些额外的变换来完成整个网络必须完成的任务。

6.2.2.1 用于高斯输出分布的线性单元

给定特征 h \boldsymbol{h} h,线性输出单元层产生向量
y ^ = W ⊤ h + b \hat{\boldsymbol{y}}=\boldsymbol{W}^{\top}\boldsymbol{h}+\boldsymbol{b} y^=Wh+b
线性输出层经常被用来产生条件高斯分布的均值:
p ( y ∣ x ) = N ( y ; y ^ , I ) p(\boldsymbol{y} | \boldsymbol{x})=\mathcal{N}(\boldsymbol{y} ; \hat{\boldsymbol{y}}, \boldsymbol{I}) p(yx)=N(y;y^,I)
最大化条件高斯分布均值的对数似然等价于最小化均方误差。
因为线性模型不会饱和,所以它们易于采用基于梯度的优化算法,甚至可以使用其他多种优化算法。

6.2.2.2 用于 Bernoulli 输出分布的 sigmoid 单元

许多任务需要预测二值型变量,比如两个类别的分类问题。
此时最大似然的定义是 y y y x \boldsymbol{x} x下的Bernoulli分布
神经网络只需要预测 P ( y = 1 ∣ x ) P(y = 1 | x) P(y=1x) 即可。
为了使这个数是有效的概率,它必须处在区间 [0, 1] 中。
假设采用:
P ( y = 1 ∣ x ) = max ⁡ { 0 , min ⁡ { 1 , w ⊤ h + b } } P(y=1 | x)=\max \left\{0, \min \left\{1, \boldsymbol{w}^{\top} \boldsymbol{h}+b\right\}\right\} P(y=1x)=max{ 0,min{ 1,wh+b}}
它是一个有效的条件概率分布,但我们无法使用梯度下降来高效地训练它。当 w ⊤ h + b \boldsymbol{w}^{\top} \boldsymbol{h}+b wh+b属于单位区间外时,梯度为0。我们想要的是无论模型给出了什么错误答案,总能有一个较大的梯度。

s i g m o i d sigmoid sigmoid输出单元:
y ^ = σ ( w ⊤ h + b ) \hat{y}=\sigma( \boldsymbol{w}^{\top}\boldsymbol{h}+b) y^=σ(wh+b)
其中 σ \sigma σ
σ ( x ) = 1 1 + exp ⁡ ( − x ) \sigma(x)=\frac{1}{1+\exp (-x)} σ(x)=1+exp(x)1
因此这个输出单元由两部分组成:一个线性层计算 z = w ⊤ h + b z=\boldsymbol{w}^{\top} \boldsymbol{h}+b z=wh+b,一个激活函数层将 z z z转化成概率。

z z z的值定义 y y y的分布
假定非归一化的对数概率对y和z是线性的
log ⁡ P ~ ( y ) = y z \log\tilde{P}(y) =y z logP~(y)=yz
对它们取对数得到非归一化的概率
P ~ ( y ) = exp ⁡ ( y z ) \tilde{P}(y) =\exp (y z) P~(y)=exp(yz)
对它归一化,除以一个合适的常数
P ( y ) = exp ⁡ ( y z ) ∑ y ′ = 0 1 exp ⁡ ( y ′ z ) P(y) =\frac{\exp (y z)}{\sum_{y^{\prime}=0}^{1} \exp \left(y^{\prime} z\right)} P(y)=y=01exp(yz)exp(yz)
发现这服从 Bernoulli 分布,该分布受 z 的 sigmoid 变换控制
P ( y ) = σ ( ( 2 y − 1 ) z ) P(y) =\sigma((2 y-1) z) P(y)=σ((2y1)z)

损失函数
这种在对数空间里预测概率的方法可以很自然地使用最大似然学习。因为用于最大似然的代价函数是 − l o g P ( y ∣ x ) − log P (y | x) logP(yx),代价函数中的 log 抵消了 sigmoid 中的 exp。如果没有这个效果, sigmoid 的饱和性会阻止基于梯度的学习做出好的改进。我们使用最大似然来学习一个由 sigmoid 参数化的 Bernoulli 分布,它的损失函数为:
J ( θ ) = − log ⁡ P ( y ∣ x ) = − log ⁡ σ ( ( 2 y − 1 ) z ) = ζ ( ( 1 − 2 y ) z ) \begin{aligned} J(\boldsymbol{\theta}) &=-\log P(y | \boldsymbol{x}) \\ &=-\log \sigma((2 y-1) z) \\ &=\zeta((1-2 y) z) \end{aligned} J(θ)=logP(yx)=logσ((2y1)z)=ζ((12y)z)
ζ ( x ) = log ⁡ ( 1 + exp ⁡ ( x ) ) \zeta(x)=\log(1+\exp(x)) ζ(x)=log(1+exp(x))softplus函数

我们可以看到它仅仅在 ( 1 − 2 y ) z (1 − 2y)z (12y)z 取绝对值非常大的负值时才会饱和。因此饱和只会出现在模型已经得到正确答案时——当 y = 1 y = 1 y=1 z z z 取非常大的正值时,或者 y = 0 y = 0 y=0 z z z 取非常小的负值时。当 z z z 的符号错误时, 变量 ( 1 − 2 y ) z (1 − 2y)z (12y)z可以简化为 ∣ z ∣ |z| z。当 ∣ z ∣ |z| z 变得很大并且 z z z 的符号错误时, softplus 函数渐近地趋向于它的变量 ∣ z ∣ |z| z。对 z z z 求导则渐近地趋向于 s i g n ( z ) sign(z) sign(z)。所以基于梯度的学习可以很快修正错误的 z z z

其他损失
当我们使用其他的损失函数,例如均方误差之类的,损失函数会在 σ ( z ) σ(z) σ(z) 饱和时饱和。 sigmoid 激活函数在 z z z 取非常小的负值时会饱和到 0,当 z z z 取非常大的正值时会饱和到 1。这种情况一旦发生,梯度会变得非常小以至于不能用来学习,无论此时模型给出的是正确还是错误的答案。

6.2.2.3 用于 Multinoulli 输出分布的 softmax 单元

任何时候当我们想要表示一个具有 n 个可能取值的离散型随机变量的分布时,我们都可以使用 softmax 函数。它可以看作是 sigmoid 函数的扩展。softmax 函数最常用作分类器的输出,来表示 n 个不同类上的概率分布。

为了推广到具有 n 个值的离散型变量的情况,我们现在需要创造一个向量 y ^ \hat{y} y^,它的每个元素是 y i ^ = P ( y = i ∣ x ) \hat{y_i} = P(y = i | x) yi^=P(y=ix)。我们不仅要求每个 y i ^ \hat{y_i} yi^

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值