【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图]

【补充说明】深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻译等)、语音识别、序列生成、序列分析等众多领域!

【再说一句】本文主要介绍深度学习中序列模型的演变路径,和往常一样,不会详细介绍各算法的具体实现,望理解!

一、循环神经网络RNN

1. RNN标准结构

传统神经网络的前一个输入和后一个输入是完全没有关系的,不能处理序列信息(即前一个输入和后一个输入是有关系的)。

循环神经网络RNN解决了以上问题,整体结构如图所示:

2. RNN系列结构

多对一:例如情感分析,需要多个时间步长的输入,但是只需要单个输出(即实现分类)。整体结构如图所示:

一对多:例如音乐生成,只需要单个输入(即输入类别),但是需要输出整个序列。整体结构如图所示:

多对多:例如实时分类,输入序列与输出序列的长度是一样的。整体结构如图所示:

多对多:例如机器翻译,输入序列与输出序列的长度是不一样的。整体结构如图所示:

二、长短期记忆网络LSTM

LSTM是RNN的一种变体,RNN由于梯度消失只有短期记忆,而LSTM网络通过精妙的门控制,一定程度上缓解了梯度消失的问题。

在标准RNN中,神经网络模块只有一个非常简单的结构,例如一个tanh层。整体结构如图所示:

而LSTM得神经网络模块具有不同的结构,LSTM包含遗忘门、输入门和输出门,增加了非线性的相互作用。整体结构如图所示:

三、GRU

GRU是LSTM的一种变体,也是为了解决梯度消失(即长期记忆问题)而提出来的。相较于LSTM,GRU的网络结构更加简单,且效果很好。

四、RNN/LSTM/GRU的变体结构

1. 双向循环神经网络

例如命名实体识别:判断句子中Teddy是否是人名,如果只从前面几个词是无法得知Teddy是否是人名,如果能有后面的信息就很好判断了。

双向循环神经网络中的网络单元可以是RNN、LSTM和GRU,均适用这种变体结构。

2. 深层循环神经网络

顾名思义,就是多个循环神经网络的堆叠,循环神经网络可以采用RNN、LSTM和GRU,均适用这种变体结构。

3. Seq2Seq架构:非常火热

又叫Encoder-Decoder模型,适用于输入与输出个数不一样相等的情况(即多对多的循环神经网络,适用于机器翻译等场景)。

其中,Encoder编码器和Decoder解码器可以使用RNN、LSTM和GRU,均适用这种变体结构。

同时,这种结构也可以与双向、深层的变体结构同时使用,不冲突的。

这里多提一句,例如给图像添加描述这样的应用场景,图中对应的描述为“一只猫站在椅子上”,同样可以采用Encoder-Decoder模型。

五、注意力机制

1. Seq2Seq + Attention机制介绍

需要注意到,LSTM、GRU、双向变体结构、深层变体结构和Seq2Seq变体结构,只能说一定程度上缓解了梯度消失问题。

提出问题:在做机器翻译时,专家学者们发现,在Seq2Seq结构中,Encoder把所有的输入序列都编码成一个统一的语义向量context,然后再由Decoder解码。其中,context自然也就成了限制模型性能的瓶颈,当要翻译的句子较长时,一个 context 可能存不下那么多信息。同时,只使用编码器的最后一个隐藏层状态,似乎不是很合理。

解决方案:因此,引入了Attention机制(将有限的认知资源集中到最重要的地方)。在生成 Target 序列的每个词时,用到的中间语义向量 context 是 Source 序列通过Encoder的隐藏层的加权和,而不是只用Encoder最后一个时刻的输出作为context,这样就能保证在解码不同词的时候,Source 序列对现在解码词的贡献是不一样的。例如,Decoder 在解码"machine"时,"机"和"器"提供的权重要更大一些,同样,在解码"learning"时,"学"和"习"提供的权重相应的会更大一些。

实现步骤:(1)衡量编码中第 j 阶段的隐含层状态和解码时第 i 阶段的相关性(有很多种打分方式,这里不细讲);(2)通过相关性的打分为编码中的不同阶段分配不同的权重;(3)解码中第 i 阶段输入的语义向量context就来自于编码中不同阶段的隐含层状态的加权和。

