位置: IT常识 - 正文

学习笔记 | 多层感知机(MLP)、Transformer(多层是什么)

编辑:rootadmin
学习笔记 | 多层感知机(MLP)、Transformer

目录

多层感知机(MLP)

Transformer 

1. inputs 输入

2. Transformer的Encoder

        2.1 Multi-Head Attention

        2.2 Add&Normalize

        2.3 Feed-Forward Networks

3. Transformer的Decoder

        3.1Transformer Decoder的输入

        3.2 Masked Multi-Head Attention

        3.3 基于Encoder-Decoder 的Multi-Head Attention

4. Transformer的输出

5. 总结优缺点


多层感知机(MLP)

推荐整理分享学习笔记 | 多层感知机(MLP)、Transformer(多层是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:多层是啥意思,多层是啥意思?,什么叫做多层,多层概念,多层的概念,多层是啥意思?,多层是啥意思?,多层的概念,内容如对您有帮助,希望把文章链接给更多的朋友!

一、多层感知机(MLP)原理简介

             多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:

        从上图可以看到,多层感知机层与层之间是全连接的。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。 

        1)隐藏层的神经元怎么得来?

        首先它与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出就是 f (W1X+b1),W1是权重(也叫连接系数),b1是偏置,函数f 可以是常用的sigmoid函数或者tanh函数。

        2)输出层,输出层与隐藏层是什么关系?

      其实隐藏层到输出层可以看成是一个多类别的逻辑回归,也即softmax回归,所以输出层的输出就是softmax(W2X1+b2),X1表示隐藏层的输出f(W1X+b1)。

       MLP整个模型就是这样子的,上面说的这个三层的MLP用公式总结起来就是

,函数G是softmax。

        因此,MLP所有的参数就是各个层之间的连接权重以及偏置,包括W1、b1、W2、b2。对于一个具体的问题,怎么确定这些参数?求解最佳的参数是一个最优化问题,解决最优化问题,最简单的就是梯度下降法了(SGD):首先随机初始化所有参数,然后迭代地训练,不断地计算梯度和更新参数,直到满足某个条件为止(比如误差足够小、迭代次数足够多时)。这个过程涉及到代价函数、规则化(Regularization)、学习速率(learning rate)、梯度计算等。

        在有明确的训练样本后,网络的输入层结点数(特征的数量)和输出层结点数(因变量的数量)便已确定,因此神经网络结构设计主要解决设置几个隐含层和每个隐含层设置几个结点的问题,w和v都是通过对数据的学习得出的。

        一般来讲,对于小规模数据集或者简单数据集,节点数量设置为10就己经足够了,但是对于大规模数据集或者复杂数据集来说,有两种方式可供选择:增加隐藏层中的节点数量;添加更多的隐藏层。在大型神经网络当中,往往有很多这样的隐藏层,这也是“深度学习”中“深度”二字的来源。

Transformer 

图1:Transformer的结构图,拆解开来,主要分为图上4个部分,其中最重要的就是2和3Encoder-Decoder部分,对咯,Transformer是一个基于Encoder-Decoder框架的模型。

1. inputs 输入

Transformer输入是一个序列数据,以"Tom chase Jerry" 翻译成中文"汤姆追逐杰瑞"为例:

Encoder 的 inputs就是"Tom chase Jerry" 分词后的词向量。可以是任意形式的词向量,如word2vec,GloVe,one-hot编码。

假设上图中每一个词向量都是一个512维的词向量。

为什么需要添加位置编码呢? 首先,咱们知道,一句话中同一个词,如果词语出现位置不同,意思可能发生翻天覆地的变化,就比如:我欠他100W 和 他欠我100W。这两句话的意思一个地狱一个天堂。可见获取词语出现在句子中的位置信息是一件很重要的事情。但是咱们的Transformer 的是完全基于self-Attention的,而self-attention是不能获取词语位置信息地,就算打乱一句话中词语的位置,每个词还是能与其他词之间计算attention值,就相当于是一个功能强大的词袋模型,对结果没有任何影响。(一会儿在介绍Encoder的时候再详细说明)所以在输入的时候需要给每一个词向量添加位置编码。

 《Attention Is All You Need》论文中Transformer使用的是正余弦位置编码。位置编码通过使用不同频率的正弦、余弦函数生成,然后和对应的位置的词向量相加,位置向量维度必须和词向量的维度一致。过程如上图,PE(positional encoding)计算公式如下:

