gpt4 book ai didi

machine-learning - 用于多类分类的 Sigmoid 激活?

转载 作者:行者123 更新时间:2023-11-30 09:47:51 25 4
gpt4 key购买 nike

我正在从头开始实现一个简单的神经网络,仅供练习。我已经让它可以很好地处理二元分类问题的 sigmoid、tanh 和 ReLU 激活。我现在尝试用它来解决多类、互斥的问题。当然,softmax 是最好的选择。

不幸的是,我在理解如何在反向传播中实现 softmax、交叉熵损失及其导数方面遇到了很多困难。即使在这里和交叉验证上问了几个问题后,我也无法得到任何好的指导。

在我尝试进一步实现softmax之前,是否有可能以某种方式使用sigmoid来解决多类问题(我试图预测n个字符中的1个,这些字符被编码为one-hot向量)?如果是这样,哪种损失函数最好?我一直在对所有二元分类使用平方误差。

最佳答案

你的问题是关于神经网络的基础知识,因此我强烈建议你开始 here (迈克尔·尼尔森的书)。这是一本面向Python的书,有图形、文本和公式化的解释——非常适合初学者。我相信您会发现这本书对您的理解很有帮助。请参阅第 2 章和第 3 章来解决您的问题。

解决您关于 Sigmoid 的问题,可以将其用于多类预测,但不推荐。考虑以下事实。

Sigmoid 是 1/(1+exp(-z)) 形式的激活函数,其中 z 是前一个隐藏层(或输入)的标量乘法和一行权重矩阵,以及偏差(提醒:z=w_i .x + b,其中 w_ii-权重矩阵的第 3 行)。此激活独立于矩阵的其他行。

分类任务是关于类别的。在没有任何先验知识的情况下,甚至在大多数情况下,类别也没有顺序值解释;预测 apple 而不是 orange 并不比预测 banana 而不是 nuts 更糟糕。因此,类别的one-hot编码通常比使用单个激活函数预测类别数表现得更好。

回顾一下,我们希望输出层的神经元数量等于类别数量,并且在给定前一层值的情况下,sigmoid 彼此独立。我们还想预测最可能的类别,这意味着我们希望输出层的激活具有概率分布的含义。 但是 Sigmoid 不能保证总和为 1,而 softmax 激活则可以。

由于梯度消失问题,使用L2-loss函数也会出现问题。简而言之,损失的导数是 (sigmoid(z)-y) 。 sigmoid'(z)(误差乘以导数),这使得这个量很小,当 sigmoid 接近饱和时甚至更大。您可以选择交叉熵,或对数损失

编辑:更正了有关对类别进行排序的措辞。需要澄清的是,分类是许多任务的通用术语,这些任务与我们今天用作确定有限值集的分类预测相关。截至目前,在深度模型中使用 softmax 来预测通用“狗/猫/马”分类器中的这些类别、单热编码和交叉熵是一种非常常见的做法。如果上述正确的话,使用它是合理的。然而,有(很多)情况它并不适用。例如,当尝试平衡数据时。对于某些任务,例如在语义分割任务中,类别之间(或其嵌入)可以具有有意义的排序/距离。因此,请明智地为您的应用程序选择工具,了解它们在数学上的作用以及它们的含义。

关于machine-learning - 用于多类分类的 Sigmoid 激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990816/

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