大模型学习之GLM结构

在这里插入图片描述

探索GLM:一种新型的通用语言模型预训练方法

随着人工智能技术的不断进步,自然语言处理(NLP)领域也迎来了革命性的发展。OpenAI的ChatGPT及其后续产品在全球范围内引起了广泛关注,展示了大型语言模型(LLM)的强大能力。在这一背景下,GLM(General Language Model)作为一种创新的预训练语言模型,以其独特的自编码和自回归结合的训练方法,为NLP领域带来了新的视角。

GLM的核心特点

GLM模型结合了自编码和自回归两种预训练方法的优点,通过随机MASK输入中连续跨度的token,并使用自回归空白填充的方法重新构建这些跨度中的内容。此外,GLM还采用了二维编码技术,以更好地表示跨间和跨内的信息。这种独特的结合使得GLM在处理多种NLP任务时都能展现出优异的性能。

预训练目标:自回归空白填充

GLM的预训练目标是通过自回归空白填充来优化的。具体来说,给定一个输入文本,模型会从中采样多个文本片段,并将这些片段用[MASK]符号替换,形成一个损坏的文本。模型随后以自回归的方式,从损坏的文本中预测缺失的词。为了捕捉不同片段之间的相互依赖关系,GLM会随机打乱片段的顺序,类似于排列语言模型。

架构与实现

GLM的架构设计巧妙地结合了双向编码器和单向解码器。在模型的输入部分,文本被分为两部分:Part A是损坏的文本,Part B是被遮盖的片段。Part A的词可以相互看到,但不能看到Part B中的任何词;而Part B的词可以看到Part A和Part B中的前置词,但不能看到Part B中的后续词。这种设计使得模型能够在统一的框架内同时学习双向和单向的注意力机制。

GLM预训练方法分析

输入文本处理

  • 输入文本:给定一个输入文本 x = [ x 1 , . . . , x n ] \bm{x} = [x_1, ..., x_n] x=[x1,...,xn],模型从中采样多个文本片段 { s 1 , . . . , s m } \{ \bm{s}_1, ..., \bm{s}_m \} {s1,...,sm}
  • 文本片段:每个片段 s i \bm{s}_i si 对应于输入文本中的一系列连续的词 [ s i , 1 , . . . , s i , l i ] [s_{i,1}, ..., s_{i,l_i}] [si,1,...,si,li]

损坏文本的生成

  • [MASK]替换:每个采样的文本片段 s i \bm{s}_i si 被一个单独的 [MASK] 符号替换,形成一个损坏的文本 x corrupt \bm{x}_{\text{corrupt}} xcorrupt
    在这里插入图片描述

自回归预测

  • 预测方式:模型以自回归的方式从损坏的文本 x corrupt \bm{x}_{\text{corrupt}} xcorrupt 中预测缺失的词。这意味着在预测一个片段中的缺失词时,模型可以访问损坏的文本和之前已经预测的片段。

片段顺序的随机打乱

  • 打乱顺序:为了充分捕捉不同片段之间的相互依赖关系,模型随机打乱片段的顺序,类似于排列语言模型。
  • 排列集合:令 Z m Z_m Zm 为长度为 m m m 的索引序列 [ 1 , 2 , . . . , m ] [1, 2, ..., m] [1,2,...,m] 的所有可能排列的集合。
  • 片段表示:令 s z < i ∈ [ s z 1 , . . . , s z i − 1 ] \bm{s}_{z<i} \in [\bm{s}_{z_1}, ..., \bm{s}_{z_{i-1}}] sz<i[sz1,...,szi1],表示在排列 z z z 中,索引小于 i i i 的片段。

GLM的预训练方法

