Generative AI with Large Language Models 也是deeplearning.ai联合制作的课程,吴恩达推荐。难度中级。全程学习时间大概16小时(倍速的话其实很快)。
课程介绍:
课程地址:https://www.coursera.org/learn/generative-ai-with-llms/
- Gain foundational knowledge, practical skills, and a functional understanding of how generative AI works
获得基础知识、实践技能以及对生成式人工智能如何工作的功能性理解 - Dive into the latest research on Gen AI to understand how companies are creating value with cutting-edge technology
深入了解 Gen AI 的最新研究,了解企业如何利用尖端技术创造价值 - Instruction from expert AWS AI practitioners who actively build and deploy AI in business use-cases today
来自当今在业务用例中积极构建和部署 AI 的 AWS AI 专家从业者的指导
这是我的课程笔记,使用了gpt4 with browsing来帮助整理笔记,效果很不错。我有另一种阅读障碍,就是对顺序出现的或者一团平铺的东西有一种理解障碍,如果是脑图或者任何有结构的表达形式,我就会理解快一些。所以用gpt4帮忙做了内容结构化的整理,帮助我进行阅读和学习。
前面的介绍课程就没写了,从有肉的部分开始。
生成式人工智能和LLMs (generative AI and LLMs)
- 课程介绍:
- 大型语言模型(Large Language Models)
- 使用场景
- 模型工作方式
- 提示工程(Prompt Engineering)
- 如何生成创造性的文本输出
- 描绘生成性AI项目的生命周期
2. 对生成式AI(Generative AI)的描述:
-
- 是传统机器学习(Traditional Machine Learning)的子集
- 机器学习模型通过找到人类生成内容的大型数据集中的统计模式来学习这些能力
- 大型语言模型在几周和几个月的时间里,使用大量的计算能力训练了数万亿的词汇
- 这些基础模型(Foundation Models)有数十亿的参数,表现出超越语言本身的新兴属性,研究人员正在解锁它们分解复杂任务、推理和解决问题的能力
3. 基础模型(Foundation Models)的介绍:
-
- 有时被称为基础模型(Base Models)
- 它们的参数数量是它们的相对大小
- 参数可以被认为是模型的记忆,模型的参数越多,记忆越多,可以执行的任务就越复杂
4. 使用模型:
-
- 通过使用这些模型,或者通过应用微调技术(Fine Tuning Techniques)来适应特定的使用案例,可以快速构建定制解决方案,而无需从头开始训练新模型
- 虽然生成性AI模型被创建用于多种模式,包括图像、视频、音频和语音,但这门课程将专注于大型语言模型和它们在自然语言生成中的用途
5. 如何与语言模型交互:
-
- 使用大型语言模型与其他机器学习和编程范式有所不同,大型语言模型能够接受自然语言或人编写的指令,并执行任务
- 传递给LLM的文本被称为提示(Prompt)
- 提示可用的空间或记忆被称为上下文窗口(Context Window),通常足够容纳几千个词,但根据模型的不同而不同
- 模型的输出被称为完成(Completion),使用模型生成文本的行为被称为推理(Inference)
- 完成由原始提示中包含的文本以及生成的文本组成
LLMs的用例和任务(LLM use cases and tasks)
- 聊天机器人和人工智能:LLMs和生成人工智能专注于聊天任务,聊天机器人引人注目并受到广泛关注。
- 单词预测:下一个单词预测是许多不同功能背后的基本概念,从基本的聊天机器人开始。
- 文本生成:这种概念上简单的技术可以用于文本生成中的各种其他任务,例如根据提示写一篇文章,总结对话。
- 翻译任务:模型可以执行两种不同语言之间传统翻译的各种翻译任务,或者将自然语言翻译成机器代码。
- 代码生成:例如,可以要求模型编写一些 Python 代码,该代码将返回 DataFrame 中每列的平均值。
- 信息检索:可以使用LLMs来执行较小的、有针对性的任务,例如信息检索,如命名实体识别。
- 外部数据源和API:通过将 LLMs 连接到外部数据源或使用它们调用外部 API 来增强 LLMs。
- 模型规模和语言理解:随着基础模型的规模从数亿个参数增长到数十亿甚至数千亿,模型所拥有的语言的主观理解也随之增加。
- 微调模型:可以对较小的模型进行微调,以在特定的重点任务上表现良好。
- LLMs的发展:LLMs在过去几年中所表现出的能力的快速增长很大程度上归功于为其提供支持的架构。
在Transformers之前的文本生成(Text generation before Transformers)
这节课主要讨论关于生成式算法(generative algorithms),尤其是语言模型的发展以及变革,这些内容可以被分解成如下几个部分:
- 生成式算法并不新鲜,过去的语言模型已经利用了一种被称为循环神经网络(Recurrent Neural Networks,简称RNNs)的架构。然而,由于计算和内存的限制,RNNs在执行生成性任务时表现有限。
- 以RNN执行简单的下一个词预测任务为例,当模型只看到一个前一个词时,预测的效果并不好。
- 当你扩展RNN以使其能看到文本中更多的前置词时,你必须大幅度地增加模型所使用的资源。事实上,随着你增加模型看到的文本窗口,RNNs的计算和内存需求会指数级增长。
- 尽管你扩展了模型,但它仍然没有看到足够的输入来做出好的预测。
2. 要成功预测下一个词,模型需要看到的不仅仅是前几个词。模型需要理解整个句子甚至整个文档。这个问题在于语言的复杂性。
-
- 在许多语言中,一个词可能有多个含义。这些词被称为同形异义词(homonyms)。在这种情况下,我们只能通过句子的上下文来确定“银行”是什么意思。
- 句子结构中的词可能含糊不清,或者我们称之为句法歧义(syntactic ambiguity)。比如这句话,“老师用书教学生。”是老师用书教,还是学生有书,还是两者都有呢?如果有时候我们都不能明确,那么算法如何理解人类的语言呢?
3. 2017年,一篇题为"Attention is All You Need"的论文发表后,一切都改变了。Transformer架构(Transformer architecture)的出现解锁了我们今天看到的生成人工智能的进步。
-
- 这种新颖的方法可以有效地扩展到使用多核心的图形处理单元(GPUs),它可以并行处理输入数据,利用更大的训练数据集。
- 关键的是,它能够学习关注其正在处理的词的含义。而这就是你需要的全部,这就是论文标题的含义。
Transformers架构(Transformers architectures)
这段内容主要是讲述了使用Transformer架构构建大型语言模型(Large Language Models)的过程,以及这种架构如何显著提升了自然语言任务的表现,并引发了再生能力的爆发:
- 使用Transformer架构构建大型语言模型相较于早期的RNNs大幅提高了自然语言任务的表现,并引发了再生能力的爆发。Transformer架构的力量在于其学习一个句子中所有词语的相关性和上下文的能力。这不仅是每个词与其邻词的相关性,而且是每个词与句子中的每个其他词的相关性。
- Transformer模型使用注意力权重(attention weights)来处理这些词语之间的关系,让模型学习每个词语对输入中每个其他词语的相关性,无论它们在输入中的位置如何。
- 这使得算法能够学习谁拥有书,谁可能拥有书,以及它是否与文档的更广泛上下文相关。
- 这些注意力权重在大型语言模型训练期间学习,并且你将在本周后期了解更多关于这个话题的信息。
- 这个图称为注意力地图(attention map),能够清楚地展示每个词语与每个其他词语之间的注意力权重。
2. Transformer架构的关键属性之一是自我注意力(self-attention)。
-
- 在这个例子中,你可以看到"book"这个词强烈地与"teacher"和"student"这两个词相连,或者说,它正在关注这两个词。这就是自我注意力。
- 学习以这种方式在整个输入中关注的能力显著提高了模型编码语言的能力。
3. Transformer架构的工作原理。
-
- Transformer架构被分为两个独特的部分,编码器(encoder)和解码器(decoder)。这两个组件协同工作,并且它们之间有许多相似之处。
- 注意,你看到的图来自原始的"Attention is All You Need"论文。模型的输入在底部,输出在顶部,我们将尽可能保持这种方式。
4. 机器学习模型只是大型的统计计算器,它们处理的是数字,而不是词语。所以,在将文本传入模型进行处理之前,你必须首先对词语进行标记化(tokenization)。
-
- 简单地说,这就是将词语转换为数字,每个数字代表一个词典中所有可能的词语的位置。
- 你可以选择多种标记化方法。例如,使用标记ID来匹配两个完整的词,或者使用标记ID来表示词的部分。这一点在这里很重要,一旦你选择了一个标记器来训练模型,你在生成文本时必须使用相同的标记器。
5. 当你的输入被表示为数字,你可以将其传递给嵌入层(embedding layer)。
-
- 这一层是一个可训练的向量嵌入空间,一个高维空间,其中每个标记都被表示为一个向量,并在该空间内占据一个独特的位置。
- 词汇中的每个标记ID都匹配到一个多维向量,这些向量学会了编码输入序列中的每个标记的含义和上下文。
- 嵌入向量空间在自然语言处理中已经使用了一段时间,像Word2vec这样的早期语言算法就使用了这个概念。
6. 在原始的Transformer论文中,向量的大小实际上是512,这比我们能够在这个图像上容纳的要大得多。
-
- 你现在可以看到你是如何关联那些在嵌入空间中彼此接近的词,以及你是如何计算词之间的距离作为一个角度,这给了模型数学理解语言的能力。
- 当你将标记向量添加到编码器或解码器的基础中时,你还添加了位置编码(positional encoding)。模型并行处理每个输入标记。所以,通过添加位置编码,你保留了关于词序的信息,不会丧失词在句子中位置的相关性。
7. Transformer架构实际上具有多头自我注意力(multi-headed self-attention)。
-
- 这意味着在自我注意力权重或头部中,有多组是独立并行学习的。在注意力层中包含的注意力头的数量因模型而异,但常见的数量在12-100之间。
- 每个自我注意力头将学习语言的不同方面。例如,一个头可能看到我们句子中人的关系,而另一个头可能专注于句子的活动,还有其他的头可能专注于其他属性,比如词是否押韵。
8. 在所有的注意力权重被应用到你的输入数据后,输出会通过一个全连接前馈网络(fully-connected feed-forward network)进行处理。
-
- 这一层的输出是一个与词典中每个标记的概率得分成比例的logits向量。
- 你可以将这些logits传递给最后的softmax层,它们被归一化为每个词的概率得分。
- 这个输出包含了词汇表中每个单词的概率,所以这里可能有数千个得分。
- 有一个单一的标记会有一个比其他所有标记更高的得分,这就是最可能预测的标记。但是,如你将在本课程后期看到的,有许多方法可以用来变化最终的选择从这个概率向量中。
- 这一层的输出是logits向量,与词典中每个标记的概率得分成比例。
- 可以将这些logits传递给最后的softmax层,它们被归一化为每个词的概率得分。
- 输出概率:这个输出包含了词汇表中每个单词的概率,所以这里可能有数千个得分。有一个单一的标记会有一个比其他所有标记更高的得分,这就是最可能预测的标记。有许多方法可以用来变化最终的选择从这个概率向量中。
下一课:
渺小的人类:课程笔记:Generative AI with Large Language Models 具有大型语言模型的生成式人工智能(week 1-part2)