(CV学习笔记)Attention
Attention(注意力机制)
- Attention for Image
- Attention for Machine Translation
- Self-Attention
没有image-Attention:看图说话
整个网络属于分类任务。
Question:为什么不采用最后一层?
因为最后一层缺乏泛化能力(Lack of generalization capability)
LSTM部分
将CNN全连接层(FC4096)获得的向量称为v,通过线性转换获得矩阵Wih,引入LSTM网络中,获得函数:
$$h=tanh(W_{xh}\times x+w_{hh}\times h+Wih\times v)$$
同时,通过$Softmax$函数获得一个分布输出,得到概率最大值。
循环训练模型
缺陷!!!
- 错误叠加
如果某一部分错误,那后面也会错误 - Debug:错误在哪里?
上述方法生成的每一个描述,依赖于上一描述。 - 图像中的多个对象可能输出不同结果
image-Attention:看图说话
将注意力集中到图像中的某个或某几个对象,从而提高准确度。
大致流程
图片 -> CNN ->分为$N\times N = L$个区域,每个区域提取特征向量D -> 非线性转换f获得$h_0$ -> 获得$a_1$表示相关性:
$z$是加权平均值
完整表示生成第一个单词:
生成所有单词:
No attendtion:机器翻译-Seq2Seq模型
缺陷:
- Long-term Dependence
可以捕获短时间的关系,但是长时间的关系无法捕获。例如$W_3$可以捕获$W_1$,但是$W_{50}$难以捕获$W_1$。在利用梯度下降的方法进行计算的是时候,很容易出现梯度爆炸或者梯度消失。
所以长句子的翻译通常不是很准确
bottleneck problem
在Multimodel Learning中的中间向量来自左侧的输出结果,但是中间向量直接影响输出结果,所以中间向量被称为bottleneck
一但中间向量出现问题,那么后面就出现输出错误。这个问题称为bottlenect problem
注意力较差,可解释性较差。
Attention:机器翻译-Seq2Seq模型
大致流程
Encoder 部分变化不大,但是在生成第一个单词的时候,要将注意力放在第一个词。
那么How to do it?
分别计算$h_1$与$v_i$的内积:获得:score:$h_1\cdot v_1, h_1\cdot v_2, h_1\cdot v_3$
然后通过Normalization获得一个和为1的权重向量,求加权平均数$z_1$:
Self-Attention
Transformer
时序模型必然存在梯度问题。我们尝试使用非时序类模型来实现时序模型的特点,即捕获相关性。
Transformer是深度学习模型,纵向深度很深。Transformer也是一个Encoder-Decoder模型。
拆分可分为:
Feed Forward负责非线性转换,Self-Attention是关键。
Self-Attention详解
$x_1,x_2$代表的是输入的Embedding,定义了三个不同矩阵$W^Q,W^K,W^V$,那么$x_1\times W^Q = q_1,x_2\times W^Q = q_2,x_1\times W^K = k_1 ......$ 。
我们需要捕获不同单词之间的dependence,所以我们需要计算当前单词与其他单词的相关性,即使用当前单词的Queries分别与当前的词的Keys和其他单词的Keys求内积获得Score。
Score通过Normalization获得权值和为1的多个值。然后通过每个值分别与Values求加权平均值获得$z$
$$z_i = (softmax_i\times V_i+softmax_i\times V_{i+1}+......)$$
为什么在归一化之前要除以$8\sqrt{d_k}$?
$8\sqrt{d_k}$是一个实验值,$d_k$是向量的纬度,直接获得的Score值较大,直接通过softmax转换会使差距过大,导致部分权值失效。
通过这样的计算,可以获得某个单词与其他单词的关系:
颜色越深表示关系Score值越大,则关系越深。显然,"It"指的是"animal",所以"animail"颜色最深。
(CV学习笔记)Attention的更多相关文章
- C# Emgu CV学习笔记二之图像读写的两种方法
http://blog.csdn.net/marvinhong/article/details/6800450 图像显示在控件loadPictureBox上 方法一 //读取图像001.jpg Int ...
- (CV学习笔记)看图说话(Image Captioning)-2
实现load_img_as_np_array def load_img_as_np_array(path, target_size): """从给定文件[加载]图像,[缩 ...
- (CV学习笔记)看图说话(Image Captioning)-1
Background 分别使用CNN和LSTM对图像和文字进行处理: 将两个神经网络结合: 应用领域 图像搜索 安全 鉴黄 涉猎知识 数字图像处理 图像读取 图像缩放 图像数据纬度变换 自然语言处理 ...
- Emgu cv 学习笔记
http://www.cnblogs.com/CoverCat/p/5003363.html emgu中imagebox与picturebox imagebox 是emgu 设置好厚,新出现的控件 ...
- (CV学习笔记)梯度下降优化算法
梯度下降法 梯度下降法是训练神经网络最常用的优化算法 梯度下降法(Gradient descent)是一个 ==一阶最优化算法== ,通常也称为最速下降法.要使用梯度下降法找到一个函数的 ==局部最小 ...
- 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...
- OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- 播放一个视频并用滚动条控制进度-OpenCV应用学习笔记二
今天我们来做个有趣的程序实现:利用OpenCV读取本地文件夹的视频文件,并且在窗口中创建拖动控制条来显示并且控制视频文件的读取进度. 此程序调试花费了笔者近一天时间,其实大体程序都已经很快写出,结果执 ...
随机推荐
- 冒泡算法及其优化(java)
冒泡算法的规则: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放待排序序列的起始位置(或末尾位置),直到全部待排序的数据元素排完 动态图: 对应代码 static void swap(i ...
- POJ - 1163 The Triangle 【动态规划】
一.题目 The Triangle 二.分析 动态规划入门题. 状态转移方程$$DP[i][j] = A[i][j] + max(DP[i-1][j], DP[i][j])$$ 三.AC代码 1 #i ...
- mongodb安装及常见命令操作
Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自 ...
- 【MCU】移植AT32库&FreeRTOS教程
目录 前言 1. 移植AT库 1.1 移植内核相关文件 1.2 移植芯片型号相关文件 1.3 移植芯片外设驱动库 1.4 移植配置文件及中断回调函数文件 2. 移植FreeRTOS源码 2.1 获取 ...
- 【FreeRTOS】cpu利用率统计
目录 前言 概念 作用 必看点 实现 添加几个宏定义 源码 FreeRTOS STM32 定时器 简要说明 前言 本笔记基于 stm32+FreeRTOS. 主要参考野火.安富莱. 概念 简单概要: ...
- Android Studio 之 在活动中使用 Toast
•简介 Toast 是 Android 系统提供的一种非常好的提醒方式: 在程序中可以使用它将一些短小的信息通知给用户: 这些信息会在一段时间内自动消失,并且不会占用任何屏幕空间 •Toast.mak ...
- 面试题-你听过TCP Fast Open (TFO/TCP快速打开)吗?能解释一下吗?
TCP Fast Open (TFO/TCP快速打开) TCP快速打开(TCP Fast Open,TFO)是什么? TCP快速打开(TCP Fast Open,TFO)是对TCP的一种简化握手手续的 ...
- 创建第一个HTML文件
首先右键新建文本文档,然后打开新建的文档,文本内容写上: <html> <head> <title>我的HTML标题</title> </head ...
- 201871030119-马桂婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 2018卓越工程师班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握Github协作开发程序的操作方法 ...
- Linux 磁盘管理(df fu fdisk mkfs mount)
Linux 磁盘管理 Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df : 列出文件系统的整体磁盘使用量 du : 检查磁盘空间使用 ...