通过自回归空白填充目标进行优化,这是一种结合了自编码和自回归特性的创新方法。下面是对这一过程的详细分析:

  1. 输入文本处理

    • 给定一个输入文本 x = [ x 1 , . . . , x n ] \bm{x} = [x_1, ..., x_n] x=[x1,...,xn],模型从中采样多个文本片段 { s 1 , . . . , s m } \{ \bm{s}_1, ..., \bm{s}_m \} {s1,...,sm}
    • 每个片段 (\bm{s}_i) 对应于输入文本中的一系列连续的词 [ s i , 1 , . . . , s i , l i ] [s_{i,1}, ..., s_{i,l_i}] [si,1,...,si,li]
  2. 损坏文本的生成

    • 每个采样的文本片段 s i \bm{s}_i si被一个单独的 [MASK] 符号替换,形成一个损坏的文本 x corrupt \bm{x}_{\text{corrupt}} xcorrupt
  3. 自回归预测

    • 模型以自回归的方式从损坏的文本 (\bm{x}_{\text{corrupt}}) 中预测缺失的词。这意味着在预测一个片段中的缺失词时,模型可以访问损坏的文本和之前已经预测的片段。
  4. 片段顺序的随机打乱

    • 为了充分捕捉不同片段之间的相互依赖关系,模型随机打乱片段的顺序,类似于排列语言模型。
      $$
    • 令 (Z_m) 为长度为 (m) 的索引序列 ([1, 2, …, m]) 的所有可能排列的集合。
    • s z < i ∈ [ s z 1 , . . . , s z i − 1 ] \bm{s}_{z<i} \in [\bm{s}_{z_1}, ..., \bm{s}_{z_{i-1}}] sz<i[sz1,...,szi1],表示在排列 (z) 中,索引小于 (i) 的片段。
  5. 预训练目标函数

    • 预训练目标函数可以表示为最大化期望,即最大化模型在所有可能的片段排列下预测缺失词的对数概率之和。
    • 数学表达式为:
      max θ E z ∼ Z m [ ∑ i = 1 m log  p θ ( s z i ∣ x corrupt , s z < i ) ] \underset{\theta}{\text{max}} \space \mathbb{E}_{z\sim Z_m} \left[ \sum_{i=1}^{m} \text{log} \space p_{\theta} \left( \bm{s}_{z_i} | \bm{x}_{\text{corrupt}}, \bm{s}_{z_{<i}} \right) \right] θmax EzZm[i=1mlog pθ(szixcorrupt,sz<i)]
    • 这里, p θ ( s z i ∣ x corrupt , s z < i ) p_{\theta} \left( \bm{s}_{z_i} | \bm{x}_{\text{corrupt}}, \bm{s}_{z_{<i}} \right) pθ(szixcorrupt,sz<i) 表示在给定损坏的文本和之前预测的片段条件下,模型预测当前片段 s z i \bm{s}_{z_i} szi 的概率。

按照从左到右的顺序生成每个空白中的词,即生成片段 s i \bm{s}_i si 的概率可以分解为:

p θ ( s i ∣ x corrupt , s z < i ) = ∏ j = 1 l i p ( s i , j ∣ x corrupt , s z < i , s i , < j ) (2) p_{\theta}\left( \bm{s}_i|\bm{x}_{\text{corrupt}},\bm{s}_{z_{<i}} \right) = \prod_{j=1}^{l_i}p\left( s_{i,j}|\bm{x}_{\text{corrupt}},\bm{s}_{z_{<i}},\bm{s}_{i,<j} \right) \tag{2} pθ(sixcorrupt,sz<i)=j=1lip(si,jxcorrupt,sz<i,si,<j)(2)

使用以下方式实现了自回归空白填充目标。

输入 x \bm{x} x 被分成两部分:Part A 是损坏的文本 x corrupt \bm{x}_{\text{corrupt}} xcorrupt,Part B 是被遮盖的片段。Part A 的词可以相互看到,但不能看到 Part B 中的任何词。Part B 的词可以看到 Part A 和 Part B 中的前置词,但不能看到 Part B 中的后续词。为了实现自回归生成,每个片段都用特殊的符号 [START] 和 [END] 进行填充,分别用于输入和输出。这样,模型就自动地在一个统一的模型中学习了一个双向编码器(用于 Part A)和一个单向解码器(用于 Part B)。

在GLM模型中,原始文本 x = [ x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ] \bm{x} = [x_1, x_2, x_3, x_4, x_5, x_6] x=[x1,x2,x3,x4,x5,x6] 被随机地进行连续的掩码处理。假设我们掩码掉了 [ x 3 ] [x_3] [x3] [ x 5 , x 6 ] [x_5, x_6] [x5,x6],这些跨度的长度遵循泊松分布(参数 λ = 3 \lambda = 3 λ=3),这一策略与BART模型相似。
在这里插入图片描述

