预训练语言模型(笔记)

ops/2025/2/8 14:45:20/

笔记来源:Transformer、GPT、BERT,预训练语言模型的前世今生(目录) - B站-水论文的程序猿 - 博客园

预训练语言模型的发展并不是一蹴而就的,而是伴随着诸如词嵌入、序列到序列模型及 Attention 的发展而产生的。

一、从图像领域引入预训练思想

假设我们现在有一个任务:阿猫、阿狗、阿虎的图片各十张,然后让我们设计一个深度神经网络,通过该网络把它们三者的图片进行分类。

然而用30张图片设计一个深度神经网络基本是不可能的,因为深度学习一个弱项就是在训练阶段对于数据量的需求特别大。但是我们可以利用网上现有的大量已做好分类标注的图片。比如 ImageNet 中有 1400 万张图片,并且这些图片都已经做好了分类标注。

上述利用网络上现有图片的思想就是预训练的思想,具体做法就是:

  1. 通过 ImageNet 数据集我们训练出一个模型A
  2. 我们可以对模型 A 做出一部分改进得到模型 B(两种方法):
    1. 冻结:浅层参数使用模型 A 的参数,高层参数随机初始化,浅层参数一直不变,然后利用 30 张图片训练参数
    2. 微调:浅层参数使用模型 A 的参数,高层参数随机初始化,然后利用30 张图片训练参数,但是在这里浅层参数会随着任务的训练不断发生变化

预训练思想总结: 

对于一个具有少量数据的任务 A,我们可以先利用现有的大量数据搭建一个模型 A,再搭建一个模型B,模型B利用模型A的参数初始化后再用任务A的少量数据训练。模型B就是对应任务A的模型。

二、语言模型 

语言模型通俗点讲就是计算一个句子的概率。也就是说,对于语言序列 𝑤1,𝑤2,⋯,𝑤𝑛,语言模型就是计算该序列的概率,即 𝑃(𝑤1,𝑤2,⋯,𝑤𝑛)。

下面通过两个实例具体了解上述所描述的意思:

  1. 假设给定两句话 “判断这个词的磁性” 和 “判断这个词的词性”,语言模型会认为后者更自然。转化成数学语言也就是:𝑃(判断,这个,词,的,词性)>𝑃(判断,这个,词,的,磁性)
  2. 假设给定一句话做填空 “判断这个词的____”,则问题就变成了给定前面的词,找出后面的一个词是什么,转化成数学语言就是:𝑃(词性|判断,这个,词,的)>𝑃(磁性|判断,这个,词,的)

通过上述两个实例,可以给出语言模型更加具体的描述:

1.给定一句由 𝑛 个词组成的句子 𝑊=𝑤1,𝑤2,⋯,𝑤𝑛,计算这个句子的概率 𝑃(𝑤1,𝑤2,⋯,𝑤𝑛)

2.计算根据上文计算下一个词的概率 𝑃(𝑤𝑛|𝑤1,𝑤2,⋯,𝑤𝑛−1)。

语言模型有两个分支,分别是统计语言模型和神经网络语言模型。

 2.1统计语言模型

1.计算句子概率的公式:P(w1,w2,⋯,wn)=P(w1)P(w2|w1)P(w3|w1,w2)⋯p(wn|w1,w2,⋯,wn−1)=∏iP(wi|w1,w2,⋯,wi−1)

2.对于第二个问题可以用二元语言模型计算更简便。

二元语言模型的使用举例:

2.2 神经网络语言模型 

神经网络语言模型则引入神经网络架构来估计单词的分布,并且通过词向量的距离衡量单词之间的相似度,因此,对于未登录单词,也可以通过相似词进行估计,进而避免出现数据稀疏问题


http://www.ppmy.cn/ops/156746.html

相关文章

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…

[数据结构] 哈希表

目录 概念 冲突-概念 冲突-避免 冲突-避免-哈希函数设计 常见哈希函数 1.直接定制发--(常用) 2. 除留余数法--(常用) 3.平方取中法--(了解) 4.折叠法--(了解) 5.数学分析法--(了解) 冲突-避免-负载因子调节(重点掌握) 冲突-解决-闭散列 1.线性探测 2.二次探测 冲…

01C#入门篇(D1_C#入门前的认知)

目录 学习须知 学习路线 一、Dotnet 1. 了解C#之前,我们有必要先了解下Dotnet 2. Dotnet 发展历史: Framework ⇒ Core 2.1. .Net Framework(2002年) 1> 运行时(CLR) 2> CTS(通用类型系统&…

游戏引擎学习第87天

当直接使用内存时,可能会发生一些奇怪的事情 在直接操作内存时,一些意外的情况可能会发生。由于内存实际上只是一个大块的空间,开发者可以完全控制它,而不像高级语言那样必须遵守许多规则,因此很容易发生错误。在一个…

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java,Scala,python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…

GlusterFS源码讲解:如何实现最终一致性

引言 在分布式文件系统中,由于网络延迟、节点故障或临时分区原因,很难保证写操作在所有节点上立即生效。为了解决这一问题,很多系统采用最终一致性模型:写操作可能一开始没有同步到所有节点,但经过一段时间后&#xff…

【玩转全栈】--创建一个自己的vue项目

目录 vue介绍 创建vue项目 vue页面介绍 element-plus组件库 启动项目 vue介绍 Vue.js 是一款轻量级、易于上手的前端 JavaScript 框架,旨在简化用户界面的开发。它采用了响应式数据绑定和组件化的设计理念,使得开发者可以通过声明式的方式轻松管理数据和…

解锁高效 Web 开发新姿势:Open WebUI 安装指南

在 Web 开发的浩瀚宇宙里,找到一款强大又好用的框架,就如同拥有了超级外挂,能让开发效率直线飙升。 今天要给大家介绍的 Open WebUI,便是这样一款神器,它作为开源框架,助力开发者轻松搭建现代感十足、交互性…