为什么传统 CNN 适用于 CV 任务,RNN 适用于 NLP 任务

从模型特点上来说:

  • 对于 CNN 每一个卷积核都可以看作是一个滤波器,卷积运算的本质是互相关运算,每个卷积核仅对于具有特定特征具有较大的激活值,而且 CNN 有参数共享和局部连接的特点,能够提取图像上不同位置的同一个特征,即 CNN 具有平移不变性

  • RNN 的特点在于其是一个时序模型,在对每个神经元不仅可以接收当前时刻的输入信息,还将接收上一个时刻的该神经元的输出信息,具有短期记忆能力。这在用于 NLP 任务时相当于隐含着建立了一个语言模型,这对词序具有很强的区分能力。而 CNN 和 DNN 均类似词袋模型,丢失的词序特征。

从数据特征上来说

  • 图像矩阵中的每个元素为图像中的像素值,每个像素与其周围元素都是高度相关的
  • 文本矩阵中的数据为词的 embedding 向量,每个元素在词向量内与词向量间的相邻元素的关联性是不同的,因此 CNN 用于 NLP 任务常使用的是一维卷积

RNN 原理

\(\hat y\) 部分的激活函数可以根据下游任务设置

LSTM 原理

  • 三个门:[output_dim + input_dim, 1]
  • 更新门位置的全连接层:[output_dim + input_dim, output_dim]

GRU 原理

  • 两个门:[output_dim + input_dim, 1]
  • 全连接层:[output_dim + input_dim, output_dim]

RNN BPTT


- 假设$t$时刻的损失函数为$L_t$,以 $W_{aa}$,$W_{ax}$,$W_{ya}$ 为例
$$ \begin{aligned}
&\frac{\delta L_t}{\delta W_{ya}} = \frac{\delta L_3}{\delta \hat{y}_t}\frac{\delta \hat{y}_t}{\delta W_{ya}} \\
&\frac{\delta L_t}{\delta W_{aa}} = \frac{\delta L_t}{\delta \hat{y}_t}\frac{\delta \hat{y}_t}{\delta a_{t}}(\frac{\delta a_{t}}{\delta W_{aa}} + \frac{\delta a_{t}}{\delta a_{t-1}}\frac{\delta a_{t-1}}{\delta W_{aa}} + ...)\\
&\frac{\delta L_t}{\delta W_{ax}} = \frac{\delta L_3}{\delta \hat{y}_t}\frac{\delta \hat{y}_t}{\delta a_{t}}(\frac{\delta a_{t}}{\delta W_{ax}} + \frac{\delta a_{t}}{\delta a_{t-1}}\frac{\delta a_{t-1}}{\delta W_{ax}} + ...)
\end{aligned}$$

  • 对于任意时刻t对 \(W_x\),\(W_s\) 求偏导的公式为:

\[\begin{aligned}
&\frac{\delta L_t}{\delta W_{aa}} = \sum_{k=0}^{t}\frac{\delta L_t}{\delta y_t}\frac{\delta y_t}{\delta a_t}( \prod_{j=k+1}^t\frac{\delta a_j}{\delta a_{j-1}} ) \frac{\delta a_k}{\delta W_{aa}}\\
&\frac{\delta L_t}{\delta W_{aa}} = \sum_{k=0}^{t}\frac{\delta L_t}{\delta y_t}\frac{\delta y_t}{\delta a_t}( \prod_{j=k+1}^t\frac{\delta a_j}{\delta a_{j-1}} ) \frac{\delta a_k}{\delta W_{aa}}
\end{aligned}\]

  • 其中\(\frac{\delta a_j}{\delta a_{j-1}}\)和\(\frac{\delta a_k}{\delta W_{aa}}\)还存在\(tanh'\)的导数项,而\(tanh'\)的值域为\((0, 1)\)。随着时间步的增长,累乘项会趋于 0,出现梯度消失的问题

LSTM 如何解决 RNN 的梯度消失问题

  • RNN 的激活函数为 \(tanh\),而 \(tanh\) 的导数取值范围为 \([0, 1]\),在时间上的反向传播会存在时间上的梯度累乘项,时间步长了会导致梯度累乘而消失
  • LSTM 通过引入全局信息流,在时间维度上引入残差结构,残差结构的引入就使得链式求导过程中引入了一个求和项,从反向传播的求导来看,最多只有两个激活函数的导数累乘,因此远距离的梯度通常都可以正常传播,减弱了梯度消失问题