具体操作是将 [ x 3 ] [x_3] [x3] [ x 5 , x 6 ] [x_5, x_6] [x5,x6] 替换为特殊的 [M] 标志,代表 [MASK]。接着,我们将这些被掩码的片段(Part B)的顺序打乱,以捕捉跨度之间的内在联系。这种随机交换跨度顺序的做法有助于模型学习到更丰富的上下文信息。

GLM模型采用自回归的方式来生成Part B的内容。在输入时,每个片段前面会加上 [S] 标志,代表 [START],而在输出时,每个片段后面会加上 [E] 标志,代表 [END]。这种做法有助于模型明确每个片段的开始和结束。

为了更好地表示不同片段之间以及片段内部的位置关系,GLM引入了二维位置编码。这种编码方式使得模型能够更精确地理解文本的结构和语义。
在这里插入图片描述

在自注意力机制中,使用了特定的掩码策略。灰色区域表示被掩盖的部分。Part A的词语可以相互看到(如图2(d)中的蓝色框所示),但不能看到Part B中的任何内容。相反,Part B的词语可以看到Part A和Part B中位于它们之前的词语(如图2(d)中的黄色和绿色框所示,分别对应两个不同的片段)。这种设计确保了模型在生成文本时能够考虑到正确的上下文信息。

通过这种方式,GLM模型不仅能够学习到文本中的上下文信息,还能够捕捉到不同文本片段之间的复杂依赖关系,从而在多种NLP任务中展现出优异的性能。这种结合了自编码和自回归特性的预训练方法,为语言模型的预训练提供了新的思路和方法。

GLM模型架构与微调方法分析

模型架构

GLM采用了一个单一的Transformer架构,并对其进行了一些关键的修改:

  1. 层归一化和残差连接的重新排列:这种调整对于避免大规模语言模型中的数值错误至关重要。
  2. 单一的线性层用于输出词预测:简化了输出层,提高了模型的预测效率。
  3. GeLU激活函数替换ReLU:GeLU(Gaussian Error Linear Unit)激活函数在许多现代神经网络模型中表现更好。

二维位置编码

GLM引入了二维位置编码,以更好地处理自回归空白填充任务中的位置信息。每个词使用两个位置ID进行编码:

  • 第一个位置ID表示词在损坏文本 x corrupt \bm{x}_{\text{corrupt}} xcorrupt 中的位置。
  • 第二个位置ID表示区域内的位置,Part A的词此ID为0,Part B的词此ID从1到区域长度。

这种编码方法确保模型在重建被遮盖的跨度时不知道其长度,与其他模型如XLNet和SpanBERT相比,这是一个显著的区别。

微调GLM

NLU分类任务

GLM将自然语言理解(NLU)分类任务重新制定为填空生成任务,遵循PET(Pattern Exploiting Training)方法。例如,情感分类任务可以被表述为“{SENTENCE}。这真的是 [MASK]”。标签如“positive”和“negative”分别映射到单词“good”和“bad”。

文本生成任务

对于文本生成任务,GLM可以直接应用预训练模型进行无条件生成,或者在条件生成任务上进行微调。给定的上下文构成了输入的Part A,末尾附加了一个mask符号,模型自回归地生成Part B的文本。

通过这些创新的方法和架构调整,GLM在处理各种自然语言处理任务时展现出了卓越的性能和灵活性。

应用与展望

GLM模型的出现,不仅为NLP领域提供了新的研究方向,也为实际应用带来了新的可能性。无论是在文本分类、翻译、问答还是文本生成等任务中,GLM都展现出了其独特的优势。随着模型的进一步优化和应用场景的拓展,GLM有望在未来的AI领域中扮演更加重要的角色。

总之,GLM作为一种结合了自编码和自回归优点的预训练语言模型,为NLP领域带来了新的活力。通过其独特的预训练方法和架构设计,GLM在多个NLP任务中都展现出了卓越的性能,预示着其在未来的广阔应用前景。

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

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

