输出单元

作者: 希望每天涨粉

  在本节中,们假设前馈网络提供了一组定义为 $h = f(x; θ)$ 的隐藏特征。输出层的作用是随后对这些特征进行一些额外的变换来完成整个网络必须完成的任务。

1 线性输出单元

  一种简单的输出单元是基于仿射变换的输出单元,仿射变换不具有非线性。这些单元往往被直接称为线性单元。
  给定特征 $h$,线性输出单元层产生一个向量 $\hat{\boldsymbol{y}}=\boldsymbol{W}^{\top} \boldsymbol{h}+\boldsymbol{b}$。

  特点1:线性输出层经常被用来产生条件高斯分布的均值

    $p(\boldsymbol{y} \mid \boldsymbol{x})=\mathcal{N}(\boldsymbol{y} ; \hat{\boldsymbol{y}}, \boldsymbol{I})$

  问:什么叫 “被用来产生条件高斯分布的均值”?
  答:这句话看起来有点拗口,是这么理解的。
  如果向 unit 输入 $x$,得到输出 $\hat{y} $。那么认为 $p(y\|x) $ 符合均值为 $\hat{y} $ 标准差为I的高斯分布。

  感知器有一个问题,当面对的数据集不是线性可分的时候,可能无法收敛,这意味着们永远也无法完成一个感知器的训练。为解决这个问题,使用一个可导的线性函数来替代感知器的阶跃函数,这种感知器就叫做线性单元。线性单元在面对线性不可分的数据集时,会收敛到一个最佳的近似上。

  线性单元和感知器的区别就是在激活函数

  特点2:适合连续值预测(回归)问题

  替换了激活函数之后,线性单元将返回一个实数值而不是 0,1 分类。因此线性单元用来解决回归问题而不是分类问题。

  特点3:基于高斯分布,最大化似然(最小化负对数似然)等价于最小化均方误差,因此线性输出单元可采用均方误差损失函数

    $L(y, \hat{y})=\frac{1}{N} \sum \limits _{n=1}^{N}\left\\|\hat{y}^{(n)}-y^{(n)}\right\\|^{2}$

  其中 $y^$ 为真实值, $\hat{y}^$ 为预测值, $N$ 为样本数。
  参考花书5.5.1

2 Sigmoid单元

  特点1:Sigmoid输出单元常用于输出Bernoulli分布。

  Sigmoid 单元

    $\hat{y}=\sigma\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{h}+b\right)=\frac{1}{1+\exp \left(-\boldsymbol{w}^{\mathrm{T}} \boldsymbol{h}-b\right)}$

  Bernoulli分布:单个二值随机变量的分布

    $$\begin{array}{l} P(X=1)=\phi \\ P(X=0)=1-\phi \\ P(X=a)=\phi^{a}(a-\phi)^{(1-a)} \\ E[x]=\phi \\\operatorname{Var}(x)=\phi(1-\phi) \end{array}$$

  特点2:适合二分类问题。

  许多任务需要预测二值型变量 $y$ 的值。具有两个类的分类问题可以归结为这种形式。
  此时最大似然的方法是定义 $y$ 在 $x$ 条件下的 Bernoulli 分布。

  问:什么是 " $y$ 在 $x$ 条件下的 Bernoulli分布”?
  答: \begin{array}{r} P(y \mid x) \sim \phi(y \mid x ; p) \\ P(y=1 \mid x)=p \\ P(y=0 \mid x)=1-p \end{array}

  Bernoulli 分布仅需单个参数来定义。神经网络只需要预测 P (y = 1 \| x) 即可。 为了使这个数是有效的概率,它必须处在区间 [0, 1] 中。
  为满足该约束条件需要一些细致的设计工作。假设们打算使用线性单元,并 且通过阈值来限制它成为一个有效的概率:

    $P(y=1 \mid \boldsymbol{x})=\max \left\{0, \min \left\{1, \boldsymbol{w}^{\top} \boldsymbol{h}+b\right\}\right\}$

  这的确定义了一个有效的条件概率分布,但们无法使用梯度下降来高效地训练它。 当 $\boldsymbol{w}^{\top} \boldsymbol{h}+b$ 处于单位区间外时,模型的输出对其参数的梯度都将为 0。梯度为 0 通 常是有问题的,因为学习算法对于如何改善相应的参数不再具有指导意义。

  相反,最好是使用一种新的方法来保证无论何时模型给出了错误的答案时,总能有一个较大的梯度。这种方法是基于使用 sigmoid 输出单元结合最大似然来实现的。
  们可以认为 $ \operatorname{sigmoid} $ 输出单元具有两个部分。首先,它使用一个线性层来计 算 $z=\boldsymbol{w}^{\top} \boldsymbol{h}+b_{\circ} $ 接着,它使用 sigmoid 激活函数将 $z$ 转化成概率。
  们暂时忽略对于 $\boldsymbol{x}$ 的依赖性,只讨论如何用 $z$ 的值来定义 $y $ 的概率分布。 sigmoid 可以通过构造一个非归一化(和不为 1 ) 的概率分布 $\tilde{P}(y)$ 来得到。

  问:什么是"非归一化(和不为1)的概率分布”?

  答:$0 \leq \tilde(y) \leq 1, 但不保证 \tilde(y=0)+\tilde(y=1)=1$

  们可以随后除以一个合适的常数来得到有效的概率分布。如果们假定非归一化的对数概率对 $y$ 和 $z $ 是线性的,可以对它取指数来得到非归一化的概率。

  们然后对它归 一化,可以发现这服从 Bernoulli 分布,该分布受 $z$ 的 sigmoid 变换控制:

    $\begin{aligned} \log \tilde{P}(y) \&=y z \\ \tilde{P}(y) \&=\exp (y z) \\ P(y) \&=\frac{\exp (y z)}{\sum_{y^{\prime}=0}^{1} \exp \left(y^{\prime} z\right)} \\ P(y) \&=\sigma((2 y-1) z) \end{aligned}$

  $\begin{array}{l} \tilde{P}(y) \text { 是非归一化的概率分布。 }\\ P(y) \text { 是归一化后的Bernoulli分布。 }\end{array}$

  基于指数和归一化的概率分布在统计建模的文献中很常见。 用于定义这种二值型变量分布的变量zz被称为分对数。

  特点3:Sigmoid输出单元可采用交叉熵损失函数
    $L(y, \hat{y})=-\frac{1}{N} \sum \limits _{n=1}^{N}\left(y^{(n)} \log \hat{y}^{(n)}+\left(1-y^{(n)}\right) \log \left(1-\hat{y}^{(n)}\right)\right)$
  其中 $y^$ 为真实标签, $\hat{y}^$ 为预测标签, $ N$ 为样本数。