补充说明一下,衡量相关性的打分方式主要包括以下几种,具体不展开了:

2. 层次注意力机制Hierarchical Attention

能够反映文档的层次结构。模型在单词和句子级别分别设计了两个注意力机制,这样做能够在构建文档表示时区别地对待这些内容。

3. 自注意力机制Self-Attention:只有一个Seq

是关联单个序列中不同位置的注意力机制,从而计算序列的交互表示。已被证明在很多领域十分有效,例如机器阅读、图像描述生成等。

以机器阅读为例,当前单词为红色,蓝色阴影的大小表示激活程度,自注意力机制使得能够学习当前单词和句子前一部分词之间的相关性:

补充说明,以图像描述生成为例,注意力权重的可视化清楚地表明了模型关注的图像的哪些区域以便输出某个单词:

4. Fairseq:基于卷积神经网络的Seq2Seq + Attention机制

Facebook人工智能实验室提出基于卷积神经网络的Seq2Seq架构,将RNN替换为带有门控单元的CNN(相较于RNN,CNN工作不依赖于上一时间步的结果,所以可以做到最大程度的并行计算,提升训练速度),提升效果的同时大幅加快了模型训练速度。

5. Transformer:使用self-attention代替原有的RNN及CNN

以上Attention model虽然解决了输入seq仅有一个context vector的缺点,但仍存在一些问题:

  • context vector计算的是输入seq、目标seq间的关联,却忽略了输入seq中文字间的关联、目标seq中文字间的关联性。
  • Attention model中使用的RNN无法平行化处理,导致训练时间长,使用的CNN实际上是透过大量的layer去解决局部信息的问题。

Google提出一种叫做”transformer”的模型,透过self-attention、multi-head的概念去解决上述缺点,完全舍弃了RNN、CNN的构架。

值得一提的是,Google后续提出了BERT模型,在11个任务中取得了最好的效果,是深度学习在nlp领域又一个里程碑式的工作。

6. Memory-based Attention

在 NLP 的一些任务上,比如问答匹配任务,答案往往与问题间接相关。因此,基本的注意力技术就显得很无力了,这时候就体现了Memory-based Attention的强大之处。例如可以通过迭代内存更新(也称为多跳)来模拟时间推理过程,以逐步引导注意到答案的正确位置。

7. Soft/Hard Attention

简单说就是Soft Attention打分之后分配的权重取值在0到1之间,而Hard Attention取值为0或者1。

8. Global/Local Attention

这个也很好理解,就是采用全局或者局部的注意力机制。

六、应用

1. 自然语言处理

例如机器翻译、问答系统、文本分类、情绪分析、命名实体识别、创作乐曲等。

2. 图像处理

例如多媒体描述、局部图像补全、通过低分辨率的图像还原高分辨率图像等。

3. 智能推荐

例如用于用户行为分析,即将注意力权重分配给用户的交互项目,以更有效地捕捉长期和短期的兴趣。

4. 其他

本文参考大佬:https://github.com/yuquanle/Attention-Mechanisms-paper/blob/master/Attention-mechanisms-paper.md

如果你对智能推荐感兴趣,欢迎先浏览我的另几篇随笔:智能推荐算法演变及学习笔记

如果您对数据挖掘感兴趣,欢迎浏览我的另几篇博客:数据挖掘比赛/项目全流程介绍

如果您对人工智能算法感兴趣,欢迎浏览我的另一篇博客:人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)

如果你是计算机专业的应届毕业生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的应届生,你如何准备求职面试?

如果你是计算机专业的本科生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的本科生,你可以选择学习什么?

如果你是计算机专业的研究生,欢迎浏览我的另外一篇博客:如果你是一个计算机领域的研究生,你可以选择学习什么?

如果你对金融科技感兴趣,欢迎浏览我的另一篇博客:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之后博主将持续分享各大算法的学习思路和学习笔记:hello world: 我的博客写作思路

