IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【NLP】Seq2Seq与Attention(Neural Machine Translation by Jointly Learning to Align and Translate)回顾 -> 正文阅读

[人工智能]【NLP】Seq2Seq与Attention(Neural Machine Translation by Jointly Learning to Align and Translate)回顾

背景

Seq2Seq可以使用统计的方式、规则的方式去应对。在印象中,Attention的出现也是从Seq2Seq任务中出现的,在论文:Neural Machine Translation by Jointly Learning to Align and Translate中发表,可以看看该论文中的section2、section3.

具有注意力的 Seq2seq 模型的机制

这部分参考了文章:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)

序列到序列模型是一种采用一系列项目(单词、字母、图像特征等)并输出另一个项目序列的模型。一个训练有素的模型会像这样工作:
在这里插入图片描述
在神经机器翻译中,序列是一系列单词,一个接一个地处理。同样,输出是一系列单词:
在这里插入图片描述

由编码器与解码器组成的模型

编码器处理输入序列中的每个token,它将捕获的信息编译成一个向量(称为上下文)。处理完整个输入序列后,编码器将上下文发送到解码器,解码器开始逐项生成输出序列。
在这里插入图片描述
这同样适用于机器翻译的情况。
在这里插入图片描述
在机器翻译的情况下,上下文是一个向量(基本上是一个数字数组)。编码器和解码器往往都是循环神经网络。
在这里插入图片描述
您可以在设置模型时设置上下文向量的大小。它基本上是编码器 RNN 中隐藏单元的数量。这些可视化显示了一个大小为 4 的向量,但在现实世界的应用程序中,上下文向量的大小可能是 256、512 或 1024。

按照设计,RNN 在每个时间步都有两个输入:一个输入(在编码器的情况下,输入句子中的一个词)和一个隐藏状态。然而,这个词需要用一个向量来表示。要将单词转换为向量,我们求助于称为“单词嵌入”算法的一类方法。这些将单词转换为向量空间,捕获单词的大量含义/语义信息。
在这里插入图片描述
我们需要在处理输入词之前将它们转换为向量。该转换是使用词嵌入算法完成的。我们可以使用预训练的嵌入或在我们的数据集上训练我们自己的嵌入。嵌入大小为 200 或 300 的向量是典型的,为简单起见,我们显示大小为 4 的向量。

现在我们已经介绍了我们的主要向量/张量,让我们回顾一下 RNN 的机制并建立一种视觉语言来描述这些模型:
在这里插入图片描述

下一个 RNN 步骤采用第二个输入向量和隐藏状态 #1 来创建该时间步的输出。在后面的文章中,我们将使用这样的动画来描述神经机器翻译模型中的向量。

在下面的可视化中,编码器或解码器的每个脉冲都是 RNN 处理其输入并为该时间步生成输出。由于编码器和解码器都是 RNN,每一步 RNN 都会进行一些处理,它会根据其输入和之前看到的输入更新其隐藏状态。

让我们看看编码器的隐藏状态。注意最后一个隐藏状态实际上是我们传递给解码器的上下文。

在这里插入图片描述
解码器还保持一个隐藏状态,它从一个时间步传递到下一个时间步。我们只是没有在此图中将其可视化,因为我们现在关注模型的主要部分。

现在让我们看看另一种可视化序列到序列模型的方法。该动画将更容易理解描述这些模型的静态图形。这称为“展开”视图,我们不显示一个解码器,而是为每个时间步显示它的副本。这样我们就可以查看每个时间步的输入和输出。
在这里插入图片描述

Attention的使用

事实证明,上下文向量是这些类型模型的瓶颈。这使得模型处理长句子变得具有挑战性。Bahdanau et al., 2014 和 Luong et al., 2015 提出了一个解决方案。这些论文引入并改进了一种称为“注意力”的技术,它极大地提高了机器翻译系统的质量。Attention 允许模型根据需要关注输入序列的相关部分。

在这里插入图片描述
在时间步 7,注意力机制使解码器能够在生成英文翻译之前将注意力集中在单词“étudiant”(法语中的“student”)上。这种从输入序列的相关部分放大信号的能力使得注意力模型比没有注意力的模型产生更好的结果。

让我们继续研究这种高度抽象的注意力模型。注意力模型在两个主要方面不同于经典的序列到序列模型:
首先,编码器将更多数据传递给解码器。编码器没有传递编码阶段的最后一个隐藏状态,而是将所有隐藏状态传递给解码器:
在这里插入图片描述

其次,注意力解码器在产生其输出之前会执行额外的步骤。为了关注与此解码时间步长相关的输入部分,解码器执行以下操作:

  1. 查看它接收到的一组编码器隐藏状态——每个编码器隐藏状态与输入句子中的某个词最相关
  2. 给每个隐藏状态打分(我们暂时忽略打分的方式)
  3. 将每个隐藏状态乘以其 softmaxed 分数,从而放大高分数的隐藏状态,并淹没低分数的隐藏状态
    在这里插入图片描述

该评分练习在解码器端的每个时间步进行。现在让我们在下面的可视化中把整个事情放在一起,看看注意力过程是如何工作的:

1.注意力解码器 RNN 接受 标记的嵌入和初始解码器隐藏状态。
2. RNN 处理其输入,产生一个输出和一个新的隐藏状态向量 (h4)。输出被丢弃。
3. 注意步骤:我们使用编码器隐藏状态和 h4 向量来计算这个时间步的上下文向量 (C4)。
4. 我们将 h4 和 C4 连接成一个向量。
5. 我们通过一个前馈神经网络(与模型联合训练的)传递这个向量。
6. 前馈神经网络的输出表示该时间步的输出字。
7. 重复下一个时间步骤
在这里插入图片描述
这是查看在每个解码步骤中我们关注输入语句的哪一部分的另一种方法:
在这里插入图片描述