相关文章

分离式网络变压器与传统网络变压器在电路设计中如何选择?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是&#xff1a;分离式网络变压器与传统网络变压器在电路设计中如何选择&#xff1f; 首先&#xff0c;我们要了解传统网络变压器和分离式网络变压器在设计上主要有以下不同点&#xff1a; 1、传统网络变…

​​Vitis HLS 学习笔记--添加 RTL 黑盒函数

目录 1. 简介 2. 用法详解 2.1 需要的文件 2.1.1 RTL 函数签名 2.1.2 黑盒 JSON 描述文件 2.1.3 RTL IP 文件 2.2 操作步骤 3. 总结 1. 简介 Vitis HLS 工具可以将现有的 Verilog RTL IP&#xff08;即硬件描述语言编写的模块&#xff09;集成到 C/C HLS 项目中。通过…

专家解读 | NIST网络安全框架(3):层级配置

NIST CSF在核心部分提供了六个类别的关键功能和子功能&#xff0c;并围绕CSF的使用提供了层级&#xff08;Tier&#xff09;和配置&#xff08;Profile&#xff09;两种工具&#xff0c;使不同组织和用户更方便有效地使用CSF&#xff0c;本文将深入探讨CSF层级和配置的主要内容…

【PL理论】(24) C- 语言:有块的作用域 | 更新的语法 | 新的语义域 | 环境 vs. 内存

&#x1f4ad; 写在前面&#xff1a;我们将再次扩展之前的C语言&#xff0c;让我们向这种语言引入“作用域”的概念。 目录 0x00 C- 语言&#xff1a;有块的作用域 0x01 C- 语言&#xff1a;更新的语法 0x02 新的语义域 0x03 环境 vs. 内存 0x00 C- 语言&#xff1a;有块的…

Golang | Leetcode Golang题解之第145题二叉树的后序遍历

题目&#xff1a; 题解&#xff1a; func reverse(a []int) {for i, n : 0, len(a); i < n/2; i {a[i], a[n-1-i] a[n-1-i], a[i]} }func postorderTraversal(root *TreeNode) (res []int) {addPath : func(node *TreeNode) {resSize : len(res)for ; node ! nil; node n…

大语言模型QA

Q:关于 Yi-9B 通过 input/output cosine 来分析模型,可能文档里没有把前提说明白。该指标确实存在你们提到的不同模型大小不可比的问题。所以我们比较的是同一个模型在不同训练阶段,以及 layer 深度相同的dense models 之间的比较。除了发现yi-6B/34B 随着训练 tokens 的增加…

Polkadot <> Kusama 桥:打造无信任互操作性的开创性范例

原文&#xff1a;https://www.parity.io/blog/trustless-interoperability 作者&#xff1a;Adrian Catangiu&#xff5c;Rust 区块链核心工程师&#xff0c;Parity Technologies 编译&#xff1a;OneBlock Polkadot <> Kusama 桥是无信任互操作性的开创性范例。本文深…

TCP相关细节

1. 常用TCP参数 1.1 ReceiveBufferSize ReceiveBuffersize指定了操作系统读缓冲区的大小&#xff0c; 默认值是8192(如图5-10 所示)。在第4章的例子中,会有"假设操作系统缓冲区的长度是8" 这样的描述,可通过socket.ReceiveBufferSize 8 实现。当接收端缓冲区满了的时…

实用软件下载:XMind 2024最新安装包及详细安装教程

​XMind不仅是一款易用且功能强大的思维导图软件&#xff0c;也是一个开源项目。XMind以构建一个社区向全球提供领先的跨平台思维导图和头脑风暴软件为目标&#xff0c;以帮助用户提升效率。XMind公司是XMind开源项目的主要代码贡献者&#xff0c;与此同时&#xff0c;我们欢迎…

Stable Diffusion本地化部署详细攻略

一、硬件要求 内存&#xff1a;至少16GB 硬盘&#xff1a;至少60GB以上的磁盘空间&#xff0c;推荐SSD固态硬盘 显卡&#xff1a;推荐NVIDIA显卡 显存&#xff1a;至少4GB Stabl Diffusion因为是在本地部署&#xff0c;对显卡的要求比较高&#xff0c;如果经济能力可以的话…