深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)的更多相关文章

  1. 人工智能中小样本问题相关的系列模型演变及学习笔记(二):生成对抗网络 GAN

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]本文衔接上一个随笔:人工智能中小样本问题相关的系列模型演变及学习 ...

  2. zz深度学习中的注意力模型

    中间表示: C -> C1.C2.C3 i:target -> IT j: source -> JS sim(Query, Key) -> Value Key:h_j,类似某种 ...

  3. CTR预估模型演变及学习笔记

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...

  4. 深度学习中的Normalization模型

    Batch Normalization(简称 BN)自从提出之后,因为效果特别好,很快被作为深度学习的标准工具应用在了各种场合.BN 大法虽然好,但是也存在一些局限和问题,诸如当 BatchSize ...

  5. [优化]深度学习中的 Normalization 模型

    来源:https://www.chainnews.com/articles/504060702149.htm 机器之心专栏 作者:张俊林 Batch Normalization (简称 BN)自从提出 ...

  6. 强化学习中的无模型 基于值函数的 Q-Learning 和 Sarsa 学习

    强化学习基础: 注: 在强化学习中  奖励函数和状态转移函数都是未知的,之所以有已知模型的强化学习解法是指使用采样估计的方式估计出奖励函数和状态转移函数,然后将强化学习问题转换为可以使用动态规划求解的 ...

  7. Scratch学习中需要注意的地方,学习Scratch时需要注意的地方

    在所有的编程工具中,Scratch是比较简单的,适合孩子学习锻炼,也是信息学奥赛的常见项目.通常Scratch学习流程是,先掌握程序相关模块,并且了解各个模块的功能使用,然后通过项目的编写和练习,不断 ...

  8. [PyTorch] rnn,lstm,gru中输入输出维度

    本文中的RNN泛指LSTM,GRU等等 CNN中和RNN中batchSize的默认位置是不同的. CNN中:batchsize的位置是position 0. RNN中:batchsize的位置是pos ...

  9. Ruby Rails学习中:User 模型,验证用户数据

    用户建模 一. User 模型 实现用户注册功能的第一步是,创建一个数据结构,用于存取用户的信息. 在 Rails 中,数据模型的默认数据结构叫模型(model,MVC 中的 M).Rails 为解决 ...

随机推荐

  1. [PHP] 获取IP 和JS获取IP和地址

    通过js获取 服务器 ip 服务器端口 服务器地址 var address=window.location.href; thisDLoc = document.location; var hostpo ...

  2. Springboot:定时任务处理(十三)

    构建一个定时任务的service接口及实现(模拟) 接口:com\applesnt\springboot\service\TaskService.java package com.applesnt.s ...

  3. Des对称可逆加密

    /// <summary> /// DES AES Blowfish ///  对称加密算法的优点是速度快, ///  缺点是密钥管理不方便,要求共享密钥. /// 可逆对称加密  密钥长 ...

  4. 如何在Vue项目中优雅的使用sass

    开始之前,请先确保有一个基于webpack模板的项目(vue-cli脚手架一键安装~) 1.打开项目终端,安装sass的依赖包 npm install --save-dev sass-loader / ...

  5. Mbatis逆向工程常遇错误

    org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession.### The error may e ...

  6. INTERVIEW #5

    笔试 150min,3题,每题100分,自己果然还是个蒟蒻呢~ 最近状态好差,虽然做了一些题,但还是考得稀烂,大概有几点需要加强: 独立做题,不要一边看板子一边写代码,更不要一开始就看题解: 对之前研 ...

  7. 程序员最喜欢用的在线IDE代码编译器,什么?你竟然不知道!

    1.网址https://tech.io/snippet 支持 20+ 种编程语言,页面上没有杂七杂八的东西,非常简约,非常干净,另外,它上面的代码段还可以嵌入到网页之中. 2.网址 https://w ...

  8. 图论--网络流--最大流 HDU 2883 kebab(离散化)

    Problem Description Almost everyone likes kebabs nowadays (Here a kebab means pieces of meat grilled ...

  9. Cypress 自动化环境搭建

    1.Cypress 下载: 官网下载,下载后直接解压即可,解压后便可单机 exe 文件打开 Ps:直接打开 exe 是会报错找不到 json文件的,所以还要安装依赖环境 运行 cypress 项目前, ...

  10. Vxlan L3

    拓扑图: CE1 <CE1>display current-configuration !Software Version V800R013C00SPC560B560 !Last conf ...