机器学习之模型训练概念

Learning Rate - 学习率

学习率(Learning Rate,LR)决定了模型参数的更新幅度,学习率越高,模型参数更新越激进,即相同 Loss 对模型参数产生的调整幅度越大,反之越越小。

如果学习率太小,会导致网络 loss 下降非常慢;如果学习率太大,那么参数更新的幅度就非常大,产生振荡,导致网络收敛到局部最优点,或者 loss 不降反增。

Batch Size

Batch size 是一次向模型输入的数据数量,Batch size 越大,模型一次处理的数据量越大,能够更快的运行完一个 Epoch,反之运行完一个 Epoch 越慢。

由于模型一次是根据一个 Batch size 的数据计算 Loss,然后更新模型参数,如果 Batchsize 过小,单个 Batch 可能与整个数据的分布有较大差异,会带来较大的噪声,导致模型难以收敛。

与此同时,Batch size 越大,模型单个 Step 加载的数据量越大,对于 GPU 显存的占用也越大,当 GPU 显存不够充足的情况下,较大的 Batch size 会导致 OOM,因此,需要针对实际的硬件情况,设置合理的 Batch size 取值。

在合理范围内,更大的 Batch size 能够

• 提高内存利用率,提高并行化效率; • 一个 Epoch 所需的迭代次数变少,减少训练时间; • 梯度计算更加稳定,训练曲线更平滑,下降方向更准,能够取得更好的效果;

对于传统模型,在较多场景中,较小的 Batch size 能够取得更好的模型性能;对于大模型,往往更大的 Batch size 能够取得更好的性能。

激活函数

激活函数用途

线性函数是一次函数的别称 ,则非线性函数即函数图像不是一条直线的函数。非线性函数包括指数函数、幂函数、对数函数、多项式函数等等基本初等函数以及他们组成的复合函数。

激活函数是多层神经网络的基础,保证多层网络不退化成线性网络

线性模型的表达能力不够,激活函数使得神经网络可以逼近其他的任何非线性函数,这样可以使得神经网络应用到更多非线性模型中。

常见激活函数

  • sigmoid
  • softmax & tanh
  • ReLU
  • Swish

目前大模型在使用Swish。

损失函数

损失函数(loss function)就是用来度量模型的预测值f(x)与真实值Y的差异程度 (损失值)的运算函数,它是一个非负实值函数

损失函数仅用于模型训练阶段,得到损失值后,通过反向传播来更新参数,从而降低预测值与真实值之间的损失值,从而提升模型性能。

整个模型训练的过程,就是在通过不断更新参数,使得损失函数不断逼近全局最优点(全局最小值)

不同类型的任务会定义不同的损失函数,例如回归任务重的MAE、MSE,分类任务中的交叉熵损失等

损失函数分类

  • MSE & MAE
  • 交叉熵损失 - 经典且常用
    • 二分类
    • 多分类

使用总结 - 交叉熵损失函数与激活函数

对于不同的分类任务,交叉熵损失函数使用不同的激活函数(sigmoid/softmax)获得概率输出:

二分类

使用sigmoid和softmax均可,注意在二分类中,Sigmoid函数,我们可以当作成它是对一个类别的"建模",另一个相对的类别就直接通过1减去得到。而softmax函数,是对两个类别建模,同样的,得到两个类别的概率之和是1。

单标签多分类

交叉熵损失函数使用softmax获取概率输出(互斥输出)。

多标签多分类

交叉熵损失函数使用sigmoid获取概率输出。

相关推荐
九酒3 小时前
AI Agent 开发踩坑记:口播功能非得用 APP 原生实现吗?
前端·人工智能·agent
蝎子莱莱爱打怪3 小时前
DSpark 讲透:DeepSeek 不换模型,硬把 V4 提速 85%,是怎么做到的?
人工智能·面试·程序员
巫山老妖5 小时前
置身AI内
人工智能
IT_陈寒6 小时前
JavaScript项目实战经验分享
前端·人工智能·后端
vanuan7 小时前
两个AI智能体第一次对话-A2A双Agent协作实战
人工智能
kfaino9 小时前
码农的AI翻身(四)你好,我叫 Attention
人工智能·后端
雨落Re11 小时前
如何设计一个高质量Skill
人工智能
Token炼金师12 小时前
大模型权重文件全指南:从格式选择到优化实战
人工智能
阿牛哥_GX12 小时前
CDP 浏览器操控原理:让脚本接管你的浏览器
人工智能
ThreeS12 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路
人工智能·python