IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> BERT -> 正文阅读

[人工智能]BERT

1. 背景知识

在这里插入图片描述
BERT带来了新的NLP范式

在这里插入图片描述
? BERT 的出现使 NLP 领域进入了一个新的范式,这个范式有两个特点,1??模型的架构是趋同的,所有的模型架构都是基于transformer 的,2??所有的模型都是基于 预训练的。

BERT 网络结构

? 多层transformer的网络叠加

在这里插入图片描述
? transformer层的网络核心要素:

  • Multi-head attention (多头注意力)
  • FNN (全连接层)
  • LayerNorm (层归一化)
  • 残差连接

2. 注意力机制

2.1 Attention 在深度学习领域的发展历程

在这里插入图片描述
? 2017年之前,翻译领域仍以RNN模型为基础组件,像LSTMGRU等。

? BERT之前的最好的分类模型是以 LSTM 为基础,在NER领域里,使用最多的模型结构是Bi-LSTM-CRF模型。谷歌在tansformer之前推出的神经翻译模型GNMT同样基于RNN

RNN模型缺点

在这里插入图片描述

我的名字叫李雷
  • 需要O(L)的复杂度使句子中所有词都有交互:长距离的语义依赖很难学到(vanishing gradients);
  • 并行性不好:前向传播和后向传播都受到O(L)限制;

CNN模型缺点
在这里插入图片描述

  • CNN模型很高效,但是长距离的文本之间的依赖很难由CNN建模;需要非常多层CNN叠加。

2.2 Attention in Seq2Seq model

Seq2Seq模型

在这里插入图片描述
? 左边编码器将语料编码后形成一个向量,这个向量运用到目标语言的预测当中,生成目标语言句子的模块叫解码器。

Attention机制引入
在这里插入图片描述

? 输入的句子无论多丰富,对于解码器只是形成了一个向量。会产生一个信息瓶颈。输出的句子在不同阶段需要关注输入句子的不同部分。

? Attention in machine translation

在这里插入图片描述
? 编码器对输入句子进行编码后,句中每个字会产生一个向量表示。假设目标句子的向量表征为 S t S_t St? S 1 S_1 S1?表示第一个token,作为目标句子的开始部分,会预测下一个词是什么,利用Attention去接收更多的信息。

? 首先, S 1 S_1 S1?向量与原句每个字的向量表示做一个点积(dot product),点积公式:
e t = [ s t T h 1 , ? ? , s t T h N , ] ∈ R N a t t e n s i o n _ s c o r e (1) e^t=\left[s_t^Th_1,\cdots,s_t^Th_N,\right]\in \R^N \qquad\qquad attension\_score \tag{1} et=[stT?h1?,?,stT?hN?,]RNattension_score(1)

点积之后会得到一系列的打分。之后将这些打分通过求softmax形成一个分布。(这些打分加起来总和为1,且均是非负的,可以看成一个概率分布)
α t = s o f t m a x ( e t ) ∈ R N a t t e n s i o n _ d i s t r i b u t i o n (2) \alpha^t=softmax\left(e^t\right)\in\R^N \qquad\qquad attension\_distribution \tag{2} αt=softmax(et)RNattension_distribution(2)

在这里插入图片描述
? 上图中原句第一个字的分布打分最高, 表明原句的第一个字对于翻译句子的开头部分更加重要,更加受到关注。有了注意力分布之后形成一个注意力的输出Attention output。注意力输出是基于注意力分数加权平均的一个向量。

在这里插入图片描述
? 用注意力分布计算输入句子的加权平均表征 α t \alpha_t αt?
α t = ∑ i = 1 N α i t h i ∈ R h (3) \alpha_t = \sum_{i=1}^N \alpha_i^t h_i \in \R^h \tag{3} αt?=i=1N?αit?hi?Rh(3)

在这里插入图片描述
? Attention output 能够帮助更好的翻译下一个词是什么,将 S 1 S_1 S1?的向量表示与Attension output进行拼接,拼接之后经过一个解码层,得到下一个字的概率分布。

? 注意力输出与 s t s_t st?拼接帮助解码: [ α t ; s t ] ∈ R 2 h [\alpha_t; s_t]\in \R^{2h} [αt?;st?]R2h

2.3 注意力的一般形式

? 注意力的一般定义:给定一组向量 (key, value)键值对,以及一个向量 query,注意力机制就是一种根据 querykeys 来计算 values 的加权平均的模块。

在这里插入图片描述

图片来源:https://zhuanlan.zhihu.com/p/35571412

注意力的多种写法

  • 点积注意力(dot-product attension):
    e i = s T h i ∈ R e_i=s^Th_i\in\R ei?=sThi?R

  • 乘法注意力(multiplicative attention):
    e i = s T W h i ∈ R e_i=s^TWh_i\in\R ei?=sTWhi?R

  • 加法注意力(additive attension)
    e i = v T t a n h ( W 1 h i + W 2 s ) ∈ R e_i=v^Ttanh(W_1h_i+W_2s)\in\R ei?=vTtanh(W1?hi?+W2?s)R

