当前位置: 首页 > news >正文

【自然语言处理六-最重要的模型-transformer-上】

自然语言处理六-最重要的模型-transformer-上

  • 什么是transformer模型
  • transformer 模型在自然语言处理领域的应用
  • transformer 架构
    • encoder
      • input处理部分(词嵌入和postional encoding)
      • attention部分
        • add
        • Norm
      • Feedforward & add && Norm
        • Feedforword,实际上就是两层全连接层,中间有激活函数等
        • add & Norm
      • 最终encoder的输出

什么是transformer模型

  • 它是编码器和解码器的架构,来处理一个序列对,这个跟seq2seq的架构是一样的。
    如果没接触过seq2seq架构,可以通俗的理解,编码器用来处理输入,解码器用来输出
  • 但与seq2seq的架构不同的是,transformer是纯基于注意力的
    之前花了几篇的篇幅讲注意力,也是在为后面讲解这个模型打基础。

transformer模型无疑是近几年最重要的模型,目前的大模型几乎都以它为基础发展,很多模型的名字都带有缩写T,正是transformer的缩写。
当然transfomer不仅仅用于自然语言处理领域,归集于自然语言处理模块下面来讲,是因为它在自然语言处理领域的应用非常广泛,下面就讲它的几种应用。

transformer 模型在自然语言处理领域的应用

编码器和解码器架构,比较擅长处理QA类的问题,但这个QA不仅仅是一个问题、一个答案的形式,许多的自然语言处理,都可以理解为QA类问题,比如:

  1. 真实的QA类问题。比如:机器人问答。
  2. 机器翻译。比如中英翻译
  3. 摘要提取。输入文章,提取摘要
  4. 情感分析。输入评价,输出正面/负面评价
    等等

下面来介绍transformer的架构,看什么样子的架构能实现上面的这些功能

transformer 架构

它出自经典论文《attention is all you need》,论文地址是: http://arxiv.org/abs/1706.03762,本文中的诸多图片都是取自该论文,下面的架构图也是出自论文

在这里插入图片描述
从上图就可以看出,transfomer的架构包括左边encoder和右边decoder,下面先来讲encoder部分

encoder

左侧的encoder部分,输入一排input vector向量,输出一排向量,忽略中间的细节来看,是如下的的架构:
在这里插入图片描述
中间encoer部分,如果是seq2seq架构,就是RNN,transformer就相对复杂一些:
下面分部分介绍encoder的各个部分:

input处理部分(词嵌入和postional encoding)

在这里插入图片描述
输入一排,经过词嵌入input Embedding,再加上位置信息,Postional Encoding (这部分可以在 位置编码有介绍),生成一排向量。
然后进入attention计算

attention部分

transformer最重要的attention部分,这部分是多头注意力。值得注意的是,这部分的输出并不会直接丢给全连接层,还需要在额外经过residual add和layer norm

add

add的操作:
执行residual 残差连接,将attention的输入加到self-attention后的输出

Norm

残差后的输出进行层归一化,层归一化的操作:
不考虑batch,将输入中同一个feature,同一个sample,不同的dimension 计算均值和标准差,然后如下计算
在这里插入图片描述
这个操作,用能听得懂的话翻译一下就是,是对每个样本里面的元素进行归一化
整个过程如下:
在这里插入图片描述
最终上述部分的输出作为全连接层的输入

Feedforward & add && Norm

上一部分的输出,输入到本部分

Feedforword,实际上就是两层全连接层,中间有激活函数等

在这里插入图片描述
当然中间的卷积,可以换成线性层Linear

经过这个全连接层的输出之后,依然要经过残差add 和层归一化norm,然后输出.

add & Norm

这部分 同attention 那一层的操作,此处不赘述

最终encoder的输出

在encoder中,上面这三个步骤是可以重复多次的,所以看到架构图中表示了*N操作。
最终的输出才是encoder的输出。

篇幅所限,下一篇文章继续 transformer的decoder部分 自然语言处理六-最重要的模型-transformer-下

http://www.lryc.cn/news/313686.html

相关文章:

  • 开发一个带有Servlet的webapp(重点)
  • 根据xlsx文件第一列的网址爬虫
  • 【Linux】 yum —— Linux 的软件包管理器
  • 函数柯里化(function currying)及部分求值
  • R语言简介、环境与基础语法及注释
  • React报错 之 Objects are not valid as a React child
  • 看一看阿里云,如何把抽象云概念,用可视化表达出来。
  • 软考笔记--系统架构评估
  • AI产品摄影丨香水
  • Linux系统——tee命令
  • Java agent技术的注入利用与避坑点
  • Linux每日练习
  • 【Python】6. 基础语法(4) -- 列表+元组+字典篇
  • 【C++庖丁解牛】C++内存管理 | new和delete的使用以及使用原理
  • go调用 c++中数组指针相关
  • NTFS Disk by Omi NTFS for mac v1.1.4中文版
  • Arduino应用开发——使用GUI-Guider制作LVGL UI并导入ESP32运行
  • 前端WebRTC局域网1V1视频通话
  • 设计模式之构建者模式
  • 【PCIe 链路训练】之均衡(equalization)
  • P1059 [NOIP2006 普及组] 明明的随机数
  • 【每日一问】Cookie、Session 和 Token 有什么区别?
  • 智能合约语言(eDSL)—— proc_macro实现合约init函数
  • 如何使用 ArcGIS Pro 制作三维地形图
  • 服务器配置禁止IP直接访问,只允许域名访问
  • #14vue3生成表单并跳转到外部地址的方式
  • 航测管家:智能化革新航测作业流程
  • XXE-XML实体注入漏洞
  • 数据结构从入门到精通——栈
  • webhook详解