transformers---BERT

BERT模型主要包括两个部分,encoder和decoder,encoder可以理解为一个加强版的word2vec模型,以下是对于encoder部分的内容

预训练任务

  • MLM任务

    MLM任务通过单词表示来表示上下文关系
  • NSP任务

    NSP任务通过句子向量表示句间的关系

1. BERT模型的输入

  • wordpiece embedding 单词向量
  • position embedding 位置编码向量

    两种生成方式:

    • 相对位置编码
      \[PE_{(pos,2i)}=sin(\frac{pos}{10000^{\frac{2i}{model}}})
      \]
      \[PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{\frac{2i}{model}}})
      \]
    • 通过模型学习生成
  • segment embedding 区分文中的上下句,应用在问答匹配中

2. self-attention

  • 句子向量

    \(\downarrow \ \ \ \ \downarrow\)

  • Input Embedding + Position Embedding

    \(\downarrow\)

  • \[X_{embedding}\in R^{batch size\ *\ seq len\ *\ embed dim}
    \]

    \(\downarrow\) 线性映射(学到多重含义,分配三个权重(\(W_Q,W_k,W_v\))

  • \(Q=Linear(X_{embedding})=X_{embedding}W_Q\)

    \(K=Linear(K_{embedding})=K_{embedding}W_K\)

    \(V=Linear(V_{embedding})=V_{embedding}W_V\)

    \(\downarrow\) multi head atention(\(head size=embed dim/head size\))

  • \(Q,K,V \rightarrow[batch size,seq len,head size,embed dim/h\)

    \((Q,K,V)^T \rightarrow[batch size,head size,
    seq len,embed dim/h]\)

    head_size:即多头注意力机制中的head, \(head size=embed dim/head num\)

    embed_size:句子中每个字的编码向量的长度

    seq_len:句子的长度

    如图:C1C2表示第一个字和第二个字的注意力机制结果

    \(Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V\)



    \(\frac{QK^T}{\sqrt{d_k}}\)的第一列和\(V\)的第一行决定了结果中的第一个值,这样保证了结果向量中每个元素包含了该句中所有字的特征

    note:

    Attention mask

    在encoder的过程中,输入句子的\(seq len\)是不等长的,此时需要对句子进行补全,如果使用0补全,使用softmax函数\(softmax=\sigma(z)=\frac{e^{z_i}}{\sum^{k}_{j=1}e^{z_j}}\),e=0时,将导致补0的部分参与到运算中

    解决办法:给补0的部分添加偏置\(Z_{illeagl}=Z_{illeagl}+bias ,\ bias\rightarrow -\infty\)

    此时,\(e^{-\infty}=0 ,\ e^{Z_{illegal}}=0\),便面了无效区参与运算。

3. Layer Normalization 残差连接

  • \(X=X_{embedding}+Attention(Q,K,V)\)

transformers---BERT的更多相关文章

  1. BERT论文解读

    本文尽量贴合BERT的原论文,但考虑到要易于理解,所以并非逐句翻译,而是根据笔者的个人理解进行翻译,其中有一些论文没有解释清楚或者笔者未能深入理解的地方,都有放出原文,如有不当之处,请各位多多包含,并 ...

  2. (转) Using the latest advancements in AI to predict stock market movements

    Using the latest advancements in AI to predict stock market movements 2019-01-13 21:31:18 This blog ...

  3. BERT(Bidirectional Encoder Representations from Transformers)

    BERT的新语言表示模型,它代表Transformer的双向编码器表示.与最近的其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预先训练深度双向表示.因此,预训练的BERT表示可以通过 ...

  4. BERT(Bidirectional Encoder Representations from Transformers)理解

    BERT的新语言表示模型,它代表Transformer的双向编码器表示.与最近的其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预先训练深度双向表示.因此,预训练的BERT表示可以通过 ...

  5. 文本分类实战(十)—— BERT 预训练模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  6. 【译】BERT表示的可解释性分析

    目录 从词袋模型到BERT 分析BERT表示 不考虑上下文的方法 考虑语境的方法 结论 本文翻译自Are BERT Features InterBERTible? 从词袋模型到BERT ​ Mikol ...

  7. 【译】为什么BERT有3个嵌入层,它们都是如何实现的

    目录 引言 概览 Token Embeddings 作用 实现 Segment Embeddings 作用 实现 Position Embeddings 作用 实现 合成表示 结论 参考文献 本文翻译 ...

  8. 深入理解BERT Transformer ,不仅仅是注意力机制

    来源商业新知网,原标题:深入理解BERT Transformer ,不仅仅是注意力机制 BERT是google最近提出的一个自然语言处理模型,它在许多任务 检测上表现非常好. 如:问答.自然语言推断和 ...

  9. 采用Google预训bert实现中文NER任务

    本博文介绍用Google pre-training的bert(Bidirectional Encoder Representational from Transformers)做中文NER(Name ...

  10. 【中文版 | 论文原文】BERT:语言理解的深度双向变换器预训练

    BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 谷歌AI语言组论文<BERT:语言 ...

随机推荐

  1. 大天使之剑H5游戏超详细图文架设教程

    引言 想体验传奇游戏霸服的快乐吗?想体验满级VIP的尊贵吗?想体验一刀99999的爽快吗?各种极品装备装备.翅膀.宠物通通给你,就在大天使之剑! 本文讲解大天使之剑H5游戏的架设教程,想研究H5游戏如 ...

  2. 正整数a、b、c、d满足ab=cd,则a+b+c+d必定为合数。

    正整数a.b.c.d满足ab=cd,则a+b+c+d必定为合数. 证法一:记s=a+b+c+d.如果四个数全为1,s=4,显然是合数.考虑四个数非全1的情形,由对称性,不妨令a>1. 设p是a的 ...

  3. D3之svg transform 与 css3 transform 区别与联系

    D3就不用多介绍了,在数据可视化界属于大佬级别的js库.在这里主要想记录一下在写程序期间遇到的一个问题. 如下图所示,想完成主视图在小地图上的映射,小地图的白色矩形框用来代表当前主视图可见区域,主视图 ...

  4. MySQL——字符串类型——char(n) 和 varchar(n)

    MySQL 的 char(n) 和 varchar(n) 括号中 n 代表字符的个数,而非字节个数,这里说的字符不论文字种类,假设一个字段的数据类型被规定为 char(2),则可以在这个字段上插入 ' ...

  5. Python - 面向对象编程 - __new()__ 和单例模式 

    单例模式 这是一种设计模式 设计模式是前任工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对某一特定问题的成熟的解决方案 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性 单 ...

  6. 数据结构(c++)(第二版) Dijkstra最短路径算法 教学示范代码出现重大问题!

    前言 去年在数据结构(c++)的Dijkstra教学算法案例中,发现了一个 bug 导致算法不能正常的运行,出错代码只是4行的for循环迭代代码. 看到那里就觉得有问题,但书中只给了关键代码的部分,其 ...

  7. 模拟BS服务器

    一.模拟BS服务器分析 二.BS模拟服务器代码实现 图片都是单独请求,后台单独线程,这边是通过构造方法传入的Runable接口的实现类匿名对象创建线程: 创建本地输入流读取到网络输出流传过来的信息再放 ...

  8. Vue项目-初始化之 vue-cli

    1.初始化项目 a.Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-servi ...

  9. clion结合vcpkg以及GTest的使用

    目录 一.vcpkg简介.下载和使用 1. vcpkg是什么 2. vcpkg下载 3. 使用vcpkg下载第三方库 二.clion结合vcpkg 1. 方法一:使用环境变量 2. 方法二:添加cma ...

  10. 深度学习——前向传播算法和反向传播算法(BP算法)及其推导

    1 BP算法的推导 图1 一个简单的三层神经网络 图1所示是一个简单的三层(两个隐藏层,一个输出层)神经网络结构,假设我们使用这个神经网络来解决二分类问题,我们给这个网络一个输入样本,通过前向运算得到 ...