本文GitHub地址https://github.com/panda-like-bamboo/Study-CS324
这一章比较奇怪,cs324讲述了危害性,但是中文文档却没有,讲的是架构方面的内容。所以本篇笔记先非常简略的说一下危害性,之后再讲架构方面的内容。
1. 危害探讨
在这一部分,我们对大型语言模型可能引发的多方面危害进行了探讨。这些危害涉及性能不同群体、社会偏见、毒性、虚假信息、安全与隐私、版权法律、环境影响和权力集中等方面。
2. 新兴技术中的危害
我们强调了模型能力和危害之间的紧密关系,指出提升能力可能导致更广泛采用,从而增加总体危害。
3. 危害与安全伦理在其他领域的思考
我们提及了贝尔蒙特报告和IRB,生物伦理学和CRISPR,以及FDA和食品安全等作为其他领域处理危害和安全伦理的例子。
4. 社会群体
我们讨论了识别社会群体的方法,包括生产者、受众和内容等方面,以及受保护属性和历史性边缘化的概念。
5. 性能差异和社会偏见的例子
我们提供了具体案例,如名字文物和大型语言模型对穆斯林的关联,以展示性能差异和社会偏见的实际问题。
6. 测量和其他考虑
我们引入了公平度量和测量偏见的概念,讨论了测量偏见时的设计决策,以及对现有基准的批评。
7. 决策和展望
最后,我们指出了现有方法对减轻危害的不足,并提出社会技术方法可能是减轻危害的有效途径。
总体来说,我们深入研究了大型语言模型可能引发的各种危害,强调了与性能、社会偏见、安全伦理等相关的重要概念。
分词是将文本序列转换为词元序列的过程,其中词元可以是单词、标点符号等。英文通常通过空格分词,但其他语言可能没有明显的分隔符,如中文。
Byte Pair Encoding (BPE) 分词算法
概要: BPE是一种用于分词的算法,最初在数据压缩领域应用,后来广泛用于自然语言处理。其主要思想是通过学习数据中常见的字节对,逐步构建更有语言学意义的词汇表。
步骤:
初始化: 将每个字符视为一个初始词元,构建初始的词汇表V。
迭代过程:
示例:
考虑输入语料:[[‘abab’, ‘abcab’, ‘abcaab’]]。
第一次迭代:
第二次迭代:
继续迭代,直到满足停止条件。 在每次迭代中,BPE算法通过发现并合并频繁共现的字节对,逐渐演化词汇表,使其能够更好地捕捉语言结构,特别适用于处理没有空格分隔的语言。
在多语言环境中,Unicode字符的数量庞大,为了减少数据稀疏性,可以在字节级别而不是Unicode字符级别上运行BPE算法。
Unicode问题与BPE分词的解决方案
问题描述: Unicode是一种包含大量字符的编码标准,而在训练数据中不可能涵盖所有Unicode字符。这导致了数据的稀疏性,增加了模型的难度。特别在多语言环境中,不同语言的Unicode字符更加丰富多样,给自然语言处理任务带来了挑战。
解决方案: 为了应对Unicode字符的多样性和减少数据的稀疏性,可以使用Byte Pair Encoding (BPE) 分词算法,并将其应用于字节级别而不是Unicode字符级别。
具体步骤:
Unicode字符表示: 将Unicode字符表示为其字节编码。每个Unicode字符通常由多个字节组成,而将其表示为字节序列可以更好地处理多语言数据。
例如,将中文字符 “今天” 表示为字节序列:[x62, x11, 4e, ca]。
BPE分词: 在字节级别运行BPE算法。该算法会发现并合并频繁共现的字节对,形成新的符号,从而减少数据中出现的低频词汇。
以 “今天” 为例,可能在BPE过程中会发现 ‘x62’ 和 ‘x11’ 经常共同出现,于是合并为一个新符号,得到更新后的字节序列。
更新后的字节序列:[新符号, 4e, ca]
这个过程的目标是减少数据的稀疏性,提高模型在多语言环境中的泛化能力。
优势与作用:
简介
这个模型的原理是观察每个单词在一段文字中的频率,并根据这些频率判断文本分成的每个部分是否合理。例如,对于文本“ababc”,Unigram模型可能会认为“ab”出现的次数较多,因此在分词时更可能将“ab”作为一个单词。
Unigram模型的灵活性使其适用于不同的语言和任务。由于它主要关注单词的频率,而不依赖于复杂的语法规则,因此可用于处理多语言环境和各种文本数据。
数据稀疏性处理
在实际的文本数据中,Unigram模型通过…
Unigram模型介绍
在分词任务中,Unigram模型提出了一种更有原则的方法。该模型使用目标函数捕捉好的分词特征,以适应更多的分词场景。核心思想是通过定义每个词汇在训练数据中…
示例分析
以训练数据 “ababc” 为例,Unigram模型的分词结果为:{(“”, “”), (“”, “”), (“”)}
对应的词汇表为:{“”, “”},表示训练数据中出现的所有词汇。Unigram模型通过统计每个词汇在训练数据中的出现次数来估计其概率。在这个例子中…
算法流程
这个流程的目标是通过迭代优化和剪枝,逐渐演化词汇表,保留那些对于似然值有较大贡献的词汇,提升模型的性能。通过Unigram模型,分词模型在训练过程中更加有原则地调整词汇表,使得分词结果更加符合语言结构。
采用避免生成整个序列的生成模型的方法,使用上下文表征向量。上下文向量表征是在自然语言处理中常用的概念,涉及将一个词元或一段文本嵌入到一个向量空间中,以便在模型中进行进一步的处理。在语言模型中,上下文向量表征尤其重要,因为它带有词元周围上下文的信息,有助于模型更好地理解词元的语境。
上下文向量表征的要点:
在上下文向量表征中的应用场景:
总体而言,上下文向量表征是自然语言处理中用于捕捉语境信息的重要工具,提供了对词元或文本在其上下文中语义含义的更深刻理解。
起源和发展:
语言模型最初源自Transformer模型,这是一种编码-解码(Encoder-Decoder)架构。当前,语言模型被划分为三个类型:编码端(Encoder-Only)、解码端(Decoder-Only)和编码-解码端(Encoder-Decoder)。
编码端架构模型:
任务示例:
解码器架构模型:
任务示例:
编码-解码端架构模型:
任务示例:
优缺点分析:
总体而言,这一段详细解释了不同语言模型架构的特点、应用以及它们在特定任务上的表现。
深度学习语言模型理论 - Transformer架构详解
Transformer架构概述
注意力机制
残差连接和归一化
位置嵌入
GPT-3架构
深入Transformer的核心组件
通过理解这些组件,我们更深刻地认识了Transformer如何处理序列数据、捕捉长距离依赖关系,以及在自然语言处理任务中的卓越性能。
这里讲述了神经语言模型的核心接口、GPT-3模型的架构、当前模型规模扩展的问题,以及提出了两种新型模型架构的思考。其中,混合专家模型介绍了一组专家,每个输入只激活其中一小部分,类似于咨询委员会的专业分工。基于检索的模型则利用原始数据存储库,通过检索相关数据来预测输出,类似于进行网络搜索以获取答案。整体而言,这些讨论反映了对于构建更大规模语言模型的挑战和新的思考方向。
混合专家模型
基础知识
大模型之问题
新的模型架构
实例模型
总结
解决大规模模型的挑战
- 通过引入稀疏性和分布式计算提高训练效率
- 在各种任务和数据集中取得显著性能
- 未来展望
- 深入研究混合专家的不同变体
- 在更广泛的领域和任务中验证性能
- 考虑实际应用中的资源和计算限制
基于检索的语言模型的原理涉及两个关键阶段:检索和生成。以下是该模型的基本原理:
检索阶段:
存储库(Repository): 模型事先构建了一个包含大量序列(文档、段落等)的存储库,记为 S。这个存储库充当了模型获取信息的来源。
检索器(Retriever): 当模型接收到输入文本 x(例如一个问题),检索器的任务是从存储库中选择与输入最相关的序列 z。检索器的选择可以基于相似性度量,如使用预训练的语言模型(例如BERT)计算输入与存储库序列之间的相似性。
生成阶段:
生成器(Generator): 在检索阶段选择的序列 z 和输入文本 x 的基础上,生成器负责产生最终的输出 y。这个生成器可以是一个预训练的语言模型,比如BART(基于编码器-解码器结构)。
综合概率计算: 生成阶段的概率计算基于两个概率因素的乘积。首先,是检索器选择序列 z 的概率(p(z∣x)),其次,是生成器产生输出 y 的概率(p(y∣z,x))。整个过程的概率计算可以表示为∑z∈S p(z∣x) * p(y∣z,x),即从存储库中选择序列并生成输出的总体概率。
这种基于检索的模型允许模型在处理输入时参考大量的背景信息,提高了对特定任务的适应性。同时,它还具备一定的可解释性,因为生成的结果可以追溯到检索到的具体信息。这种模型的应用范围广泛,特别适用于知识密集型任务,如开放问答。
[1]datawhale讲义: https://github.com/datawhalechina/so-large-lm
[2]CS324: https://stanford-cs324.github.io/winter2022/lectures/