解释一下上面的公式:         pos表示单词在句子中的绝对位置,pos=0,1,2…,例如:Jerry在"Tom chase Jerry"中的pos=2;dmodel表示词向量的维度,在这里dmodel=512;2i和2i+1表示奇偶性,i表示词向量中的第几维,例如这里dmodel=512,故i=0,1,2…255。

        至于上面这个公式是怎么得来地,其实不重要,因为很有可能是作者根据经验自己造地,而且公式也不是唯一地,后续goole在bert中的positional encoding也没有再使用这种方法而是通过训练PE,说明这种求位置向量的方法还是存在一定问题地。

        Transformer 的 Decoder的输入与Encoder的输出处理方法步骤是一样地,一个接受source数据,一个接受target数据,对应到上面例子里面就是:Encoder接受英文"Tom chase Jerry",Decoder接受中文"汤姆追逐杰瑞"。只是在有target数据时也就是在进行有监督训练时才会接受Outputs Embedding,进行预测时则不会接收。

2. Transformer的Encoder

        图1第2部分 Encoder block。Encoder block是由6个encoder堆叠而成,Nx=6。图中的灰框部分就是一个encoder的内部结构,从图中我们可以看出一个encoder由Multi-Head Attention 和全连接神经网络Feed Forward Network构成。

        2.1 Multi-Head Attention

        首先,回顾一下self-attention,假如输入序列是"Thinking Machines",X1,X2就是对应地"Thinking"和"Machines"添加过位置编码之后的词向量,然后词向量通过三个权值矩阵,,转变成为计算Attention值所需的Query,Keys,Values向量。

学习笔记 | 多层感知机(MLP)、Transformer(多层是什么)

        因为咱们再实际使用中,每一个样本,也就是每一条序列数据都是以矩阵的形式输入地,故可以看到上图中,X矩阵是由"Tinking"和"Machines"词向量组成的矩阵,然后跟过变换得到Q,K,V。假设词向量是512维,X矩阵的维度是(2,512),,,均是(512,64)维,得到的Query,Keys,Values就都是(2,64)维。

 

        从上图中可以看到,在经过Multi-Head Attention得到矩阵Z之后,并没有直接传入全连接神经网络FNN,而是经过了一步:Add&Normalize。 

        2.2 Add&Normalize

Add

        Add,就是在Z的基础上加了一个残差块X,加入残差块X的目的是为了防止在深度神经网络训练中发生退化问题,退化的意思就是深度神经网络通过增加网络的层数,Loss逐渐减小,然后趋于稳定达到饱和,然后再继续增加网络层数,Loss反而增大。

Normalize

        在神经网络进行训练之前,都需要对于输入数据进行Normalize归一化,目的有二:1,能够加快训练的速度。2.提高训练的稳定性。 

        先看图,LN是在同一个样本中不同神经元之间进行归一化,而BN是在同一个batch中不同样本之间的同一位置的神经元之间进行归一化。         BN是对于相同的维度进行归一化,但是咱们NLP中输入的都是词向量,一个300维的词向量,单独去分析它的每一维是没有意义地,在每一维上进行归一化也是适合地,因此这里选用的是LN。

        2.3 Feed-Forward Networks

        这里的全连接层是一个两层的神经网络,先线性变换,然后ReLU非线性,再线性变换。         这里的x就是我们Multi-Head Attention的输出Z,还是引用上面的例子,那么Z是(2,64)维的矩阵,假设W1是(64,1024),其中W2与W1维度相反(1024,64),那么按照上面的公式: FFN(Z)=(2,64)x(64,1024)x(1024,64)=(2,64),我们发现维度没有发生变化,这两层网络就是为了将输入的Z映射到更加高维的空间中(2,64)x(64,1024)=(2,1024),然后通过非线性函数ReLU进行筛选,筛选完后再变回原来的维度。

        然后经过Add&Normalize,输入下一个encoder中,经过6个encoder后输入到decoder中。

