当前位置: 首页 > article >正文

【王树森】Transformer模型(1/2): 剥离RNN,保留Attention(个人向笔记)

Transformer简介

  • Transformer 是一个Seq2Seq模型
  • Tramsformer 不是RNN
  • Transfomer 只有attention和全连接层
  • 机器翻译在大型数据集上完爆最好的RNN

Review Attention for RNN

这节课讲的attention相对比于前两节课多了一个 v i v_i vi,之前是用权重直接乘 h h h,而在这里是乘以 v v v。最后得到向量 c c c
在这里插入图片描述


Attention without RNN

  • Attention一开始设计是用在RNN上的,那么我们应该如何把attention从RNN中剥离出来呢?
  • 本节课将使用一个attention和一个self-attenion层搭建一个Transformer

1. 设计一个attention层用于Seq2Seq模型

  • Seq2Seq模型有一个encoder和一个decoder
  • encoder接受 m m m 个词向量的输入
  • decoder接受 t t t 个词向量的输入,来生成下一个单词
  • 对于encoder的输入向量,我们用两个个矩阵 W K W_K WK W V W_V WV 将其变换为上面的 k k k 向量和 v v v 向量:
    在这里插入图片描述
  • 对于decoder的输入向量,我们用一个矩阵 W Q W_Q WQ 将其变换为上面的 q q q 向量
    在这里插入图片描述
  • K K K m m m k k k 向量叠在一起的矩阵,用 q q q K K K 算出相关性,其中 α \alpha α m m m 维的向量,元素及总和为1,代表着 m m m k k k 向量和 q q q 的相关性
    在这里插入图片描述
  • 利用得到的相关性和 v v v 计算 context vector c c c,其中这一系列运算可以简化为 V α V\alpha Vα
    在这里插入图片描述
  • 对所有的 q q q 用类似的方法计算出所有 context vector c c c,这样attenion层的输出就是一个 C C C 矩阵
    在这里插入图片描述
  • 对于一个 c i c_i ci 来说,它依赖于decoder的当前输入 x i ′ x'_i xi,还有所有encoder的输入 x 1 , x 2 . . . , x m x_1,x_2...,x_m x1,x2...,xm
    在这里插入图片描述
  • 以英译德为例:利用decoder的 x 2 ′ x'_2 x2 和 所有encoder的输入 x 1 , x 2 . . . , x m x_1,x_2...,x_m x1,x2...,xm,我们可以生成 c 2 c_2 c2,然后把 c 2 c_2 c2 丢进一个softmax里面产生概率来预测下一个德语单词。 c 2 c_2 c2 是知道整句英语的,所以可以很好的避免遗忘问题
    在这里插入图片描述
  • 总结Attenion层:接受encoder的输入 X = [ x 1 , x 2 , . . . , x m ] X=[x_1,x_2,...,x_m] X=[x1,x2,...,xm] 和decoder的输入 X ′ = [ x 1 ′ , x 2 ′ , . . . , x t ′ ] X'=[x'_1,x'_2,...,x'_t] X=[x1,x2,...,xt],输出一个context vector矩阵 C = [ c 1 , c 2 , . . . , c t ] C=[c_1,c_2,...,c_t] C=[c1,c2,...,ct],其中参数有三个矩阵: W K , W Q , W V W_K,W_Q,W_V WK,WQ,WV,它们需要从数据中学习
    在这里插入图片描述

2. 搭建一个Self-Attention层取代RNN

  • self-attention层和attention层完全类似,只是输入不同:其中任意一个词向量的改变都会影响到别的词向量
    在这里插入图片描述
  • 在self-attention里:每一个输入的向量都要被变换为 q , k , v q,k,v q,k,v
    在这里插入图片描述
  • 而权重计算也是类似的:对于 α 1 \alpha_1 α1 来说,它依赖于 q 1 q_1 q1,和其他所有的 k k k
    在这里插入图片描述
  • 对于 c 1 c_1 c1 计算来说,既依赖于上面它计算出的权重 α \alpha α 也依赖于所有的 v v v
    在这里插入图片描述

Summary

  • attention最初被用于改善RNN的Seq2Seq模型
  • 后来发现attention不仅仅局限于Seq2Seq模型,而是可以被用在所有的RNN上
  • 之后发现可以直接从RNN中剥离出attention作为一个模型使用

http://www.kler.cn/news/288834.html

相关文章:

  • Java开发学习Kotlin 笔记
  • 每天学习一个基础算法之插入排序
  • 谷歌地图广告指南
  • P1438 无聊的数列
  • React 实现PDF预览(数据源使用文件流而不是url)
  • 哪些好用的待办事项清单值得推荐:待办任务清单app
  • (二十八)STL set(集合)
  • 前端vue中怎么判断接口请求返回的时长
  • 【量化交易的数学基础】文科生也能搞懂的线性代数基础:矩阵和向量的那些事儿
  • 学习日志29
  • 【IT工具】Windows下XMind安装教程【不要米】及常用快捷键
  • 翻译_Clock Domain Crossing Design
  • 【RSA】简单说说什么是RSA非对称加密
  • C++封装:栈、队列
  • Vue.js 模板语法详解:插值表达式与指令使用指南
  • 企业微信hook协议接口,聚合群聊客户管理工具开发
  • 有关Prompt Engineering(提示词工程)的一些总结
  • pypiserver 搭建
  • webshell绕过样本初体验
  • SprinBoot+Vue问卷调查微信小程序的设计与实现
  • Pytorch安装 CUDA Driver、CUDA Runtime、CUDA Toolkit、nvcc、cuDNN解释与辨析
  • Qt QtConCurrent 使用示例
  • 探索Unity与C#的无限潜能:从新手到高手的编程之旅
  • 设计模式-UML建模语言面向对象的SOLIDLC
  • C++ 设计模式——备忘录模式
  • MES 系统中工艺管理--工艺指令管理
  • 【QT开发日志】QT开发环境搭建:下载与安装以及开发工具的选择(2024最新版)
  • 一起学习LeetCode热题100道(68/100)
  • 机器学习如何助力网络生物学
  • 合宙LuatOS开发板Core_Air780EP使用说明