请注意,该模型不仅仅是将输出的第一个词与输入的第一个词对齐。它实际上从训练阶段学习了如何对齐该语言对中的单词(在我们的示例中为法语和英语)。关于这种机制的精确程度的一个例子来自上面列出的注意力论文:
在这里插入图片描述

论文中的介绍

神经网络机器翻译

我们先简要地看看基于RNN的Encoder-Decoder神经网络翻译模型。我摘取原文的部分内容,如下:
在这里插入图片描述
在这里插入图片描述
流程是这样的:编码器就输入的语句向量处理成一个向量 c c c,编码器选取的是RNN,数学表达如下,原文的公式(1):
h t = f ( x t , h t ? 1 ) c = q ( h 1 , ? ? , h T x ) h_t = f(x_t, h_{t-1}) \\ c = q({h_1, \cdots, h_{T_x}}) ht?=f(xt?,ht?1?)c=q(h1?,?,hTx??)
h t ∈ R n h_t \in \mathbb R^n ht?Rn t t t时刻的隐状态, c c c是由所有的隐状态生成的向量。 f f f q q q是非线性函数,例如使用LSTM。

编码器则是在给定上下文向量 c c c以及已经预测的结果 { y 1 , ? ? , y t ′ ? 1 } \{y_1,\cdots, y_{t^\prime - 1}\} {y1?,?,yt?1?}条件下,去预测下一个结果 y t ′ ? 1 y_{t^{\prime - 1}} yt?1?。那么就有的原文中的公式(2)了,其中 y = ( y 1 , ? ? , y T y ) \mathbf{y}=(y_1, \cdots, y_{T_y}) y=(y1?,?,yTy??).使用条件概率表示就是成了原文公式(3)了,其中 g g g是非线性的,潜在多层函数,且用于输出 y t y_t yt?的, s s s则是RNN的隐层状态。

上面就是神经机器学习的大体过程。下面我们看看原文提出的新颖结构(novel architecture)。

学习对齐和翻译

该模型使用bi-RNN作为编码器。结构如下:
在这里插入图片描述

新模型的条件概率如下(公式4):
p ( y i ∣ y 1 , … , y i ? 1 , x ) = g ( y i ? 1 , s i , c i ) p\left(y_{i} \mid y_{1}, \ldots, y_{i-1}, \mathbf{x}\right)=g\left(y_{i-1}, s_{i}, c_{i}\right) p(yi?y1?,,yi?1?,x)=g(yi?1?,si?,ci?)
其中 s i s_i si?是RNN在时刻 t t t时的隐层状态(解码器),计算如下:
s i = f ( s i ? 1 , y i ? 1 , c i ) s_i=f(s_{i-1}, y_{i-1}, c_i) si?=f(si?1?,yi?1?,ci?)
其计算方式和公式(2)不同,因为会为每一个 y i y_i yi?计算一个上下文向量 c i c_i ci?。下面就是attention机制的内容了。

那么 问题来了,这个上下文向量 c i c_i ci?该如何计算呢?其依赖于编码器将输入语句映射到的各个隐层结果 ( h 1 , ? ? , h T x ) (h_1,\cdots,h_{T_x}) (h1?,?,hTx??) h i h_i hi?包含关于整个输入序列的信息,重点关注输入序列的第 i i i个字周围的部分。
然后,上下文向量 c i c_i ci?被计算为这些加权和 h i h_i hi?,如下(公式5):
c i = ∑ j = 1 T x α i j h j c_{i}=\sum_{j=1}^{T_{x}} \alpha_{i j} h_{j} ci?=j=1Tx??αij?hj?
那么又引入了一个问题,这个 a i j a_{ij} aij?该如何计算,表示的又是什么?其表示 h j h_j hj?的权重,计算如下:

α i j = exp ? ( e i j ) ∑ k = 1 T x exp ? ( e i k ) \alpha_{i j}=\frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{T_{x}} \exp \left(e_{i k}\right)} αij?=k=1Tx??exp(eik?)exp(eij?)?
接着又引入了一个新问题 e i j e_{ij} eij?又是一个啥?其计算如下:
e i j = a ( s i ? 1 , h j ) e_{ij} = a(s_{i-1}, h_j) eij?=a(si?1?,hj?)
他是一个对齐模型,它对位置 j j j周围的输入和位置 i i i处的输出匹配程度进行评分,换一句话说就是计算 s i ? 1 s_{i-1} si?1? h j h_j hj?之间的相似度。然后就是一个softmax嘛,将这些相似度进行归一化。然后对 h j h_j hj?进行加权求和得到我们的当前的上下文向量 c i c_i ci?

我们将对齐模型a参数化为一个前馈神经网络,它与所提出的系统的所有其他组成部分共同训练。请注意,与传统的机器翻译不同,这个对齐并不被认为是一个潜在的变量。相反,对齐模型直接计算一个软对齐,这允许cost函数的梯度通过反向传播。该梯度可用于联合训练对齐模型和整个翻译模型。

到这里基本上已经结束了,当了解了各个模块的意义之后,仔细一看,其实也不难,就是逻辑上可能有点绕。

用图说话

上面的公式什么杂七杂八的可能有些乱,如果你的“attention”不够,可能还不懂。下面,我根据自己的理解,绘制一些图,供参考理解,考验绘图能力的时候到了哟。下图以计算 c 2 c_2 c2?为例。

请添加图片描述

需要说明的是,其中soft align + softmax 是先进行相似度计算,然后使用softmax进行归一化处理。整个流程用一张动图来看是这样子的。

如果原来的公式,概念不理解的话,回过头看看,应该会清楚一些。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:57:29  更:2022-05-14 09:58:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/1 23:22:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码