3. Transformer的Decoder

        第3部分 Decoder block。Decoder block也是由6个decoder堆叠而成,Nx=6。上图3中的灰框部分就是一个decoder的内部结构,从图中我们可以看出一个decoder由Masked Multi-Head Attention,Multi-Head Attention 和 全连接神经网络FNN构成。比Encoder多了一个Masked Multi-Head Attention,其他的结构与encoder相同,那么咱们就先来看看这个Masked Multi-Head Attention。

        3.1Transformer Decoder的输入

Decoder的输入分为两类: 一种是训练时的输入,一种是预测时的输入。 训练时的输入就是已经对准备好对应的target数据。例如翻译任务,Encoder输入"Tom chase Jerry",Decoder输入"汤姆追逐杰瑞"。 预测时的输入,一开始输入的是起始符,然后每次输入是上一时刻Transformer的输出。例如,输入"",输出"汤姆",输入"汤姆",输出"汤姆追逐",输入"汤姆追逐",输出"汤姆追逐杰瑞",输入"汤姆追逐杰瑞",输出"汤姆追逐杰瑞"结束。

        3.2 Masked Multi-Head Attention

与Encoder的Multi-Head Attention计算原理一样,只是多加了一个mask码。mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。Transformer 模型里面涉及两种 mask,分别是 padding mask 和 sequence mask。为什么需要添加这两种mask码呢?

        1.padding mask 什么是 padding mask 呢?因为每个批次输入序列长度是不一样的也就是说,我们要对输入序列进行对齐。具体来说,就是给在较短的序列后面填充 0。但是如果输入的序列太长,则是截取左边的内容,把多余的直接舍弃。因为这些填充的位置,其实是没什么意义的,所以我们的attention机制不应该把注意力放在这些位置上,所以我们需要进行一些处理。 具体的做法是,把这些位置的值加上一个非常大的负数(负无穷),这样的话,经过 softmax,这些位置的概率就会接近0!

        2.sequence mask         sequence mask 是为了使得 decoder 不能看见未来的信息。对于一个序列,在 time_step 为 t 的时刻,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出。因此我们需要想一个办法,把 t 之后的信息给隐藏起来。这在训练的时候有效,因为训练的时候每次我们是将target数据完整输入进decoder中地,预测时不需要,预测的时候我们只能得到前一时刻预测出的输出。 那么具体怎么做呢?也很简单:产生一个上三角矩阵,上三角的值全为0。把这个矩阵作用在每一个序列上,就可以达到我们的目的。

        上面可能忘记说了,在Encoder中的Multi-Head Attention也是需要进行mask地,只不过Encoder中只需要padding mask即可,而Decoder中需要padding mask和sequence mask。OK除了这点mask不一样以外,其他的部分均与Encoder一样啦~

        Add&Normalize也与Encoder中一样,接下来就到了Decoder中第二个Multi-Head Attention,这个Multi-Head Attention又与Encoder中有一点点不一样。

        3.3 基于Encoder-Decoder 的Multi-Head Attention

Encoder中的Multi-Head Attention是基于Self-Attention地,Decoder中的第二个Multi-Head Attention就只是基于Attention,它的输入Quer来自于Masked Multi-Head Attention的输出,Keys和Values来自于Encoder中最后一层的输出。

为啥Decoder中要搞两个Multi-Head Attention呢? 我个人理解是第一个Masked Multi-Head Attention是为了得到之前已经预测输出的信息,相当于记录当前时刻的输入之间的信息的意思。第二个Multi-Head Attention是为了通过当前输入的信息得到下一时刻的信息,也就是输出的信息,是为了表示当前的输入与经过encoder提取过的特征向量之间的关系来预测输出。

经过了第二个Multi-Head Attention之后的Feed Forward Network与Encoder中一样,然后就是输出进入下一个decoder,如此经过6层decoder之后到达最后的输出层。

4. Transformer的输出

        首先,经过一次线性变换,然后Softmax得到输出的概率分布,然后通过词典,输出概率最大的对应的单词作为我们的预测输出。

5. 总结优缺点

优点:         1.效果好         2.可以并行训练,速度快         3.很好地解决了长距离依赖的问题 缺点:         1.完全基于self-attention,对于词语位置之间的信息有一定的丢失,虽然加入了positional encoding来解决这个问题,但也还存在着可以优化的地方。

参考文章:

多层感知机(MLP)简介_北漂奋斗者的博客-CSDN博客_mlp

