深度学习--自注意力机制

自注意力机制(Self-Attention Mechanism)是深度学习中的一种重要技术,广泛应用于自然语言处理、计算机视觉等多个领域。

引入

如何用数据表示文字

 一、编码为向量(one-hot编码)

缺点:

1, 维度太长。

2,体现不出关系,表现不了含义,如猫和狗两个字应该离得近,我你他应该离得近

二、让模型自己学

仍然是one-hot,但是模型来编码

常见输入:

每个字对应一个编码

常见输出:

  • 每个词都有输出一个值:如输出每个字的词性(代词、动词)
  • 所有词输出一个值:如一句话的情感
  • 输入输出长度不一定:如翻译任务

前后关系的考虑

假如有一个词性识别任务

对于同一个字的输入,输出不一样

 序列输入必须考虑前后

RNN 循环神经网络

循环神经网络(Recurrent Neural Network,RNN)是一种专门用于处理序列数据的神经网络

RNN 的核心特点是其具有循环连接的结构,即网络中的神经元不仅可以接收当前时刻的输入,还能接收上一时刻的输出作为额外输入。这使得 RNN 能够对序列中的信息进行记忆和利用,从而处理具有顺序依赖关系的数据。

应用领域

  • 自然语言处理:在机器翻译中,RNN 可以将源语言句子中的单词序列逐个输入,学习到句子的语义表示,然后生成目标语言的单词序列;在文本生成任务中,根据给定的上下文或主题,RNN 可以逐个生成单词,形成连贯的文本。
  • 语音识别:将语音信号的特征序列作为输入,RNN 可以学习到语音特征与文字之间的映射关系,从而将语音转换为文字。
  • 时间序列预测:对于如股票价格预测、天气预报等任务,RNN 可以根据历史时间序列数据中的趋势和模式,预测未来的数值或趋势。

优缺点

  • 优点:能够有效处理序列数据中的顺序信息和依赖关系,在处理具有时间序列特性或顺序结构的数据时具有天然的优势;可以根据输入序列的长度动态地进行计算,不需要对输入进行固定长度的截断或填充。
  • 缺点:随着序列长度的增加,RNN 会面临梯度消失或梯度爆炸问题,使得模型难以学习到长序列中的依赖关系;计算效率相对较低,在处理长序列时需要依次处理每个时间步,无法像卷积神经网络那样进行高度并行化计算
不利于长序列
 长短期记忆LSTM

为了解决简单 RNN 的长序列依赖问题,LSTM 引入了记忆单元门控机制,包括输入门、遗忘门和输出门。通过这些门控机制,LSTM 能够有选择性地更新和遗忘记忆单元中的信息,从而更好地捕捉长序列中的依赖关系。

但是RNNLSTM太慢了,我们有没有办法一下子看完整篇文章, 输出结果。(只能串行不能并行)

自注意力机制 

在深度学习处理序列数据时,传统的循环神经网络(RNN)和卷积神经网络(CNN)在捕捉长序列依赖关系等方面存在一定的局限性。自注意力机制应运而生,旨在更高效地捕捉序列数据中的长期依赖关系,能让模型在处理序列中的某个位置时,直接关注到序列中其他所有位置的信息,而无需像 RNN 那样顺序地处理每个位置,也无需像 CNN 那样通过多层卷积来逐步扩大感受野。

 

将输入序列中的每个元素映射为对应的向量表示,通常会分别映射为查询向量(Query)、键向量(Key)和值向量(Value)。比如在自然语言处理中,一个单词经过嵌入层等操作(三个全连接)后得到这三个不同的向量表示。

自己的q与其他元素k点乘,得到对于其他元素的注意力a_{ij}(包括对自己),每个注意力都经过Soft-max(使得相加为1)得到a_{ij}',再和v相乘相加得到b

每一个字的特征提取, 都可以同时进行,因为它不需要等待前一个完成,完全并行!

 

整体流程: 

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

位置信息

加上位置信息:

自己的编码和位置编码直接相加

 


 BERT

BERT是一个特征提取器(预训练语言模型),在大规模的文本上进行无监督的预训练

BERT 的核心架构是基于 Transformer 的编码器。Transformer 采用自注意力机制来高效处理序列数据,能并行计算且有效捕捉长序列中的依赖关系。BERT 通常由多个堆叠的 Transformer 编码器层组成,每个编码器层包含多头注意力机制和前馈神经网络等组件。

BERT的两个预训练任务

1、MLM 掩码语言模型(Masked Language Model)

把文字的一部分遮住,训练模型猜词语

随机将输入文本中的一些词用特殊的掩码标记 [MASK] 替换,模型的任务是根据上下文预测被掩码的词。例如,对于句子 “The dog is [MASK] in the park”,模型需要预测出 [MASK] 位置可能是 “running”“playing” 等词。通过这种方式,BERT 能够学习到文本中的语言模式和语义关系,捕捉词与词之间的依赖。

2、NSP 下一句预测(Next Sentence Prediction)

给定一对句子,模型需要预测第二句是否是第一句的下一句。这有助于模型理解句子之间的逻辑关系,如因果、并列、转折等。例如,输入 “我今天去了公园。” 和 “我在公园里看到了很多花。”,模型应预测为正例;而输入 “我今天去了公园。” 和 “明天会下雨。”,模型应预测为负例。

Bert的输入embedding

Segment Embedding:表示词语在哪个句子 

Bert的输出:最常见的是只输出CLS这一个输出


总结

一、字的表示

二、为了知道上下文,引入了 RNN 和 LSTM。

三、上面的模型不能并行,速度慢,只能单向(也有双向模型),所以引入 Self - attention。

四、Self - attention,每一个字加上位置embedding,相加为 token之后,通过 Q、K、V 来交互,Q 是 query,K 是 key,V 是 value。Q 和 K 算出注意力,V 按照注意力相加为输出。

五、BERT 是一个编码器,目的是把一句话编码为特征。它采用自监督预训练获得特征提取能力。之后在下游任务可以提取特征后,让特征去做分类任务。

六、BERT 的结构三部分:

  1. Embedding 层。
  2. Self - attention 层让特征交互。
  3. Pooler 输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值