self attention

Q=K=V :输入一个句子,那么里面的每个词都要和该句子中的所有词进行attention计算,目的是要学习句子内部词之间的依赖关系,捕获句子的内部结构。

首先,要build Q,K,V,对其进行线性变换 for example: dot,reshape, permute_dimensions

然后,我们要对序列做mask,忽略填充部分的影响,一般mask是将填充部分置零,但attention中的mask是在softmax之前,将填充部分减去一个较大的整数(这样softmax后就比较接近0)

之后,call函数

onece encoder:

vector->self attention->feed forward neural network->r

Q可以理解成篇章的词向量序列,K= V, 为问题的词向量序列,那么输入就是aligned question embedding

 transform:

就是谷歌提出的transformer 的架构。这其中左半部分是 encoder, 右半部分是 decoder.

Encoder: 这里面有 N=6 个 一样的layers, 每一层包含了两个sub-layers. 第一个sub-layer 就是多头注意力层(multi-head attention layer) 然后是一个简单的全连接层。 这里还有一个残差连接 (residual connection), 在这个基础上, 还有一个layer norm.  这里的注意力层会在下文详细解释。

Decoder: 这里同样是有六个一样的Layer是,但是这里的layer 和encoder 不一样, 这里的layer 包含了三个sub-layers,  其中有 一个self-attention layer, encoder-decoder attention layer 最后是一个全连接层。 前两个sub-layer 都是基于multi-head attention layer.  这里有个特别点就是masking,  masking 的作用就是防止在训练的时候 使用未来的输出的单词。 比如训练时, 第一个单词是不能参考第二个单词的生成结果的。 Masking就会把这个信息变成0, 用来保证预测位置 i 的信息只能基于比 i 小的输出。

tensor2tensor

可以理解成模型和各类数据集的一个集成库,可以方便的去调用,解决常见的问题。

实践路线

attention->transform->bert

理解原理->用t2t实现transform

Transform Model的更多相关文章

  1. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  2. 谁动了我的特征?——sklearn特征转换行为全记录

    目录 1 为什么要记录特征转换行为?2 有哪些特征转换的方式?3 特征转换的组合4 sklearn源码分析 4.1 一对一映射 4.2 一对多映射 4.3 多对多映射5 实践6 总结7 参考资料 1 ...

  3. DirectX 总结和DirectX 9.0 学习笔记

    转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...

  4. 实现Unity编辑器模式下的旋转

    最近在做一个模型展示的项目,我的想法是根据滑动屏幕的x方向差值和Y方向的差值,来根据世界坐标下的X轴和Y轴进行旋转,但是实习时候总是有一些卡顿.在观察unity编辑器下的旋转之后,发现编辑器下的旋转非 ...

  5. unity2D 船只型物体驱动的实现

    船只向前行驶的驱动力 假设在水中没有摩擦阻力,船只有惯性,船只可以转弯,按下前进键时船只会在力的作用下使得自身的物理运动方向变化到自身的前方方向,从而向前行进. 上图中 V:船当前物理速度 V1,V2 ...

  6. unity中camera摄像头控制详解

    目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...

  7. Spark之MLlib

    目录 Part VI. Advanced Analytics and Machine Learning Advanced Analytics and Machine Learning Overview ...

  8. 【微信小程序】安装DingoApi开发小程序api

    1.安装 composer require dingo/api 2.发布配置: php artisan vendor:publish 选择DingoApi发布. 3.向.env文件添加配置 (1)项目 ...

  9. Spring Boot笔记一

    Spring Boot 入门 Spring Boot 简介 > 简化Spring应用开发的一个框架:> 整个Spring技术栈的一个大整合:> J2EE开发的一站式解决方案: 微服务 ...

随机推荐

  1. MongoDB复制集技术

    复制集搭建 没毛病: https://www.cnblogs.com/nicolegxt/p/6841442.html?utm_source=itdadao&utm_medium=referr ...

  2. 源码:Java集合源码之:数组与链表(一)

    数组和链表是数据结构中最基本的部分. 数组 在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据.那么这种结构的数据,在内存中是怎么存放的呢? 数组在内存中是一段连续的存储单元,每 ...

  3. mysqldump备份与恢复笔记

    mysql> show databases; +--------------------+ | Database           | +--------------------+ | inf ...

  4. java面试多线程问题

    Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环 ...

  5. 200用户的并发用户配置(CSV)

    我来解释一下为什么标题是,设置多个参数对浏览器进行访问,原本想写成对app或者web,但是我想只要有参数的地方无聊是app或者web或者小程序,都是可以用到设置参数的. 第一步:在线程组下添加参数配置 ...

  6. 彻底征服 Spring AOP 之 实战篇

      Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个 ...

  7. junit 基础使用

    junit百度百科: JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JU ...

  8. Ubuntu 14.03 安装jdk

    安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...

  9. 201772020113李清华《面向对象程序设计(java)》第八周学习总结

    实验六 接口的定义与使用 实验时间 2018-10-18 1.实验目的与要求 (1) 掌握接口定义方法: (2) 掌握实现接口类的定义要求: (3) 掌握实现了接口类的使用要求: (4) 掌握程序回调 ...

  10. 4-29 c语言之栈,队列,双向链表

    今天学习了数据结构中栈,队列的知识 相对于单链表来说,栈和队列就是添加的方式不同,队列就相当于排队,先排队的先出来(FIFO),而栈就相当于弹夹,先压进去的子弹后出来(FILO). 首先看一下栈(St ...