本系列生成式人工智能导论博文基于台湾大学李宏毅老师发布的课程视频整理而来, 仅用作复习参考.
可以算是人工智能领域的入门课程.
需要明确的是, 李宏毅老师上传的课程已经是2024年的课程, 距今有两年的时间, 知识难免有过时的可能, 如果出现了这种情况, 博主会尽可能补足当前的状态.
生成式人工智能导论 Chap.3 语言模型的训练过程
在正式了解模型的训练过程前, 我们得回顾一下几个知识点:
- 语言模型一直在做文字接龙的工作
- 语言模型本质上是个包含数十亿参数的函数, 通过训练资料将函数的参数确定下来的过程, 就是模型训练(Training / Learning)
- 参数确定下来后, 进行文字接龙的测试工作, 叫做测试 / 推论(Testing / Inference)
3.1 寻找参数的挑战
3.1.1 最佳化与超参数
我们说机器学习一直在尝试找到确定的参数, 但是很显然, 参数的取值可能性太多了. 如何取到一组参数值, 使得这个模型运行起来效果最佳, 是一个很难解决的问题.
这个玩意在机器学习中有一个专有名词: 最佳化(Optimization) .
由于生成式人工智能导论这门课只是人工智能的第一堂课, 因此在这里, 不会对最佳化进行详细的讲解.
我们可以简单将其理解为, 通过设定机器学习过程中的某些变量(这些变量也有专有名词: 超参数, Hyperparameter / 初始参数, Initial Parameters), 从而确定不同的参数.
超参数 : 训练开始前由人为设定的外部配置(例如学习率、神经网络的层数)。它们用来控制训练过程的运作方式,不会在训练过程中被算法自动更新。
初始参数 : 模型内部参数在训练开始前的起始数值。模型会从这些值开始,通过训练数据不断被修改和优化。
3.1.2 确定参数过程中的意外情况
我们需要明确的几点是:
- 训练是可能失败(模型输出的结果不符合训练资料)的
- 训练失败, 只能换一组超参数, 再试一次
- 但是在诸多研究中, 超参数的变更方式, 有迹可循
历经千辛万苦, 训练成功了, 恭喜你, 还有第二关要过, 也就是测试.
而关于测试, 我们也会碰到非常遗憾的事情:
- 训练成功(模型针对训练资料的输出结果符合预期), 但测试失败(模型针对测试资料的输出结果不符合预期), 这种情况也有专有名词: Overfitting
3.1.3 怎么让机器寻找到更加合适的参数
出现训练失败, 或者overfitting的情况时, 该怎么办?
- 增加更多的训练限制, 换一种说法, 就是多样化我们的训练资料.
- 合理设定超参数与初始参数.
这个初始参数该怎么找是个问题.
最常规的做法是随机选择, 也叫 Train from scratch .
但很明显, 随机的效率, 不够高, 远远不够高. 我们更希望能够找到某一个尽可能合理的值, 将其作为初始参数进行模型训练. 换句话说, 给模型训练一个比较正确的 先验知识 .
3.2 第一阶段: 自我学习
3.2.1 学会文字接龙的文本量
目前来说, 模型需要学的内容包含两个大方面:
- 语言知识: 更类似于文法, 语法类的规则类内容
- 世界知识: 更类似于需要了解的知识性内容
从文献来看, 语言知识真的比较好学:
从典型值来看, 也许基于模型一亿个词汇, 就能够让它学会比较通用的语言知识. (深蓝色的线条)
与之相对的, 就算我们给予模型超越30亿的文本量, 也许我们也无法让模型学会足够的世界知识.(浅蓝色线条)
3.2.2 自督导式学习
尽管30亿的文本量看起来着实很多, 但好处在于, 这种需要作为学习资料的文本在当今的网络上简直是要多少有多少. 任何一段正常的文本, 都可以直接拿来当作训练资料.
这一过程中, 人工几乎并不介入训练本身, 而是让模型自行从大量的, 质量参差不齐的资料中自我学习. 这一阶段因此得到了一个专业名词: 自督导式学习(Self-supervised Learning) .
当然, 在如今的互联网上, 资料太少往往不是个问题, 因此目前几乎全部模型的训练过程, 都会进行一定程度上的 资料清理 , 这往往包括:
- 去除有害内容(黄色内容 / 暴力内容等等)
- 去除HTML Tag
- 去除”低品质”资料(通过预先训练好的资料分类器等等, 这往往也是一个模型)
- 去除重复资料
通过如上的资料清理, 能够在模型训练的第一步就打下一个良好的基础.
3.2.3 更大? 更好? 更强?
到此, 我们大概会进入一个常见的误区. 是不是模型参数越多, 训练资料数据量越大, 训练出的模型就越强?
前人与我们陷入了同样的误区, 并投入了实践.
OpenAI自2018年进行模型研发以来, 其实已经进行了相应的尝试, 它们的数据量如下:
- GPT-1: 117 Million Parameter, Read about 1GB Text
- GPT-2: 1542 Million Parameter, Read about 50GB Text
- GPT-3: 175 Billion Parameter, Read about 580GB Text
但很遗憾, 直到GPT-3, 模型仍然表现的十分 “不受控” . 它往往不会老老实实的回答你的问题, 有时甚至会产生意想不到的输出格式.
如果读者还觉得不够, 同阶段, Google训练出了一个模型叫PaLM, 足足达到了 504 Billion Parameter 的参数大小, 但结果仍然如此.
因此, 事实证明, 只有这种简单的自督导式学习还不够, 语言模型的训练还需要更进一步的指导.