(六十七)神经网络——MLP_小粉桥反手王的博客-CSDN博客_mlp神经网络

史上最小白之Transformer详解_Stink1995的博客-CSDN博客_transformer神经网络

本文链接地址:https://www.jiuchutong.com/zhishi/290195.html 转载请保留说明!

上一篇:Failed to execute ‘getImageData’ on ‘CanvasRenderingContext2D’ 问题解决方法(failed to execute goal org.apache)

下一篇:公牛角,英国德文郡 (© Robert Harding World Imagery/Offset by Shutterstock)(公牛牛角)

  • 学历报告编号在哪里查(学历报告编号在毕业证哪里)

    学历报告编号在哪里查(学历报告编号在毕业证哪里)

  • iQOO Neo5使用的是什么散热技术(iqoo neo5都有什么功能)

    iQOO Neo5使用的是什么散热技术(iqoo neo5都有什么功能)

  • 抖音企业号和蓝v号有什么区别(抖音企业号怎么开通蓝v)

    抖音企业号和蓝v号有什么区别(抖音企业号怎么开通蓝v)

  • 小米10镜头膜有必要贴吗(小米10 镜头膜)

    小米10镜头膜有必要贴吗(小米10 镜头膜)

  • 步骤记录器会录声音吗(步骤记录器录制完怎么保存)

    步骤记录器会录声音吗(步骤记录器录制完怎么保存)

  • 网络无法访问互联网怎么办(如何访问外网)

    网络无法访问互联网怎么办(如何访问外网)

  • 滴滴出行取消订单钱什么时候退(滴滴出行取消订单怎么取消)

    滴滴出行取消订单钱什么时候退(滴滴出行取消订单怎么取消)

  • 查找id对方有提醒吗(查找id定位对方)

    查找id对方有提醒吗(查找id定位对方)

  • 8p建议更新13.3.1系统吗(8p建议更新ios16.0.2)

    8p建议更新13.3.1系统吗(8p建议更新ios16.0.2)

  • 屏幕2340x1080是多大(屏幕2340x1080是什么意思)

    屏幕2340x1080是多大(屏幕2340x1080是什么意思)

  • 华为手机拨号键盘成透明的了,怎么取消(华为手机拨号键没有了怎么弄出来)

    华为手机拨号键盘成透明的了,怎么取消(华为手机拨号键没有了怎么弄出来)

  • 闲鱼发布不了,提示账号异常(闲鱼发布不了多规格商品)

    闲鱼发布不了,提示账号异常(闲鱼发布不了多规格商品)

  • 苹果系统能用office吗(苹果系统能用WPS吗)

    苹果系统能用office吗(苹果系统能用WPS吗)

  • beats固件升级有什么用(更新beats固件)

    beats固件升级有什么用(更新beats固件)

  • 多媒体软件技术主要包括(多媒体软件技术的核心)

    多媒体软件技术主要包括(多媒体软件技术的核心)

  • 华为mate30pro是双模5g吗(华为mate30pro支持双卡双待双通吗)

    华为mate30pro是双模5g吗(华为mate30pro支持双卡双待双通吗)

  • 艺术字文字环绕方式(艺术字文字环绕方式包括)

    艺术字文字环绕方式(艺术字文字环绕方式包括)

  • 携程订票优享怎么取消(携程旅行买票优享预定怎么取消)

    携程订票优享怎么取消(携程旅行买票优享预定怎么取消)

  • 华为手机桌面文件夹不见了(华为手机桌面文件夹怎么弄出来的)

    华为手机桌面文件夹不见了(华为手机桌面文件夹怎么弄出来的)

  • 手机卡没信号怎么解决(手机卡没信号怎么恢复)

    手机卡没信号怎么解决(手机卡没信号怎么恢复)

  • 快手关注了怎么看直播(快手关注了怎么不看他的作品)

    快手关注了怎么看直播(快手关注了怎么不看他的作品)

  • vivo手机怎么调不息屏(vivo手机怎么调出下面的三个按键)

    vivo手机怎么调不息屏(vivo手机怎么调出下面的三个按键)

  • 华为hicar什么时候上线(华为HiCar什么时候能用)

    华为hicar什么时候上线(华为HiCar什么时候能用)

  • 荣耀3手环怎么调时间(荣耀3手环怎么连接手机蓝牙)

    荣耀3手环怎么调时间(荣耀3手环怎么连接手机蓝牙)

  • 苹果6s能不能用airpods(苹果6s能不能用airpods pro)

    苹果6s能不能用airpods(苹果6s能不能用airpods pro)

  • 关机后还收得到微信吗(关机后还收得到短信吗)

    关机后还收得到微信吗(关机后还收得到短信吗)

  • 笔记本电池红叉修复(笔记本电池红叉号)

    笔记本电池红叉修复(笔记本电池红叉号)

  • 运维老鸟谈生产场景对linux系统进行分区的方法(生产运维是干什么的)

    运维老鸟谈生产场景对linux系统进行分区的方法(生产运维是干什么的)

  • Win11自动更新卡在90%怎么办?Win11更新卡在90%解决方法(win11自动更新卡在94%)

    Win11自动更新卡在90%怎么办?Win11更新卡在90%解决方法(win11自动更新卡在94%)

  • 蚊子咬了怎么消肿止痒最快(蚊子咬了怎么消肿止痒最快红霉素软膏)

    蚊子咬了怎么消肿止痒最快(蚊子咬了怎么消肿止痒最快红霉素软膏)

  • 预期信用损失影响坏账准备吗
  • 统一企业员工
  • 营业账簿指什么
  • 开办期间的财务会计制度
  • 减免教育费附加和地方教育费附加
  • 用友工资系统参数设置
  • 可转换可赎回债券
  • 长期待摊费用税前扣除
  • 补发工资是否计入工资
  • 取得虚开增值税专票如何税务处理
  • 厂房转让企业所得税计算方法
  • 福利费需要交纳个税吗
  • 开公司后如何报个税申报
  • 企业拿到产权证后是否还需要缴纳土地使用税呢?
  • 差旅补助是否并入工资
  • 促销服务费能抵增值税吗
  • 买粽子会计怎么做账
  • 国家税务局定额发票验证
  • 广告宣传费扣除标准30%是什么?
  • 采购国产设备增值税
  • 广告公司营改增后的会计分录
  • 重置申报清册之前的税需要重新申报吗
  • 返利冲减收入
  • 映泰主板bios设置硬盘启动
  • deepin怎么使用
  • 提示内存不足
  • 一般纳税人增值税优惠政策2023
  • 低值易耗品现在还用吗
  • yolov5讲解
  • 收汇金额和出口金额差额大怎么办
  • 出口流程步骤
  • 企业发放误餐补助需要票据吗
  • php正则表达式验证网址
  • 小规模纳税人低于30万怎么填报申报表
  • 活动策划印花税选哪个税种
  • 超参数设置
  • 用命令ls-al显示出文件ff
  • 新设立的企业如何办理开业税务登记
  • 织梦网站停止使用了还侵权吗
  • phpcms迁移
  • 电子口岸无纸化报关
  • 支付宝付款,对方能看见是花呗还是银行卡么
  • 管理费用是怎么计算的
  • 存货成本主要包括
  • 所得税税率变化对已确认递延所得税资产的影响
  • 金税盘入什么科目
  • 公司交残保金是什么意思
  • 会计调整以前年度遗留问题查不出来说明怎么写
  • 纳税人为风险纳税人怎么办
  • 已经结账的账目怎么冲红
  • 资金周转率计算公式
  • 普票冲红需要收回原来的发票吗
  • 小企业会计准则2023电子版
  • 销售毛利率怎么算
  • 探讨探讨
  • windows web server 2008
  • mysql macbook安装教程
  • 清空mysql数据库
  • mysql数据库备份方法
  • 电脑系统win7怎么看
  • xp简单实用的网络连接
  • ubuntu系统中文名字
  • win7桌面图标都不见了
  • ubuntu 2021
  • centos删除vg
  • win7系统的电脑
  • win8系统自带浏览器
  • mac 安卓系统
  • opengl 有哪些特点?与directx相比它有什么不同?
  • 什么叫屏蔽屏幕按键
  • python选择器
  • 分享一下相亲时碰见过哪些奇葩事
  • 安卓系统滑动设置
  • 移动move命令的操作步骤是
  • 如何用u盘重装电脑系统
  • mvc使用
  • 百望税控盘电子发票怎么打
  • 北京社保登记证怎么办
  • 青岛国税服务电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设