当前位置:   article > 正文

BERT基础(一):self_attention自注意力详解_bertselfattention

bertselfattention

BERT中的主要模型为Transformer,而Transformer的主要模块就是self-attention。为了更好理解bert,就从最基本的self-attention 开始。之后的博文则一步一步推进到bert。


参考:李宏毅2019年新增课程 week 15 transformer 课程笔记

视频及课件地址https://www.bilibili.com/video/av65521101/?p=97

一、RNN和CNN的局限

img

RNN的输入是一串vector sequence,输出是另外一串vector sequence。如果是单向的RNN,输出是 b 4 b^4 b4的时候,会把 a 1 a^1 a1 a 4 a^4 a4通通都看过,输出 b 3 b^3 b3的时候,会把 a 1 a^1 a1 a 3 a^3 a3都看过。如果是双向RNN,输出每一个 b 1 b^1 b1 b 4 b^4 b4的时候,已经把整个input sequence通通都看过。

RNN存在的问题是不容易被平行化,即假设单向的情况下要算出 b 4 b^4 b4,需要先看 a 1 a^1 a1再看 a 2 、 a 3 、 a 4 ​ a^2、a^3、a^4​ a2a3a4才能算出。

解决方法:用CNN代替RNN。如图,input一个sequence a 1 a^1 a1 a 4 ​ a^4​ a4,每一个三角形代表一个filter(滤波器),输入是sequence 中的一小段,输出一个数值。若有一堆filter,输入是一个sequence,输出是另外的sequence。

CNN也有办法考虑更长的资讯,只要叠加很多层,上层的filter就可以考虑比较多的资讯。举例来说,叠了第一层CNN再叠第二层的CNN,第二层CNN的filter 会把第一层的output当作input。如图,蓝色的filter由 b 1 , b 2 , b 3 ​ b^1,b^2,b^3​ b1,b2,b3决定输出,而 b 1 , b 2 , b 3 ​ b^1,b^2,b^3​ b1,b2,b3是由来 a 1 ​ a^1​ a1 a 4 ​ a^4​ a4决定他们的输出,所以等同于蓝色的filter 已经看到了 a 1 ​ a^1​ a1 a 4 ​ a^4​ a4的内容。CNN的好处是可以平行化,每一个同颜色的filter可以同时计算。

CNN 的缺点:每一个CNN只能考虑非常有限的内容,要叠很多层才能看到长期资讯。

二、 self-Attention

在这里插入图片描述

假设我们想用机器翻译的手段将下面这句话翻译成中文:

“The animal didn’t cross the street because it was too tired”

“The animal didn’t cross the street because it was too wide”

当机器读到“it”时,“it”代表“animal”还是“street”呢?对于人类来讲,这是一个极其简单的问题,但是对于机器或者说算法来讲却十分不容易。

self-Attention则是处理此类问题的一个解决方案,当模型处理到“it”时,self-Attention可以将“it”和“animal‘联系到一起。

它是怎么做到的呢?

通俗地讲,当模型处理一句话中某一个位置的单词时,self-Attention允许它看一看这句话中其他位置的单词,看是否能够找到能够一些线索,有助于更好地表示(或者说编码)这个单词。

1. self-Attention优势

Self-Attention:输入和输出都是sequence,跟Bi-RNN有同样的能力,每个输出都看过input sequence,但特别的地方是 b 1 b^1 b1到< b 4 b^4 b4可以并行计算。

self-Attention这个概念最早出现在谷歌的论文 Attention is all you need,意思是不需要CNN也不需要RNN,唯一需要的就是attention。

2. self-Attention具体推导过程

img

在这里插入图片描述

如图:

(1) x 1 x^1 x1 x 4 x^4 x4 i n p u t s e q u e n c e input sequence inputsequence,每一个 i n p u t input input通过 e m b e d d i n g embedding embedding 乘上一个矩阵,变成 a 1 a^1 a1 a 4 a^4 a4
a i = W x i a^i=Wx_i ai=Wx

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号