精华内容
下载资源
问答
  • 这是使用Transformer神经网络架构和Reddit Comments数据集制作的聊天机器人 您可以通过从此处下载数据集后执行一些预处理来训练自己的模型和令牌生成器: : 这是16000个vocab大小的标记器和仅仅一个月的数据的结果...
  • 文章提出一种基于Transformer神经网络的片段连接生成器SyntaLinker。它通过学习现有化合物数据库中大量分子的隐含连接规则来建立生成模型,训练好的模型可根据给定的起始分子片段结构和自定义的连接段(Linker)约束...

    作者 | 杨禹尧

    今天给大家介绍的是生物岛实验室陈红明研究员的团队,联合中山大学药学院药物分子设计中心的徐峻教授,发表在英国皇家化学学会出版的化学核心期刊Chemical Science上的一篇论文。题为“SyntaLinker: Automatic Fragment Linking with Deep Conditional Transformer Neural Networks”。文章提出一种基于Transformer神经网络的片段连接生成器SyntaLinker。它通过学习现有化合物数据库中大量分子的隐含连接规则来建立生成模型,训练好的模型可根据给定的起始分子片段结构和自定义的连接段(Linker)约束条件,自动生成大量符合约束条件且结构多样的分子。

    1

    研究背景

    高通量筛选(HTS,High-throughputScreening)和组合化学(CC, Combinatorial Chemistry)等新兴技术的兴起,使得药物发现由过去的随机筛选逐渐变得系统化。这些方法能显著提高药物的研发速度,缩短新药研发进程,但是高昂的筛选费用也加重了小型药物开发企业和科研单位的研究负担。因此,越来越多的研究人员将目光聚集在基于片段的药物设计(FBDD, Fragment-baseddrug design)中。相较于传统的药物设计方法,FBDD从小分子片段出发,极大的缩小了所需的筛选化合物库的规模,规避了分子的不良ADMET属性,同时可增强设计结构的多样性。此外,FBDD对于困难靶标的药物设计有着潜在的优势,已经在小型药物开发企业和科研单位逐渐发展为主流药物设计方法。

    众所周知,一个成功的FBDD设计案例,有两个关键的制约点:(1)活性片段的识别;(2)活性片段合理“生长”并优化成先导化合物。幸运的是,NMR、SPR,X-ray、虚拟筛选等多种实验或计算的方法已经大大简化了片段识别的工作难度。而如何对已知的活性片段进行扩展,形成最终的先导化合物依旧是一个具有挑战的工作。常见的扩展片段的策略有三种:片段生长(growing)、片段融合(merging)及片段连接(linking)。其中,片段连接策略在理论上具有更大的潜在优势,它通过连接多个弱活性片段,维持这些片段与靶标蛋白的结合模式不变,从而获得良好的配体结合效率(LE,ligand efficiency)。此外,它甚至可能产生一些附加效应(additive binding potency),使设计出的分子具有更大的活性潜力。这些潜在的优势同时也使得片段连接极具挑战性,已有的成功的实验案例也鲜有报道。因此,开发基于片段连接的新型计算方法,将有助于提高片段连接实验的成功率。

    2

    研究方法

    2.1.数据

    已有的片段连接实际案例鲜有报道,作者利用切割算法人为构造了所需的片段-分子对作为训练数据。采用分子对匹配算法(MMPs, Matched Molecular Pairs)的切割方式,将一个分子拆解成两个终端片段和一个连接段,同时加上一些合理的筛选条件,使得产生的片段-分子对更加合理。作者最终共计从ChEMBL数据库中提取出了70多万条隐含的分子连接数据。

    2.2模型

    作者的目的是实现给定起始终端片段和自定义连接段约束条件的情况下,模型能生成大批符合要求且结构多样的类药性分子。因此,作者将这一问题类比成自然语言处理(NLP)中的完成句子(Sentence Completion)任务,借鉴神经机器翻译(Transformer)模型,构建了深度条件生成模型SyntaLinker。SyntaLinker包含两种类型的约束,即连接段最短键长(SLBD)和药效团等多重混合约束,用户可以根据特定靶点蛋白口袋的具体信息,定义合理的约束条件,生成预期的分子。

    3

    研究结果

    3.1 模型表现

    作者为了考察SyntaLinker的生成结果,首先分析了模型的基本评价指标:有效率、新颖度均高于90%,复现率和独特性均不低于80%;接着统计了生成分子的属性分布,证实绝大多数分子符合类药性原则;最后,重点探究了约束条件的控制能力,通过比对分析,发现约束条件的引入起到了很好的控制作用,使模型按照用户定义的约束条件生成分子结构。

    3.2 模型可视化

    SyntaLinker的本质是多层注意力(Attention)网络,作者用一个真实的训练案例,将SyntaLinker的学习过程,通过注意力的权重分布,以热点图的形式展示出来。

    可以发现,模型实质上首先识别终端片段的信息,并在生成的分子中将这些信息重排。其次,模型结合约束条件和起始片段上下文信息,在连接点“.”处结合,逐步填充连接段。两个终端片段最终被连接在一起,生成了一个输出分子。

    3.3 案例分析

    最后,作者结合三个真实的研究案例,验证了SyntaLinker可以被成功的用于片段连接、先导化合物优化、骨架跃迁等多个药物设计问题中。

    在片段连接和先导化合物优化案例中,通过约束SLBD的大小或解构-重构的方式,SyntaLinker成功复现了原始先导化合物,同时也产生了一批具有较高对接分值(docking score)且结构多样的潜在活性候选分子。而在骨架跃迁案例中,SyntaLinker也可以产生和原始配体三维形状相似度较高的多种不同骨架的类药性分子。

    4

    结论

    在这项工作中,作者提出了一种新的深度生成模型SyntaLinker,用于进行片段连接。与早先报道的使用图卷积神经网络的方法(DeLinker)相比,我们的方法仅在二维结构上进行训练,不需要搜索三维构象数据库和复杂的构象分析。这种新颖的条件Transformer神经网络架构,通过学习给定起始片段对的结构信息来生成化合物。简单地将起始片段之间的连接点的最短键长距离设置为约束条件,可以获得满足约束的大量新颖的候选化合物。作者通过大量分析证明,这种生成模型能够学习和推断与预定义约束条件匹配的新颖连接片段。此外,作者还建立了具有多重药效团约束的模型,以进行更精确的连接片段设计。更重要的是,通过几个案例研究示例,证明了这种方法可以应用于片段连接,先导物优化和骨架跃迁等多种药物设计任务。大多数生成的分子具有比原始先导化合物更好的对接分数,同时能保持与原有片段相似的结合模式,并与PDB晶体结构中的原始配体构象具有高度三维形状相似性。我们期望SyntaLinker可以成为进行基于片段的药物设计或者骨架跃迁的一个有用工具,给化学家提供更多的启发性化学结构。

    代码

    https://github.com/YuYaoYang2333/SyntaLinker

    参考资料

    Yang, Yuyao & Zheng, Shuangjia & Su, Shimin & Zhao, Chao & Xu, Jun & Chen, Hongming. (2020). SyntaLinker: Automatic Fragment Linking with Deep Conditional Transformer Neural Networks. Chemical Science. 10.1039/D0SC03126G.

    展开全文
  • 今天给大家介绍的是生物岛实验室陈红明研究员的团队,联合中山大学药学院药物...题为“SyntaLinker: Automatic Fragment Linking with Deep Conditional Transformer Neural Networks”。文章提出一种基于Transfo...

    今天给大家介绍的是生物岛实验室陈红明研究员的团队,联合中山大学药学院药物分子设计中心的徐峻教授,发表在英国皇家化学学会出版的化学核心期刊Chemical Science上的一篇论文。题为“SyntaLinker: Automatic Fragment Linking with Deep Conditional Transformer Neural Networks”。文章提出一种基于Transformer神经网络的片段连接生成器SyntaLinker。它通过学习现有化合物数据库中大量分子的隐含连接规则来建立生成模型,训练好的模型可根据给定的起始分子片段结构和自定义的连接段(Linker)约束条件,自动生成大量符合约束条件且结构多样的分子。

    499c5eda494913a746573bbaa73a59c5.png

    1.研究背景

    高通量筛选(HTS,High-throughputScreening)和组合化学(CC, Combinatorial Chemistry)等新兴技术的兴起,使得药物发现由过去的随机筛选逐渐变得系统化。这些方法能显著提高药物的研发速度,缩短新药研发进程,但是高昂的筛选费用也加重了小型药物开发企业和科研单位的研究负担。因此,越来越多的研究人员将目光聚集在基于片段的药物设计(FBDD, Fragment-baseddrug design)中。相较于传统的药物设计方法,FBDD从小分子片段出发,极大的缩小了所需的筛选化合物库的规模,规避了分子的不良ADMET属性,同时可增强设计结构的多样性。此外,FBDD对于困难靶标的药物设计有着潜在的优势,已经在小型药物开发企业和科研单位逐渐发展为主流药物设计方法。

    众所周知,一个成功的FBDD设计案例,有两个关键的制约点:(1)活性片段的识别;(2)活性片段合理“生长”并优化成先导化合物。幸运的是,NMR、SPR,X-ray、虚拟筛选等多种实验或计算的方法已经大大简化了片段识别的工作难度。而如何对已知的活性片段进行扩展,形成最终的先导化合物依旧是一个具有挑战的工作。常见的扩展片段的策略有三种:片段生长(growing)、片段融合(merging)及片段连接(linking)。其中,片段连接策略在理论上具有更大的潜在优势,它通过连接多个弱活性片段,维持这些片段与靶标蛋白的结合模式不变,从而获得良好的配体结合效率(LE,ligand efficiency)。此外,它甚至可能产生一些附加效应(additive binding potency),使设计出的分子具有更大的活性潜力。这些潜在的优势同时也使得片段连接极具挑战性,已有的成功的实验案例也鲜有报道。因此,开发基于片段连接的新型计算方法,将有助于提高片段连接实验的成功率。

    dc9910c9af2f6a4f122adb18f780e6d0.png

    2.研究方法

    2.1.数据

    已有的片段连接实际案例鲜有报道,作者利用切割算法人为构造了所需的片段-分子对作为训练数据。采用分子对匹配算法(MMPs, Matched Molecular Pairs)的切割方式,将一个分子拆解成两个终端片段和一个连接段,同时加上一些合理的筛选条件,使得产生的片段-分子对更加合理。作者最终共计从ChEMBL数据库中提取出了70多万条隐含的分子连接数据。

    47c9bb93d6514436c78144ca8012dcbc.png

    2.2模型

    作者的目的是实现给定起始终端片段和自定义连接段约束条件的情况下,模型能生成大批符合要求且结构多样的类药性分子。因此,作者将这一问题类比成自然语言处理(NLP)中的完成句子(Sentence Completion)任务,借鉴神经机器翻译(Transformer)模型,构建了深度条件生成模型SyntaLinker。SyntaLinker包含两种类型的约束,即连接段最短键长(SLBD)和药效团等多重混合约束,用户可以根据特定靶点蛋白口袋的具体信息,定义合理的约束条件,生成预期的分子。

    a53d0ff37f5e443eb9776a03bb9e4ed9.png

    3.研究结果

    3.1 模型表现

    作者为了考察SyntaLinker的生成结果,首先分析了模型的基本评价指标:有效率、新颖度均高于90%,复现率和独特性均不低于80%;接着统计了生成分子的属性分布,证实绝大多数分子符合类药性原则;最后,重点探究了约束条件的控制能力,通过比对分析,发现约束条件的引入起到了很好的控制作用,使模型按照用户定义的约束条件生成分子结构。

    53b7aebac97adca9ae304dd0d1f2a8f3.png

    3.2 模型可视化

    SyntaLinker的本质是多层注意力(Attention)网络,作者用一个真实的训练案例,将SyntaLinker的学习过程,通过注意力的权重分布,以热点图的形式展示出来。

    3d37eb8e000a5d813329c18d5b33d9b8.png

    可以发现,模型实质上首先识别终端片段的信息,并在生成的分子中将这些信息重排。其次,模型结合约束条件和起始片段上下文信息,在连接点“.”处结合,逐步填充连接段。两个终端片段最终被连接在一起,生成了一个输出分子。

    3.3 案例分析

    最后,作者结合三个真实的研究案例,验证了SyntaLinker可以被成功的用于片段连接、先导化合物优化、骨架跃迁等多个药物设计问题中。

    f9459b5e7503671cc90f7223e0bed4b8.png

    在片段连接和先导化合物优化案例中,通过约束SLBD的大小或解构-重构的方式,SyntaLinker成功复现了原始先导化合物,同时也产生了一批具有较高对接分值(docking score)且结构多样的潜在活性候选分子。而在骨架跃迁案例中,SyntaLinker也可以产生和原始配体三维形状相似度较高的多种不同骨架的类药性分子。

    4.结论

    在这项工作中,作者提出了一种新的深度生成模型SyntaLinker,用于进行片段连接。与早先报道的使用图卷积神经网络的方法(DeLinker)相比,我们的方法仅在二维结构上进行训练,不需要搜索三维构象数据库和复杂的构象分析。这种新颖的条件Transformer神经网络架构,通过学习给定起始片段对的结构信息来生成化合物。简单地将起始片段之间的连接点的最短键长距离设置为约束条件,可以获得满足约束的大量新颖的候选化合物。作者通过大量分析证明,这种生成模型能够学习和推断与预定义约束条件匹配的新颖连接片段。此外,作者还建立了具有多重药效团约束的模型,以进行更精确的连接片段设计。更重要的是,通过几个案例研究示例,证明了这种方法可以应用于片段连接,先导物优化和骨架跃迁等多种药物设计任务。大多数生成的分子具有比原始先导化合物更好的对接分数,同时能保持与原有片段相似的结合模式,并与PDB晶体结构中的原始配体构象具有高度三维形状相似性。我们期望SyntaLinker可以成为进行基于片段的药物设计或者骨架跃迁的一个有用工具,给化学家提供更多的启发性化学结构。

    代码

    https://github.com/YuYaoYang2333/SyntaLinker

    参考资料

    Yang, Yuyao & Zheng, Shuangjia & Su, Shimin & Zhao, Chao & Xu, Jun & Chen, Hongming. (2020). SyntaLinker: Automatic Fragment Linking with Deep Conditional Transformer Neural Networks. Chemical Science. 10.1039/D0SC03126G.

    展开全文
  • 本课程将详细讲解 Transformer 新型神经网络及其在机器翻译中的应用,并从工业实践和评测竞赛的角度更全面的展现其实用价值。 本场 Chat 主要内容: 神经网络翻译架构; Transformer 新型网络结构解析; 基于 ...

    随着深度学习技术的发展,基于神经网络的机器翻译系统已成为业界的主流系统。本课程将详细讲解 Transformer 新型神经网络及其在机器翻译中的应用,并从工业实践和评测竞赛的角度更全面的展现其实用价值。

    本场 Chat 主要内容:

    1. 神经网络翻译架构;
    2. Transformer 新型网络结构解析;
    3. 基于 Transformer 的机器翻译系统;
    4. Transformer 在阿里翻译中的工业化实践。

    报名地址:

    https://edu.csdn.net/huiyiCourse/detail/822


    作者简介:于恒,现为阿里巴巴-翻译平台-翻译模型组负责人。

    中科院计算所博士,研究方向是机器翻译,在自然语言处理和人工智能领域顶级国际会议 ACL、EMNLP、COLING 等发表多篇论文。曾在三星中国研究院和搜狗负责机器翻译工作,参与上线搜狗翻译和搜狗海外搜索等产品。

    目前在阿里翻译平台组担任 Tech-leader,主持上线了阿里神经网络翻译系统,为阿里巴巴国际化战略提供丰富的语言支持。

    前言

    关注AI的同学最近应该会看到,机器翻译是一个比较活跃的领域,很多大公司都争先推出了自己的机器翻译服务,包括还有一些机器翻译的硬件已经在市场上投放,比如翻译笔。

    产业的兴旺离不开背后技术的巨大进步,从今天的课程当中,我会给大家介绍背后技术的神秘面纱,然后对 Transformer 这个神经网络做深入的解析。

    enter image description here

    神经网络机器翻翻译是目前比较主流的机器翻译方法,它是 “ Sequence to Sequence ” model,也就是端到端的翻译框架。

    如左图所示,我们输入一个待翻译的句子,通过神经网络编码器,去把这个句子的信息编码成中间状态,就是这个图中红色的部分,它用数值的隐层来表示。

    经过中间状态、经过神经网络解码器去生成对应的翻译,是编码、解码的过程。翻译的知识和参数都是由神经网络自动进行学习的,它省去了之前传统方法之前的人工干预模块,使整个翻译过程统一化,并且简洁。

    随着深度学习发展带来的红利,这个翻译模型的性能有显著提升。如右图所示,这是谷歌翻译当时 Release 的数据,传统的是基于短语的翻译系统,翻译的性能远低于基于神经网络的翻译,就是那根绿色的线。

    并且神经网络的翻译在某些语项上是接近人类的水平。我们还可以注意到,在 “ 英语到西语 ”、“ 英语到法语 ”,同样是拉丁语系的翻译上,神经网络的翻译和 human 的 gap 比较小,在 “ 英语到汉语 ” 这两者语言差异比较大的、翻译难度大的语种上 gap 比较大,所以神经网络仍然有比较大的进步空间。这是目前神经网络目前翻译的总体质量情况。

    enter image description here

    它背后的技术是怎样呢?

    从这个图可以大概看出来传统的基于 RNN 的 “ Sequece to Sequence ” model 是怎么运行的,这个例子是一个 “ 英文到中文 ” 的翻译,英文 “ Economic growth has slowed down in recent years ” 通过这个循环的 RNN 神经网络去逐词读入源端的句子,最终把它编码成红色那个点隐层的信息,根据这个隐层的信息输入到另外一个目标端的循环神经网络,然后逐词生成中文的翻译 “ 近几年经济发展变慢了。 ” 这里的是一个句子结束符的表示,生成的过程在句子末尾添加这样一个标志表示翻译过程结束了。

    传统的 RNN 神经网络结构是可以处理任意长度的输入,它非常适合于自然语言的建模,所以它在一段时间内占据了整个神经网络中的主流。随着学术的发展,我们也会看到 RNN 有些不足。

    它的缺点主要有两点:

    第一点,RNN 序列的特性导致其非常难以并行化,从上图可以看出,如果把 RNN 展开来是一个序列型的网络,比如我要得到 X4 的结果时,必须先计算出 X0 - X3 的结果,这样的串行关系使它的并行度非常低。举一个例子,谷歌的 GNMT 的神经网络系统,它是需要 96 块 GPU 卡训练一周的时间才能完成一个模型的训练。

    96 块 GPU 卡对于一个研究机构或者小公司来说是个巨大的开销,基本是负担不起的,并且还要训练一周的时间,所以 RNN 特性使整体模型训练速度非常慢、成本非常高。

    enter image description here

    另外在 RNN 训练中,RNN 的网络结构对于长距离和层级化的依赖关系难以建立,比如句法信息、指代信息的关系,由于它只是一个单一的序列 ,所以它很难对这些关系进行建模。举个例子,“ The dog didn’t cross street because it was too tired ”,当我们看到 “ tired ” 的时候知道这个 it 指dog 。

    如果把最后一个词换了,“ The dog didn’t cross street because it was too wide ”,这时候如果是人看了这句话就很容易发现 it 指的是street,因为 street because it was wide,不可能是 dog too wide。

    对于人来说很简单,但是机器要分清楚指代关系是非常难的。如果将这个句子翻译成法文或者德文的话,法文、德文对于 dog 和 street 翻译所用的格是不一样的。

    所以在 GNMT 或者传统的翻译处理中,这些 case 时基本是做不对的,如果做对了可能也是蒙的,这是 RNN 一个比较显著的局限性。

    enter image description here

    基于以上 RNN 的缺陷,我们肯定希望有更好的神经网络去代替它。

    我们期望是这样的:第一,它是可以高度并行化的网络。RNN 的特点导致我们要抛弃 RNN 的结构,实现速度成倍的提升。

    并且我们需要能够捕捉层次化的信息,就需要建立一个很深层的神经网络,而不是单层的一个序列的 LSTM 的网络。并且我们需要能够对指代信息丰富的上下文进行建模,这需要 Self-Attention、Multi-head Attention 这样的技术。

    左边这个演示的是 Transformer 整体的训练过程,在 Encoding 的部分简单可以看到,每个词是很并行化处理的过程。在 Encoding 之后 Decoding 是根据深层神经网络当中的输入不断逐词解码,最终生成翻译。

    这引出我们今天讲座的主题,将会分四个部分对 Transformer 进行解析:

    • 第一,对网络结构进行解析。
    • 第二,对在机器翻译中的应用进行介绍。
    • 第三,因为我是从阿里翻译过来的,所以我会从工业实践的角度对 Transformer 进行介绍。

    我们最近参加了 WMT2018 全球机器翻译评测,拿到了比较好的结果,最后,我从评测的结果对 Transformer 的表现进行分析。

    enter image description here

    一、对网络结构进行解析

    Transformer 这个网络命名,Transformer 在英文翻译过来有变形金刚的意思,我想当时作者也是希望借助强大的变形金刚赋予这个网络更强的力量。

    enter image description here

    如果我们用放大镜高维度解析这个网络,拆开之后它仍然是 “ Sequence to Sequence ” 框架进行的,它分 Encoder 和 Decoder 两部分。我们再进一步细化的话,这个图包含很多信息。

    首先,我们看到 Encoder 有 6 层,Decoder 也有 6 层,为什么要有多个层?从 Encoder 的角度,低层的 Encoder 是表层的词法信息,逐步向上进行抽象之后,在上层将表示抽象语义信息。

    Encoder 部分还在最上层连了几条线到每个 Encoder 的部分,这就是刚才谈到 Attention 的部分,Decoder 的网络中和 Encoder 也有信息传递和交互的。最后一个特点是 Decoder 和 Encoder 画的大小是一样的,因为它们层的维度大小是一样的。这个图表达了以上这些信息。

    enter image description here

    多层的神经网络结构能够对句子层级化信息进行建模,如果我们更精细的去看每一层的结构,就会发现这样的情况:Encode 分两个子网络部分,第一个是 Self-Attention,第二个部分是 Feed Forward,大家比较熟悉,就是传统的前馈神经网络,我们摒弃了传统的并行化比较低,而且比较简单且高度并行化的前馈神经网络。

    Self-Attention 是自注意力机制层,表征句子当中不同位置词之间的关系,是我们前面提到的 it 和 street 或 dog 之间的依赖关系。

    Decoder 层比 Encoder 层多一个子网络,就是 Encoder-Decoder Attention,它是源端到目标端的注意力机制,对源端词到目标端的助理机制,不是源端到目标端词的依赖关系,用到翻译里是说这个源端待翻译的词和源端生成翻译词之间的依赖关系。

    enter image description here

    我们如果进一步对 Encoder 部分进行细化,它长成这样。我们输入代翻译词是 “ Thinking Machines ”,先会去查找这两个词分别表示成词向量的形式,再经过 Self-Attention 层得到 Attention 的输出,再经过 Feed Forward 自动生成 Encoder1 的输出,Encoder1 的输出作为 Encoder2 的输入,这样以此类推,6 层一直拼到上面去。

    在整个 Encoder 网络中,Feed Forward 是大家比较熟悉的部分,但应该大多数观众的情况并不太了解 Attention,因为它是神经网络机器翻译中提出的概念,在其他的网络这种概念并不常见。

    enter image description here

    下面我们对 Attention 这个概念给大家进行进一步剖析,什么是 Attention?从语言学的角度,它是表示词与词之间的关联关系,像下图所示,这是一个 Self-Attention 的示意,它这个 it 会和其他位置的词发生关系,颜色越深的是说关系越紧密,从中图中看到它很正确的关联到了 animal 它实际指代的一个词。

    enter image description here

    从机器学习的角度,这个 Attention 是神经网络隐层之间一个相似度的表示,什么是 Self-Attention?就是表示句子内部词与词之间的关联关系,就像这里的 it 到 animal,可以用于指代消解等问题。什么是 “ Encoder-Decoder Attention ”?

    就是编码序列和解码中词与词的关联关系,以机器翻译为例,它是表征翻译中源端到目标端可能互译词之间的对应关系。这个也比较好理解,比如你在翻译一个词的时候,源端每个词的贡献度是不一样的,它表示这种不同的注意力的关系。

    传统的 Attention,就是 RNN、LSTM 网络中也是有 Attention 的,但是 Attention 的计算方式是相对简单的,蓝色是编码器的序列,红色是解码器的序列,当解码器序列当中的一个隐层是 Attention 的时候,它会这个层与 Encoder 每个层之间的相似度,然后通过这个相似度作为位置对 Encoder 每一层进行加权,生成 Ct,Ct 就是整个 Attention 的输入。这是一个比较简单的 Attention 计算,但是它的表现能力是非常有限的。

    enter image description here

    我们在 Transformer 中提出一种扩展性更高、并行度更高的 Attention 计算方式,它把 Attention 看作一个基于内容的查询的过程,content based query,它会设置 3 个 vector:Query Vector、Key Vector、Value Vector。

    并且每一个 Vector 都是通过它的 input embedding 和权重的矩阵相乘得到的。我们利用这个 Q、K、V 进行各种数值的计算,最终得到 Attention score。这个计算过程是相对复杂的。

    enter image description here

    我们用一个例子来给大家演示一下具体的 Attention 是怎么计算的。如果我们计算 “ Thinking ” 这个词,用 Self-Attention 的话,首先会用它的 Query Vector 乘以 K 的向量,如果计算和第二个位置的 attention 是乘以 T2 的矩阵得到一个 score,这个 score 再去和它维度的平根根进行相除,这个相除有数学上的含义,能够使它回传的梯度更加稳定,除完后得到一个数值进行 softmax,所有 Attention 都是正数并且相加之和等于 1,这是从数学正确上考虑,并且最终得到概率这个值是去定义每一个词在当前位置的表现力。

    Softmax 之后,我们会用 softmax 得到的乘以它 Value 的矩阵,这样实际得到 Attention 的值,最后会把不同位置得到 Attention 的 score 加到一起,形成当前位置 Attention 的 Vector,就是 Z1,加上逐词计算的话就得到所有位置的 Attention。

    enter image description here

    刚才说到的是一个基于向量之间的运算,但是根据提到 Transformer 系统是一个高度并行化的系统,所以我们有一个很好的并行策略,就是基于将 Vector 计算变成基于矩阵的运算,因为我们在 Encoder 时所有的词都是并行计算,我们把所有词的词响亮拼在一起形成矩阵,用这个矩阵和它的 Q、K、V 的权重矩阵进行相乘,方便得到 Q、K、V 矩阵,Q、K、V 矩阵用一个公式表示数值操作,就得到 Attention 的矩阵,这是一个高度并行化的操作,可以通过一步运算直接完成的,这个在 GPU 上很容易、速度很快。

    enter image description here

    这是 Attention 的一种计算方法,我们对计算方法进行了拓展,提出了 “ Multi-head Attention ” 的方式,就是 “ 多头 ” Attention,我们设置多个 Q、K、V 矩阵和它实际值的矩阵。它这样设计是有两种好处,第一种好处是它的可训练参数更多,能提升模型能力,去考虑到不同位置的 Attention,另一个好处是对于这个 Attention 赋予了多个子空间。

    这个从机器学习的角度来说,首先参数变多了,拟合数据的能力变强了。从语言学是这样的,不同的子空间可以表示不一样的关联关系,比如一个子空间是表示指代的 Attention,另一个子空间可以表示依存的 Attention,另一个子空间表示其他句法信息的 Attention,它能够综合表示各种各样的位置之间的关联关系,这样极大的提升了 Attention 的表现能力,这是传统的 RNN、LSTM 系统当中所不具备的,也是最终实验时会对性能有巨大影响的一个工作。

    enter image description here

    举个例子,比如我们有 8 个 “ Multi-head Attention ”,输入一个 “ X ” 会计算出 8 个权重 Attention 输出的矩阵。那这 8 个矩阵怎么用呢?我们还需要把 8 个矩阵拼起来,然后用一个降维矩阵对它进行矩阵操作,把它压缩到一个我们能够相对接受的大小,对于信息进行压缩,这样可以避免后面矩阵操作维度过大导致整个开销比较大。所以它最终会压缩到一个比较小的维度。

    enter image description here

    enter image description here

    以上就是 Transformer 当中 Attention 机制的计算,从 Big picture 来看,它分几个部分:第一个部分是我们找到输入的句子,第二个部分去生成它的词向量的表示,并把它拼在一起,拼成 matrices,这个 matrices 去和 Q、K、V 的权重矩阵进行数值运算,得到 Q、K、V 三个矩阵的数值,三个矩阵的数值通过之前的公式得到 Multi-head Attention 的值,Multi-head Attention 拼在一起,通过一个降维矩阵,最终压缩到我们觉得比较合适的一个维度,来作为 Attention 子网络的输出。

    enter image description here

    以上是 Attention 的主要内容,当然,Transformer 还有其他的网络,也可以给大家介绍一下。“ Positional Encoding ” 是对于这个序列中每一个位置进行建模。刚刚提到完全并行的矩阵操作时,大家可能会有一个疑问:这个不是一种指代模型吗?之间位置不考虑了,但不同位置在翻译中是很重要的关系,就是哪个词在哪个词前面,前后关系有非常大的意义。

    我们通过这个 “ Positional Encoding ” 去对位置进行建模。具体的时间、方法,我们对每一个词的 embedding 会加一个基于位置的 embedding,S1 会加一个 T1,这个 T1 是和它的位置相关,位置就是编码第 0 个位置、第1个位置,依次打下去。这个 T 是根据这个公式计算的,这个公式是数学上选择比较好的一个公式,并且它和实际的 Position 是相关的。

    举个例子,如图所示,这个三个词的句子,每个位置的 position Encoding 的数值大概是这样的,它通过这个数值加到原始的 embedding 上面,使这个 embedding 天然具有了它的位置的信息,在后面建模过程中我们会考虑每个词位置的信息。

    enter image description here

    enter image description here

    另外一个是直连层网络 “ Residual connection ”,了解的同学知道 “ Residual connection ” 是对于较为深层的神经网络有比较好的作用,比如网络层很深时,数值的传播随着 weight 不断的减弱,“ Residual connection ” 是从输入的部分,就是图中虚线的部分,实际连到它输出层的部分,把输入的信息原封不动 copy 到输出的部分,减少信息的损失。

    “ layer-normalization ” 这种归一化层是为了防止在某些层中由于某些位置过大或者过小导致数值过大或过小,对神经网络梯度回传时有训练的问题,保证训练的稳定性,这是神经网络设计当中两个比较常用的 case,基本在每个子网络后面都要加上 “ layer-normalization ”、加上 “ Residual connection ”,加上这两个部分能够使深层神经网络训练更加顺利。这是另一个主要的细节。

    enter image description here

    小结一下,刚才对神经网络做了比较详细的解释,它如下图所示,图里面画了两层的 Encoder 和 Decoder,曾底层的词的输入到 embedding 的输入,X1、X2,加上 “ Positional Encoding ” 的输入,输入到第一个 Encoder 当中,经过 self-Attention 层,直连的 “ Residual connection ” 和归一化层,得到的输出再去输入到前馈神经网络中,前馈神经网络出来之后再经过直连层和归一化层,这样就完成了一个 Encoder 部分,再以这个输入到第二个 Encoder 之后,它会把第二个 Encoder 的输出作为第一个 Decoder 的输入,也是依次进行上面的过程。

    这个图中有一个细节需要大家注意,目标端的 Attention 注意力机制是一个 masked 注意力机制,为什么?比如在机器翻译当中,在源端能够看到所有的词,但如果你目标端生成翻译时是自左上右,生成翻译时能够看到前面已经生成词的信息,看不到后面层的,这是目标端 Attention 和源端 Attention 比较大的区别,所以在目标端所有的 Attention 都是加 Masked 的,这个 Masked 相当于把后面不该看到的信息屏蔽掉,这是 Transformer network 的小结。

    二、基于 Transformer 的机器翻译系统

    enter image description here

    Transformer 的网络是怎么用到机器翻译里的?Encoder 端是源端的法语句子,目标端是英语的句子,随着时序的不断进行,每次生成一个词的翻译,最终它会生成一个 的符号,这个符号表示整个解码过程结束了。

    enter image description here

    它是怎么生成每一个词的翻译呢?因为我们知道 Decoder 最上层的输入也是一个隐层,是 2048 或者 1024 的隐层。那么这个隐层是怎么对应到输出的那个词呢?后面的网络是这样的。

    首先,我们对每种语言会有一个固定的词表,比如这个语言到底有多少个词,比如中文里有 2 万词、3 万词、5 万词。对网络隐层会先过一个线性的投射层,去把它投射到一个词表大小的向量维度,形成一个词表大小向量,我们在这个向量基础上做 softmax,把它转成概率。譬如是 3 万的词,去选取里面概率最大的那个词作为我们实际的输出,这里面第五位是最大的,它会输出一个 am,这样就达到了通过 Encoder 输出隐层来去实际生成一个词翻译的效果。

    enter image description here

    另外一个部分是神经网络优化目标,在神经网络训练的过程中是需要平行语料的,所谓平行语料是源端和目标端都需要有。我们训练的目标是使神经网络生成这个翻译的概率分布尽量去贴合实际参考答案的概率分布。

    右边这个图我们希望它生成的概率分布,对于那个句子在第一个 Position 的时候希望i的概率是最大的,第二个希望 am 是最大的,以此类推。但这是训练好的,一开始训练时是随机处理化的概率分布,经过几千万句子的不断训练,会得到这样一个比较好的分布。

    enter image description here

    它的训练优化目标是概率的交叉熵 cross entropy,以 cross entropy 作为梯度更新的优化目标。(上图)左边这个图优化目标的 loss 相当于它训练的轮数,因为是 entropy,所以是稳定下降的过程。

    相应的,翻译的评价目标 Bleu 值是匹配度加权的分数,Bleu 值越高越好,它随着训练过程的进行会有一个逐步向上升的过程。训练的优化目标就是这样的,通过交叉熵的优化来达到 Bleu,就能翻译效果优化的过程。

    我们看看 Transformer 的结果是什么样的,回到最开始的例子,用 Trans 网络对于句子的 Attention 进行了分析。得到了比较有意思的结果,(下图)左边这个句子,当最后一个词是 too tired 的时候,it 所对应到的注意力机制最多的部分是 animal,这是它对应到正确的部分,如果最后一个词是 wide 的时候它对到 street 是最多的。

    这样就非常有意思,Attention 其实确实能够建模到比较难的指代消解问题,这也是比较好的,超越之前 RNN 和 STLM 的,就是 Attention 表示能力更强。

    enter image description here

    (上图)右边这个表是列出谷歌公布的数据,基于 RNN 的 GNMT 和 Transformer 的比较,在 bleu 值上 Transformer 有比较明显的提升,并且它在训练的时间上面只需要 8 块 GPU 卡,训练 4.5 天就可以达到一个比较好的模型,而传统的基于 RNN 需要 90 块 GPU卡训练 6 天才,效果还不如 Transformer 的翻译系统。这相比原来的 RNN 有一个非常显著的提升,是目前工业界、学术界对于机器翻译来说最好的智能网络。

    enter image description here

    刚才对 Transformer 有了详尽的介绍,下面说一下 Transformer 在阿里翻译当中的表现。

    三、Transformer 在阿里翻译中的工业化实践

    刚刚提到工业化实践,最大的一个问题是大数据,传统的实验室环境是几十万、几百万的语料,但对阿里这样大规模电商场景的机器翻译是需要很多语料的,需要上亿平行语料的训练,但对这么多平行语料用单 GPU 卡训练非常慢,基本是训不出来的。

    第一个需要解决如何使用分布式训练,就是多机多卡的方式来去训练 Transformer。但是 Transformer 的特点是对于训练超参数非常敏感的网络,我们当时尝试了各种各样的训练方法,试了异步梯度更新、同步梯度更新等不同的分布式训练策略。我们最终发现是基于同步的 Adam,对于多机多卡是得到性能最稳定的一个更新方式。

    这种方式在谷歌开源的那个 Transformer 系统和其他比较开源的 Transformer 系统中,大多数都是用这样的方式来进行多机多卡训练的。这个背后理论上也没有很好的解释为什么这个对于 Transformer 是更好的,主要是通过大量的实验去得到的一个结果,大家如果有多机多卡的训练需求,最好考虑基于同步梯度更新的 Adam 算法。

    enter image description here

    另外一个是跟机器翻译很相关的问题,通常 GPU 显存有固定的大小,比较差的卡是 4 个 G、几个 G,好的卡可能有 12 个 G、24 个 G。对于 Transformer 而言,有些人做过实验,你如果训练时开更大 Batch size,训练的效果会更好。

    这就带来一个问题,你如果想开大的 Batch size 的话,一个句子里面的长度就会很有限,因为你显存就那么大。假设长度设成 40 的话,那我 Batch 能开 400 或者 500,如果我要开到 800 Batch 的话,能容纳的句子长度就会变小。这是一个搏弈的问题,因为硬件的限制导致你不得不做这个 Tradeoff。

    之前我们在 TensorFlow 低版本的时候都是不支持,只能用刚刚的方法。但是从 tensorflow1.5 以后,它引入了一个 “ Dynamic Batching ” 的机制,这是 tensorflow 的更新带来的变化,它会把原来写死的固定长度的图,用图中循环的方式表述,这样它可以支持动态的计算图,了解 tensorflow 的同学会比较清楚。

    通过用了这种机制之后,我们可以动态的改变这个 batch size,好处是当我们训练这个句长比较长的时候,就可以动态的把 batch size 缩小 。

    这样可以在训练的时候覆盖更长的句子,长的句子在翻译的案例中都有,比如电商描述或者新闻都有很长的句子,这样我们就能得到更多的训练语料,训练语料使用更加充分,对我们生产时性能得到很大的提升。

    另外一个是 “ Moving average ” 机制,这个可能也是比较专业的一个说法,它能保证训练的稳定性。

    它主要的做法是,在训练比如 5000 个保持一个模型,中间模型有一个滑动的窗口,每次计算时会把窗口内所有的模型进行平均化。这个平均化有几个作用:第一个作用是可以避免脏数据带来的某个点梯度更新很差的情况,它每次都是多个模型去做平均化,这样模型更加稳定,另外,借助专家系统的机制,把多个模型的结果组合在一起,它得到的性能也会有一定的提升。需要指出的一点是,如果你训练当中用了这个策略,生成模型之后再用 “ Moving average ” 的时候性能是打折扣的,因为训练当中已经用了 “ Moving average ” 机制,把这部分的性能释放出来一些了。但总体上我们推荐使用 “ Moving average ” 机制,这样会使整个训练更加稳定。

    提升模型鲁棒性的算法 “ Dropout ”,这是机器学习或者神经网络中比较常见的机制,但是在真实场景中非常好用的一个机制。Dropout 是在每层神经网络中随机屏蔽掉一些单元的神经输入,一般 Droput 是 0.1,我们会屏蔽掉 10% 的输入,因为屏蔽掉10%的信息,模型需要学得更好,它的鲁棒性更加好。

    我们也做了相关的实验,黄色的线是基线系统,蓝色的线是 Dropout,加入了 Dropout 时一开始模型训练得比较慢一些,但训练时间长了之后由于鲁棒性的提升,最后的曲线是会在那个之上的,最终收敛的性能也比那个更好。

    enter image description here

    这是在训练过程中的一个小的改进,主要是我们在大数据生产时,如何训练数亿级别语料规模的 Transformer 的重要手段。

    四、Transformer 在 WMT2018 全球机器翻译评测中的表现

    enter image description here

    大家不知道这个评测或者对机器翻译不熟悉的话,我可以给大家介绍一下。这个评测是国际公认的顶级翻译赛事之一,也是各大科技公司与学术结构展示自身翻译实力的一个平台,2018 年有很多霍普金斯大学、爱丁堡大学、亚琛工业大学、马里兰大学、微软、腾讯等很多机构参与,我们也取得了比较好的成绩。阿里巴巴翻译团队在 WMT2018 上 “ 英文到中文 ”、“ 英文到俄罗斯语 ”、“ 英文到土耳其语 ” 5 个语项上获得了第一名的成绩,这个图也是最终比赛的冠军图。

    enter image description here

    从这个竞赛可以反映出一个特点,就是 Transformer 在 2018 年竞赛中已经获得非常普遍的认同,80% 以上的系统都是采用 Transformer,这是个非常惊喜的改变。在 2017 年 WMT 评测时大多数系统是基于 RNN 和 LSTM 的系统,包括最终获得冠军的系统也是基于这个的。仅仅过了一年时间,各大机构都争先使用的 Transformer。这个是系统描述的图,参赛的几个系统当中大多数都有 Transformer 的关键词,还有一些其他一些基于 RNN 等系统是凤毛麟角的。

    所以 Transformer 网络在机器翻译领域已经受到广泛的认可。

    enter image description here

    这里给大家推荐几个比较好用的基于开源的机器翻译 Transformer 系统,在开源时代方便大家更好的学习,你有足够的语料,通过这些开源的机器翻译工具也可以搭建一个性能比较好的机器翻译引擎。

    主要推荐三个,第一个是 Marian,是爱丁堡大学公开的开源工具,非常好用;第二个是 Nematus,也是爱丁堡大学开发的;第三个是 Sockeye,是亚马逊推出的机器翻译工具。感兴趣的同学可以去网上下载并使用这些工具去学习,看它里面的代码是如何实现的。

    回到竞赛的部分,Transformer 从竞赛的角度有哪些经验?我这里分享了几点,做评测跟做工程很不一样,评测是限定的数据级,在限定的数据级上达到极致的效果,我觉得有四点:

    enter image description here

    • 第一,精细的数据过滤和筛选,不会投入大量的精力用于基础语料集合确定,主办方会给你一个语料集合,但这个语料集合里有一些噪音或者不好的语料,怎么通过各种规则、分类模型选择或者基于 n-gram 过滤等等,去选择一个比较好的技术语料集合,这是花大力气做的,因为如果底层技术都不好的话,训练出来的上层建筑肯定是不行的。

    • 第二,相信统计的力量。这是神经网络模型一个新的特点,成绩比较好的单位都训练很多模型,并且用很多策略训练不同的模型,最终用这些不同的模型去进行 Ensemble learning 或者进行组合,最终输出一个最好的系统。

      比如阿里可能会做 100 多个系统,采用 Ensemble learning 的方式。这也是成本越来越大的问题,为了达到更好的性能,我们需要介入更多 GPU 资源支持更多模型的训练,最后去达到这种微小几个点的性能提升。

    • 第三,尽量用更多参数去合数据和领域,因为它的数据和领域都是很限定的,所以你需要去用更多的方法、更多的策略去拟合策略,比如 Model fine-tuning 的策略,做微调的策略,你可以筛选更适合这个领域或者更拟合这个开发测试集的数据,去对你的 model 去进行 fine-tuning。

      另外,还可以做 global features 去做 Re-ranking,Re-ranking 也是对性能有一定提升的点,你在翻译时可能只看到部分信息,但是当你的翻译都生成之后,可以提取更多双语的信息,去对开发集调一个更好的模型。

    • 第四,尽可能用更多信息,因为主办方提供双语料的同时会提供大量的单语料,单语料可以有不同的方式,比如用 Back-Translation 的方式把它翻译回来,然后加入到你的模型里作为伪语料,伪的生成的双语语料加入到翻译系统里去训练,并且还可以去训练一个大规模的 n-gram 语言模型或者神经网络模型,最终加到 Re-ranking 模块里去调性能。

    主要就这四点,其他的信息也期待 WMT 在后面 Release 出来的 paper,我们会在文章里详细进行介绍。今天我们就结束了整个的介绍内容。

    五、总结:

    enter image description here

    Transformer 新型神经网络的主要特点:

    • 第一,并行化。并行化程度非常高。
    • 第二,深度神经网络,可以表征层次化的信息。
    • 第三,有复杂的 Attention 机制,可以表征指代消解或者各种不同词与词之间的依赖关系。
    • 第四,性能非常好。

    工业实践方面提出了:Synchronous Adam,Dynamic batching,Moving average,Dropout。四项比较实用的、值得尝试的方向。

    竞赛 经验方面:多模型 ensemble,Fine-tuning,re-ranking,back-Translation 这样一些竞赛比较适用的方法。也是从多维度给大家展现了 Transformer 的全貌。

    六、对外思考和对目前 Transformer 问题的思考,我们还有哪些地方缺失了?

    enter image description here

    这是我参考微软刘教授的报告,我读完他的报告之后比较认同的几个观点:

    第一个问题,我们在训练过程中提到优化目标是最大概率的优化目标,但是我们实际在去评价翻译质量时是用 bleu 去衡量的,这样等于优化目标和衡量的目标是不一致的,这样会带来一个显然的问题,就是优化目标和实际目标之间总是会存在差异的。

    给大家推荐两个可能的解决方案:第一个是 MRT,ACL2015 年提出的工作,把 bleu 值加入到神经网络优化目标方向之中。第二个是NAACL2018 年的工作,利用 GAN 网络,用对抗网络的形式去对优化目标进行表示,这样也是能够使训练的优化目标和实际的评价目标能够一致的一种方式。

    第二个问题,它还是需要大量的平行语料的数据,也就是标注数据。这个是对于一些小语种语言,比如东南亚的小语种平行语料是很稀缺的资源,如何对这些资源稀缺的语言搭建更好的翻译系统呢?

    目前有两个方向,一个是 Unsupervised neural machine Translation,这个做得比较好的是 Facebook,目前走得比较远,它是利用完全非平行单语的语料去训练机器翻译系统,目前性能还不足够好,但它仍然在发展过程中。

    另外,微软也提出基于 dual learning 方法,也是通过非平行语料,通过 dual learning 的方式提升性能,也是一个比较值得尝试的工作。

    第三个问题,它在生成翻译过程中是依赖知识搜索的。这个问题在于搜索是需要减值的,减值的标准是概率的大和小,但你在训练时是没有这个概念的,你的训练时是根本不会考虑到 beam search 的问题,但是在实际解码时对 beam search 模型是未知的,那在训练过程中如何把你搜索的过程也建模进去,这是一个比较好的方向。

    当时刘老师提到他想用 AlphaGo 基于 reward 计算的方式在模型训练的阶段去训练这个网络,你在每步 beam search 的时候它会给你计算一个 reward,通过这个 reward 来进行减值,这样可以把训练和解码两者结合到一起,是个更好的解决方案。

    第四个问题,由于 Transformer 它 Attention 的数据运算是比较复杂的,在生成翻译解码的阶段比较慢的,这是由于 Attention 的构造而导致的。

    这里给大家推荐的是基于 Average Attention Network(Zhang,ACL2018),它巧妙的改变了 Attention 的结构,最后可以很高效的计算出目标端的 Attention,在性能不受损或受微小损失情况下有 2 - 3 倍的性能提升。

    未来期待更多能在 Transformer 上改进的工作,把神经网络推向更高的位置。

    七、Q&A

    以上是本次讲座的主要内容,给大家争取的福利是 10 - 15 分钟问答环节。优秀的提问者可以获得定制T恤或者图书一本,欢迎大家踊跃的提问。

    Q:“ 为什么 Conv Seq2Seq 不如 Self-Attention?”

    A: Conv Seq2Seq 是基于 CNN 的一个比较新的工作,是 Facebook 提出来的,这个众说纷纭,它在 CNN 上是比较好的,在性能上大家也都试过,大部分反馈不如谷歌提出的 Self-Attention。从我个人观点来说,它在 Attention 计算上不然 Transformer,所以它可能掺杂这个部分。

    另外,Facebook 没有投入更多人力去优化这个,而 Transformer 从一开始到后面迭代了很多版本,一开始性能可能不是那么好,但后来谷歌持续投入、维护、不断升级,从去年 6 月份提出开始一直到 12 份都有代码的更新 ,包括其他的像发电报大学也都跟踪这个方向,众人拾柴火焰高,大家不断投入这个领域,能够把这个越做越好。

    Q:“ Transformer 中三个地方用到的 Attention 能不能分开讲一讲每个地方的输入输出? ”

    A:这个是刚才给大家 Miss 掉的地方。回到之前的 Attention 计算方式的部分,看这个主要的图,是 Encoder 的部分用的是 Self-Attention 的部分,decoder 用了 Self-Attention 和一个 Decoder Attention,这确实是三个地方用到。

    第一个地方在 Encoder 端的输入是加了 “ Positional Encoding ” 的 word embedding,直接输入到这个了 Self-Attention 里,输出是刚才提的的 z 矩阵,再输入到 Feed Forward network 里。Decoder 的部分也是一样,之前每次生成的词作为输入,然后加到 Positional Encoding 之后输入到 Self-Attention 里,Encoder 就是 Self-Attention 的输入。

    Q:问了一个和阿里相关的:“ 阿里做电商描述训练的时候,如何解决领域内数据不足的问题 ”?

    A:这是个比较具体的问题,首先,电商场景是阿里的一个重要场景,我们做电商时会收集一部分电商类的数据,阿里巴巴内部也有淘宝比较丰富的数据。有了这个以后会有基于 n-gram 或者基于分布式的筛选模块,基于这些之前互联网上收集到的大规模语料库中筛选相关的句子,得到充足的领域内的语料,领域内的训练语料应该越多越好。

    Q:“推荐一下深度学习、机器翻译方面的好书。”

    这个可以给大家推荐最近邓老师和清华大学刘老师合作发表的一部英文书,叫《 Deep Learning in Natural Language Processing 》,邓老师是语音识别方向的大牛,任老师是机器翻译、自然语言处理方面的大牛,这本书是 2018 年最新出版的,这本书会包含最新的机器翻译、神经网络内容,大家有兴趣的话可以考虑一下。


    本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。

    阅读全文: http://gitbook.cn/gitchat/activity/5b56e0ba70667162e76e4d32

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 随着深度学习技术的发展,基于神经网络的机器翻译系统已成为业界的主流系统。本课程将详细讲解Transformer新型神经网络及其在机器翻译中的应用,并从工业实践和评测竞赛的角度更全面的展现其实用价值。
  • 前言 有些工程师朋友经常问我这样一个问题:“图深度学习听起来很棒,但是现在是否有非常成功的商业案例?是否已经在实际应用中部署?...通过这篇文章,我想建立起图神经网络(GNNs)和Transformers之间的联系...

    前言

    有些工程师朋友经常问我这样一个问题:“图深度学习听起来很棒,但是现在是否有非常成功的商业案例?是否已经在实际应用中部署?”
    除了那些显而易见的案例,比如Pinterest、阿里巴巴和Twitter公司部署的推荐系统,一个稍有细微差别的成功案例就是Transformer架构的实现,它在NLP行业引起了轩然大波。
    通过这篇文章,我想建立起图神经网络(GNNs)和Transformers之间的联系。具体来说,我将首先介绍NLP和GNN领域中模型架构的基本原理,然后使用公式和图表来阐述两者之间的联系,最后将讨论如何让两者协同运作来推动这方面的研究进展。
    我们先来谈谈模型架构的目的——表示学习。

    NLP的表示学习

    从一个较高的层次来分析,几乎所有的神经网络结构都将输入数据表示为向量(vectors)或者嵌入(embeddings)的形式,从而对数据中有用的统计和语义信息进行编码。这些潜在或隐藏的表示方法可以用于执行一些有用的任务,例如对图像进行分类或翻译句子。其中,神经网络通过接收反馈(通常是通过误差(error)/损失(loss)函数)来学习如何构建越来越好的表示方法。
    在自然语言处理(NLP)中,按照传统方式,人们习惯将递归神经网络(RNNs)以照序列的方式(即一个时间步对应一个单词)来构建句子中每个单词的表示。直观地说,我们可以把RNN层想象成一个传送带,上面的字从左到右进行自回归处理。最后,我们得到句子中每个单词的一个隐藏特征,并将其传递到下一个RNN层或者用于我们选择的NLP任务。

    Transformers最初是用于机器翻译领域,但是现在已经逐渐取代了主流NLP中的RNNs。该架构采用了一种全新的表示学习方法:完全抛弃了递归的方法,Transformers使用注意力机制构建每个词的特征,从而找出句子中所有其他单词对上述单词的重要性。理解了这一关键点我们就能明白,单词的更新特征仅仅是所有单词特征的线性变换之和,这些特征是根据它们的重要性进行加权。
    早在2017年,这个想法听起来就非常激进,因为NLP界已经习惯了使用RNN处理文本的序列(每次一个单词)的风格。这篇论文的标题可能是火上浇油!
    Yannic Kilcher为此做了一个出色的视频概述。

    解析Transformer

    让我们通过将上一节内容转述成数学符号和向量的语言来加深对这个架构的认识。如下所示,我们将句子中第i个词的隐藏特征h从层更新到层:

    其中,表示句子中的词汇集,而是可以学习到的线性权重(分别表示注意力计算中的Query, Key 和 Value)。句子中的每个单词并行执行注意力机制,从而可以一次性获得它们已更新的特征——这是Transformer相对RNNs的另一个加分点,它使得模型能够逐字更新特征。
    我们可以通过下面这张流程图来更好地理解注意力机制:

    输入词汇特征和句子中其他词汇集,我们使用点积运算来计算出每对的注意力权重,接着对所有的进行softmax运算。最后,把所有的相对应的权重累加得到单词i更新后的词汇特征。句子中的每个单词都会并行地经历相同的流程来更新其特征。

    多头注意力机制

    事实证明,要让这种点积注意力机制起作用是很难的——如果随机初始化处理得不好会使得整个学习过程失去稳定性。我们可以通过并行执行多个注意力“头”并将结果连接起来(现在每个注意力头都有单独的可学习权重)来克服这个问题:

    其中,是第k个注意力头的可学习的权重,而是一个向下的投影,用以匹配跨层的和的尺寸。
    通过观察上一层中隐藏特征的不同的变换过程以及方面,多头机制允许注意力机制从本质上“规避风险”。关于这点,我们将在后面详细讨论。

    尺度问题和前向传播子层

    促使形成最终形态的Transformer结构的关键问题是,注意机制之后的词的特征可能在不同的尺度或重要性上:(1)这可能是由于某些词在将其他词的特征累加时具有非常集中或非常分散的注意力权重。(2)在单个特征/向量输入级别,跨多个注意力头(每个可能会以不同的比例输出值)进行级联可以导致最终向量的输入具有一个大范围的值。遵循传统的机器学习思路,在上述流程中增加一个归一化层似乎是一个合理的选择。
    Transformers使用LayerNorm克服了问题(2),LayerNorm在特征层级上进行归一化并学习一种仿射变换。此外,通过求特征维度的平方根来缩放点积注意力有助于抵消问题(1)。
    最后,作者提出了控制尺度问题的另一个“技巧”:具有特殊结构的考虑位置的双层MLP。在多头注意力之后,他们通过一个可学习的权重将投影到一个更高的维度,在该维度中,经过ReLU非线性变换,然后投影回其原始维度,然后再进行另一个归一化操作:

    说实话,我不确定超参数化前馈子层背后的确切理由是什么,似乎也没有人对此提出疑问!我认为LayerNorm和缩放的点积不能完全解决突出的问题,因此大型MLP是一种可以相互独立地重新缩放特征向量的手段。
    Transformer层的最终形态如下所示:

    Transformer架构也非常适合非常深的网络,使NLP界能够在模型参数和扩展数据这两方面进行延伸。每个多头注意力子层和前馈子层的输入和输出之间的残差连接是堆叠Transformer层的关键(但为了清楚起见,在上图中省略了)。

    GNNs构建图的表示

    我们暂时不讨论NLP。
    图神经网络(GNNs)或图卷积网络(GCNs)在图数据中建立节点和边的表示。它们是通过邻域聚合(或消息传递)来实现的,在邻域聚合中,每个节点从其邻域收集特征,以更新其周围的局部图结构表示。通过堆叠多个GNN层使得该模型可以将每个节点的特征传播到整个图中,从其邻居传播到邻居的邻居,依此类推。

    以这个表情符号社交网络为例:由GNN产生的节点特征可用于预测性任务,例如识别最有影响力的成员或提出潜在的联系。

    在他们最基本的形式中,GNNs通过以下方法来更新节点i在层的隐藏层特征h(例如,?),也就是先将节点自身的特征和每个邻居节点特征的聚合相累加,然后再整体做一个非线性变换,如下:

    其中是GNN层的可学习的权重矩阵,而是一个非线性变换,例如ReLU。在上述例子中,N (?) ={ ?, ?, ?, ? }。
    邻域节点上的求和可以被其他输入大小不变的聚合函数代替,例如简单的 均值/最大值函数或其他更强大的函数(如通过注意机制的加权和)。
    这听起来熟悉吗?
    也许这样一条流程可以帮助建立连接:

    如果我们要执行多个并行的邻域聚合头,并且用注意力机制(即加权和)替换领域 上的求和 ,我们将获得图注意力网络(GAT)。加上归一化和前馈MLP,瞧,我们就有了Graph Transformer。

    句子就是由词全连接而成的图

    为了使连接更加清晰,可以将一个句子看作一个完全连接的图,其中每个单词都连接到其他每个单词。现在,我们可以使用GNN来为图(句子)中的每个节点(单词)构建特征,然后我们可以使用它来执行NLP任务。

    广义上来讲,这就是Transformers正在做的事情:Transformers是以多头注意力作为邻聚合函数的GNNs。标准GNNs从其局部邻域节点聚合特征,而NLP的Transformers将整个句子视为局部邻域,在每个层聚合来自每个单词的特征。
    重要的是,各种特定于问题的技巧(如位置编码、因果/掩码聚合、学习率表和大量的预训练)对于Transformers的成功至关重要,但在GNN界中却很少出现。同时,从GNN的角度看Transformers可以启发我们摆脱模型结构中的许多花哨的玩意。

    可以从Transformers和GNN中学到什么?

    现在我们已经在Transformers和GNN之间建立了联系,接着让我们来探讨一些新的问题…
    8.1 全连接图是NLP的最佳输入格式吗?
    在统计NLP和ML之前,Noam Chomsky等语言学家致力于发展语言结构的最新理论,如语法树/图。Tree LSTMs已经尝试过这一点,但是也许Transformers/GNNs是可以让语言理论和统计NLP的领域结合得更加紧密的更好的架构?

    8.2 如何学习到长期依赖?
    完全连通图使得学习词与词之间的非常长期的依赖关系变得非常困难,这是完全连通图的另一个问题。这仅仅是因为图中的边数与节点数成二次平方关系,即在n个单词的句子中,Transformer/GNN将在n^2对单词上进行计算。如果n很大,那将会是一个非常棘手的问题。
    NLP界对长序列和依赖性问题的看法很有意思:例如,使注意力机制在输入大小方面稀疏或自适应,在每一层中添加递归或压缩,以及使用对局部性敏感的哈希法进行有效的注意,这些都是优化Transformers有希望的新想法。
    有趣的是,还可以看到一些GNN界的想法被混入其中,例如,用于句子图稀疏化的二进制分区似乎是另一种令人兴奋的方法。
    8.3 Transformers在学习神经网络的句法吗?
    NLP界有几篇关于Transformers可能学到什么的有趣论文。其基本前提是,对句子中的所有词对使用注意力机制(目的是确定哪些词对最有趣),可以让Transformers学习特定任务句法之类的东西。
    多头注意力中的不同头也可能“关注”不同的句法属性。
    从图的角度来看,通过在完全图上使用GNN,我们能否从GNN在每一层执行邻域聚合的方法中恢复最重要的边线及其可能带来的影响?我还不太相信这种观点。

    8.4 为什么要用多头注意力?为什么要用注意力机制?
    我更赞同多头机制的优化观点——拥有多个注意力可以改进学习,克服不好的随机初始化。例如,这些论文表明,Transformers头可以在训练后“修剪”或“删除”,并且不会产生重大的性能影响。
    多头邻聚合机制在GNNs中也被证明是有效的,例如在GAT使用相同的多头注意力,MoNet使用多个高斯核来聚合特征。虽然多头技巧是为了稳定注意力机制而发明的,但它能否成为提炼出额外模型性能的标准?
    相反,具有简单聚合函数(如sum或max)的GNNs不需要多个聚合头来维持稳定的训练。如果我们不需要计算句子中每个词对之间的成对兼容性,对Transformers来说不是很好吗?
    Transformers能从抛弃注意力中获益吗?Yann Dauphin和合作者最近的工作提出了另一种ConvNet架构。Transformers也可能最终会做一些类似于ConvNets的事情。

    8.5 为什么Transformers这么难训练?
    阅读新的Transformer论文让我觉得,在确定最佳学习率表、预热策略和衰减设置时,训练这些模型需要一些类似于黑魔法的东西。这可能仅仅是因为模型太大,而且所研究的NLP任务非常具有挑战性。
    但是最近的结果表明,这也可能是由于结构中归一化和残差连接的特定组合导致的。
    在这一点上我很在意,但是也让我感到怀疑:我们真的需要代价昂贵的成对的多头注意力结构,超参数化的MLP子层以及复杂的学习计划吗?
    我们真的需要具有大量碳足迹的(译者注:有人提出现在训练一个模型相当于5辆汽车一天的排碳量)大规模模型吗?
    具有良好归纳偏差的架构难道不容易训练吗?

    展开全文
  • 晓查 发自 凹非寺量子位 报道 | 公众号 QbitAI你还记得Hinton老爷子在2017年挖的坑吗?胶囊网络的坑还没填完,刚刚他又挖了一个新坑。近日Hinton提出了一个称为GLOM...
  • 1.自注意力机制,允许网络捕获序列元素之间的“长期”信息和依赖关系; 2.在无监督的大数据集上进行预训练,然后用小样本数据集微调到目标任务。 自注意力机制 自注意力机制估计预测任务中所有实体两两之间的相关性...
  • 随着深度学习技术的发展,基于神经网络的机器翻译系统已成为业界的主流系统。本课程将详细讲解Transformer新型神经网络及其在机器翻译中的应用,并从工业实践和评测竞赛的角度更全面的展现其实用价值。...
  • 产业的兴旺离不开背后技术的巨大进步,从今天的课程当中,我会给大家介绍背后技术的神秘面纱,然后对Transformer这个神经网络做深入的解析。 神经网络机器翻翻译是目前比较主流的机器翻译方法,它是“Sequence to ...
  • 传统的神经机器翻译大都是利用RNN或者CNN来作为encoder-decoder的模型基础,而谷歌最新的只基于Attention的Transformer模型摒弃了固有的定式,并没有用任何CNN或者RNN的结构。该模型可以高度并行地工作,所以在提升...
  • 研究者表示,这是卷积神经网络Transformer 首度结合用于视频帧合成。 深度卷积神经网络(CNN)是功能非常强大的模型,在一些困难的计算机视觉任务上性能也很卓越。尽管卷积神经网络只要有大量已标记的训练样本就...
  • 神经网络架构搜索算法(NAS)。Transformer 是许多自然语言处理任务的最流行的网络架构之一。该论文使用基于锦标赛选择的进化算法,通过网络搜索算法得到进化版 Transformer。新的网络结构比原来的 Transformer ...
  • 机器翻译是自然语言处理领域的皇冠明珠,学术界和产业界的研究人员已经致力于机器翻译研究很多年,从最早的基于规则,到基于统计模型,再到基于神经网络,发展速度是高速倍增的。近几...
  • 转自:... Spatial Transformer Networks(空间变换神经网络) Reference:Spatial Transformer Networks [Google.DeepMind] Reference:[Theano源码,基于Lasagne]
  • 为什么说Transformer就是图神经网络

    千次阅读 2020-03-04 18:32:42
    从一个较高的层次来分析,几乎所有的神经网络结构都将输入数据表示为向量(vectors)或者嵌入(embeddings)的形式,从而对数据中有用的统计和语义信息进行编码。这些潜在或隐藏的表示方法可以用于执行一些有用的...
  • 机器翻译是自然语言处理领域的皇冠明珠,学术界和产业界的研究人员已经致力于机器翻译研究很多年,从最早的基于规则,到基于统计模型,再到基于神经网络,发展速度是高速倍增的。近几...
  • 机器翻译是自然语言处理领域的皇冠明珠,学术界和产业界的研究人员已经致力于机器翻译研究很多年,从最早的基于规则,到基于统计模型,再到基于神经网络,发展速度是高速倍增的。近几...
  • 产业的兴旺离不开背后技术的巨大进步,从今天的课程当中,我会给大家介绍背后技术的神秘面纱,然后对Transformer这个神经网络做深入的解析。 神经网络机器翻翻译是目前比较主流的机器翻译方法,它是“Sequence to ...
  •   长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。...
  • 谷歌大脑的新论文《The Evolved Transformer》提出了首个用于改进Transformer神经网络架构搜索算法(NAS)。Transformer是许多自然语言处理任务的最流行的网络架构之一。该论文使用基于锦标赛选择的进化算法,通过...
  • 产业的兴旺离不开背后技术的巨大进步,从今天的课程当中,我会给大家介绍背后技术的神秘面纱,然后对Transformer这个神经网络做深入的解析。 神经网络机器翻翻译是目前比较主流的机器翻译方法,它是“Sequence to ...
  • Graph Transformer Networks这篇文章发表于NIPS 2019。 Motivation 最近关于异构图嵌入学习的方法都是设计meta-path,基于meta-path将异构图划分成多个同构图,然后再用传统的GNN处理同构图。这种two-stage的方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 685
精华内容 274
关键字:

transformer神经网络