attention机制_简析Attention机制—优缺点,实现,应用

什么是Attention机制?

Attention机制的本质来自于人类视觉注意力机制。人们在看东西的时候一般不会从到头看到尾全部都看,往往只会根据需求观察注意特定的一部分。

简单来说,就是一种权重参数的分配机制,目标是协助模型捕捉重要信息。具体一点就是,给定一组<key,value>,以及一个目标(查询)向量query,attention机制就是通过计算query与每一组key的相似性,得到每个key的权重系数,再通过对value加权求和,得到最终attention数值。

72501f53a2a5248d52af7ecaaf2f3d8f.png

a133933a909079afaa5115bd7d45b167.png

优缺点:

优点:

  1. 一步到位获取全局与局部的联系,不会像RNN网络那样对长期依赖的捕捉会收到序列长度的限制。
  2. 每步的结果不依赖于上一步,可以做成并行的模式
  3. 相比CNN与RNN,参数少,模型复杂度低。(根据attention实现方式不同,复杂度不一)

缺点:

  1. 没法捕捉位置信息,即没法学习序列中的顺序关系。这点可以通过加入位置信息,如通过位置向量来改善,具体可以参考最近大火的BERT模型。

应用领域:

在这主要介绍几篇论文或经典文档。

自然语言处理:

  1. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  2. Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
  3. Generating Wikipedia by Summarizing Long Sequences
  4. Universal Transformers

计算机视觉:

  1. Image Transformer
  2. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

推荐系统:

  1. Deep Interest Network for Click-Through Rate Prediction
  2. Deep Interest Evolution Network for Click-Through Rate Prediction
  3. Learning Tree-based Deep Model for Recommender Systems

Attention常见实现方法

  1. 多层感知机:

88fd9744730f2526d6b09e4e3fd32373.png

该方法主要是将Q,K拼接,然后一起通过一个激活函数为tanh的全连接层,再跟权重矩阵做乘积,在数据量够大的情况下,该方法一般来说效果都不错。

2.Dot Product / scaled-dot Product:

c0a44578ce15d6f60ba4a025f2410577.png

该方法适用于query与key维度相同情景,通过q转置后与k点积。在权重值过大的情况下,可以将数据标准化,即scaled-dot Product。

3.Bilinear:

951f674f02117a02496bef686df0c8c5.png

通过一个权重矩阵直接建立query与key的关系,权重矩阵可以随机初始化也可以使用预设的。

4.cosine

49036c4fa18713e1081e517d5a9c123f.png

即计算两个向量的cosine相似度。

self-attention

该方法即Q,K,V都来自于同一个输入,其余计算过程,基本同上常用方法。

Multi-Head Attention

该方法可以理解成attention版本的ensemble,不同head学习不同的子空间语义。权值计算也同上常用方法。

ecfcf2b53c15bab366c18e72f4435a38.png

推荐系统中的attention机制

现在推荐系统的趋势基本是朝着海量数据+复杂模型的方向发展,相信将来会取代人工精细特征+简单模型的方式。

这里主要介绍阿里的din模型:

8c6ca514bdb426a490eff52f57ee2cfa.png

模型的主要思想在于用户的兴趣是无序的,比如在电商场景下,用户A的历史行为序列包含游泳用品,牛奶,女装。而当前展示的广告是女装,它便只能激活女装的这个兴趣,即在当前展示广告面前,用户的兴趣是多峰的。

基于此,通过target广告与用户行为序列key做attention,捕获当前最可能被激活的那个峰。

具体算法实现便是通过target与行为序列做attention,再将输出与其他特征拼接之后通过全连接层得到最终输出。

相似的应用场景还有TDM模型,DIEN模型等。

小弟在此抛砖引玉,希望各位看官多多指点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm Debug问题

pycharm Debug问题 参考链接:https://blog.csdn.net/weixin_43472408/article/details/85072640 Debug的调试方式如下所示&#xff1a; 1.show execution point (F10) 显示当前所有断点 2.step over(F8) 单步调试。 若函数A内存在子函数a时&#xff0c;不会进入子函数a内执…

