机器学习(ML)十二之编码解码器、束搜索与注意力机制

摘要:
编码器-解码器使用两个循环神经网络。在编码器-解码器培训中,可以使用强制教学。这也是注意力机制的起源。本质上,解码器在时间步:math:t'中的隐藏状态是开发,注意力机制可以将更多的计算资源分配给表示中更有价值的部分。除了自然语言处理,注意力机制也广泛应用于图像分类、自动图像描述、唇语解释和语音识别。广义上,注意力输入机制包括查询项和一对一对应的关键项和价值项。注意机制可以采用更有效的矢量化计算。
编码器—解码器(seq2seq)

在自然语言处理的很多应用中,输入和输出都可以是不定长序列。以机器翻译为例,输入可以是一段不定长的英语文本序列,输出可以是一段不定长的法语文本序列,例如

英语输入:“They”、“are”、“watching”、“.”
法语输出:“Ils”、“regardent”、“.”

当输入和输出都是不定长序列时,我们可以使用编码器—解码器(encoder-decoder)或者seq2seq模型。这两个模型本质上都用到了两个循环神经网络,分别叫做编码器和解码器。编码器用来分析输入序列,解码器用来生成输出序列。用编码器—解码器将上述英语句子翻译成法语句子的一种方法。在训练数据集中,我们可以在每个句子后附上特殊符号“<eos>”(end of sequence)以表示序列的终止。编码器每个时间步的输入依次为英语句子中的单词、标点和特殊符号“<eos>”。下图中使用了编码器在最终时间步的隐藏状态作为输入句子的表征或编码信息。解码器在各个时间步中使用输入句子的编码信息和上个时间步的输出以及隐藏状态作为输入。 我们希望解码器在各个时间步能正确依次输出翻译后的法语单词、标点和特殊符号“<eos>”。 需要注意的是,解码器在最初时间步的输入用到了一个表示序列开始的特殊符号“<bos>”(beginning of sequence)。

机器学习(ML)十二之编码解码器、束搜索与注意力机制第1张

编码器

机器学习(ML)十二之编码解码器、束搜索与注意力机制第2张

解码器

机器学习(ML)十二之编码解码器、束搜索与注意力机制第3张

训练模型

机器学习(ML)十二之编码解码器、束搜索与注意力机制第4张

在模型训练中,所有输出序列损失的均值通常作为需要最小化的损失函数。在上图所描述的模型预测中,我们需要将解码器在上一个时间步的输出作为当前时间步的输入。与此不同,在训练中我们也可以将标签序列(训练集的真实输出序列)在上一个时间步的标签作为解码器在当前时间步的输入。这叫作强制教学(teacher forcing)。

  • 编码器-解码器(seq2seq)可以输入并输出不定长的序列。
  • 编码器—解码器使用了两个循环神经网络。
  • 在编码器—解码器的训练中,可以采用强制教学。
束搜索

在准备训练数据集时,我们通常会在样本的输入序列和输出序列后面分别附上一个特殊符号“<eos>”表示序列的终止。我们在接下来的讨论中也将沿用上一节的全部数学符号。为了便于讨论,假设解码器的输出是一段文本序列。设输出文本词典y包含特殊符号“<eos>”)的大小为|y|,输出序列的最大长度为T',所有可能的输出序列一共有O(|Y|T′)种。这些输出序列中所有特殊符号“<eos>”后面的子序列将被舍弃。

贪婪搜索

机器学习(ML)十二之编码解码器、束搜索与注意力机制第5张

穷举搜索

机器学习(ML)十二之编码解码器、束搜索与注意力机制第6张

束搜索

机器学习(ML)十二之编码解码器、束搜索与注意力机制第7张

  • 预测不定长序列的方法包括贪婪搜索、穷举搜索和束搜索。
  • 束搜索通过灵活的束宽来权衡计算开销和搜索质量。
注意力机制

“编码器—解码器seq2seq)”里,解码器在各个时间步依赖相同的背景变量来获取输入序列信息。当编码器为循环神经网络时,背景变量来自它最终时间步的隐藏状态。

让我们再次思考那一节提到的翻译例子:输入为英语序列“They”“are”“watching”“.”,输出为法语序列“Ils”“regardent”“.”。不难想到,解码器在生成输出序列中的每一个词时可能只需利用输入序列某一部分的信息。例如,在输出序列的时间步1,解码器可以主要依赖“They”“are”的信息来生成“Ils”,在时间步2则主要使用来自“watching”的编码信息生成“regardent”,最后在时间步3则直接映射句号“.”。这看上去就像是在解码器的每一时间步对输入序列中不同时间步的表征或编码信息分配不同的注意力一样。这也是注意力机制的由来。

