预训练笔记 (CS224N-8)

news/2025/3/10 9:25:42/文章来源:https://www.cnblogs.com/mianmaner/p/18760056

子词模型

前置知识

(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)力大飞砖,数据巨大、模型巨大,从而产生了很多奇迹的效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/895686.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

团队项目:新建文件夹(1)团队成员介绍

项目 内容这个作业属于哪个课程 2025年春季软件工程(罗杰、任健)这个作业的要求在哪里 [T.1] 团队项目:团队成员介绍我在这个课程的目标是 培养团队合作精神,开发功能完善的软件这个作业在哪个具体方面帮助我实现目标 团队协作,软件开发理论基础团队介绍 新建文件夹(1)队由…

LSTM 和机器翻译 (CS224N-5)

LSTM (1)LSTM(Long Short-Term Memory RNNs)是Hochreiter和Schmidhuber在1997年提出的一种RNN,用于解决消失梯度问题 (2)在步骤t中,这里有一个隐藏单元\(h^{(t)}\)和一个记忆单元\(c^{(t)}\)它们均为长度为n的向量记忆单元用来存储长期信息LSTM可以从记忆单元中读取、消除和…

解码和 Attention 机制笔记 (CS224N-6)

语言模型的解码△:在讲义中这部分内容是神经机器翻译NMT中,我认为这个适用于所有语言模型所以就单列出来了(1)贪心解码:每一步都取最可能的单词,用前一步的输出作为下一步的输入(存在问题:有一个预测偏差,会导致后面的生成不可挽回,最终结果不尽人意) (2)穷举解码:顾…

语言模型和 RNN 笔记 (CS224N-4)

语言模型定义 (1)语言模型任务是根据给定的单词序列计算下一个单词的概率分布,完成这样的任务的系统就被称作语言模型 (2)也可以认为语言模型是一个为文本分配概率的系统,例如文本 \(x^{(1)},\cdots,x^{(T)}\) 的概率是n-gram语言模型 (1)一个n-gram是由n个连续单词组成的一块…

Java 线程池 ThreadPoolExecutor 的状态控制变量 ctrl

如下是源代码。线程池的主要控制状态 ctl 是一个原子整数,它打包了两个概念字段:workerCount:表示当前有效运行的线程数。 runState:表示线程池的状态(如是否正在运行、关闭等)。为了将这两个字段打包成一个 int,我们将 workerCount 限制为 (2^{29} - 1)(约5亿),而不…

go 方法和函数的区别

图片中的内容总结了Go语言中方法和函数的区别,主要分为三个方面:调用方式不同:函数的调用方式:函数名(实参列表) 方法的调用方式:变量.方法名(实参列表)普通函数的接收者类型限制:对于普通函数,如果接收者是值类型,则不能将指针类型的数据直接传递给它;反之亦然。方法…

德里克昆什肯《量子战争》目录

机翻未校对是机翻的,而且没有经过校对,只能作为SFW编辑部的懒狗开工前的替代品 第一章 第二章 第三章 Chap 4 Chap 5~6 Chap 7~8 Chap 9~10 Chap 11~14 Chap 15~18 Chap 19~22 Chap 23~26 Chap 27~30 Chap 31~34 Chap 35~38 Chap 39~42 Chap 43~46 Chap 47~50 Chap 51~61本文…

ios调试(safari)

一、打开ios safari开发者模式在手机设备的“设置”中找到“safari浏览器”,点击进入 在safari设置中,找到“高级”选项,点击进入 在高级设置页面中,找到“网页(web)检查器”选项,打开开关 二、使用mac的safari开发者模式进行调试将ios设备通过usb连接到电脑上 打开mac中…

粒子群算法改进--自动退出迭代循环

前言当粒子已经找到最佳位置后,再增加迭代次数只会浪费计算时间,那么我们能否设计一个策略,能够自动退出迭代呢?循环跳出策略(1)初始化最大迭代次数、计数器以及最大计数值(例如分别取100, 0, 20) (2)定义“函数变化量容忍度”,一般取非常小的正数; (3)在迭代的过…

粒子群算法改进--线性递减惯性权重

惯性权重回顾 惯性权重w体现的是粒子继承先前的速度的能力 Shi,Y最先将惯性权重w引入到粒子群算法中,并且分析指出一个较大的惯性权值有利于全局搜索一个较小的权值则更利于局部搜索线性递减惯性权重在搜索初期,增强全局搜索能力可以更大可能遍历解空间,避免陷入局部最优解 &…