2023.9.17 机器学习周报

目录

摘要

一、文献阅读

1、题目

2、Abstract

3、问题

4、文献解读

4.1、Introduction

4.2、Model Architecture

4.3、Training

4.4、Conclusion

二、自注意力机制

1、自注意力机制设计

2、自注意力机制的整体结构

3、自注意力计算

4、自注意力机制的代码实现

5、Self-Attention和CNN(卷积神经网络)的比较

总结

摘要

This week, I read an article mainly about the mechanism of self attention. Self attention is an attention mechanism that associates different positions of a single sequence to facilitate the calculation of sequence representations. Self attention has been successfully applied to various tasks, including reading comprehension, abstract generalization, textual implication, and sentence representations unrelated to learning tasks, Transformer is the first transformation model that relies entirely on self attention to calculate its input and output representations without using sequence aligned RNNs or convolutions, and attempts to implement a simple code implementation of the self attention mechanism by hand.

本周读了一篇主要关于自注意力机制的一篇文章,自注意力是一种将单个序列的不同位置相关联的注意力机制,以便计算序列的表示,自注意力已成功应用于各种任务,包括阅读理解、抽象概括、文本蕴涵和学习任务无关的句子表示,Transformer是第一个完全依赖自注意力来计算其输入和输出表示而不使用序列对齐RNN或卷积的转换模型,并且尝试手写了自注意力机制的简单代码实现。

一、文献阅读

1、题目

文章链接:Attention Is All You Need

2、Abstract

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 Englishto-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.

显性序列转导模型是基于复杂的递归或包括编码器和解码器的卷积神经网络。最好的执行模型还通过注意力连接编码器和解码器机械装置我们提出了一种新的简单网络架构Transformer,仅基于注意力机制,省去了重复和卷积完全在两个机器翻译任务上的实验表明,这些模型在质量上更优越,同时更可并行,并且需要显著更少的训练时间。我们的模型在WMT 2014英德语翻译任务中实现了28.4 BLEU,比现有的最佳结果有所改进,包括合奏,超过2 BLEU。在WMT 2014英法翻译任务中,我们的模型在在8个GPU上进行3.5天的培训,这只是最好的模型从文献。我们证明了Transformer很好地推广到其他任务,通过将其成功应用于英语选区解析大量且有限的训练数据。

3、问题

循环神经网络,特别是长短期记忆和门控循环神经网络,已被牢固地确立为序列建模和转导问题(例如语言建模和机器翻译)中最先进的方法,循环模型通常会沿着输入和输出序列的符号位置进行计算。将位置与计算时间中的步骤对齐,它们生成一系列隐藏状态,作为先前隐藏状态和位置输入的函数。这种固有的顺序性质阻碍了训练示例中的并行化,这在较长的序列长度上变得至关重要,因为内存限制限制了示例之间的批处理。

4、文献解读

4.1、Introduction

通过分解技巧和条件计算显着提高了计算效率,同时还提高了后者的模型性能。然而,顺序计算的基本限制仍然存在,注意力机制已经成为各种任务中引人注目的序列建模和转导模型的一个组成部分,允许对依赖关系进行建模,而不考虑它们在输入或输出序列中的距离。在这项工作中,提出了Transformer,这是一种避免重复的模型架构,而是完全依赖注意力机制来绘制输入和输出之间的全局依赖关系。Transformer允许显着提高并行度,并且在8个P100 GPU上进行短短12小时的训练后,可以在翻译质量方面达到新的水平。

4.2、Model Architecture

大多数竞争性神经序列转导模型都具有编码器‑解码器结构,编码器将符号表示的输入序列(x1, ...,  xn)映射到连续表示序列z  =  (z1, ...,  zn)。给定z,解码器然后每次生成一个元素的符号输出序列(y1, ...,  ym) 。在每个步骤中,模型都是自回归的,在生成下一个时将先前生成的符号用作附加输入。

