CMU 10423 Generative AI:lec2

文章目录

  • [1 概述](#1 概述)
  • [2 部分摘录](#2 部分摘录)
    • [2.1 噪声信道模型(Noisy Channel Models)](#2.1 噪声信道模型(Noisy Channel Models))
    • [2.2 n-Gram模型](#2.2 n-Gram模型)
      • [1. 什么是n-Gram模型](#1. 什么是n-Gram模型)
      • [2. 早期的n-Gram模型](#2. 早期的n-Gram模型)
      • [3. Google n-Gram项目](#3. Google n-Gram项目)
      • [4. 模型规模与训练数据](#4. 模型规模与训练数据)
      • [5. n-Gram模型的局限性](#5. n-Gram模型的局限性)
      • 总结
    • [2.3 当今前沿大模型的训练数据量和参数量](#2.3 当今前沿大模型的训练数据量和参数量)
    • [2.4 计算图的概念](#2.4 计算图的概念)
      • [1. 计算图(Computation Graph)简介](#1. 计算图(Computation Graph)简介)
      • [2. 图中各部分的详细解释](#2. 图中各部分的详细解释)
      • [3. 计算图的要点](#3. 计算图的要点)
      • 总结:
    • [2.5 Deep BiLSTM 长什么样、LSTM系列变种问题](#2.5 Deep BiLSTM 长什么样、LSTM系列变种问题)
    • [2.6 为什么transformer中需要加入位置编码?](#2.6 为什么transformer中需要加入位置编码?)
    • [2.7 关于 GPT3 的模型结构和参数](#2.7 关于 GPT3 的模型结构和参数)
  • [3 阅读材料(LSTM, transformer, 讲解博客)](#3 阅读材料(LSTM, transformer, 讲解博客))

1 概述

该文件主要介绍了Transformer语言模型的背景、架构以及与其他语言模型的对比。以下是主要内容的概述:

  1. 语言模型的历史:文件首先介绍了在2017年之前使用的噪声信道模型在语音识别和机器翻译中的应用。这些模型通过结合转导模型和语言模型来进行预测。
  2. 大规模语言模型的发展:讨论了早期的n-Gram语言模型,如Google n-Gram模型,这些模型基于网页文本进行训练,并覆盖多种语言。接着,文件还对比了近年来的一些大规模语言模型(LLMs),如GPT-2、GPT-3、PaLM等。
  3. 递归神经网络(RNNs)及其局限性:介绍了RNN语言模型的基本概念,并讨论了RNN在学习长距离依赖时的困难。
  4. 长短期记忆网络(LSTM):详细解释了LSTM如何通过其内部结构(如输入门、遗忘门、输出门等)克服RNN的梯度消失问题,并帮助记忆长时间步的信息。
  5. 双向LSTM(BLSTM):讲述了将LSTM与双向RNN结合形成的深度双向LSTM(DBLSTM)如何用于处理更复杂的任务。
  6. Transformer语言模型:文件详细介绍了Transformer模型的架构,包括多头注意力机制、前馈神经网络、层归一化、残差连接等。
  7. 模型实现细节:文件还包括了Transformer模型的实现细节,展示了矩阵版本的单头注意力机制等。

2 部分摘录

2.1 噪声信道模型(Noisy Channel Models)

主要内容:

  1. 噪声信道模型的背景
  • 在2017年之前,语言模型被广泛应用于两个主要任务:语音识别和机器翻译。

  • 在这些任务中,噪声信道模型是一种重要的工具。

  • 噪声信道模型的定义

    • 噪声信道模型结合了一个转导模型(transduction model)和一个语言模型(language model)。
    • 转导模型的作用是计算将输出y转化为输入x的概率,而语言模型则计算y的概率。
  • 噪声信道模型的目标

    • 该模型的目标是从输入x中恢复出最可能的输出y。
    • 对于语音识别,x是声学信号,y是相应的转录文本。
    • 对于机器翻译,x是源语言中的句子,y是目标语言中的句子。

公式解释:

公式表示的内容是从x推断出最可能的y值。这是通过找到使得( p(y | x) )最大化的y值来实现的。在噪声信道模型中,这一过程被分解为两个部分:首先是计算给定y生成x的概率( p(x | y) )(即转导模型),然后是计算y本身的概率( p(y) )(即语言模型)。最终的目标是找到使得这两个概率的乘积最大的y值。

应用举例:

  • 语音识别:模型的输入是声学信号(x),目标是找出最有可能的文本转录(y)。
  • 机器翻译:模型的输入是源语言的句子(x),目标是找出最有可能的目标语言翻译(y)。

这种方法为早期的语音识别和机器翻译任务奠定了基础,并在这些领域中得到了广泛应用。

2.2 n-Gram模型

"Large (n-Gram) Language Models" 部分主要介绍了早期的大规模n-Gram语言模型的发展与应用。以下是详细介绍:

1. 什么是n-Gram模型

n-Gram模型是一种通过统计方法预测下一个词出现概率的语言模型。它基于这样一个假设:一个词的出现概率只取决于前面n-1个词。例如,三元组模型(trigram)就是基于前两个词预测下一个词的出现概率。

2. 早期的n-Gram模型

早期的大型语言模型使用的是n-Gram模型,其中最具代表性的是Google的n-Gram模型。这些模型通过分析大量的文本数据来统计词序列的频率,并由此预测词的出现概率。

3. Google n-Gram项目

  • 第一次发布 (2006年): Google发布了首个英语n-Gram数据集,训练数据来自于1万亿个token(词或词的单位),涵盖了95亿个句子。该模型包含了1-gram(单词)、2-gram(双词组)、3-gram(三词组)、4-gram(四词组)和5-gram(五词组)。
  • 扩展至其他语言 (2009-2010年): 随后,Google将n-Gram模型扩展至其他语言,包括日语、中文、瑞典语、西班牙语、罗马尼亚语、葡萄牙语、波兰语、荷兰语、意大利语、法语、德语和捷克语。

4. 模型规模与训练数据

  • 模型规模: 英语n-Gram模型的参数量约为30亿个。与现代的大型语言模型相比,这样的规模已经非常庞大。
  • 训练数据的规模: 模型的训练数据包括了1万亿个token和95亿个句子,这样的大数据量为n-Gram模型的预测提供了强大的支持。

5. n-Gram模型的局限性

尽管n-Gram模型在其时代取得了重要的成功,但其也存在一定的局限性:

  • 上下文限制: n-Gram模型只能考虑有限个(n-1)前缀词,这使得它无法捕捉长距离的依赖关系。
  • 数据稀疏性: 随着n的增大,模型的参数量迅速增加,导致模型容易遇到数据稀疏问题,因为许多n-gram可能在训练数据中很少甚至从未出现过。

总结

n-Gram语言模型是早期自然语言处理中的重要工具,它通过统计词序列的出现频率来预测文本。然而,随着计算能力的提高和更复杂模型的出现,如基于深度学习的Transformer模型,n-Gram模型的应用逐渐减少,但它为语言模型的发展奠定了基础。

2.3 当今前沿大模型的训练数据量和参数量

模型名称 开发者 发布年份 训练数据(# Tokens) 模型规模(# 参数量)
GPT-2 OpenAI 2019 ~10 billion (40GB) 1.5 billion
GPT-3 (ChatGPT) OpenAI 2020 300 billion 175 billion(1750亿)
PaLM Google 2022 780 billion 540 billion
Chinchilla DeepMind 2022 1.4 trillion 70 billion
LaMDA (Bard) Google 2022 1.56 trillion 137 billion
LLaMA Meta 2023 1.4 trillion 65 billion
LLaMA-2 Meta 2023 2 trillion(2万亿) 70 billion
GPT-4 OpenAI 2023 ? ?

2.4 计算图的概念

这张图片展示了如何绘制神经网络的计算图(Computation Graph)以及计算图的一些基本原则和元素。下面详细解释每个部分的含义:

1. 计算图(Computation Graph)简介

计算图是用来表示算法的图形化工具。在计算图中:

  • 节点(Nodes):表示算法中的中间变量。节点在图中通常用矩形表示。
  • 边(Edges):表示变量之间的依赖关系,边是有方向的,指向依赖项。
  • 无标签的边:在计算图中,边通常不需要标签,因为边的方向已经表明了依赖关系。

2. 图中各部分的详细解释

  • (A) Input: 这一部分表示输入层。每个输入变量 (x_i) 被表示为节点。图中也指出,每个输入参数 (\alpha_{ij}) 也需要在图中表示出来。
  • (B) Hidden (linear): 这一层表示神经网络中的隐藏层的线性部分。计算公式为 (a_j = \sum_{i=0}^{M} \alpha_{ji} x_i),这表示每个隐藏层的节点 (a_j) 是输入 (x_i) 的线性组合。
  • © Hidden (sigmoid): 隐藏层的非线性部分,使用sigmoid函数。公式为 (z_j = \frac{1}{1 + \exp(-a_j)})。这一步是将线性组合后的结果通过激活函数(如sigmoid)转换。
  • (D) Output (linear): 输出层的线性部分,计算公式为 (b = \sum_{j=0}^{D} \beta_j z_j),即对隐藏层的输出再做一次线性组合。
  • (E) Output (sigmoid): 最终输出结果通过sigmoid函数转换,公式为 (y = \frac{1}{1 + \exp(-b)})。
  • (F) Loss : 损失函数 (J = \frac{1}{2} (y - y^*)^2) 用于衡量模型输出 (y) 与真实值 (y^*) 之间的误差。

3. 计算图的要点

  • 拦截项作为节点:在神经网络中,每个拦截项(bias)都应被表示为一个节点,除非它已被整合进其他部分。
  • 每个参数都应在图中表示:这确保了计算图的完整性和清晰性。
  • 常数、标签等应在图中表示:例如,真实标签 ( y^* ) 应在图中作为节点出现。
  • 可以包含损失节点:将损失函数作为图的一部分是完全可以的。

总结:

通过计算图,能够直观地理解数据如何在网络中流动,以及如何通过每一层的计算得到最终的输出。这种图示法对于理解复杂的神经网络模型非常有帮助,尤其是在进行反向传播和梯度计算时。

2.5 Deep BiLSTM 长什么样、LSTM系列变种问题

相比BiLSTM大概就是多个跳跃连接,感觉有点类似残差,防止梯度消失。

LSTM系列变种问题:

  • 他们仍然在处理长距离依赖方面存在困难
  • 他们的计算本质上是串行的,因此无法轻松地在GPU上并行化
  • 尽管他们(大多数情况下)解决了梯度消失问题,但仍可能会遭遇梯度爆炸的困扰。

2.6 为什么transformer中需要加入位置编码?

一句话总结:注意力机制无法捕捉到词序信息,而词序蕴含的信息很重大,因此需要通过额外的位置编码将位置信息融入到词嵌入编码中。

位置嵌入(Position Embeddings)

  • 问题:由于注意力机制是位置不变的,因此我们需要一种方法来学习关于位置的信息。
  • 解决方案:使用(或学习)一组特定于位置的嵌入:( p_t ) 表示在位置 ( t ) 处的含义。将其与词嵌入 ( w_t ) 相加。关键思想是,每个出现在位置 ( t ) 的词都使用相同的位置嵌入 ( p_t )。
  • 位置嵌入有多种形式:
    • 一些是固定的(基于正弦和余弦),而另一些是学习到的(类似于词嵌入)。
    • 一些是绝对的(如上所述),但我们也可以使用相对位置嵌入(即相对于查询向量的位置)。

注释

  • ( P_1 \neq P_3 )(位置1的嵌入不等于位置3的嵌入)。
  • ( W_1 = W_3 )(词"cat"的嵌入在两个位置上是相同的)。

解释:

这张图和文本介绍了在Transformer模型中使用的位置嵌入(Position Embeddings)。在Transformer架构中,注意力机制本身是位置不变的,这意味着它不会直接考虑词语在句子中的顺序。然而,句子中的词语顺序在理解语义时是非常重要的。因此,引入了位置嵌入来弥补这一点。

关键点:
  1. 位置嵌入的必要性
  • 由于注意力机制不考虑词语的顺序,因此引入位置嵌入来为每个词语添加位置信息,以便模型能够区分同一个词在不同位置上的不同含义。

  • 如何实现

    • 每个位置 ( t ) 都有一个对应的位置嵌入 ( p_t ),它表示该位置的特定含义。该位置嵌入与词嵌入 ( w_t ) 相加,形成包含位置信息的输入向量。这样,模型就可以在处理时保留位置信息。
  • 位置嵌入的种类

    • 固定位置嵌入:这些位置嵌入通常基于正弦和余弦函数生成,不随训练过程变化。
    • 学习位置嵌入:类似于词嵌入,通过训练过程动态学习和调整。
    • 绝对位置嵌入:表示词语的具体位置(如第一个词、第二个词)。
    • 相对位置嵌入:表示一个词相对于另一个词的位置关系。
  • 示例解释

    • 在图中,词语"Cat"和"saw"在不同的位置上分别有其位置嵌入 ( p_1, p_2 ),并与词嵌入 ( w_1, w_2 ) 相加,以便模型知道"Cat"和"saw"分别出现在句子的什么位置。
    • 在例子中,尽管"Cat"在两个不同的位置上出现(位置1和位置3),它的词嵌入 ( W_1 ) 和 ( W_3 ) 是相同的,但其位置嵌入 ( P_1 ) 和 ( P_3 ) 不同,从而帮助模型区分它们在句子中的不同角色。

通过位置嵌入,Transformer模型能够更好地理解词语的顺序和语境,从而提升对序列数据的处理能力。

2.7 关于 GPT3 的模型结构和参数

GPT的全称:Generative Pre-trained Transformer,即生成式预训练变换模型。

核心思想:GPT本质上是一个基于Transformer架构的语言模型(LM),其特别之处在于拥有大量的参数。

属性/版本 解释 GPT (2018) GPT-2 (2019) GPT-3 (2020)
层数 Transformer的层数(# layers)。表示模型的深度,层数越多,模型能捕捉到的特征越复杂。 12 48 96
状态维度 每层Transformer的输出向量维度(dimension of states)。更高的维度允许模型捕捉更丰富的信息。 768 1600 12288
内部状态维度 前馈神经网络(FFN)的中间层维度(dimension of inner states)。通常是状态维度的4倍,用于增强非线性能力。 3072 -- 4*12288
注意力头数量 多头自注意力机制中的头的数量(# attention heads)。更多的注意力头可以捕捉更多的序列特征。 12 -- 96
参数数量 模型中的总参数数量(# params)。包括所有可训练的权重和偏置,参数数量越大,模型的表达能力越强。 117M 1542M 175000M

3 阅读材料(LSTM, transformer, 讲解博客)

  • The Long Short-Term Memory and Other GatedRNNs. Ian Goodfellow, Yoshua Bengio, & Aaron Courville (2016). Deep Learning, Chapter 10.10-10.12.
  • Attention Is All You Need. Vaswani et al. (2017). NeurIPS.
  • The Illustrated Transformer. Alammar (2018).

第一个就是花书中的LSTM及其变种部分。

第二个就是鼎鼎大名的XXX is all you need原论文。

第三个是广泛被国内转载并引用原图的某位国外作者撰写的讲解Transformer论文的博文。(有十几个语种的翻译版。。。)

原版地址:https://jalammar.github.io/illustrated-transformer/

中文版1:https://blog.csdn.net/yujianmin1990/article/details/85221271

中文版2:https://blog.csdn.net/qq_36667170/article/details/124359818

相关推荐
凯子坚持 c36 分钟前
【机器学习】--- 生成对抗网络 (GANs)
人工智能·机器学习·生成对抗网络
while(awake) code43 分钟前
InternVL 多模态模型部署微调实践
人工智能
GIS数据转换器1 小时前
时空大数据平台:激活新质生产力的智慧引擎
大数据·人工智能·物联网·3d·gis
hai405872 小时前
机器学习和深度学习区别
人工智能·深度学习·机器学习
Micheal_Dad2 小时前
Pytorch_CPU鸢尾花lirsDataset 尝试
人工智能·算法
tangjunjun-owen2 小时前
windows系统visual studio编译器配置opencv库
ide·人工智能·windows·opencv·visual studio
.Vaidurya.2 小时前
基于2023年网络赛赛题了解OpenCv
人工智能·opencv·计算机视觉
神奇夜光杯2 小时前
Python酷库之旅-第三方库Pandas(117)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
爱睡懒觉的焦糖玛奇朵2 小时前
【人工智能学习之人脸识别】
人工智能·学习
~|Bernard|3 小时前
CPU 和 GPU:为什么GPU更适合深度学习?
人工智能·深度学习