如何在神经网络中使用Softmax激活函数

到目前为止的理解 – 激活函数应用于神经元。函数内部处理的是每个(连接神经元值*连接权重)的总和。一个值进入函数,一个值从中返回。上述理解适用于tanhsigmoid
现在我了解了softmax的工作原理,它对值进行求和以及其他相关操作。让我困惑的是,softmax接受一个数字数组,我开始质疑这些形成数组的数字来源是什么?

下图提供了更多关于这个问题的见解

enter image description here


回答:

Softmax作用于整个神经元层,并且需要所有神经元的值来计算每个神经元的输出。

Softmax函数的形式为softmax_i(v) = exp(v_i)/sum_j(exp(v_j)),其中v是你的神经元值(在你的图片中为[0.82, 1.21, 0.74]),expexp(x) = e^x。因此,exp(v_i)将是[2.27, 3.35, 2.096]。将这些值除以整个向量的总和,你会得到[0.29, 0.43, 0.27]。这些是你的神经元的激活输出值。

这很有用,因为这些值加起来等于1(原谅上述示例中由于四舍五入误差总和为0.99…你明白这个意思),因此可以解释为概率,例如,图像属于某一特定类别的概率(当它只能属于一个类别时)。这就是为什么计算需要知道整个神经元向量的值,如果你只知道单个神经元的值,就无法进行计算。

请注意,由于这个原因,你通常不会在softmax之后再添加另一层。通常,softmax作为输出层的激活函数应用,而不是像你展示的那样作为中间层。尽管如此,像你展示的那样构建网络是完全有效的,你将会有另一层权重连接到你的单个输出神经元,并且你将无法保证该输出值可能是什么。更典型的架构可能是2个神经元 -> 3个神经元(sigmoid) -> 4个神经元(softmax),现在你将拥有输入值属于四个类别之一的概率。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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