php执行npm命令_npm系列之命令执行

当我想使用vue的脚手架来创建一个项目的时候&#xff0c;我应该怎么做&#xff1f;执行命令 npm install -g vue/cli 全局安装&#xff0c;之后就可以在控制台中使用vue create programName 来创建一个项目。为什么可以直接使用vue命令&#xff1f;这类支持命令的依赖会在项目中…

模拟产品展示 Flash无法展示的追踪过程

鼠标滑过小图时&#xff0c;左侧前四张大图可以&#xff0c;但是最后那张大图无法展示&#xff1a; falsh产品展示需要通过参数传递&#xff0c;把关联产品id的图片get出来&#xff0c;如&#xff1a; http://192.168.8.166:90/category/prod_img.aspx?prodid101 结果&#xf…

c语言贪吃蛇最简单代码_C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!...

点击上方“大鱼机器人”&#xff0c;选择“置顶/星标公众号”福利干货&#xff0c;第一时间送达&#xff01;指针对于C来说太重要。然而&#xff0c;想要全面理解指针&#xff0c;除了要对C语言有熟练的掌握外&#xff0c;还要有计算机硬件以及操作系统等方方面面的基本知识。所…

SpringSecurity深度解析与实践(3)

这里写自定义目录标题 引言SpringSecurity之授权授权介绍java权限集成 登录失败三次用户上锁 引言 SpringSecurity深度解析与实践&#xff08;2&#xff09;的网址 SpringSecurity之授权 授权介绍 Spring Security 中的授权分为两种类型&#xff1a; 基于角色的授权&#…

机器学习之单标签多分类及多标签多分类

单标签二分类算法 Logistic算法 单标签多分类算法 Softmax算法 One-Versus-One&#xff08;ovo&#xff09;&#xff1a;一对一 One-Versus-All / One-Versus-the-Rest&#xff08;ova/ovr&#xff09;&#xff1a; 一对多 ovo和ovr的区别 Error Correcting Output code…

cas单点登录-jdbc认证(三)

前言 本节的内容为JDBC认证&#xff0c;查找数据库进行验证&#xff0c;其中包括&#xff1a; 密码加密策略&#xff08;无密码&#xff0c;简单加密&#xff0c;加盐处理&#xff09;认证策略&#xff08;jdbc&#xff09;一、业务需求 不同的公司&#xff0c;需求业务需求或者…

mybatis foreach map_重学Mybatis(六)-------输入映射(含面试题)

博主将会针对Java面试题写一组文章&#xff0c;包括J2ee&#xff0c;SQL&#xff0c;主流Web框架&#xff0c;中间件等面试过程中面试官经常问的问题&#xff0c;欢迎大家关注。一起学习&#xff0c;一起成长&#xff0c;文章底部有面试题。入参映射关键字说明图中paramenterTy…

蒋涛作序盛赞Leo新作为“程序员职场实用百科全书”——《程序员羊皮卷》连载(1)

《程序员羊皮卷》当当购买地址&#xff1a;http://product.dangdang.com/product.aspx?product_id20691986 互动购买地址&#xff1a;http://www.china-pub.com/196049 程序员行业从外面看起来有很多绚丽的光环&#xff0c;这里有无数以程序致富的天才&#xff0c;世界首富比…

matlab ones函数_Matlab中相见恨晚的命令(持续更新)

知乎上有个“有哪些让人相见恨晚的Matlab命令”的话题&#xff0c;很多答主提供的命令确实很实用&#xff0c;为了更方便大家的学习&#xff0c;我就知乎上的答案和我自己想到的都综合整理成了一篇文章&#xff0c;把我觉得很实用的指令整理出来。知乎原答案链接dbstop if erro…

机器学习之特征工程

