gpt4 book ai didi

math - 卷积神经网络的成本函数没有达到预期目的

转载 作者:行者123 更新时间:2023-11-30 09:54:06 27 4
gpt4 key购买 nike

所以我建立了一个 CNN,现在我正在尝试让我的网络训练有效地工作,尽管我缺乏有关该主题的正规教育。我决定使用随机梯度下降和标准均方误差成本函数。正如标题所述,问题似乎出在成本函数上。当我使用几个训练示例时,我计算每个示例的均方误差,并获取平均值,并将其用作完整误差。有两个输出神经元,一个用于面部,一个用于非面部;哪个级别更高就是产生的级别。本质上,如果训练示例产生错误的分类,我会计算错误(所需值是产生的类的值)。

示例:

输入人脸图像--->>>面:500不脸:1000

因此,在这种情况下,网络会说该图像不是一张脸,而事实上它是一张脸。错误结果是:500 - 1000 = -500-500^2 = 250000 <<--错误(如果我做错了什么请纠正我)

正如您所看到的,所需的值被设置为所选的不正确类的值。

现在一切都很好(据我所知),但这是我的问题:

当我在网络上多次执行 b-prop 时,整个训练集的平均成本降至 0,但这只是因为网络中的所有权重都变为 0,因此所有类别始终变为 0。

训练后:

输入不是脸->脸:0没有脸:0

--注意如果类相同,则选择第一个

(0-0)^0 = 0 <<--错误

所以误差被最小化到 0(我猜这很好),但显然不是我们想要的方式。

所以我的问题是这样的:当类错误时,如何最小化类之间的空间,同时又让它超越不正确的类,以便生成正确的类。

//例子有这个:(用于面部输入)脸:100不脸:200

得到这个:脸:0注释:0

想要这个:(或类似的东西)面:300不脸:100

我希望这个问题不是太模糊......但任何帮助将不胜感激!!!

最佳答案

您计算误差的方式与标准“均方误差”不符。但是,即使您要修复它,使用专为分类问题设计的不同类型的输出和错误也更有意义。

一种选择是使用带有 sigmoid 的单个输出单元激活函数。该神经元将输出输入图像是人脸的概率。不是人脸的概率由 1 减去该值得出。这种方法适用于二元分类问题。 Softmax输出是另一种选择。您将有两个输出单元:第一个输出输入图像是人脸的概率,第二个输出它不是人脸的概率。这种方法也适用于多类问题,每个类都有一个输出单元。

无论哪种情况,请使用 cross entropy loss (也称为对数损失)。在这里,您有一个目标值(面部或无面部),它是输入图像的真实类别。误差是网络分配给目标的负对数概率。

大多数执行分类的神经网络都以这种方式工作。你可以找到很多很好的教程here ,并阅读this online book .

关于math - 卷积神经网络的成本函数没有达到预期目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com