2.4 自注意力机制

? 一个字到整个句子的注意力形成过程

在这里插入图片描述
? Attention 建模句子表征:从单个字角度,如it_的向量表征与句子中的所有词之间计算注意力,由此更新其向量表征:

  • q i , k i , v i q_i,k_i,v_i qi?,ki?,vi? 分别乘以一个参数矩阵 W Q , W K , W V W_Q,W_K,W_V WQ?,WK?,WV?
    q i = h i W Q , k i = h i W K , v i = h i W V (4) q_i=h_iW_Q, \qquad k_i = h_iW_K, \qquad v_i=h_iW_V \tag{4} qi?=hi?WQ?,ki?=hi?WK?,vi?=hi?WV?(4)

  • 假设it_在句子的第i个位置,对第j个位置的注意力打分,
    e i , j = q i T k j (5) e_{i,j}=q_i^Tk_j \tag{5} ei,j?=qiT?kj?(5)

  • 注意力打分通过softmax归一化得到一个概率分布 α i \alpha_i αi?
    α i = S o f t m a x ( [ e i , 1 , ? ? , e i , T ] ) (6) \alpha_i=Softmax([e_{i,1},\cdots,e_{i,T}]) \tag{6} αi?=Softmax([ei,1?,?,ei,T?])(6)

  • 通过注意力打分的一个分布,对 value 进行一个 加权平均,之后经过一个线性层,乘以 W O W_O WO?,得到 h i ′ h_i^{'} hi? h i ′ h_i^{'} hi?就相当于it_向量表征之后的结果。
    h i ′ = ( a i , j v j ) W O (7) h_i^{'}=\left(a_{i,j}v_j\right)W_O \tag{7} hi?=(ai,j?vj?)WO?(7)

?attention操作完全并行的使句子中词语两两间有了交互。

3. BERT 网络结构

3.1 BERT中的位置编码

? 句子的顺序对自然语言处理的语义是很重要的一环,如蜂蜜&蜜蜂,但是现在自注意力机制并没有反应句子的顺序,故引入位置编码(Position encoding)。

? 假设句子是从1到T,T表示句长,然后对每个位置分配一个向量 p i p_i pi?,每个位置的向量 p i p_i pi?不同,这样即可表示句子的位置信息。
p i ∈ R d , f o r i ∈ { 1 , 2 , ? ? , T } p_i \in R^d, \quad for \quad i \in\{1,2,\cdots, T\} pi?Rd,fori{1,2,?,T}

? 1??位置编码可加在Embedding层,与句子中词的Embedding 直接相加,最终输出的 Embedding层是含有位置信息的,然后模型一路往上通过自注意力机制进行编码。

在这里插入图片描述
? 2??位置编码也可每层都加,通过这样增加来使得每一层不会去忘记它的位置信息。

在这里插入图片描述
位置编码的具体形式

? 1?? 正余弦位置编码。基于正余弦位置编码的表示公式 p i p_i pi? 如下所示,通过给正余弦不同的周期来达到区分位置的效果。

在这里插入图片描述
? 2?? 学习驱动的位置编码: p i p_i pi? 随机初始化,同模型一起学习。

3.2 BERT 中的全连接层与非线性激活函数

? 自注意力机制借助矩阵的公式来看,自注意力层主要是进行了一个加权平均。若用自注意力层形成一个编码器,则差了激活函数层
Q = H W Q , K = H W K , V = H W V , E = Q K T A t t n = Softmax ? ( E ) H ′ = Attn ? V (8) \begin{gathered} Q=H W_{Q}, K=H W_{K}, V=H W_{V}, \\ \mathrm{E}=Q K^{T} \\ A t t n=\operatorname{Softmax}(E) \\ H^{\prime}=\operatorname{Attn} V \tag{8} \end{gathered} Q=HWQ?,K=HWK?,V=HWV?,E=QKTAttn=Softmax(E)H=AttnV?(8)

? 自注意力机制主要是对句子中不同词之间的依赖建模,若使这个网络映射到更加高的维度,需增加一个全连接层,全连接层中含有非线性激活函数。

m i = M L P ( output i ) = W 2 ? ReLU ? ( W 1 × output i + b 1 ) + b 2 \begin{aligned} m_{i} &=M L P\left(\text {output}_{i}\right) \\ &=W_{2} * \operatorname{ReLU}\left(W_{1} \times \text {output}_{i}+b_{1}\right)+b_{2} \end{aligned} mi??=MLP(outputi?)=W2??ReLU(W1?×outputi?+b1?)+b2??

在这里插入图片描述
? 这里的操作是单点的(pointwise),句子中第 i 个位置的向量,它的全连接层的输出 m i m_i mi?,只由第i 个位置的输出 o u t p u t i output_i outputi?决定,而不接收句子中其他信息。

3.3 网络优化技巧

3.3.1 模型优化技巧 多头(multi-head )

? 多头注意力机制

? 1?? 不同的head去关注不同上下文依赖。即对每一个 h e a d i head_i headi?,去分别使用不同的 Q , K , V Q,K,V Q,K,V 矩阵 W i , Q , W i , K , W i , V W_{i,Q},W_{i,K},W_{i,V} Wi,Q?,Wi,K?,Wi,V?去生成不同的 Q i , K i , V i Q^i,K^i,V^i Qi,Ki,Vi,最后经过拼接后形成自注意力层 H ′ H^{'} H的输出。

Q i = H W i , Q , K i = H W i , K , V i = H W i , V H i , ′ = Softmax ? ( Q i K i T ) V i H ′ = [ H 1 , ′ , H 2 , ′ , … , H N , ′ ] W O (9) \begin{gathered} Q^{i}=H W_{\mathrm{i}, Q}, \quad K^{i}=H W_{i, K}, \quad V^{i}=H W_{i, V}\\ H^{\mathrm{i}, \prime}=\operatorname{Softmax}\left(Q^{i} K^{i^{T}}\right) V^{i} \\ H^{\prime}=\left[H^{1,^{\prime}}, H^{2,^{\prime}}, \ldots, H^{N,^{\prime}}\right] W_{O} \tag{9} \end{gathered} Qi=HWi,Q?,Ki=HWi,K?,Vi=HWi,V?Hi,=Softmax(QiKiT)ViH=[H1,,H2,,,HN,]WO??(9)

在这里插入图片描述
? 2?? 模型集成的效应(类似于谷歌Inception模型)。

在这里插入图片描述

Inception 模型

? Inception模型:在每一层中不单单使用一个卷积层网络的操作,这里不知道使用怎样的卷积神经网络操作是最好的,那就堆上一堆卷积核,卷积核的输出都给下一层,这样提取的特征是多层次的。

3.3.2 模型优化技巧 scaling

? scaled dot-product attention

? 在计算attention 分数时除去一个因子 d k \sqrt{d_k} dk? ? 。这样做是因为 模型维度较高时,向量点乘结果会比较大,这个时候由于经过了softmax,梯度会变小,训练会不稳定。

Q i = H W i , Q , K i = H W i , K , V i = H W i , V H i , ′ = Softmax ? ( Q i K i T d k ) V i H ′ = [ H 1 , ′ , H 2 , ′ , … , H N , ′ ] W O (9) \begin{gathered} Q^{i}=H W_{\mathrm{i}, Q}, \quad K^{i}=H W_{i, K}, \quad V^{i}=H W_{i, V}\\ H^{\mathrm{i}, \prime}=\operatorname{Softmax}\left(\frac{Q^{i} K^{i^{T}}}{\sqrt{d_k}}\right) V^{i} \\ H^{\prime}=\left[H^{1,^{\prime}}, H^{2,^{\prime}}, \ldots, H^{N,^{\prime}}\right] W_{O} \tag{9} \end{gathered} Qi=HWi,Q?,Ki=HWi,K?,Vi=HWi,V?Hi,=Softmax(dk? ?QiKiT?)ViH=[H1,,H2,,,HN,]WO??(9)

3.3.3 模型优化技巧 残差连接

? 残差连接: H l + 1 = H l + l a y e r ( H l ) H^{l+1}=H^l+layer(H^l) Hl+1=Hl+layer(Hl)

? 残差连接意义:① 解决深度网络的梯度消失问题(残差网络ResNet原文); ② 改变损失函数的形态,使得损失函数更加平滑。

在这里插入图片描述

Visual the Loss Landscape of Neural Nets. NeurlPS (2018)

3.3.4 模型优化技巧 LayerNormalization

? 层归一化

  • 对每个向量求其均值 μ \mu μ 和方差 σ \sigma σ,再将其进行归一化。
    x ′ = x ? μ σ + ? ? γ + β \mathrm{x}^{\prime}=\frac{x-\mu}{\sqrt{\sigma}+\epsilon} * \gamma+\beta x=σ ?+?x?μ??γ+β

在这里插入图片描述
? 层归一化意义:① 改变损失函数的形态,使得损失函数更加平滑。② 梯度的方差变小了。

? 层归一化位置

在这里插入图片描述在这里插入图片描述
? AutoTrans 提出采用自动机器学习的方法寻找layerNorm的最优位置组合。


参考链接 - 深度之眼 - BERT模型精讲

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:10:46  更:2021-07-15 16:13:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 4:20:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码