基于PyTorch的深度学习——机器学习3

激活函数在神经网络中作用有很多,主要作用是给神经网络提供非线性建模能力。如果没有激活函数,那么再多层的神经网络也只能处理线性可分问题。

在搭建神经网络时,如何选择激活函数?如果搭建的神经网络层数不多,选择sigmoid、tanh、relu、softmax都可以;而如果搭建的网络层次较多,那就需要小心,选择不当就可导致梯度消失问题。此时一般不宜选择sigmoid、tanh激活函数,因它们的导数都小于1,尤其是sigmoid的导数在[0,1/4]之间,多层叠加后,根据微积分链式法则,随着层数增多,导数或偏导将指数级变小。所以层数较多的激活函数需要考虑其导数不宜小于1当然也不能大于1,大于1将导致梯度爆炸,导数为1最好,而激活函数relu正好满足这个条件。所以,搭建比较深的神经网络时,一般使用relu激活函数,当然一般神经网络也可使用。


损失函数(Loss Function)在机器学习中非常重要,因为训练模型的过程实际就是优化损失函数的过程。损失函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过拟合时添加的正则化项也是加在损失函数后面。损失函数用来衡量模型的好坏,损失函数越小说明模型和参数越符合训练样本。任何能够衡量模型预测值与真实值之间的差异的函数都可以叫作损失函数。在机器学习中常用的损失函数有两种,即交叉熵(Cross Entropy)和均方误差(Mean squared error,MSE),分别对应机器学习中的分类问题和回归问题

分类问题的损失函数一般采用交叉熵,交叉熵反应的两个概率分布的距离(不是欧氏距离)​。分类问题进一步又可分为多目标分类,如一次要判断100张图是否包含10种动物,或单目标分类。回归问题预测的不是类别,而是一个任意实数。在神经网络中一般只有一个输出节点,该输出值就是预测值。反应的预测值与实际值之间的距离可以用欧氏距离来表示,所以对这类问题通常使用均方差作为损失函数

PyTorch中已集成多种损失函数,这里介绍两个经典的损失函数,其他损失函数基本上是在它们的基础上的变种或延伸。

1.torch.nn.MSELoss

2.torch.nn.CrossEntropyLoss交叉熵损失(Cross-Entropy Loss)又称对数似然损失(Log-likelihood Loss)、对数损失;二分类时还可称之为逻辑回归损失(Logistic Loss)。在PyTroch里,它不是严格意义上的交叉熵损失函数,而是先将Input经过softmax激活函数,将向量"归一化"成概率形式,然后再与target计算严格意义上的交叉熵损失。在多分类任务中,经常采用softmax激活函数+交叉熵损失函数,因为交叉熵描述了两个概率分布的差异,然而神经网络输出的是向量,并不是概率分布的形式。所以需要softmax激活函数将一个向量进行"归一化"成概率分布的形式,再采用交叉熵损失函数计算loss。

相关推荐
传说故事23 分钟前
【论文自动阅读】ActiveVLA: 将主动感知注入VLA模型以实现精准三维机器人操控
人工智能·深度学习·机器人·具身智能·vla
工程师老罗1 小时前
PyTorch transforms的用法
人工智能·pytorch·python
不含硫jun1 小时前
windows中高斯泼建(gaussian-splatting)库安装 兼容vs2022 cuda11.8 UE5.3.2
pytorch·3d·ue5·visual studio
机器视觉的发动机1 小时前
波士顿动力机器人技术全解析从四足Spot到人形Atlas的机器人革命
大数据·人工智能·深度学习·机器人·视觉检测·机器视觉
数字化转型20251 小时前
基于六大产品线+三项核心工作
程序人生·机器学习
汽车仪器仪表相关领域1 小时前
经典指针+瞬态追踪:MTX-A模拟废气温度(EGT)计 改装/赛车/柴油车排气温度监测实战全解
大数据·功能测试·算法·机器学习·可用性测试
HyperAI超神经1 小时前
软银/英伟达/红杉资本/贝佐斯等参投,机器人初创公司Skild AI融资14亿美元,打造通用基础模型
人工智能·深度学习·机器学习·机器人·ai编程
民乐团扒谱机2 小时前
机器学习 第二弹 和AI斗智斗勇 机器学习核心知识点全解析(GBDT/XGBoost/LightGBM/随机森林+调参方法)
算法·决策树·机器学习
小马爱打代码2 小时前
Spring AI 进阶:RAG 技术原理拆解与本地知识库检索落地
人工智能·深度学习·spring
咚咚王者2 小时前
人工智能之核心技术 深度学习 第五章 Transformer模型
人工智能·深度学习·transformer