AI大模型爆发,你还不学就晚了!抓住时代机遇,快速入门指南!

AI大模型风起云涌&#xff0c;你准备好乘风破浪了吗&#xff1f; 在一个阳光明媚的午后&#xff0c;小李坐在自己的工位上&#xff0c;眼前的代码如同繁星般繁多。他是一名资深的软件工程师&#xff0c;但在最近的技术浪潮中&#xff0c;他却感到了一丝不安。他的朋友圈里&…

RN6752V1 高性能AHD转MIPIDVPBT656BT601芯片方案,目前适用于车载方案居多

RN6752V1描述&#xff1a; RN6752V1是一种模拟高清晰度&#xff08;模拟高清&#xff09;视频解码器IC&#xff0c;专为汽车应用而设计。它集成了所有必要的功能块&#xff1a; AFE&#xff0c;PLL&#xff0c;解码逻辑&#xff0c;MIPI和I2C接口等&#xff0c;在一个小的5mm …

LLM资料大全:文本多模态大模型、垂直领域微调模型、STF数据集、训练微调部署框架、提示词工程等

前言 自ChatGPT为代表的大语言模型&#xff08;Large Language Model, LLM&#xff09;出现以后&#xff0c;由于其惊人的类通用人工智能&#xff08;AGI&#xff09;的能力&#xff0c;掀起了新一轮[自然语言处理]领域的研究和应用的浪潮。尤其是以ChatGLM、LLaMA等平民玩家都…

【ARM Cache 及 MMU 系列文章 6.5 -- 如何进行 Cache miss 统计?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 ARM Cache Miss 统计Cache 多层架构简介Cache 未命中的类型Cache 未命中统计Cache miss 统计代码实现Cache Miss 统计意义ARM Cache Miss 统计 在ARMv8/v9架构中,缓存未命中(Cache …

人工智能在风险管理中的创新之路

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;尤其在风险管理领域&#xff0c;其展现出的巨大潜力令人瞩目。风险管理&#xff0c;作为一个涉及广泛领域的复杂系统&#xff0c;正逐渐依赖于AI技术来提升效率和准…

简单了解CPU的工作原理

目录 一、基本结构以及对应功能 &#xff08;1&#xff09;基本结构 &#xff08;2&#xff09;几个重要寄存器的详细介绍 操作码 (Opcode) 操作数 (Operands) 指令表 (Instruction Table) 第一个&#xff1a;程序计数器 (PC) 第二个&#xff1a;指令寄存器 (IR&#x…

【Arthas案例】某应用依赖两个GAV不同但包含两个相同全限定类名StaticLoggerBinder,引起log4j.Level类找不到异常

3分钟内解决问题 两个不同的GAV依赖冲突&#xff0c;包含相同全限定类名&#xff0c;引起ClassNotFoundException Maven依赖的三坐标体系GAV(G-groupId&#xff0c;A-artifactId&#xff0c;V-version) 【案例1】某应用依赖两个GAV不同的jar&#xff0c;但包含两个相同全限定类…

探索互联网寻址机制 | 揭秘互联网技术的核心,解析网络寻址

揭秘互联网技术的核心&#xff0c;解析网络寻址题 前提介绍局域网地址IP地址的分配方式动态IP分配机制内部网&#xff08;intranet&#xff09;ICANN负责IP分配DHCP协议获取IP地址 域名系统域名是什么域名工作方式hosts文件存储域名映射关系DNS分布式数据库DNS域名解析 Java进行…

Java中List流式转换为Map的终极指南

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在Java编程中&#xff0c;经常需要将一个List对象转换为另一个Map对象。这可能是因为需要根据List中的元素的某些属性来创建一个新的键值对集合。在本文中&#xff0c;我将向您展示如何使用Java 中的流式API轻松地实…

02_01_SpringMVC初识

一、回顾MVC三层架构 1、什么是MVC三层 MVC是 模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;、控制器&#xff08;Controller&#xff09;的简写&#xff0c;是一种软件设计规范。主要作用是降低视图与业务逻辑之间的双向耦合&#xff0c;它不是一种…