pytorch中的损失函数

损失函数是用来计算预测结果与期望结果之间的误差。pytorch作为一个成熟的人工智能框架,提供了很多损失函数供我们使用。

CrossEntropy

这个损失函数是在分类问题上经常用到的。它可以直接被用来比较[[a0,a1,a2],[b0,b1,b2]]和[pa, pb]之间的误差。这两个数组什么意义呢?a0,a1,a2的数字分别代表第0轴上的第0号元素在第1轴上3个分类的权重数值。而pa的取值可能是0,1和2。举一个实际例子说明,在对图像识别分类的问题上,我们给图像的种类用数字来分类。例如,这种图如果是狗,则其编号为0;是猫,则编号为1;是牛则编号为2。那么我们给出一个原始图像数据,然后通过一系列神经网络层后,这幅图片对应的数据变成了[a0,a1,a2],其中a0表示这种图片是狗的可能数值代表为a0, 是猫的可能数值代表为a1, 是牛的可能数值代表为a2。如果我们知道这个图片的实际上是一只猫,那就是说,这个图片的实际对应编号为1。那么我们的CrossEntropy就可以计算[a0,a1,a2]和1之间的差异。

从抽象的宏观角度来看,损失函数本质上给人们提供了一种对比不同意义的数据之间的差异。我们从来都是知道矢量和标量的对比是没有意义的,但是,损失函数就是对这个概率的挑战。

在数学公式上看,这个函数实际上是对比预测数组1中,在期望序号的那个数据与0之间的差异。即如果假设预测数组为[a0,a1,a2],而期望序号为i, 那么这个损失函数计算的值为 0 - log(e^ai/ (e^a0 + e^a1 + e^a2))的大小。如果有很多组数据的话,例如[[a0, a1, a2], [b0, b1, b2]]。那么要衡量多组数据的整体误差,则可以是计算各组误差的平均值,或者计算这些误差的和。

发表评论

邮箱地址不会被公开。 必填项已用*标注