当前位置:网站首页>【BERT-多标签文本分类实战】之二——BERT的地位与名词术语解释
【BERT-多标签文本分类实战】之二——BERT的地位与名词术语解释
2022-07-30 06:22:00 【征途黯然.】
【注】本篇将从宏观上介绍bert的产生和在众多模型中的地位,以及与bert有关的许多名词。
[1] bert的提出
Bert模型是Google在2018年10月发布的语言表示模型,Bert在NLP领域横扫了11项任务的最优结果,可以说是18年NLP中最重要的突破。Bert模型的全称是Bidirectional Encoder Representations from Transformers,是通过训练Masked Language Model和预测下一句任务得到的模型。
关于Bert具体训练的细节和更多的原理,有兴趣的读者可以去查看https://arxiv.org/abs/1810.04805原文。
[2] bert的地位
从网络模型角度来说,地位大致如下:
Fasttext -> TextCNN -> DPCNN -> TextRCNN -> TextBiLSTM+Attention -> HAN -> Transformer -> BERT
从预训练网络模型角度来说,地位大致如下:(像较于预训练模型,预训练词向量现在已经被淘汰了)
ELMo -> ERNIE -> GPT -> BERT -> XLNet
[3] Fine-tuning
什么叫Fine-tuning? 使用预训练模型(例如BERT模型),在预训练模型末端添加一些未训练过的神经元层,然后训练新的模型来完成任务。
【注】此时bert模型的参数是有反向传播的。
为什么要Fine-tuning?
1、更快速的开发。 首先,预训练模型权重已经编码了很多通用的语言信息。因此,训练微调模型所需的时间要少得多——就好像我们已经对网络的底层进行了广泛的训练,只需要将它们作为我们的分类任务的特征,并轻微地调整它们就好。
2、更少的数据。 预训练这种方法,允许我们在一个比从头开始建立的模型所需要的数据集小得多的数据集上进行微调。从零开始建立的 NLP 模型的一个主要缺点是,我们通常需要一个庞大的数据集来训练我们的网络,以达到合理的精度,但是我们必须投入大量的时间和精力在数据集的创建上。通过对 BERT 进行微调,我们现在可以在更少的数据集上训练一个模型,使其达到良好的性能。
3、更好的结果。 这种简单的微调程过程(通常在 BERT 的基础上增加一个全连接层,并训练几个 epochs)被证明可以在广泛的任务中以最小的调节代价来实现最先进的结果:分类、语言推理、语义相似度、问答问题等。与其实现定制的、有时还很难理解的网络结构来完成特定的任务,不如使用 BERT 进行简单的微调,也许是一个更好的(至少不会差)选择。
[4] Feature extract
什么叫Feature extract? Bert的论文中对预训练好的 Bert模型设计了两种应用于具体领域任务的用法,一种是 fine-tune(微调) 方法,一种是 feature extract(特征抽取) 方法。
feature extract(特征抽取)方法指的是调用预训练好的 Bert 模型,对新任务的句子做句子编码,将任意长度的句子编码成定长的向量。编码后,作为你自己设计的某种模型(例如 LSTM、SVM 等都由你自己定)的输入,等于说将 Bert 作为一个句子特征编码器,这种方法没有反向传播过程发生,至于如果后续把定长句子向量输入到 LSTM 种继续反向传播训练,那就不关 Bert 的事了。这也是一种常见的语言模型用法,同类的类似 ELMo。
Feature extract与Fine-tuning的区别? fine tune(微调)方法指的是加载预训练好的 Bert 模型,其实就是一堆网络权重的值,把具体领域任务的数据集喂给该模型,在网络上继续反向传播训练,不断调整原有模型的权重,获得一个适用于新的特定任务的模型。这很好理解,就相当于利用 Bert 模型帮我们初始化了一个网络的初始权重,是一种常见的迁移学习手段。
[5] embedding层、词嵌入、word2vec、词向量
embedding层:嵌入层,神经网络结构中的一层,由embedding_size个神经元组成,[可调整的模型参数]。是input输入层的输出。
词嵌入:也就是word embedding…根据维基百科,被定义为自然语言处理NLP中的一组语言建模和特征学习技术的集体名称,其中来自词汇表的单词或者短语被映射成实数向量。
word2vec:词嵌入这个技术的具体实现,也可以理解成是将向量从高维度映射到低维度的计算过程。 具体的包含两种处理方式也就是两个典型的模型—CBOW模型和SG模型。假设,原始数据有F个特征,通过one-hot编码后,表示成N维的向量,即input层的维度是N,和权重矩阵相乘,变成embedding_size维的向量。(embedding_size <N)
词向量:也就是通过word2vec计算处理后的结果的释义。比如说…从input输入层到embedding层的权重矩阵,记作是N*embedding_size的,那么这个矩阵的一行就是一个词向量,是第几行就对应input输入层one-hot编码中第几列那个1所对应的词。
【注】常见的预训练词向量有,Stanford GloVe Embeddings、fastText word vectors
[6] bert与embedding的区别
从模型的层数定义上来看,embedding只有一层神经网络模型,而bert有非常非常多层网络,而且有1亿多个参数。
宏观上来看,bert和embedding是差不多的。在embedding层使用预训练词向量,就相当于bert使用了预训练的参数。bert和embedding都有Fine-tuning和Feature extract模式。只不过bert比embedding层数多得多、参数多得多。
[7] 进行下一篇实战
边栏推荐
猜你喜欢

Mybitatis related configuration files

selenium module

【雷达目标检测】恒定阈值法和恒虚警(CFAR)法及代码实现

SOFA Weekly|Meetup 广州站、本周 QA、本周 Contributor

uniapp中canvas与v-if更“配”

Limit injection record of mysql injection in No. 5 dark area shooting range

大飞机C919都用了哪些新材料?

Architectural Design Guide How to Become an Architect

你好,我的新名字叫 “铜锁 / Tongsuo”

Go 结合Gin导出Mysql数据到Excel表格
随机推荐
golang: Gorm configures Mysql multiple data sources
golang : Zap log integration
Handler消息机制-Native层
MYSQL 主从恢复锁表后, 处理SQL 线程锁解决.
Electron日常学习笔记
sizeof
selenium module
入选“十大硬核科技”,详解可信密态计算(TECC)技术点
go : go-redis list操作
Keil软件中map文件解析
专访蚂蚁:这群技术排头兵,如何做好底层开发这件事?| 卓越技术团队访谈录
sizeof
Vue2进阶篇-编程式路由导航、缓存路由组件、路由的激活与失活
Vue项目通过node连接MySQL数据库并实现增删改查操作
如何实时计算日累计逐单资金流
mysql高阶语句(一)
便携小风扇PD取电芯片
stack containing min function (js)
深度学习:线性回归模型
[GO Language Basics] 1. Why do I want to learn Golang and get started with GO language