今天记录一下个人关于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理解的更多相关文章

  1. 【译】在Transformer中加入相对位置信息

    目录 引言 动机 解决方案 概览 注释 实现 高效实现 结果 结论 参考文献 本文翻译自How Self-Attention with Relative Position Representation ...

  2. RNN: Feed Forward, Back Propagation Through Time and Truncated Backpropagation Through Time

    原创作品,转载请注明出处哦~ 了解RNN的前向.后向传播算法的推导原理是非常重要的,这样, 1. 才会选择正确的激活函数: 2. 才会选择合适的前向传播的timesteps数和后向传播的timeste ...

  3. 怎样在caffe中添加layer以及caffe中triplet loss layer的实现

    关于triplet loss的原理.目标函数和梯度推导在上一篇博客中已经讲过了.详细见:triplet loss原理以及梯度推导.这篇博文主要是讲caffe下实现triplet loss.编程菜鸟.假 ...

  4. ICCV2021 | Vision Transformer中相对位置编码的反思与改进

    ​前言  在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...

  5. SQL SERVER 2005/2008 中关于架构的理解(二)

    本文上接SQL SERVER 2005/2008 中关于架构的理解(一)      架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...

  6. SQL SERVER 2005/2008 中关于架构的理解(一)

    SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...

  7. Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效

    问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知 ...

  8. C++中 类的构造函数理解(一)

    C++中 类的构造函数理解(一) 写在前面 这段时间完成三个方面的事情: 1.继续巩固基础知识(主要是C++ 方面的知识) 2.尝试实现一个iOS的app,通过完成app,学习iOS开发中要用到的知识 ...

  9. ECshop中的session机制理解

    ECshop中的session机制理解     在网上找了发现都是来之一人之手,也没有用自己的话去解释,这里我就抛砖引玉,发表一下自己的意见,还希望能得到各界人士的指导批评! 此session机制不需 ...

  10. [开发技巧]·Numpy中对axis的理解与应用

    [开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...

随机推荐

  1. c语言模拟Python的命名参数

    最近在书里看到的,让c语言去模拟其他语言里有的命名函数参数.觉得比较有意思所以记录一下. 目标 众所周知c语言里是没有命名函数参数这种东西的,形式参数虽然有自己的名字,但传递的时候并不能通过这个名字来 ...

  2. 【Java-GUI】10 Swing04

    面板容器: package cn.dzz.swing; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax ...

  3. 进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性

    好多年前就学习过 进程的 CPU 亲和性这个概念,说直白些就是CPU的进程绑定,也就是指定某个进程绑定到某个CPU核心上,以此提高进程切换时缓存的命中率,加快进程的运算速度. 虽然在编程的时候中会遇到 ...

  4. 大语言模型(LLM)运行报错:AttributeError: module 'streamlit' has no attribute 'cache_resource'

    解决方法: https://blog.csdn.net/javastart/article/details/130785100 (图:https://blog.csdn.net/javastart/a ...

  5. 【深度学习的linux显卡服务器维护记录】 服务器cuda不能用,nvidia-smi报错“Failed to initialize NVML: Driver/library version mismatch”

    如题,服务器报错: 查看日志: 发现问题: Starting Daily apt upgrade and clean activities... 这个 apt upgrade 不是普通的update, ...

  6. 【转载】PCT体系与传统专利体系的比较——不同国际专利申请途径的区别

    原文地址: 国家知识产权局 基础知识 PCT体系与传统专利体系的比较 (cnipa.gov.cn) ======================================= 专利合作条约(PAT ...

  7. js 实现俄罗斯方块(三)

    我又来啦!上一篇有点水,本篇我们来干货! 嘿嘿,首先我们先搭建游戏世界------网格 所有的操作包括左移右移下移旋转都是在这个网格中 既然是使用js来写当然跑不了html啦,实现网格最简单的 方法就 ...

  8. Digest Auth 摘要认证

    1.该代码展示了使用Apache HttpClient库进行HTTP请求,并处理基于MD5的HTTP Digest认证的过程. Digests类实现了MD5加密算法,HttpUtils类处理了GET. ...

  9. 17-canvas绘制扇形

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  10. 05-canvas绘制简单图形之三角形

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...