基于序列的模型

序列模型 概念

序列的模型 是指输入或者输出中包含有序列(sequence)数据的模型。

序列数据是指有先后次序的一组数据,例如,语音数据、文本数据、视频数据等一系列具有连续关系的数据。

基于序列的模型具有以下两个特点:

1. 输入/输出是不定长的。

2. 输入/输出的元素之间是具有顺序关系的。

序列模型广泛应用于语音识别、情感分析、DNA序列分析、机器翻译、视频行为识别、命名实体识别等众多领域。

基于序列的模型

1、输入

当输入为序列时,可以用X=(x<1>,x<2>,x<3>,……,x<n>)来表示,其中x<i>(1≤i≤n)可以表示每个元素在输入序列中的位置;

2、输出

当输出为序列时,可以用Y=((y<1>,y<2>,y<3>,……,y<t>)来表示,其中y<j>(1≤j≤n)可以表示每个元素在输出序列中的位置。

3、结构

(1)理解基于序列的模型可以先以循环神经网络(Recurrent Neural Network,RNN)为基础。传统神经网络的前一个输入和后一个输入是完全没有关系的,不能处理序列信息。而RNN则可以考虑前后输入之间的关系。

在RNN之后,基于序列的模型持续发展,陆续出现了LSTM、BERT等,乃至现在炙手可热的GPT,都是典型的基于序列的模型。不过,我们先通过比较简单的RNN,可以更容易地对基于序列的模型有初步的认识。

RNN以输入数m对应输出数n的不同,可以划分为5种基础结构类型:

基于序列的模型插图

  1. one to one:一个输入(粉色方块)对应一个输出(蓝色方块),其和全连接神经网络本质上并没有什么区别,严格来说这一类别算不上RNN。
  2. one to many:一个输入对应多个输出,即输入不是序列,输出是序列。可用于按主题生成文章或音乐等。例如,音乐生成:输出的是一段音符的序列,而输入的可以是整数,表示想要的音乐风格;或者是第一个音符,表示你想要用这个音符开头;或者什么都不输入,让模型自由发挥。
  3. many to one:多个输入对应一个输出,即输入是序列,输出不是序列(为单个值),是目前应用中最常见的序列模型之一,常用于文本分类。例如,在文本情感分析中,输入的是文本的序列,每个词都是一个输入,而输出的往往是类别标签。
  4. many to many:多个输入对应多个输出但二者序列长度不等,即输入和输出都是不定长的序列。也就是Encoder-Decoder(编码-解码)结构,常用于机器翻译。
  5. many to many(m=n):输入和输出都是等长的序列数据,这是 RNN 中最经典的结构类型,适用范围较小,常用于自然语言处理的命名实体识别、序列预测。

(2)另外一种基于序列比较重要的结构是编码-解码(encoder-decoder)结构,也叫Seq2Seq:

Encoder-Decoder是RNN的一个重要变种,原始的many to many的RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度,为此,Encoder-Decoder结构先将输入数据编码成一个上下文语义向量c。

基本思想:利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。

encoder(编码):将输入序列 →转成→ 固定长度的向量c。

decoder(解码):将 固定长度的向量c →转成→ 输出序列。

语义向量c:可以有多种表达方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c(c=h4),还可以对最后的隐状态做一个变换得到c(c=q(h4)),也可以对所有的隐状态做变换(c=q(h1,h2,h3,h4))。c可以理解为输入序列的一个浓缩的表示(也可以称为嵌入)。

如下图所示,(x1,x2,x3,x4)为输入,c为语义向量,(y1,y2,y3)为输出:

基于序列的模型插图1

Encoder-Decoder的两种用法

  1. 完整地训练上面的模型,然后在某些应用场景下只用前半部分(到c为止)。
  2. 将基于序列的模型层(比如上图中的前半部分)与其他模型层(比如神经网络)组成一个混合模型,比如先对序列通过RNN生成特征向量C,然后再通过神经网络得到判断结果。这种模型一般都是联合训练得到的。

编码-解码结构后续也有大量的发展,在大语言模型中起了非常重要的作用,不过基础的思想就是上面的内容。

参考文献:

浅说深度学习之:序列学习_qunnie_yi的博客-CSDN博客

Seq2Seq模型概述 – 简书 (jianshu.com)

深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制) – 爱码网 (likecs.com)

【序列模型】第一课–循环序列模型 – nxf_rabbit75 – 博客园 (cnblogs.com)

RNN详解