关于Transformer中feed forward layer理解
今天记录一下个人关于Transformer中前馈神经网络(FFN)的一点理解。
第一点,我们知道,FFN之前是有一个多头注意力机制的模块。我们可以想想一下,如果这个模块直接输出,不经过FFN层会发生什么,要知道多头注意力(MH)是没有激活函数的,那么最后只有一个结果,那就是很多头的输出就是一个极为相似的结果。这并不是我们想要的结果,所以这个时候,我们可以考虑使用FFN层,因为这个结构可以提供更好的特征表达能力(也就是提供了非线性,非线性很重要,不然DL就没法搞那么深了)。
第二点,关于self-attention这个模块,该模块其实就是学习某个特征与其余其他特征之间的相似度分数,然后利用softmax归一化成注意力分数,之后对某个特征与其他特征的相似性进行加权输出。而这个过程就意味着self-attention输出的并不是上下文语义嵌入,而是原始上下文本身(就是怎么输进去就怎么输出来,只不过输出来的值是带有权重的,比如,我去店里买咖啡,从店里出来时我带着咖啡这个权重,只不过我还是我,并没有变。感觉这比喻有点问题,但是我只能这么理解了)。所以这个时候就需要考虑利用FNN考察特征语义不同部分之间的关系(通过非线性变换来实现)。感觉有点像self-attention先去前方打探好多个敌人的不同情况,之后FFN根据不同的敌人做调整。
第三点、在使用self-attention实际上是做了一个线性变换,也就是第一点提到的,训练到后期,输出值都相似。所以之后需要加入FNN提高特征的表达能力(也就是添加非线性ReLU)。其次self-attention只解决了特征之间的长远距离依赖关系,并没有对特征进行提取,也就是第二点提到的。
以上就是我的个人参考一些资料的理解,之后再有新的想法,继续补充。有人知道其他原因的话,欢迎评论区。
关于Transformer中feed forward layer理解的更多相关文章
- 【译】在Transformer中加入相对位置信息
目录 引言 动机 解决方案 概览 注释 实现 高效实现 结果 结论 参考文献 本文翻译自How Self-Attention with Relative Position Representation ...
- RNN: Feed Forward, Back Propagation Through Time and Truncated Backpropagation Through Time
原创作品,转载请注明出处哦~ 了解RNN的前向.后向传播算法的推导原理是非常重要的,这样, 1. 才会选择正确的激活函数: 2. 才会选择合适的前向传播的timesteps数和后向传播的timeste ...
- 怎样在caffe中添加layer以及caffe中triplet loss layer的实现
关于triplet loss的原理.目标函数和梯度推导在上一篇博客中已经讲过了.详细见:triplet loss原理以及梯度推导.这篇博文主要是讲caffe下实现triplet loss.编程菜鸟.假 ...
- ICCV2021 | Vision Transformer中相对位置编码的反思与改进
前言 在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...
- SQL SERVER 2005/2008 中关于架构的理解(二)
本文上接SQL SERVER 2005/2008 中关于架构的理解(一) 架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...
- SQL SERVER 2005/2008 中关于架构的理解(一)
SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...
- Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效
问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知 ...
- C++中 类的构造函数理解(一)
C++中 类的构造函数理解(一) 写在前面 这段时间完成三个方面的事情: 1.继续巩固基础知识(主要是C++ 方面的知识) 2.尝试实现一个iOS的app,通过完成app,学习iOS开发中要用到的知识 ...
- ECshop中的session机制理解
ECshop中的session机制理解 在网上找了发现都是来之一人之手,也没有用自己的话去解释,这里我就抛砖引玉,发表一下自己的意见,还希望能得到各界人士的指导批评! 此session机制不需 ...
- [开发技巧]·Numpy中对axis的理解与应用
[开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...
随机推荐
- 新版宝塔面板快速搭建WordPress新手教程
一.宝塔面板介绍 1. 介绍 宝塔面板是一款服务器管理软件,支持Windows和Linux系统,可以通过Web端轻松管理服务器,提升运维效率,该软件内置了创建管理网站.FTP.数据库.可视化文件管理器 ...
- 【NodeJS】操作MySQL
1.在连接的数据库中准备测试操作的表: CREATE TABLE `user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` ...
- 【MySQL】Windows-5.7.30 解压版 下载安装
1.Download 下载 mysql官网: https://dev.mysql.com/ 找到download点击进入下载页面: https://dev.mysql.com/downloads/ 找 ...
- git No url found for submodule path 'xxxxx' in .gitmodules
删除之前的子模块记录 rm -rf git rm --cached 然后加进去 git submodule add
- Java RMI技术详解与案例分析
Java RMI(Remote Method Invocation)是一种允许Java虚拟机之间进行通信和交互的技术.它使得远程Java对象能够像本地对象一样被访问和操作,从而简化了分布式应用程序的开 ...
- ComfyUI插件:efficiency-nodes-comfyui节点
前言: 学习ComfyUI是一场持久战, efficiency-nodes-comfyui是提高工作流创造效率的工具,包含效率节点整合工作流中的基础功能,比如Efficient Loader节点相当于 ...
- games101 作业4及作业5 详解光线追踪框架
games101 作业4及作业5 详解光线追踪框架 作业4 代码分析 作业四的代码整体比较简单 主要流程就是 通过鼠标事件 获取四个控制点的坐标 然后绘制贝塞尔曲线的内容就由我们来完成 理论分析 贝塞 ...
- Windows 服务管理
创建服务 New-Service -Name NAME -BinaryPathName COMMAND -StartupType Automatic -Description DESCRIPTION ...
- 【GitHub】上传代码通用操作等(附下载单个文件夹或文件)
一.创建GitHub账号以及配置 参考我的另一篇文章:<[Mac系统 + Git]之上传项目代码到github上以及删除某个文件夹> 二.创建新的个人知识库 前面配置完之后,下面讲的再新建 ...
- Java并发之原子变量及CAS算法-下篇
Java并发之原子变量及CAS算法-下篇 概述 本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中是怎么保证变量原子性的呢?.对应Java中的包是:java.util.con ...