nlp基础1-大语言模型的架构及其训练(目标函数和优化算法)

借用hjm大佬的话来说:真正的学习应该是非常“主动”地去进行,看书、论文的时候要对框架和motivation有一个清晰的把握,知道/理解算法这样设计的目的是什么,并要相对频繁地去ask some questions,批判地进行阅读与消化。

19CS小硕校招面试心得与自学CS经验及找工作分享 | Jinming Hu (conanhujinming.github.io)

看完经验贴,最后还是需要自己把路走通,形成自己的经验。

大模型的架构

promptmodelcompletion  or  model(prompt)=completion

输入字符串->词元

大模型=分词+模型架构

分词器:任意字符串→词元序列

'the mouse ate the cheese.' [the,mouse,ate,the,cheese,.]

①编码端(Encoder-Only)架构

②解码器(Decoder-Only)架构

③编码-解码端(Encoder-Decoder)架构

大模型的训练

模型训练=目标函数+优化算法
可用任何模型将token序列映射到上下文嵌入中
一、目标函数
1.Decoder-only模型
①映射到上下文嵌入
②用嵌入矩阵获得每个token得分
③指数化、归一化得预测分布
用负对数最大似然作为目标函数
2.Encoder-only模型
①单向(上下文嵌入)一→双向(上下文嵌入)
②BERT目标函数=掩码语言模型+下一句预测
掩码语言模型:模型分布建模、生成随机噪声掩码、减少分布偏移
下一句预测:目标是第二句是否跟随第一句
③RoBERTa
3.Encoder--decoder模型
①BART变换了掩码文档中30%token,打乱子句
②T5、GPT2、GPT3将分类→自然语言生成
二、优化算法
1.小批量随机梯度下降
关键点:
①参数可快速收敛
②优化数值稳定
③内存高效
优化考虑的角度:
①经典优化:二阶方法和约束优化
②机器学习:随机方法、隐式正则化
③深度学习:初始化、归一化
④大语言模型:直觉
2.Adam(adaptive moment estimation)

①创新:a.动量b.自适应步长
②存储占用:模型参数2→4
3.AdaFactor:减少存储占用的优化算法
特点:
①不存储0(m×n)矩阵,存并重构矩阵(和矩阵)
O(m+n)
②除去动量
③用于训川练T5
④可能使训练变困难
4.混合精度训练:减少存储
主权重存储在(浮点)FP32中,在FP16中执行其他操作,使存储减少一半
5.Learning rate:随时间推移而衰减
Transform用warmup提高LR
原因:防止归一化梯度消失
6.initialization
标准初始化,GPT2、3还缩放权重,T5还给注意力矩阵加了一个常数
我的感想是,首先文章里提到的目标函数和优化算法都是我比较熟悉,也在吴恩达的课程作业里做过的,理解起来确实没什么难度。另一方面这次学到的不一样的应该是内存优化的算法了吧,之前学的时候对算法没有什么了解,也不懂内存优化空间优化,而现在对这件事的概念有了,知道了前人从参数方面优化内存的一些尝试和结果。这些参数的调整一定消耗了不少的训练资源和电量,除了有方向的尝试外,提高训练效率也是一个很重要的方向。

posted @ 2024-01-23 23:19  asandstar  阅读(31)  评论(0编辑  收藏  举报