特征工程-概念 特征工程是一个面向十分广的概念&#xff0c;只要是在处理数据就可以认为是在做特征工程。个人理解&#xff0c;真正意义上的特征工程还是数据降维和数据升维的过程。 而前期对数据的处理过程&#xff1a; 需要哪些数据&#xff1f;数据如何存储&#xff1f;数…

ArcGIS AO开发高亮显示某些要素

参考代码1 ifeaturecursor pcur ifeatureclass.search(iqueryfilter pfilter); pfilter.whereclause strAddress; //输入查询条件&#xff0c;也就是你寸地址的字段名didian ifeature pfeat pcur.nextfeature();// 如果pCur多个要素&#xff0c;则可以考虑将其合并并一起高亮…

du -sh 如何找到最大的文件夹_小白必看!手把手教你如何在linux上安装redis数据库...

首先我们要清楚redis是什么&#xff1f;redis是一种非关系型数据库&#xff0c;它与MySQL的这种关系型数据库不同&#xff0c;MySQL是将数据存储在磁盘中&#xff0c;而redis是储存在内存中。一般很多公司都是使用MySQLredis两种数据存储方式&#xff0c;这样可以提高性能&…

机器学习之线性回归 损失函数、代价函数、目标函数

损失函数&#xff08;Loss Function&#xff09;定义在单个样本上&#xff0c;算的是一个样本的误差。比如&#xff1a; 其中0-1损失函数: 感知器损失函数&#xff1a; 平方和损失函数&#xff1a; 绝对损失函数&#xff1a; 对数损失函数&#xff1a; 代价函数&#xff08;Cos…

git 远程仓库管理 分支创建、管理、查看、切换

作用&#xff1a; 区分生产环境代码以及开发环境代码研究新的功能或者攻关难题解决线上bug 特点&#xff1a; 项目开发中公用分支包括master、dev分支master是默认分支&#xff0c;用于发布&#xff0c;当需要发布时将dev分支合并到master分支分支dev是用于开发的分支&#…

Hadoop Hive概念学习系列之hive的数据压缩(七)

Hive文件存储格式包括以下几类&#xff1a; 1、TEXTFILE 2、SEQUENCEFILE 3、RCFILE 4、ORCFILE 其中TEXTFILE为默认格式&#xff0c;建表时不指定默认为这个格式&#xff0c;导入数据时会直接把数据文件拷贝到hdfs上不进行处理。 SEQUENCEFILE&#xff0c;RCFILE&#xff0c;O…

java 加锁_Java并发之synchronized深入

一句话总结synchronized&#xff1a;JVM会自动通过使用monitor来加锁和解锁&#xff0c;保证了同时只有一个线程可以执行指定代码&#xff0c;从而保证了线程安全&#xff0c;同时具有可重入和不可中断的性质。一.synchronized的作用使用synchronized修饰方法或者代码块时&…

激活函数之 Sigmoid、tanh、ReLU、ReLU变形和Maxout

Sigmoid函数 Sigmoid函数计算公式 sigmoid&#xff1a;x取值范围(-∞&#xff0c;∞)&#xff0c;值域是(0, 1)。 sigmoid函数求导 这是sigmoid函数的一个重要性质。 图像 代码 # -*- coding: utf-8 -*- """ author: tom """import numpy im…

Python查看、修改pip install 默认使用的pip库

一、更改 Python 的 pip install 默认使用的pip库 【方法】只需要将对应python脚本的路径添加到系统环境变量Path中较前的位置即可&#xff0c;这样就可以获得优先级。 1、打开终端&#xff0c;可以通过指令 pip show pip 查看默认使用的pip包&#xff1a; 2、现在&#xff…

cmd 找到8080对应进程_多进程概括

多进程图像操作系统记录进程&#xff0c;并按照合理的次序交替推进(分配资源&#xff0c;不断调度)&#xff0c;提高CPU利用率和程序执行速度&#xff0c;这就是操作系统的多进程图像。当操作系统启动时&#xff0c;多进程图像就出现了。 在linux内核源码main.c文件中&#xff…