数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三十、Self-Attention with Relative Position Representations [2018]
递归、卷积、注意力机制以不同的方式纳入关于位置的信息。
RNN
通过hidden state
$ \mathbf{\vec h}_t $ 从而沿着时间维度(通过序列结构)来捕获相对位置和绝对位置。非递归模型不一定按顺序考虑input elements
,因此可能需要显式地编码位置信息,从而能够使用sequence order
。一种常见的方法是使用
position encoding
,它与输入元素相结合,从而将位置信息暴露给模型。这些position encoding
可以是位置的确定性函数、或者learned representation
。CNN
在每个卷积的kernel size
范围内固有地捕获相对位置,然而它们已经被证明仍然受益于position encoding
。对于既不采用卷积、也不采用递归的
Transformer
来说,纳入位置信息的explicit representation
是一个特别重要的考虑,因为该模型完全不受sequence ordering
的影响。因此,atention-based model
已经使用了position encoding
、或基于距离的biased attention weight
。在论文
《Self-Attention with Relative Position Representations》
中,作者提出了一种有效的方法,将relative position representation
纳入Transformer
的自注意力机制中。论文的方法可以被看作是Transformer
的自注意力机制的扩展,其中考虑来自相同输入的任何两个元素之间的任意关系。相关工作:
Self-Attention
:给定输入序列 $ X = \left(\mathbf{\vec x}_1,\cdots,\mathbf{\vec x}_n\right) $ ,其中 $ \mathbf{\vec x}_i\in \mathbb R^{d_x} $ 为第 $ i $ 个元素, $ d_x $ 为元素的维度。self-attention layer
包含 $ H $ 个attention head
,每个head
将输入序列 $ X $ 投影到一个新的序列 $ Z^{(h)} = \left(\mathbf{\vec z}_1^{(h)},\cdots,\mathbf{\vec z}_n^{(h)}\right) $ ,其中 $ \mathbf{\vec z}_i^{(h)}\in \mathbb R^{d_z} $ 是第 $ h $ 个head
得到的第 $ i $ 个元素, $ d_z $ 为元素的维度。 $ \mathbf{\vec z}_i $ 的计算过程为:其中:
$ \mathbf W^Q,\mathbf W^K,\mathbf W^V\in \mathbb R^{d_z\times d_x} $ 为待学习的投影矩阵。
30.1 模型
我们提出对自注意力的扩展,从而考虑输入元素之间的
pairwise relationship
。在这个意义上,我们将input
建模为一个labeled, directed, fully-connected graph
。输入元素 $ \mathbf{\vec x}_i $ 和 $ \mathbf{\vec x}_j $ 之间的边通过向量 $ \mathbf{\vec a}_{i,j}^V, \mathbf{\vec a}_{i,j}^K\in \mathbb R^{d_a} $ 来表达,其中 $ d_a $ 为向量维度(我们使用 $ d_a = d_z $ )。学习两种不同的edge representation
的动机是, $ \mathbf{\vec a}_{i,j}^V, \mathbf{\vec a}_{i,j}^K $ 分别用于以下公式,而无需额外的线性变换:其中:我们分别修改了
$ \mathbf{\vec z}_i $ 和 $ e_{i,j} $ 的公式,从而考虑边信息。edge representation
可以在不同的attention head
之间共享。这个扩展对于一些任务来说可能是很重要的,在这些任务中,一个给定的
attention head
所选择的edget type
的信息对于下游的encoder layer
或decoder layer
是有用的。然而,正如实验部分所探讨的,这对于机器翻译任务来说可能是不必要的。我们通过简单加法纳入
edge representation
的主要动机是为了高效的实现。相对位置信息与两个元素相关,因此相对位置信息在计算
attention
期间加入。而绝对位置信息仅与元素本身有关,因此绝对位置信息在input
期间加入。Relative Position Representation
:由于序列是线性结构,因此edge
可以捕获输入元素之间的relative position difference
的信息。我们所考虑的最大相对位置的绝对值被截断为 $ k $ 。我们假设:精确的相对位置信息在超过一定距离后就没有用了。截断最大距离也使模型能够泛化到训练期间没有看到的序列长度。因此,我们考虑 $ 2k+1 $ 个unique edge label
:然后我们学习
relative position representation
:高效的实现:
由于需要考虑任意两个元素之间的相对位置信息,因此对于长度为
$ n $ 的输入序列,空间复杂度为 $ O(hn^2d_a) $ 。我们通过在每个head
之间共享relative position representation
,将其空间复杂性降低到 $ O(n^2d_a) $ 。此外,还可以跨不同序列来共享relative position representation
。假设batch size
为 $ b $ ,那么一个batch
的自注意力的空间复杂度从 $ O(bhnd_z) $ 增加到 $ O(bhnd_z+n^2d_a) $ 。假设 $ d_a = d_z $ ,那么空间复杂度增加了 $ \frac{n}{bh} $ 倍。考虑到最大相对位置的绝对值被截断为
$ k $ ,因此空间复杂度降低到 $ O(hnkd_a) $ 。对于一个
batch
中的所有序列、head
、position
,Transformer
使用并行的矩阵乘法从而高效地计算self-attention
。在没有relative position representation
的情况下,每个 $ e_{i,j} $ 可以使用 $ bh $ 个并行乘法来实现,每个乘法都是一个 $ n\times d_z $ 的矩阵乘以另一个 $ d_z\times n $ 的矩阵。对于一个特定的head
和序列,每个矩阵乘法计算所有位置的 $ e_{i,j} $ 。这要求每个位置跨不同的函数来共享相同的representation
。即:
$ \mathbf Z = \text{softmax}\left(\frac{(\mathbf W^Q\mathbf X)^\top (\mathbf W^K\mathbf X)}{\sqrt {d_z}}\right) \mathbf W^V\mathbf X $ ,其中 $ \mathbf X\in \mathbb R^{d\times n} $ 为序列中所有输入向量拼接而成。然而在我们的
relative position representation
中,不同position pair
的representation
是不同的。这使得我们无法在一次矩阵乘法中计算所有position pair
的所有 $ e_{i,j} $ 。这可以将 $ e_{i,j} $ 拆分为两部分来解决:第一项与传统的
Transformer
相同,第二项包含relative position representation
。对于第二项,我们可以通过
tensor reshape
从而计算 $ n $ 个并行的矩阵乘法,每个矩阵乘法涉及一个 $ bh\times d_z $ 的矩阵和另一个 $ d_z\times n $ 的矩阵的乘法。每个矩阵乘法计算所有head
和batch
对 $ e_{i,j} $ 的贡献,对应于一个特定的位置。相同的方法可以用于计算
$ \mathbf{\vec z}_i $ 。对于我们的机器翻译实验,结果是steps/second
降低了7%
左右。如果不这么做,可能会降低更多。然而论文没有给出对比数据。
30.2 实验
数据集:
WMT 2014
机器翻译任务。WMT 2014 English-German
数据集,包括大约4.5M
个sentence pair
。2014 WMT English-French
数据集,包括大约36M
个sentence pair
。
配置:
我们使用
32768
大小的word-piece vocabulary
。我们按相近长度对
sentence pair
进行batch
,并将每个batch
的input tokens
和output tokens
限制在4096/GPU
。 每个training batch
包含大约25,000
个source tokens
和25,000
个target tokens
。我们使用
Adam
优化器, $ \beta_1=0.9, \beta_2=0.98, \epsilon = 10^{-9} $ 。对于学习率,我们使用和Transformer
相同的warmup
策略(4k
个step
的预热)和decay
策略。在训练过程中,我们采用了
0.1
的label smoothing
。评估时,我们使用
beam size = 4
的beam search
,惩罚系数为 $ \alpha = 0.6 $ 。对于
base
模型:我们使用了
6
个encoder layer
和6
个decoder layer
, $ d_x=512, d_z = 64 $ ,attention head
数量为8
,feed forward inner-layer
维度为 $ 1024 $ ,以及dropout rate = 0.1
。当使用
relative position encoding
时,我们截断距离为 $ k=16 $ ,并在每个layer
和head
使用unique edge representation
。我们在
8
个K40 GPU
上训练了100k
步,并且没有使用checkpoint averaging
。
于
big
模型:我们使用了
6
个encoder layer
和6
个decoder layer
, $ d_x=1024, d_z = 64 $ ,attention head
为16
,feed forward inner-layer
维度为 $ 4096 $ ,对于EN-DE
数据集使用dropout rate = 0.3
,对于EN-FR
数据集使用dropout rate = 0.1
。当使用
relative position encoding
时,我们截断距离为 $ k=8 $ ,并在每个layer
使用unique edge representation
。我们在
8
个p100 GPU
上训练了300k
步,并对最后20
个checkpoint
进行了平均,每隔10
分钟保存一次checkpoint
。
baseline
:使用正弦position encoding
的Transformer
。实验结果如下表所示,可以看到:
对于
English-to-German
,我们的方法比baseline
分别提高了0.3 BLEU
和1.3 BLEU
。对于
English-to-French
,我们的方法比baseline
分别提高了0.5 BLEU
和0.3 BLEU
。
在我们的实验中,我们没有观察到同时包含
sinusoidal position encoding
和relative position representation
的任何好处(相对于仅包含relative position representation
)。relative position representation
的效果提升不多,并且更难并行化,因此性价比不高?消融实验:这里的所有实验都使用了没有任何
absolute position representation
的base
模型配置。BLEU score
是在newstest2013 WMT English-to-German
任务中使用验证集计算的。我们评估了不同的
$ k $ (距离截断阈值)对模型效果的影响,如下表所示。可以看到,对于 $ k\ge 2 $ ,BLEU score
似乎没有什么变化。由于我们使用多个encoder layer
,精确的relative position
信息可能会传播到距离 $ k $ 之外。我们还评估了是否包含
$ \mathbf{\vec a}^V_{i,j} $ 和 $ \mathbf{\vec a}^K_{i,j} $ 的影响,如下表所示。然而,这里仅代表翻译任务的结果,还需要进一步的工作来确定在其它任务上的结果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论