AI 大模型实战高手课
独行
前阿里巴巴高级技术专家,国内某大型互联网公司首席技术官
2718 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 20 讲/共 33 讲
AI 大模型实战高手课
15
15
1.0x
00:00/00:00
登录|注册

18|大模型预训练:Pre-Training如何让模型变聪明?

你好,我是独行。
上节课我向你介绍了模型的内部结构,为了理解模型的内部结构,我们又顺带回顾了一下模型的实现原理,其中我讲过一句话:模型的训练过程就是不断调整权重的过程,准确一点还应该加上偏置,模型的训练过程就是不断调整权重和偏置的过程,调整的过程依赖反向传播、损失函数等等。
前面我们没有详细讲解这方面的细节,这节课我们再通过一个简单的例子,把预训练的过程完整细致地串一遍。我们将使用一个三层神经网络结构的模型来进行数据分类的展示。这个模型接收两个输入变量:学习时间和睡眠时间,并基于这些输入预测一个学生是否能够通过考试。
我们还是按照常规的模型训练步骤来进行,但前面讲过的内容这节课就不细说了。

网络结构设计

模型网络结构的定义,你可以参考手敲 Transformer 那节课的代码。
import torch
from torch import nn
# 定义一个只包含解码器的Transformer模型
class TransformerDecoderModel(nn.Module):
def __init__(self, vocab_size, embed_size, num_heads, hidden_dim, num_layers):
super(TransformerDecoderModel, self).__init__()
self.embed = nn.Embedding(vocab_size, embed_size)
self.positional_encoding = nn.Parameter(torch.randn(embed_size).unsqueeze(0))
decoder_layer = nn.TransformerDecoderLayer(d_model=embed_size, nhead=num_heads, dim_feedforward=hidden_dim)
self.transformer_decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers)
self.fc = nn.Linear(embed_size, vocab_size)
def forward(self, src):
src = self.embed(src) + self.positional_encoding
src_mask = self.generate_square_subsequent_mask(src.size(0))
output = self.transformer_decoder(src, src, src_mask)
output = self.fc(output)
return output
def generate_square_subsequent_mask(self, sz):
mask = (torch.triu(torch.ones(sz, sz)) == 1).transpose(0, 1)
mask = mask.float().masked_fill(mask == 0, float('-inf')).masked_fill(mask == 1, float(0.0))
return mask
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 大模型预训练对模型的智能化提升具有重要作用,通过完整细致的预训练过程,展示了使用三层神经网络结构的模型进行数据分类的效果。 2. 参数的初始化对模型的收敛速度和是否能够收敛到一个好的解具有重要影响,常用的权重和偏置初始化方法包括随机初始化、常数初始化、特定分布初始化和正交初始化。 3. 前向传播是指Embedding后的输入向量一层一层向后传递的过程,每一层都有权重和偏置,其中nn.Linear层的权重和参数的赋值方式是通过矩阵乘法加上偏置项来实现的。 4. 损失函数是神经网络训练过程中非常重要的概念,描述本次前向传播结果和实际值的差异,常用的损失函数包括二元交叉熵损失(Binary Cross-Entropy Loss)。 5. 可以通过自定义函数并使用`.apply()`方法来对模型的所有参数进行自定义初始化,这种方法非常灵活,适用于复杂的模型结构。 6. 模型网络结构的设计包括定义一个只包含解码器的Transformer模型,通过初始化指定num_layers=3来完成。 7. 数据集准备包括准备一些训练数据,可以用CSV格式的文件存储,并将数据集分割为训练集和测试集,常用的比例为80%训练集和20%测试集。 8. 反向传播是神经网络训练过程中的一个重要概念,用来根据损失推算合适的权重和偏置。 9. 更新参数时,可以使用优化器进行权重参数的更新,如使用optim.Adam优化器进行参数更新。 10. 当损失已经非常小,并到达训练目标时,可以停止训练。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 大模型实战高手课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)