IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> NLP学习————实现一个BERT(简记) -> 正文阅读

[人工智能]NLP学习————实现一个BERT(简记)

NLP学习————实现一个BERT(简记)

本文主要内容是介绍了BERT的代码结构、具体实现与原理,对BERT的一些简记

内容包括以下几个部分:

  1. BERT Tokenization 分词模型(BertTokenizer)
  2. BERT Model 本体模型(BertModel)
    • BertEmbeddings
    • BertEncoder
      • BertLayer
        • BertAttention
        • BertIntermediate
        • BertOutput
    • BertPooler

本文内容的结构图如下:

在这里插入图片描述

具体的内容如下

1. BERT Tokenization 分词模型(BertTokenizer)

1)Tokenization分词-BertTokenizer:基于BasicTokenizer和WordPieceTokenizer的分词器
a)BasicTokenizer负责处理的第一步——按标点、空格等分割句子,并处理是否统一小写,以
及清理非法字符。
(1)对于中文字符,通过预处理(加空格)来按字分割;
(2)同时可以通过never_split指定对某些词不进行分割;
(3)这一步是可选的(默认执行)。
b)WordPieceTokenizer在词的基础上,进一步将词分解为子词(subword)。
(1)subword 介于 char 和 word 之间,既在一定程度保留了词的含义,又能够照顾到英
文中单复数、时态导致的词表爆炸和未登录词的 OOV(Out-Of-Vocabulary)问题,将词根
与时态词缀等分割出来,从而减小词表,也降低了训练难度;
(2)例如,tokenizer 这个词就可以拆解为“token”和“##izer”两部分,注意后面一个词的
“##”表示接在前一个词后面。
2. BERT Model 本体模型(BertModel)
组成:
1. embeddings,即BertEmbeddings类的实体,根据单词符号获取对应的向量表示;
2. encoder,即BertEncoder类的实体;
3. pooler,即BertPooler类的实体,这一部分是可选的。
补充: 剪枝是一个复杂的操作,需要将保留的注意力头部分的 Wq、Kq、Vq
和拼接后全连接部分的权重拷贝到一个新的较小的权重矩阵(注意先禁止 grad
再拷贝),并实时记录被剪掉的头以防下标出错。具体参考BertAttention部分
的prune_heads方法.**

2.1 BertEmbeddings

	组成:包含三个部分求和得到:

1) word_embeddings,上文中 subword 对应的嵌入。
2) token_type_embeddings,用于表示当前词所在的句子,辅助区别句子与
padding、句子对间的差异。
3) position_embeddings,句子中每个词的位置嵌入,用于区别词的顺序。和
transformer 论文中的设计不同,这一块是训练出来的,而不是通过 Sinusoidal
函数计算得到的固定嵌入。一般认为这种实现不利于拓展性(难以直接迁移到更长
的句子中)。
->>> 三个 embedding 不带权重相加,并通过一层 LayerNorm+dropout 后输出,其大小
为(batch_size, sequence_length, hidden_size)。
2.2 BertEncoder
组成:包含多层 BertLayer,这一块本身没有特别需要说明的地方,不过有一个细节值
得参考:利用 gradient checkpointing 技术以降低训练时的显存占用。
- BertLayer
- BertAttention
- BertSelfAttention
- BertSelfOutput
- BertIntermediate
- BertOutput
2.3 BertPooler
这一层只是简单地取出了句子的第一个token,即[CLS]对应的向量,然后过一个全连接层
和一个激活函数后输出:(这一部分是可选的,因为pooling有很多不同的操作)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:41:36  更:2021-08-23 16:43:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:29:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码