Sigmoid 函数的优缺点是什么

优点:

  • 输出范围优先,可以将任意范围的输出映射到 (0, 1) 范围内,在输出层可以用于表示二分类的输出概率
  • 易于求导

缺点:

  • Sigmoid 函数容易饱和,且梯度范围为 (0, 0.25] ,在反向传播中容易导致梯度消失问题。

ReLU的优缺点

优点

  • ReLU的非饱和性可以提供相对宽的激活边界。
  • 梯度只有 0, 1 两个变量,有效地解决梯度消失的问题。
  • ReLU的单侧抑制提供了网络的稀疏表达能力。

缺点

  • 训练过程中会导致神经元死亡的问题。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个ReLU神经元在所有的训练数据上都不能被激活。那么,这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被更新。这种现象称为死亡 ReLU 问题 (Dying ReLU Problem)

什么是交叉熵

  • 交叉熵刻画的是两个概率分布之间的距离,描述了真实分布和预测分布之间的差异性
  • 交叉熵的公式:\(H(p, q) = -\sum_x p(x) log\ q(x)\),其中,x为一个样本中每一个类别的概率

为什么分类问题的损失函数为交叉熵而不能是 MSE?

从建模上来看:

  • MSE 是假设数据符合高斯分布时,概率分布的负条件对数似然。表示两个向量之间的欧几里得距离
  • CE是假设模型分布为多项式分布时,概率分布的负条件对数似然。表示真实分布和预测分布之间的差异性

从梯度上来看:

  • MSE 的梯度 \(\frac{\partial L}{\partial \hat y_i} = 2(\hat y_i - y_i)\)
  • CE 的梯度 \(\frac{\partial L}{\partial \hat y_i} = \frac{y_i}{\hat y_i}\)

MSE 在优化后期侧残差会趋于零,非常小,导致优化速度减慢。而 CE 在优化后期正确类别的分量是趋于 1 的,而非正确类别的分量恒为 0,优化速度更快。

直观上来看:

  • MSE 无差别得关注全部类别上预测概率和真实概率的差。
  • CE 关注的是正确类别的预测概率。

多分类问题中,使用 sigmoid 和 softmax 作为最后一层激活函数的区别

  • sigmoid 函数的每次输出是相互独立的,不能体现样本之间的相关性。
  • 而softmax 的归一化意味着一个输出增大必然伴随着其他输出的减小,这更符合概率规则,体现了样本互斥的关系。
  • 如果是一个样本隶属于多个样本,且各个样本是相互独立的分类问题,可以采用 sigmoid 作为每个输出的激活函数;而对于类别互斥的分类问题则应该采用 softmax 作为最后的激活函数。

为什么 LSTM 中的激活函数为 tanh 和 sigmoid 而不用 Relu

在 LSTM 中,sigmoid 作用为门函数的作用,取值范围为 (0, 1),是无法替代的

使用 Relu 的目的是为了解决梯度消失问题,而在 LSTM 中,由于时序上的残差机制,梯度消失问题已经大大减弱了。

另一方面,tanh 能够将模型输出映射在 (-1, 1) 范围内,更易于优化

softmax 的反向传播

对于多分类问题,输出层激活函数为softmax的单层神经网络分类器只考虑权重参数 \(W\),采用SGD的优化方法,输入样本为 \(x\),标注为 \(y\),样本特征维度为 \(m\),类别个数为 \(n\),其前向传播和反向传播公式:

  • 前向传播:

\[\begin{aligned}
&z = Wx \\
&p_i = softmax(z) = \frac{exp(z_i)}{\sum_{j=1}^{n} exp(z_j)} \\
&L(\hat{y}, y) = -\sum_{i=1}^ny_i\ log\ p_i
\end{aligned}\]

  • 反向传播:

\[\frac{\partial L}{\partial p_i} = -\sum_{i=1}^n\frac{y_i}{p_i}
\]

\[\begin{cases}
\frac{\partial p_i}{\partial z_j} = \frac{exp(z_j)\sum_{k=1}^{n} exp(z_k) - exp(z_j)^2}{(\sum_{k=1}^{n} exp(z_k))^2} = p_j(1-p_j) & , i = j\\
\frac{\partial p_i}{\partial z_j} = -\frac{exp(z_j)exp(z_i)}{(\sum_{k=1}^{n} exp(z_k))^2} = -p_ip_j & , i \ne j
\end{cases}
\]

\[\begin{aligned}
&\frac{\partial L}{\partial z_i} = \frac{\partial p_i}{\partial z_i} \frac{\partial p_i}{\partial z_i}\\
&= - \frac{y_i}{p_i}p_i(1-p_i) - \sum_{j\ne i}\frac{y_j}{p_j}(-p_ip_j) \\
&= -y_i + p_iy_i + p_i\sum_{j\ne i}y_j \\
&= -y_i + p_i \sum_{j=1}^ny_j \\
&= p_i - y_i
\end{aligned}\]

表示为矩阵为:\(\frac{\partial L}{\partial z} = p - y\)

