keras cnn注意力机制_[深度应用]·Keras实现Self-Attention文本分类(机器如何读懂人心)

本文通过Keras详细讲解Self-Attention机制在文本分类中的应用,包括Self-Attention的概念解析、模型搭建、训练过程及结果输出。
摘要由CSDN通过智能技术生成

f94703a281b985fedc74f4a6a91772e3.png

[深度应用]·Keras实现Self-Attention文本分类(机器如何读懂人心)

配合阅读:
[深度概念]·Attention机制概念学习笔记
[TensorFlow深度学习深入]实战三·分别使用DNN,CNN与RNN(LSTM)做文本情感分析

笔者在[深度概念]·Attention机制概念学习笔记博文中,讲解了Attention机制的概念与技术细节,本篇内容配合讲解,使用Keras实现Self-Attention文本分类,来让大家更加深入理解Attention机制。

作为对比,可以访问[TensorFlow深度学习深入]实战三·分别使用DNN,CNN与RNN(LSTM)做文本情感分析,查看不同网络区别与联系。

一、Self-Attention概念详解

Self-Attention详解

了解了模型大致原理,我们可以详细的看一下究竟Self-Attention结构是怎样的。其基本结构如下

3a673e65dfa54b362d99fad82e8e70a2.png

对于self-attention来讲,Q(Query), K(Key), V(Value)三个矩阵均来自同一输入,首先我们要计算Q与K之间的点乘,然后为了防止其结果过大,会除以一个尺度标度

,其中
为一个query和key向量的维度。再利用Softmax操作将其结果归一化为概率分布,然后再乘以矩阵V就得到权重求和的表示。该操作可以表示为

这里可能比较抽象,我们来看一个具体的例子(图片来源于https://jalammar.github.io/illustrated-transformer/,该博客讲解的极其清晰,强烈推荐),假如我们要翻译一个词组Thinking Machines,其中Thinking的输入的embedding vector用

表示,Machines的embedding vector用
表示。

33eca225818ebb287393e5f46d807503.png

当我们处理Thinking这个词时,我们需要计算句子中所有词与它的Attention Score,这就像将当前词作为搜索的query,去和句子中所有词(包含该词本身)的key去匹配,看看相关度有多高。我们用

代表Thinking对应的query vector,
分别代表Thinking以及Machines对应的key vector,则计算Thinking的attention score的时候我们需要计算
的点乘,同理,我们计算Machines的attention score的时候需要计算
的点乘。如上图中所示我们分别得到了
的点乘积,然后我们进行尺度缩放与softmax归一化,如下图所示:

1462bb334af5392339b4f0aea79f1db6.png

显然,当前单词与其自身的attention score一般最大,其他单词根据与当前单词重要程度有相应的score。然后我们在用这些attention score与value vector相乘,得到加权的向量。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值