PyTorch深度学习实战(4)——常用激活函数和损失函数详解

本文详细介绍了深度学习中常用的激活函数,如Sigmoid、Tanh、ReLU、线性和Softmax,以及它们的优缺点。此外,还探讨了常见的损失函数,包括均方误差、平均绝对误差和分类交叉熵,以及如何实现自定义损失函数。这些知识点对于理解和优化深度学习模型至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言

激活函数和损失函数是深度学习模型中重要组成部分,激活函数和损失函数的选择很大程度上决定了深度神经网络的性能和精度,需要根据具体问题的特点和数据分布等因素进行选择。在本节中,将介绍深度学习中常见的激活函数和损失函数,并说明不同函数的常见应用场景。

1. 常用激活函数

使用激活函数可以实现网络的高度非线性,这对于建模输入和输出之间的复杂关系非常关键。如果没有非线性激活函数,那么该网络将仅仅能够表达简单的线性映射,即便有再多的隐藏层,其整个网络跟单层神经网络也是等价的,只有加入了非线性激活函数之后,深度神经网络才具备了令人惊异的非线性映射学习能力,可以在网络中的多个层中应用激活函数。

1.1 Sigmoid 激活函数

sigmoid 是使用范围最广的一类激活函数,其取值范围为 [0, 1],它可以将一个实数映射到 [0, 1] 的区间,可以将其用于二分类问题。

Sigmoid 函数公式定义如下所示:

### 导致损失函数 Loss 上万的原因 在深度学习训练过程中,损失函数值达到上万可能由多种原因引起。以下是可能导致该现象的主要因素: #### 1. 数据预处理不充分 如果输入数据未经过标准化或归一化处理,则模型可能会接收到数值范围过大的特征向量。这会使得权重更新不稳定,从而导致梯度爆炸或损失值过高[^1]。 #### 2. 学习率设置不合理 当学习率过大时,优化算法会在参数空间中跳跃前进,无法收敛到最优解附近。这种情况下,每次迭代都会使损失值进一步增大,最终表现为Loss上万的现象[^4]。 #### 3. 初始化方式错误 神经网络中的权重视图初始化非常重要。不良的初始条件会使激活层输出接近饱区域(如ReLU为负数部分),进而阻碍反向传播过程有效调整这些权重。这种情况被称为“死区”或者“消失/爆炸梯度”,它同样可以造成巨大的误差累积[^5]。 #### 解决方法 针对上述提到的各种可能性,我们可以采取以下措施来降低Loss并改善模型性能: - **适当调节超参**: 调整合适大小的学习速率以及正则项系数λ, 防止因为步子迈得太大而错过全局最小点; 同时加入动量机制帮助平滑路径减少震荡. - **改进数据质量控制流程**: 对原始样本执行必要的清理工作比如去除异常值、填补缺失值得操作之后再做缩放转换成适合喂给DNN的形式. - **选用更稳健的Optimizer**: Adam optimizer因其自适应特性成为目前最常用的选择之一, 它能够自动校准每一轮次内的step size变化趋势, 达到更快更好效果的同时还具备较强的鲁棒性面对各种复杂场景挑战. 另外值得注意的是,在某些特定应用场景下(例如图像分类), 如果类别间存在严重不平衡状况也可能间接影响到最后得到的整体objective value表现不佳的情况发生。因此建议结合具体业务需求综合考量各项因子相互作用关系来进行针对性调优尝试直至满足预期目标为止。 ```python import torch.optim as optim # Example of setting up an Adam Optimizer with a smaller learning rate optimizer = optim.Adam(model.parameters(), lr=0.001) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼小辉丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值