3 Softmax单元

  任何时候当们想要表示一个具有 n 个可能取值的离散型随机变量的分布时, 们都可以使用 softmax 函数。它可以看作是 sigmoid 函数的扩展,其中 sigmoid 函 数用来表示二值型变量的分布。
  softmax 函数最常用作分类器的输出,来表示 n 个不同类上的概率分布。比较 少见的是,softmax 函数可以在模型内部使用,例如如果们想要在某个内部变量的 n 个不同选项中进行选择。

  特点1:Softmax输出单元常用于输出Multinoulli分布

  特点2:适合多分类问题

  特点3:Softmax输出单元可采用交叉熵损失函数

原文创作:希望每天涨粉

原文链接:https://www.cnblogs.com/BlairGrowing/p/15087501.html

更多推荐

更多
  • Spring Boot单元测试指南-使用Spring Testing工具 1: 基本用法 - 使用Spring Testing工具,例子1,例子2,例子3,参考文档,既然我们现在开发的是一个Spring项目,那么肯定会用到Spring ...
  • Spring Boot单元测试指南-使用Spring Boot Testing工具 1: 基本用法 - 使用Spring Boot Testing工具,例子1:直接加载Bean,例子2:使用内嵌@Configuration加载Bean,例子3:使用外部@Configuration加载Bean,例子4:使用Spring ...
  • Spring Boot单元测试指南-认识TestNG 1: 基本用法 - 认识TestNG,参考文档,[FooServiceImpl],里面有两个方法,一个是给计数器+1,一个是获取当前计数器的值:@Component,注意看代码里的assertEquals(...)...
  • Spring Boot单元测试指南-汇总 Spring、Spring Boot和TestNG测试指南,章节列表,来源(书栈小编注),多数例子都是基于JUnit的。本人比较喜欢用TestNG做单元、集成测试,所以开启了本项目收集了在Spring、Spring Boot项目中利用T
  • Spring Boot单元测试指南-章节2: Annotations $blog.teaser
  • Spring Boot单元测试指南-章节8: 共享测试配置 Chapter 8: 共享测试配置,@Configuration,@Configuration on interface,Annotation,参考文档,在测试代码之间尽量做到,能够有效利用Spring TestContext ...
  • Spring Boot单元测试指南-附录I Spring Mock Objects 附录I Spring Mock ...
  • Spring Boot单元测试指南-附录II Spring Test Utils 附录II Spring Test Utils,Spring Boot提供的Unit Test ...
  • Spring Boot单元测试指南-章节4: 测试关系型数据库 测试关系型数据库,被测试类,例子1:不使用Spring Testing提供的工具,例子2:使用Spring Testing提供的工具,例子3:使用Spring Boot,参考文档,同时Spring ...
  • Spring Boot单元测试指南-章节5: 测试Spring MVC 测试Spring MVC,例子1:Spring,例子2:Spring + Mock,例子3:Spring Boot,例子4:Spring Boot + Mock,参考文档,测试Spring ...
  • 近期文章

    更多
    文章目录

      推荐作者

      更多