28-微课-序列到序列模型与注意力机制_第1页
28-微课-序列到序列模型与注意力机制_第2页
28-微课-序列到序列模型与注意力机制_第3页
28-微课-序列到序列模型与注意力机制_第4页
28-微课-序列到序列模型与注意力机制_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

序列到序列模型与注意力机制张杲峰,刘刚,周庆国人民邮电出版社2025神经网络与深度学习(微课)内容概要序列到序列模型Bahdanau注意力机制通用注意力机制带注意力的序列到序列模型神经网络与深度学习2序列到序列(Seq2Seq)模型序列到序列模型可用于机器翻译、图像标题生成等任务。传统的序列到序列一般采用编码器-解码器架构。编码器和解码器实际上都是堆叠的循环神经网络层,例如长短期记忆网络或者门控循环单元网络。解码器decoder

编码器encoder

RNNx0您h0h1RNNx1是h2

RNNx2一个h3

RNNx3好人h5

RNNx5EOSz

RNNx4。h4

RNNy0youRNNy1areRNNy2aRNNy3goodRNNy5.

RNNy4personRNNy6EOS

y0y1

y2

y4

y3

y5

s0s1

s2

s4

s3

s5

神经网络与深度学习3序列到序列(Seq2Seq)模型编码器处理输入x,并从所有输入时间步长生成一个中间压缩表示,也称为上下文向量,记为z。另一方面,解码器接收z并生成输出序列y。神经网络与深度学习4解码器decoder

编码器encoder

RNNx0您h0h1RNNx1是h2

RNNx2一个h3

RNNx3好人h5

RNNx5EOSz

RNNx4。h4

RNNy0youRNNy1areRNNy2aRNNy3goodRNNy5.

RNNy4personRNNy6EOS

y0y1

y2

y4

y3

y5

s0s1

s2

s4

s3

s5

序列到序列(Seq2Seq)模型瓶颈问题当序列较长时,由于梯度消失的原因,中间表示z无法对所有输入时间步长的信息进行编码,尤其是距离较远、但又比较重要的时间步信息。神经网络与深度学习5解码器decoder

编码器encoder

RNNx0您h0h1RNNx1是h2

RNNx2一个h3

RNNx3好人h5

RNNx5EOSz

RNNx4。h4

RNNy0youRNNy1areRNNy2aRNNy3goodRNNy5.

RNNy4personRNNy6EOS

y0y1

y2

y4

y3

y5

s0s1

s2

s4

s3

s5

Bahdanau注意力机制为了避免瓶颈问题,巴赫达瑙等人在编码器和解码器之间引入注意力机制,称之为Bahdanau注意力机制。心理学认为,注意力是指人的心理活动指向和集中于某种事物的能力,具体而言,就是大脑选择信息、放大信息、引导信息并深化信息处理的能力。为什么需要这种能力呢?因为注意力解决了一个非常关键的问题:信息饱和,资源有限。神经网络与深度学习6Bahdanau注意力机制

神经网络与深度学习7Bahdanau注意力机制

神经网络与深度学习8Bahdanau注意力机制

神经网络与深度学习9Bahdanau注意力机制

神经网络与深度学习10通用注意力机制

神经网络与深度学习11通用注意力机制

神经网络与深度学习12他是一个网球球手

通用注意力机制

神经网络与深度学习13他是一个网球球手

通用注意力机制

神经网络与深度学习14他是一个网球球手

带注意力的序列到序列模型编码器classEncoderRNN(nn.Module):

def__init__(self,input_size,hidden_size):super(EncoderRNN,self).__init__()

self.hidden_size=hidden_size

self.embedding=nn.Embedding(input_size,hidden_size)#词嵌入

self.lstm=nn.LSTM(hidden_size,hidden_size)#定义LSTM

defforward(self,input,hidden,cell):embedded=self.embedding(input).view(1,1,-1)output=embeddedoutput,(hidden,cell)=self.lstm(output)

returnoutput,(hidden,cell)

definitHidden(self):

returntorch.zeros(1,1,self.hidden_size,device=device)神经网络与深度学习15input_size:词汇表大小(输入语言有多少个不同的词)hidden_size:隐藏层维度,决定模型的容量self.embedding:将离散的词索引转换为连续的密集向量self.lstm:LSTM循环神经网络,捕捉序列的时序依赖关系带注意力的序列到序列模型解码器classAttnDecoderRNN(nn.Module):

def__init__(self,hidden_size,output_size,dropout_p=0.1,max_length=MAX_LENGTH):super(AttnDecoderRNN,self).__init__()

self.hidden_size=hidden_size

self.output_size=output_size

self.dropout_p=dropout_p

self.max_length=max_length

self.embedding=nn.Embedding(self.output_size,self.hidden_size)

self.attn=nn.Linear(self.hidden_size*2,self.max_length)

self.attn_combine=nn.Linear(self.hidden_size*2,self.hidden_size)

self.dropout=nn.Dropout(self.dropout_p)

self.lstm=nn.LSTM(self.hidden_size,self.hidden_size)

self.out=nn.Linear(self.hidden_size,self.output_size)

神经网络与深度学习16output_size:输出词汇表大小(目标语言有多少个不同的词)max_length:最大序列长度,用于注意力权重矩阵self.attn:注意力计算层,输入维度hidden_size*2,输出max_lengthself.attn_combine:融合层,将注意力上下文与当前输入结合带注意力的序列到序列模型解码器

defforward(self,input,hidden,cell,encoder_outputs):embedded=self.embedding(input).view(1,1,-1)embedded=self.dropout(embedded)

attn_weights=F.softmax(

self.attn(torch.cat((embedded[0],hidden[0]),1)),dim=1)attn_applied=torch.bmm(attn_weights.unsqueeze(0),encoder_outputs.unsqueeze(0))

output=torch.cat((embedded[0],attn_applied[0]),1)output=self.attn_combine(output).unsqueeze(0)

output=F.relu(output)output,(hidden,cell)=self.lstm(output,(hidden,cell))

output=F.log_softmax(self.out(output[0]),dim=1)

returnoutput,(hidden,cell),attn_weights

definitHidden(self):

returntorch.zeros(1,1,self.hidden_size,device=device)神经网络与深度学习17torch.cat((

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论