自然语言处理之Attention机制

本文深入探讨了注意力机制在自然语言处理中的应用,详细解释了Encoder-Decoder模式,并在此基础上介绍了注意力机制如何通过为上下文信息分配权重,提升模型的焦点捕捉能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

        Attention!见名知意,它是对于人类注意力机制的一种模仿。当我们看到一张图像,一篇文字的时候,我们会本能的去注意那些更重要的部分,我们给这些东西叫做引人注目。计算机工程师们总是竭尽全力的让计算机接近人类,那么如何把注意力机制加在计算机上,让它们学会去抓重点呢?跟我来!

2.Encoder-Decoder

         因为现在很多的注意力机制模型都是附着在Encoder-Decoder模式基础上的,所以我们首先来聊一下它。举个例子,我听到一个美女说:"我觉得你跟我未来的老公长得很像。",我的大脑会对这条信息进行处理形成自己的理解,这就是encoder。然后我要对这句话进行反应,就是解码的过程。解码的时候,我得基于自己对她说的这句话的理解,和自己前面说过的话来组织语言。基于对她的理解,这是为了使我的回答是和她的话相关的;基于自己前面说的话,那是为了让我的语言通顺,使自己说出来的是一句人话。最后我回了人一句:“对不起,我是你永远都得不到的爸爸!”

        基于上面的阐述,我们总结一下其中训练的原理。我们要让模型建立这样一种关系 ,(即输入句子和历史输出),与当前时刻输出之间的关系。最终训练出来的模型,知道它自己每一个时刻要说什么,我们让他说的快一点那就是一句连续的话了。

        这个模型的可以满足这样一种应用,给定一段信息,输出另一段信息。那么就可应用于聊天机器人、机器翻译、语音识别、文章概要生成等许多的方面。其实人工智能是唯一能够完全颠覆这个世界的一项可行性技术,已经沉睡了太久,我们正在尝试着一点点的唤醒这个庞然大物。

     

3.Attention注意力机制

       根据前言中的说明,Attention注意力就是在计算机执行过程中加入注意力这一因素。具体的操作就是给上下文信息中加入对应的权重。如下图所示,整个的过程就是一个编码解码的过程,左边为输入编码,右边为输出解码。唯一不同的是我们在输出解码的时候加入了计算权重的步骤。

       这个权重的计算过程如下:将输入hi时刻隐层的值和输出ht前一时刻隐层的值相乘,经过softmax函数,就得到了输入hi在计算ht时刻输出时所占的权重。将这个上下文向量和解码层的输入相乘,结果通过输出层就得到了ht时刻的输出。把所有的时刻连起来就是之后的输出文本了。

     

      关于上图相似性的计算,常见的两种机制

               1.BahdanauAttention:使用两个W分别乘以decoder的ht-1层状态和encoder隐层输出,两者相加经过tanh函数,然后在和V(V可以理解为values,即decoder隐层所有的输出)相乘得到分数score,使用softmax(score)得到权重weights,然后在和context相乘得到context vector

                          

               2.LuongAttention:处理流程和B Attention一致,只是在计算分值score的时候,使用decoder ht时刻的状态乘以W,再和encoder隐层输出相乘。

                                   

4.总结

            今天我们介绍了自然语言处理中的编码解码模式和注意力机制。编码解码模式,就是左边网络对信息进行编码,右边网络对编码后的信息进行解码。解码并不是对原来编码过程的还原,而是通向另外一种形式的输出。这样我们就可以建立一段信息和另外一段信息之间的连接关系,可以用来做问答系统,语音识别等。注意力机制是在编码解码模式上,对于上下文信息加入了权重向量,表示上下文中不同词汇对于当前时刻预测的贡献值。这样我们的模型就学会了抓重点。其中使用余弦相似度或者通过网络学习来计算我们的权重。

 5.废话

           这里的一切都太重了,我觉得我都有点背不动了。各种烦心的事,各种无形的压力。没有人在我的身边,无奈之下,我只能和宇宙对话。我问天空中的层层乌云,你们到底在隐藏着些什么。世界真的有我们想象的那么复杂吗?还是说企图用有限的思想去表达无限的宇宙这本来就是不对的。无数代人类最伟大的精英们,给社会编制了一套大型的猜谜游戏,把所有的人都给玩了。我想要从这一切中抽身出来,用不一样的眼光来看待这个世界。不是为了使自己与众不同,而是因为我知道他们看世界的方式是错误的。他们研究的动机,是为了利用这个世界,是出于狂妄的自私。但是我想从拥抱这个世界开始,因为我感觉到了那份对于生命来说最重要的爱,那似乎是宇宙最原始的动力。而那些都不是我能主动去索取的,而是来自于张开双臂之后,世界的给与。

BIGBANG《LOSER》现场版,气氛太好了,比听CD还过瘾!

 

### 自然语言处理中的注意力机制解释 #### 注意力机制概述 在自然语言处理领域,注意力机制是一种允许模型聚焦于输入序列的不同部分的技术。这种技术使得模型能够更有效地捕捉到重要的上下文信息,从而提高性能[^3]。 #### 巴赫达诺夫注意力机制的工作流程 对于巴赫达诺夫提出的注意力机制而言,其工作原理涉及几个关键步骤: 1. **生成编码器隐藏状态**:这是指通过编码器网络(通常是RNN、GRU或LSTM)逐时间步地读取源语句并计算每一时刻的状态表示。这些状态不仅包含了当前词的信息还融合了之前所有词语的影响。 2. **计算得分函数**:为了决定哪些位置应该被赋予更高的关注程度,在解码过程中会基于先前的解码器隐含层输出以及所有的编码器隐藏状态来评估每一个可能的目标端词汇的重要性分数。 3. **应用softmax激活**:上述得到的原始评分经过softmax转换成概率分布形式即所谓的“注意权值”,它反映了各个源侧单元对目标预测所作贡献的比例大小。 4. **加权求和操作**:最后一步就是按照所得的概率向量去线性组合对应的编码特征向量获得最终用于指导下一步翻译决策的新表征向量。 ```python import torch.nn.functional as F def calculate_attention(encoder_hidden_states, decoder_hidden_state): scores = ... # Compute alignment scores between encoder states and current decoder state. attention_weights = F.softmax(scores, dim=0) context_vector = torch.sum(attention_weights.unsqueeze(-1) * encoder_hidden_states, dim=0) return context_vector, attention_weights ``` #### LSTM与注意力对比 相较于传统的循环神经网络如LSTM,后者由于结构上的局限不得不依次遍历整个句子即使某些成分之间存在较弱关联也得一视同仁地对待;相反引入了注意力之后便能动态调整不同片段间联系强度进而更好地适应复杂多变的任务需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值