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

NLP:BERT的介绍

1. BERT

1.1 Transformer

  Transformer架构是一种基于自注意力机制(self-attention)的神经网络架构,它代替了以前流行的循环神经网络和长短期记忆网络,已经应用到多个自然语言处理方向。
  Transformer架构由两个主要部分组成:编码器(Encoder)和解码器(Decoder)。编码器和解码器均是由多个层(layer)堆叠而成,其中每层均由多个子层组成:比如自注意力机制和前馈神经网络。(本篇先不介绍解码器部分。)
在这里插入图片描述

1.1.1 编码器

  Transformer中的编码器的作用是提取原句中的特征值。Transformer的编码器不止一个,而是由一组 N N N个编码器串联而成。一个编码器的输出作为下一个编码器的输入。编码器由两部分组成:多头注意力层和前馈网络层。

1.1.1.1 多头注意力层

  要理解Transformer的多头注意力层,就必须先理解Transformer中的自注意力机制(self-attention)。Transformer中的自注意力机制一种能够使模型在处理序列数据时,通过计算序列中每个元素与其他所有元素之间的相关性,并据此对元素进行加权求和,从而生成包含所有元素信息但更侧重于重要部分的表示的机制。多头注意力机制就是自注意力机制的扩展,它通过并行计算多个自注意力头来捕捉不同子空间中的信息,最终将这些头的输出进行拼接和线性变换。
  自注意力机制的计算过程如下图。其中 Q Q Q为查询矩阵、 K K K为键矩阵、 V V V为值矩阵。
在这里插入图片描述

1.1.1.2 位置编码

  Transformer中的位置编码用于为输入序列中的每个词提供位置信息,以弥补模型中缺少顺序感的缺陷,使模型能够捕捉词汇的相对顺序和位置信息。

1.1.1.3 前馈网络层

  Transformer架构中的前馈网络由两个有ReLU激活函数的全连接层组成。前馈网络的参数在句子的不同位置上是相同的,但在不同的编码器模块上是不同的。

1.1.1.4 叠加和归一化组件

  叠加和归一组件实际上包含一个残差连接与层的归一化。层的归一化可以防止每层的值剧烈变化,从而提高了模型的训练速度。

至此,完整的编码器框架如下:
在这里插入图片描述

1.2 BERT模型

  BERT(Bidirectional Encoder Representations from Transformers,多Transformer的双向编码器表示法)模型是由谷歌发布的预训练语言模型。

1.2.1 预训练的BERT

  谷歌对外公开了其预训练的BERT模型,用户可以直接下载使用。其下载地址如下:https://huggingface.co/google-bert
在这里插入图片描述
BERT模型名称中的的uncased表示不区分大小写,cased表示区分大小写。在不区分大小写时,所有标记都转化为小写;在区分大小写时,标记大小写不变,直接用于训练。不区分大小写的模型是最常用的模型,但如果我们正在执行某些任务,比如命名实体识别(named entity recognition, NER),则必须保留大小写,使用区分大小写的模型。

1.2.2 Bert架构

  完整的BERT架构可以分为三大部分:输入层、中间层(Transformer编码器层)和输出层。这里重点介绍输入层和输出层。

1.2.2.1 输入层

  输入层将文本转换为 BERT 能够处理的形式,主要包括以下三个部分:

  • Token Embeddings: 将输入的每个词或子词(通过WordPiece分词)映射为对应的词向量;
  • Segment Embeddings:会分别给第一个句子的所有Token都分配0作为ID,用来标记它们属于第一个句子。给第二个句子的所有Token都分配1作为ID,用来标记它们属于第二个句子。
  • Position Embeddings:因为BERT不使用传统的RNN或CNN结构,而是基于自注意力机制,所以需要显式添加位置编码,表示词的相对位置,帮助模型捕捉词序信息。
    在这里插入图片描述
1.2.2.2 输出层

  BERT的输出层根据不同任务进行调整。BERT本身是一个通用的预训练模型,通过微调来适应各种下游任务。常见的任务主要包含以下几种:

  • 文本分类任务:使用[CLS]的输出,添加一个全连接层,将[CLS]的输出传入该层,再通过softmax进行分类。
  • 序列标注任务:在每个token的输出上添加全连接层,对每个token进行分类。
  • 问答任务:模型的输出是两个位置预测,一个表示答案的起始位置,另一个表示答案的结束位置,分别对每个token进行位置预测。

相关文章:

  • Android Studio Dolphin 中Gradle下载慢的解决方法
  • Python中的机器学习:从入门到实战
  • 景联文科技精准数据标注:优化智能标注平台,打造智能未来
  • 神经网络(二):卷积神经网络
  • javaweb之会话管理
  • 睡眠:生命的隐形守护者
  • 【Linux】防火墙
  • 前段辅助工具分享(像素大厨)
  • 网络编程操作—函数
  • Comfyui 学习笔记2
  • react:React Hook函数
  • 【iOS】计算器的仿写
  • 秦巴山区SHP格式矢量范围
  • OpenCV视频I/O(4)视频采集类VideoCapture之获取异常处理模式函数getExceptionMode()的使用
  • PHP的guzzlehttp/guzzle库在碰到各种异常时的场景
  • [PHP内核探索]PHP中的哈希表
  • hexo+github搭建个人博客
  • 【笔记】你不知道的JS读书笔记——Promise
  • Angular数据绑定机制
  • java小心机(3)| 浅析finalize()
  • js继承的实现方法
  • Nodejs和JavaWeb协助开发
  • select2 取值 遍历 设置默认值
  • session共享问题解决方案
  • Vue全家桶实现一个Web App
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从PHP迁移至Golang - 基础篇
  • 对超线程几个不同角度的解释
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 技术胖1-4季视频复习— (看视频笔记)
  • 强力优化Rancher k8s中国区的使用体验
  • 软件开发学习的5大技巧,你知道吗?
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 微信小程序--------语音识别(前端自己也能玩)
  • 一个SAP顾问在美国的这些年
  • 一天一个设计模式之JS实现——适配器模式
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Linux·i2c驱动架构​
  • ​决定德拉瓦州地区版图的关键历史事件
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #HarmonyOS:Web组件的使用
  • (4)(4.6) Triducer
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (待修改)PyG安装步骤
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (分布式缓存)Redis持久化
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (简单) HDU 2612 Find a way,BFS。
  • (接口自动化)Python3操作MySQL数据库
  • (三)uboot源码分析
  • (三)模仿学习-Action数据的模仿