怎样增加 LSTM 的长距离特征提取能力

  • Dilated RNN:Dilated CNN 为空洞卷积,Dilated RNN 则是在时间维度上空洞,浅层部分的为传统 RNN,每个时间步都循环,深层的循环周期更长,增大时间维度上的“感受野”

【面试QA-基本模型】LSTM的更多相关文章

  1. 不止面试02-JVM内存模型面试题详解

    第一部分:面试题 本篇文章我们将尝试回答以下问题: 描述一下jvm的内存结构 描述一下jvm的内存模型 谈一下你对常量池的理解 什么情况下会发生栈内存溢出?和内存溢出有什么不同? String str ...

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

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

  3. 【NLP面试QA】激活函数与损失函数

    目录 Sigmoid 函数的优缺点是什么 ReLU的优缺点 什么是交叉熵 为什么分类问题的损失函数为交叉熵而不能是 MSE? 多分类问题中,使用 sigmoid 和 softmax 作为最后一层激活函 ...

  4. 面试 02-CSS盒模型及BFC

    02-CSS盒模型及BFC #题目:谈一谈你对CSS盒模型的认识 专业的面试,一定会问 CSS 盒模型.对于这个题目,我们要回答一下几个方面: (1)基本概念:content.padding.marg ...

  5. Java面试- JVM 内存模型讲解

    经常有人会有这么一个疑惑,难道 Java 开发就一定要懂得 JVM 的原理吗?我不懂 JVM ,但我照样可以开发.确实,但如果懂得了 JVM ,可以让你在技术的这条路上走的更远一些. JVM 的重要性 ...

  6. 【面试QA】Attention

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

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

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

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

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

  9. java面试-Java内存模型(JMM)

    p.p1 { margin: 0; font: 15px Helvetica } 一.并发编程两个关键问题 线程之间如何通信.同步.java并发采用的是共享内存模型 二.JMM内存模型的抽象结构 描述 ...

随机推荐

  1. Design Patterns 25

    尽管将一个系统分割成许多对象通常可以增加其可服用性, 但是对象间相互连接的激增又会降低其可复用性了. 大量的连接使得一个对象不可能在没有改变其他对象的支持下工作, 系统表现为一个不可分割的整体, 所以 ...

  2. 万维网(WWW)

    万维网(WWW) 一.万维网概述 万维网 WWW (World Wide Web)是一个大规模的.联机式的信息储藏所. 万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需 ...

  3. python爬虫之数据加密解密

    一.什么叫数据加密 数据加密是指利用加密算法和秘钥将明文转变为密文的过程. 二.数据加密的方式 1.单向加密 指只能加密数据而不能解密数据,这种加密方式主要是为了保证数据的完整性,常见的加密算法有MD ...

  4. Typora+PicGo+Gitee笔记方案

    前言:需要学习的知识太多,从一开始就在寻找一款能让我完全满意的编辑器,然而一直都没有令我满意的.在前两天Typora新版本更新后,总算是拥有了一套我认为很完美的笔记方案:使用Typora编写markd ...

  5. 禁止用户使用 sudo su 命令进入root 模式

    禁止普通用户通过sudo su命令进入root模式的方法(在root模式下操作): 1. 修改 /etc/sudoers 的权限, 用来写入文件 # chmod 777 /etc/sudoers 2. ...

  6. ASP.NET CORE 启动过程及源码解读

    在这个特殊的春节,大家想必都在家出不了们,远看已经到了回城里上班的日子,但是因为一只蝙蝠的原因导致我们无法回到工作岗位,大家可能有的在家远程办公,有些在家躺着看书,有的是在家打游戏:在这个特殊无聊的日 ...

  7. iOS下的 Fixed BUG

    input 光标位置乱窜 固定式浮层内的输入框光标会发生偏移.即 fixed 定位的容器中输入框光标的位置显示不正确,没有正常地显示在输入框中,而是偏移到了输入框外面 可触发条件 页面body出现滚动 ...

  8. 前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/rZeOQp 可交互视频 此视频是可 ...

  9. 适配iphoneX

    tips iphone6设备宽高为375×667,屏幕分辨率为750×1334,故其设备像素比(dpr)为2.iphoneX的设备宽高375*812,屏幕分辨率为1125x2436,故dpr=3 适配 ...

  10. 《即时消息技术剖析与实战》学习笔记11——IM系统如何保证服务高可用:流量控制和熔断机制

    IM 系统的不可用主要有以下两个原因: 一是无法预测突发流量,即使进行了服务拆分.自动扩容,但流量增长过快时,服务已经不可用了: 二是业务中依赖的这些接口.资源不可用或变慢时,比如发消息可能需要依赖& ...