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

本文深入探讨了BERT中的Transformer模型,重点解析了self-attention机制,包括其优势、计算过程和多头注意力的概念,揭示了如何解决RNN和CNN的局限性,为机器翻译等任务提供更高效的信息处理方式。
摘要由CSDN通过智能技术生成

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=Wxi

self-attention是一种注意力机制,最早出现在谷歌的论文《Attention is all you need》中。它的含义是不需要依赖于CNN或RNN等传统的神经网络结构,只需要使用attention机制即可。 在Transformer模型中,self-attention是其中的一个关键模块。为了更好地理解BERT模型,可以从最基本的self-attention开始,逐步推进到BERT模型的理解。 具体来说,self-attention的推导过程如下:给定查询(Q)、键(K)和值(V),通过计算它们之间的相似度得到注意力权重,然后将值(V)加权求和,得到最终的输出。注意力权重的计算公式为softmax(QK^T / sqrt(d_k)),其中,d_k是特征维度。这个公式的含义是,使用注意力权重对字向量进行加权线性组合,从而使得每个字向量都包含了当前句子中所有字向量的信息。 总结起来,self-attention是一种利用注意力机制对字向量进行加权线性组合的方法,从而让每个字向量都包含了整个句子的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [BERT基础(一):self_attention注意力详解](https://blog.csdn.net/yangdan1025/article/details/102912124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值