深度学习常见问题每日学习

深度学习常见问题每日学习

码农世界 2024-05-23 前端 64 次浏览 0个评论

1.Dataset 和 Dataloader 的区别。

都是来自工具pytorch。

Dataset :dataset 来自torch.utils.data.Dataset,是代表数据的基类,我们自定义的数据类可以通过继承和重写这个抽象类的__getitem__和__len__函数实现。

__getitem__:通过index访问数据,能够同时返回数据和类别对应的标签,这里数据和标签为tensor类型。

_len__:获取数据的个数。

Dataloader:dataloader是处理模式输入数据的一个工具类。组合了数据集加采样器,并在数据集上提供单线程和多线程的可迭代对象。

epoch:      所有的训练样本输入到模型中称为一个epoch;

iteration:  一批样本输入到模型中,成为一个Iteration;

batchszie:批大小,决定一个epoch有多少个Iteration;

迭代次数(iteration)=样本总数/批尺寸(batchszie)

函数原型:

torch.utils.data.DataLoader(dataset, batch_size=1, 

    shuffle=False, sampler=None, 

    batch_sampler=None, num_workers=0, 

    collate_fn=None, pin_memory=False, 

    drop_last=False, timeout=0, 

    worker_init_fn=None, multiprocessing_context=None)

2.深度学习中常见的损失函数有那些?

[1]针对分类任务

--多分类任务的交叉熵损失函数:

--二分类任务的交叉熵损失函数:

--focal loss 解决难易样本数量不均衡问题和正负样本数量不均衡问题。

focal loss 存在的问题就是:

1.参数的选择对收敛有影响。

2.关注困难样本会导致过分关注噪声点、离群点,反而不易收敛。

[2]针对回归任务

--MAE损失(Mean Absolute Loss)也被称为L1loss,是以绝对误差作为度量。

--MSE损失(Mean Square Loss)也被称为L2Loss,是以误差的平方和作为度量。

异常值

MSE对异常值敏感,因为它的惩罚是平方的,所以异常值的loss会非常大。

MAE对异常之不敏感,

不妨设拟合函数为常数,那么MSE就相当于所有数据的均值(列出loss对c求导即可),而MAE相当于所有数据的中位数,所以会对异常值不敏感。

优化效率

MAE不可导而且所有的导数的绝对值都相同,优化时无法确定更新速度,

MSE可导,有closed-form解,只需要令偏导数为0即可。

如何选择

如果想要检测异常值则使用MSE,如果想学习一个预测模型则建议使用MAE,或者先进行异常值处理再使用MSE

--smooth L1 loss 

其中:𝑥=f(x)−y 为真实值和预测值的差值

--Huber Loss 也可以称为:Smooth Mean Absolute Error

为什么要使用 Huber Loss

使用MAE训练神经网络的一个大问题是它的持续大梯度,这可能会导致在使用梯度下降训练结束时丢失最小值。对于MSE,当损失接近其最小值时,梯度减小,使其更加精确。

在这种情况下,Huber损失是非常有用的,因为它在减小梯度的最小值附近弯曲。它比MSE对离群值更稳健。因此,它结合了MSE和MAE的优良性能。然而,Huber损失的问题是我们可能需要训练超参数delta,这是一个迭代过程。

--Log-Cosh Loss

Log-Cosh是一个回归损失函数,它比L2更平滑的损失函数。Log-cosh是预测误差使用的数学函数是双曲余弦的对数。公式如下:

优点: 1. 该损失函数 数学意义近似 (x^2)/2;其中,对于非常大的x 数学意义近似于 ;这里的数学意义表明:该函数的工作方式与均方差公式有点类似,该损失函数,具有Huber损失函数的所有优点,并且处处可微。

[3] 针对同类样本和不同样本之间差异的loss triplet loss

triplet loss的计算是基于一个三元组计算同类样本和不同类样本之间的距离差,其中a表示选定的锚点,p表示与a同类别的样本,n表示与a不同类别的样本。

的作用:

转载请注明来自码农世界,本文标题:《深度学习常见问题每日学习》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,64人围观)参与讨论

还没有评论,来说两句吧...

Top