编码器:编码器由N = 6个相同层的堆栈组成。每层有两个子层。第一个是多头自注意力机制,第二个是简单的位置明智的全连接前馈网络。我们在两个子层周围采用残差连接,然后进行层归一化。即每个子层的输出为LayerNorm(x  +  Sublayer(x)),其中Sublayer(x)是子层本身实现的函数。为了促进这些残差连接,模型中的所有子层以及嵌入层都会生成维度d = 512的输出。

解码器:解码器也是由N = 6个相同层的堆栈组成。除了每个编码器层中的两个子层之外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行多头注意力。与编码器类似,我们在每个子层周围采用残差连接,然后进行层归一化。我们还修改了解码器堆栈中的自注意力子层,以防止位置关注后续位置。这种掩蔽与输出嵌入偏移一个位置的事实相结合,确保位置 i 的预测只能依赖于小于 i 的位置处的已知输出。

4.3、Training

使用标准  WMT 2014 英语‑德语数据集进行训练,该数据集包含约450万个句子对。句子使用字节对编码进行编码,该编码具有约37000个标记的共享源目标词汇。对于英语‑法语,我们使用了更大的 WMT 2014 英语‑法语数据集,其中包含3600万个句子,并将标记拆分为32000个单词片段词汇表。句子对按大致序列长度分批在一起。每个训练批次包含一组句子对,其中包含大约25000个源标记和25000个目标标记

在WMT 2014英德翻译任务上,大变压器模型比之前报道的最佳模型性能高出2.0以上BLUE,建立了新的最先进的BLEU分数28.4,在8个P100 GPU上进行训练花费了3.5天。甚至我们的基本模型超越了之前发布的所有模型和集成,而训练成本仅为任何模型和集成的一小部分竞争模型,在 WMT 2014 英法翻译任务中,我们的大模型获得了41.0的BLEU分数,优于之前发布的所有单一模型,训练成本不到1/4,以前最先进的模型。使用针对英语到法语训练的Transformer(大)模型Pdrop=0.1,而不是0.3。

4.4、Conclusion