仍然以循环神经网络为例,注意力机制通过对编码器所有时间步的隐藏状态做加权平均来得到背景变量。解码器在每一时间步调整这些权重,即注意力权重,从而能够在不同时间步分别关注输入序列中的不同部分并编码进相应时间步的背景变量。

计算背景变量 

机器学习(ML)十二之编码解码器、束搜索与注意力机制第8张

矢量化计算

机器学习(ML)十二之编码解码器、束搜索与注意力机制第9张

更新隐藏状态

现在我们描述第二个关键点,即更新隐藏状态。以门控循环单元为例,在解码器中我们可以对“门控循环单元(GRU)”一节中门控循环单元的设计稍作修改,从而变换上一时间步t1的输出yt1、隐藏状态st1和当前时间步t的含注意力机制的背景变量ct解码器在时间步:math:t’的隐藏状态为

机器学习(ML)十二之编码解码器、束搜索与注意力机制第10张

发展

本质上,注意力机制能够为表征中较有价值的部分分配较多的计算资源。这个有趣的想法自提出后得到了快速发展,特别是启发了依靠注意力机制来编码输入序列并解码出输出序列的变换器(Transformer)模型的设计。变换器抛弃了卷积神经网络和循环神经网络的架构。它在计算效率上比基于循环神经网络的编码器—解码器模型通常更具明显优势。含注意力机制的变换器的编码结构在后来的BERT预训练模型中得以应用并令后者大放异彩:微调后的模型在多达11项自然语言处理任务中取得了当时最先进的结果。不久后,同样是基于变换器设计的GPT-2模型于新收集的语料数据集预训练后,在7个未参与训练的语言模型数据集上均取得了当时最先进的结果 [4]。除了自然语言处理领域,注意力机制还被广泛用于图像分类、自动图像描述、唇语解读以及语音识别。

  • 可以在解码器的每个时间步使用不同的背景变量,并对输入序列中不同时间步编码的信息分配不同的注意力。
  • 广义上,注意力机制的输入包括查询项以及一一对应的键项和值项。
  • 注意力机制可以采用更为高效的矢量化计算。

免责声明:文章转载自《机器学习(ML)十二之编码解码器、束搜索与注意力机制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VirtualBox安装RedHat Linux详解UGUI 实现Button长按效果(RepeatButton)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【4】计算神经网络的输出

 通过这4行代码即可实现神经网络的输出。 如果用for循环进行代码实现: 使用向量化的方法:  训练集一共有m个样本,每个样本有n个特征值。把训练集所有的特征值放在一起构成X矩阵。  Z[1]是所有样本第一层的输出值。行数与第一层的节点数相同A[1]是所有样本第一层的经过西格玛处理的输出值。...

ResNet-50模型图像分类示例

ResNet-50模型图像分类示例 概述 计算机视觉是当前深度学习研究最广泛、落地最成熟的技术领域,在手机拍照、智能安防、自动驾驶等场景有广泛应用。从2012年AlexNet在ImageNet比赛夺冠以来,深度学习深刻推动了计算机视觉领域的发展,当前最先进的计算机视觉算法几乎都是深度学习相关的。深度神经网络可以逐层提取图像特征,并保持局部不变性,被广泛应用...

神经网络(8)---如何求神经网络的参数:cost function的表达

两种分类问题: binary & multi-class 下面的是两种类型的分类问题(一种是binary classification,一种是multi-class classification) 如果是binary classification的分类问题,则output layer只有一个结点(1 output unit, SL =1),hΘ(...

AlphaZero

一图解密AlphaZero初步认识AlphaGo Zero原理AlphaGo Zero的核心特点可以表述为:AlphaGo Zero概述AlphaGo Zero 背后的强化学习算法 TOC 一图解密AlphaZero https://blog.csdn.net/ikerpeng/article/details/81387170 AlphaGo Zer...

基于图像的三维物体重建:在深度学习时代的最新技术和趋势之人脸重建和场景分析

作者:Longway 来源:公众号@3D视觉工坊 链接: 基于图像的三维物体重建:在深度学习时代的最新技术和趋势之人脸重建和场景分析 1.三维人脸重建 基于精细密集图像的人脸三维重建是计算机视觉和计算机图形学中一个长期存在的问题,其目标是恢复人脸的形状、姿态、表情、皮肤反射率和更精细的表面细节。最近,这个问题被描述为一个回归问题,并用卷积神经网络来解决...

智能手机跑大规模神经网络的主要策略

计算机具有高储量的硬盘和强大的CPU和GPU。但是智能手机却没有,为了弥补这个缺陷,我们需要技巧来让智能手机高效地运行深度学习应用程序。 介绍 深度学习是一个令人难以置信的灵活且强大的技术,但运行的神经网络可以在计算方面需要非常大的电力,且对磁盘空间也有要求。这通常不是云空间能够解决的问题,一般都需要大硬盘服务器上运行驱动器和多个GPU模块。 不幸的是,...