【NLP面试QA】激活函数与损失函数的更多相关文章

  1. 【NLP面试QA】基本策略

    目录 防止过拟合的方法 什么是梯度消失和梯度爆炸?如何解决? 在深度学习中,网络层数增多会伴随哪些问题,怎么解决? 关于模型参数 模型参数初始化的方法 模型参数初始化为 0.过大.过小会怎样? 为什么 ...

  2. 【NLP面试QA】预训练模型

    目录 自回归语言模型与自编码语言 Bert Bert 中的预训练任务 Masked Language Model Next Sentence Prediction Bert 的 Embedding B ...

  3. AI-逻辑回归函数、激活函数、损失函数

    最近开始学习人工智能,先从基本的概念学起 逻辑回归函数(预测函数):z = dot(w,x) + b 解释:假设有三个特征,即x可以表示为(x1,x2,x3),w表示权重,对应每个特征的重要程度,b表 ...

  4. tensorflow中常用激活函数和损失函数

    激活函数 各激活函数曲线对比 常用激活函数: tf.sigmoid() tf.tanh() tf.nn.relu() tf.nn.softplus() tf.nn.softmax() tf.nn.dr ...

  5. 如何面试QA(面试官角度)

    面试是一对一 或者多对一的沟通,是和候选人 互相交换信息.平等的. 面试的目标是选择和雇佣最适合的人选.是为了完成组织目标.协助人力判断候选人是否合适空缺职位. 面试类型: (1)预判面试(查看简历后 ...

  6. 【面试QA】Attention

    目录 Attention机制的原理 Attention机制的类别 双向注意力 Self-Attention 与 Soft-Attention 的区别 Transformer Multi-Head At ...

  7. 一份从入门到精通NLP的完整指南 | NLPer

    该小博主介绍 本人:笔名zenRRan,方向自然语言处理,方法主要是深度学习. 未来的目标:人工智能之自然语言处理博士. 写公众号目的:将知识变成开源,让每个渴求知识而难以入门人工智能的小白以及想进阶 ...

  8. 干货 | 请收下这份2018学习清单:150个最好的机器学习,NLP和Python教程

    机器学习的发展可以追溯到1959年,有着丰富的历史.这个领域也正在以前所未有的速度进化.在之前的一篇文章中,我们讨论过为什么通用人工智能领域即将要爆发.有兴趣入坑ML的小伙伴不要拖延了,时不我待! 在 ...

  9. GitHub万星的ML算法面试大全

    项目地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese 如下所示为整个项目的结构,其中从机器学习到数学主要提供的是笔记与面试知 ...

随机推荐

  1. Asp.Net Core 中IdentityServer4 授权中心之应用实战

    一.前言 查阅了大多数相关资料,查阅到的IdentityServer4 的相关文章大多是比较简单并且多是翻译官网的文档编写的,我这里在 Asp.Net Core 中IdentityServer4 的应 ...

  2. HDFS DataNode详解

    1. datanode介绍 1.1 datanode datanode是负责当前节点上的数据的管理,具体目录内容是在初始阶段自动创建的,保存的文件夹位置由配置选项{dfs.data.dir}决定 1. ...

  3. CyclicBarrier源码探究 (JDK 1.8)

    CyclicBarrier也叫回环栅栏,能够实现让一组线程运行到栅栏处并阻塞,等到所有线程都到达栅栏时再一起执行的功能."回环"意味着CyclicBarrier可以多次重复使用,相 ...

  4. 计算机网络原理实验_使用网络协议分析仪Wireshark

    一.实验名称  使用网络协议分析仪Wireshark 二.实验目的: 1. 掌握安装和配置网络协议分析仪Wireshark的方法: 2. 熟悉使用Wireshark工具分析网络协议的基本方法,加深对协 ...

  5. MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合

    2.1 案例背景 在工程应用中经常会遇到一些复杂的非线性系统,这些系统状态方程复杂,难以用数学方法准确建模.在这种情况下,可以建立BP神经网络表达这些非线性系统.该方法把未知系统看成是一个黑箱,首先用 ...

  6. mongo复制数据库和表

    1.使用工具Studio 3T for MongoDB 选择一个数据库中的Collections集合,然后按住 Ctrl+C 复制快捷键会弹出如下帮助框. 点击 Ctrl+V 粘贴快捷键,重命名一下复 ...

  7. 《JavaScript 模式》读书笔记(2)— 基本技巧2

    前一篇,简单介绍了一些js代码的基本技巧.那么这篇文章,我们继续后续的内容. 一.for循环 for循环经常用在遍历数组或者类数组对象,如引数(arguments)和HTML容器(HTMLCollti ...

  8. BigInteger实现除法取余

    BigInteger实现除法取余 BigInteger是什么? Java中,整形的最大范围是64位的long型整数.但是如果我们使用的整数超过了64位呢?这时候就用到了BigInteger.BigIn ...

  9. Python程序设计试验报告一: 熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告                                                                  班级   物流192   ...

  10. angular6 增加webpack配置 亲测可用

    核心 Angular Cli 6 禁用了webpack的自定义配置,官方似乎并未提供自定义配置webpack的方法. 在此之前,可以使用ng eject把默认的webpack提取到代码中,进行自定义. ...