在这项工作中,提出了Transformer,这是第一个完全基于例如图像、音频和视频。减少一代的顺序是我们的另一个研究目标。注意,将编码器‑解码器架构中最常用的循环层替换为在循环层或卷积层上。尽管缺乏特定于任务的调整,但我们的模型表现出奇的好,比之前报告的所有模型(除了
在英法翻译任务中,我们达到了新的最先进水平。该模型的性能甚至优于所有先前报道的集成。对基于注意力的模型的未来感到兴奋,并计划将其应用于其他任务。我们计划将Transformer扩展到涉及文本和输出以外的输入和输出模式的问题研究局部的、受限的注意力机制,以有效地处理大量的输入和输出研究局部的、受限的注意力机制,以有效地处理大量的输入和输出例如图像、音频和视频。减少一代的顺序是我们的另一个研究目标。

二、自注意力机制

1、自注意力机制设计

        在实际应用中,数据可能会有各种各样的形式,为了将数据作为输入提供给模型训练,可以考虑将其表示为向量序列的形式。比如,在文字处理的场景中,可以将单词表示为向量,将句子看作单词的序列。如前面所说,输入可能是一个向量的序列,并且序列的长度是不确定的。比如,当输入是一个句子的时候,可以把句子看作是一个单词的序列,那么句子包含的单词个数是不确定的。那么这种情况下,如果将整个序列作为一个整体,普通的模型是无法进行处理的;如果将序列中的每个向量单独交给模型处理,那么无法利用向量之间的关联性。比如在词性标注任务中,同一个单词可能会被标注为不同的词性,但这是要结合上下文决定的,而不仅仅是单词本身。自注意力机制设计动机就是处理形式为可变长度向量序列输入,且这些向量之间会有一定的关联。

2、自注意力机制的整体结构

将向量输入到Self-Attention,输出是同等数量的向量,且每一个输出的向量都考虑到了输入序列中所有向量的信息。然后再用全连接网络对每一个向量分别处理。上述过程可以叠加进行多次,全连接网络的处理结果可以作为一个新的输入序列继续输入下一个Self-Attention中。

  • 自注意力机制的核心思想是,对于输入序列中的每个元素,模型都可以动态地计算其与其他元素之间的关联性或重要性,然后使用这些重要性来加权聚合所有元素的信息。
  • 这允许模型在不同时间步关注不同部分的输入序列,从而更好地捕获上下文信息。

3、自注意力计算

 1、生成查询(Query)、键(Key)、和值(Value):

  • 对于输入的序列,首先需要生成三组向量:查询(Q)、键(K)、和值(V)。
  • 这些向量通常是通过线性变换(全连接层)从输入序列中的元素(如词嵌入或特征向量)计算得到。
  • 具体来说,对于每个位置或元素,都有一个查询向量Q、一个键向量K,以及一个值向量V。

 2、计算相似性分数:

  • 接下来,计算查询向量Q与键向量K之间的相似性分数。
  • 通常采用点积(dot product)来计算相似性分数,也可以使用其他可学习的函数。
  • 相似性分数矩阵的维度为(序列长度,序列长度),其中每个元素表示一个查询与一个键的相似性。

 3、应用softmax归一化:

  • 为了获得权重,需要对相似性分数进行 softmax 归一化,使其范围在0到1之间,并且所有元素的和为1。
  • 这将产生一个权重矩阵,其中每行对应于一个查询,每列对应于该查询与所有键之间的权重。

 4、加权值的聚合:

  • 使用权重矩阵将值向量V加权求和,以获得自注意力输出。
  • 对于每个查询,通过将其对应的权重与值向量进行加权求和,得到最终的自注意力输出向量。

 5、输出:

  • 最终的自注意力输出可以用于后续的任务,例如在 Transformer 中,它被用于生成上下文感知的表示,用于机器翻译、文本生成等任务

 6、多头自注意力:

  • 为了增加模型的表示能力,通常会使用多个自注意力头(attention heads),每个头学习不同的关注方式。
  • 每个头都有自己的查询、键和值权重,计算出一组注意力权重和输出。
  • 多头自注意力的输出通常在最后进行拼接或线性变换,以产生最终的表示。

4、自注意力机制的代码实现

import numpy as np

def self_attention(Q, K, V):
    # Step 1: 计算相似性分数
    similarity_scores = np.dot(Q, K.T)
    
    # Step 2: 应用softmax归一化
    attention_weights = softmax(similarity_scores)
    
    # Step 3: 加权值的聚合
    output = np.dot(attention_weights, V)
    
    return output

def softmax(x):
    e_x = np.exp(x - np.max(x))  # Subtracting max(x) for numerical stability
    return e_x / e_x.sum(axis=-1, keepdims=True)

# Example input sequences (query, key, value)
Q = np.array([[1.0, 2.0, 3.0],
              [4.0, 5.0, 6.0]])
K = np.array([[7.0, 8.0, 9.0],
              [10.0, 11.0, 12.0]])
V = np.array([[13.0, 14.0, 15.0],
              [16.0, 17.0, 18.0]])

output = self_attention(Q, K, V)
print(output)

5、Self-Attention和CNN(卷积神经网络)的比较

CNN是简化版的Self-Attention,Self-Attention是复杂版的CNN。

因为在CNN中,仅仅只考虑感受野中的信息,而在Self-Attention中,考虑的是整张图片的信息。换言之,Self-Attention中的感受野是机器自己学习的,CNN的感受野是人为设定的。

如上图所示,数据量小时,CNN效果比较好,数据量大时Self-Attention效果比较好。因为模型的参数越多,那么模型的弹性越大、能力更强,但是在数据量比较少时容易过拟合。而如果模型参数较小,则模型不容易过拟合,但是无法从更多的数据量中学习到有用的信息。所以,在数据量比较少的时候,用参数少的模型好,在数据量比较大的时候,用参数多的模型好。

总结

本周学习了自注意力机制的相关需求和计算,以及了解其与卷积神经网络CNN的比较,同时阅读相关文献,但是对文献的阅读还有不明白的地方,同时对训练的实验数据的参数说明理解还有待学习提高。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值