·请参考本系列目录:【BERT-多标签文本分类实战】之一——实战项目总览
·下载本实战项目资源:>=点击此处=<

【注】本篇将从宏观上介绍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亿多个参数。

  宏观上来看,bertembedding是差不多的。在embedding层使用预训练词向量,就相当于bert使用了预训练的参数。bertembedding都有Fine-tuningFeature extract模式。只不过bertembedding层数多得多、参数多得多。

[7] 进行下一篇实战

  【BERT-多标签文本分类实战】之三——多标签文本分类的方向与常用数据集介绍

【BERT-多标签文本分类实战】之二——BERT的地位与名词术语解释相关推荐

  1. 【BERT-多标签文本分类实战】之五——BERT模型库的挑选与Transformers

    ·请参考本系列目录:[BERT-多标签文本分类实战]之一--实战项目总览 ·下载本实战项目资源:>=点击此处=< [1] BERT模型库   从BERT模型一经Google出世,到tens ...

  2. 【BERT-多标签文本分类实战】之七——训练-评估-测试与运行主程序

    ·请参考本系列目录:[BERT-多标签文本分类实战]之一--实战项目总览 ·下载本实战项目资源:>=点击此处=< [1] 损失函数与评价指标   多标签文本分类任务,用的损失函数是BCEW ...

  3. EMNLP 2021 | 多标签文本分类中长尾分布的平衡策略

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | 黄毅 作者简介:黄毅,本文一作,目前为罗氏集团的数据科学家 ...

  4. 文本分类实战(十)—— BERT 预训练模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  5. 【英文文本分类实战】之二——数据集挑选与划分

    ·请参考本系列目录:[英文文本分类实战]之一--实战项目总览 ·下载本实战项目资源:神经网络实现英文文本分类.zip(pytorch) [1] 数据集平台   在阅读了大量的论文之后,由于每一篇论文都 ...

  6. Bert模型做多标签文本分类

    Bert模型做多标签文本分类 参考链接 BERT模型的详细介绍 图解BERT模型:从零开始构建BERT (强推)李宏毅2021春机器学习课程 我们现在来说,怎么把Bert应用到多标签文本分类的问题上. ...

  7. bert 是单标签还是多标签 的分类_搞定NLP领域的“变形金刚”!教你用BERT进行多标签文本分类...

    大数据文摘出品 来源:medium 编译:李雷.睡不着的iris.Aileen 过去的一年,深度神经网络的应用开启了自然语言处理的新时代.预训练模型在研究领域的应用已经令许多NLP项目的最新成果产生了 ...

  8. bert 是单标签还是多标签 的分类_搞定NLP领域的“变形金刚”!手把手教你用BERT进行多标签文本分类...

    大数据文摘出品 来源:medium 编译:李雷.睡不着的iris.Aileen 过去的一年,深度神经网络的应用开启了自然语言处理的新时代.预训练模型在研究领域的应用已经令许多NLP项目的最新成果产生了 ...

  9. bert 是单标签还是多标签 的分类_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...

    原文: Label-Specific Document Representation for Multi-Label Text Classification(EMNLP 2019) 多标签文本分类 摘要: ...

最新文章

  1. O2O业务都跳不出这五大领域
  2. heartbeat之part1
  3. Task中的异常处理
  4. php fastcgi_param,nginx-404与root指令 fastcgi_param 指令
  5. 存clob为空的值_给Oracle数据库中CLOB字段插入空值
  6. 建立海盗的天堂:盗贼之海的AI(一)
  7. CodeForces - 1036B Diagonal Walking v.2(思维)
  8. 多种冒泡算法时间和效率比较
  9. C#新手该如何规划学习【学习路线指南】
  10. 操作系统多线程实现_操作系统中的线程实现
  11. .net MvcPager+Ajax无刷新分页
  12. SQL server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法...
  13. CentOS6 的yum源配置
  14. 以风景为主题的html,以风景为主题的英语作文
  15. 物联网卡设置_移动、联通、电信物联网卡APN设置教程
  16. 点下确认的那一刻,我的大脑在发生些什么?
  17. Nova Battles是2022年值得关注的链游
  18. 跨站脚本攻击(XSS)详解
  19. Java Swing入门
  20. Error in nextTick: TypeError: Cannot read property 'children' of undefined 解决

热门文章

  1. 工资代发与批量付款的解决方案
  2. 金融数据api(tgw)与talib结合,量化因子的高性能计算——量化数据中台系列(7)
  3. 中秋快乐 | 千里共婵娟,云上爱团圆
  4. Elasticsearch概述
  5. Python学习笔记:rstrip、lstrip、strip的用法!
  6. Container之ListView 1
  7. 压力测试和负载测试的区别
  8. 达内机构python培训费用
  9. 读书笔记---月光落在左手上(余秀华)
  10. Linux实验整理——FTP服务器搭建