预训练笔记 (CS224N-8)

子词模型

前置知识

(1)词法知识介绍

  • 语音学是音流无争议的物理学
    语音体系假定了一组或多组独特的、分类的单元(音素)

  • 传统上,词素是最小的语义单位(例如\(ate,ly,able\)这种),但如今我们需要讨论比单词粒度更细的模型以处理大量的开放词汇(巨大的、无限的单词空间)
    例如:ooooooooooops!、imma go等非正式的拼写(这种情况在其他语言中更甚)

(2)字符级模型:词嵌入可以由字符嵌入组成,所有的语言处理均建立在字符序列上,不考虑word-level

子词模型

(1)NLP中的子词模型包含了一系列关于单词级别以下结构的推理方法(单词、字符、字节的组成部分)
(在训练和测试时,每个单词被分成一系列已知的子单词)

(2)子词模型的两种趋势

①与Word级模型相同的架构,但使用更小的单元:word pieces
②混合架构:主模型使用单词,其他使用字符级

(3)字节对编码(BPE)

  • 最初是一个压缩算法:最频繁的字节-->一个新的字节
  • 字节对编码是定义子单词词汇表的一种简单有效的策略
    ①从只包含字符和“词尾”符号的词汇表开始。
    ②使用文本语料库,找出最常见的相邻字符“a,b”;添加“ab”作为一个子词。
    ③用新的子字替换字符对的实例,重复,直到达到所需的人声大小。
  • 最初用于NLP中的机器翻译,现在在预训练的模型中使用了类似的方法

(4)普通单词最终成为子单词词汇的一部分,而稀有单词则被划分为组成部分(在最坏的情况下,单词被拆分为与字符一样多的子单词)

image-20230918150809682

预训练

预训练解读

(1)有一个问题,我们网络中的大多数参数都是随机初始化的,这样会导致模型训练效果不好、容易过拟合等各种问题

(2)“预训练”的做法一般是将大量低成本收集的训练数据放在一起,经过某种预训练方法去学习其中的共性,然后将其中的共性“移植”到特定任务的模型中,再使用相关特定领域的少量标注数据进行“微调”,这样的话,模型只需要从”共性“出发,去“学习”该特定任务的“特殊”部分即可。

其实word2vec就是一个专注于词嵌入的预训练模型

(3)预训练&微调范式

①第一阶段:预训练,需要大量文本,学习共性
②第二阶段:微调,不需要太多标签,适应我们的任务

预训练架构

(1)Encoder:例如BERT

(2)Decoder:例如GPT

预训练模型

ELMO

(1)概念

  • Contextualized Word Embedding(情境化Embedding):同一个word在不同的位置会视作不同的token
  • ELMO(Embedding from Language Model):使用RNN-based语言模型来训练,预测下一个token或上一个token,拿在正向和反向RNN的隐含层拼接作为Contextualized Embedding(不需要label)

BERT

(1)概念

  • Bidirectional Encoder Representations from Transformers:即为Transformer的Encoder架构(不需要label)
  • BERT在做什么事情:输入一个句子进去,输出每一个词的embedding
  • BERT的IDEA: 传统的语言模型就是单向的信息,而ELMO是正向+反向(参数量变成了之前单向的两倍,也是直接考虑双向的两倍,而且对于某些任务例如QA不合理)这比直接考虑双向模型更差,因为双向模型能够在同一个layer中直接考虑左边和右边的context。所以BERT直接考虑双向。

(2)过程

BERT主要由两个阶段组成,分别是Pre-training以及Fine-Tuning

  • Pre-Training:

    ①MLM:输入的句子有随机15%的概率被置换成[MASK],BERT需要做的是猜测[MASK]应该是哪些词汇(把MASK的部分输出的Embedding输入到一个线性的多分类器中来预测单词)

    (但是mask wordpiece的做法也被后来(ERNIE以及SpanBERT等)证明是不合理的,没有将字的知识考虑进去,会降低精度,于是google提出了Whole Word Masking(WWM)的模型)

    ②NSP:给BERT两个句子,BERT来判断这两个句子是否应该被接在一起([SEP]用来隔开两个句子,[CLS]用来表示需要输出到线性二分类器的位置)

    (注意两个方法需要同时使用)

  • Fine-Tuning:相似度任务、推理任务、QA任务、文本分类

    ①BERT的每一个Layer对应着一个任务,越靠近输入的Layer做越简单的任务,越靠近输出的Layer做越困难的任务。

    ②使用BERT做后续任务时,可以学习每一层得到的Embedding哪个更有用

具体详见:https://zhuanlan.zhihu.com/p/103226488

GPT

(1)Generative Pre-Training:规模巨大,就是Transformer的Decoder

(2)力大飞砖,数据巨大、模型巨大,从而产生了很多奇迹的效果

posted @ 2025-03-08 22:48  绵满  阅读(264)  评论(0)    收藏  举报