0 写在前面
本文介绍softmax在神经网络中的含义,及个人的理解,见斜体部分
1 softmax含义
- 将得分结果转换为概率进行分类
- 设计初衷:希望特征对概率的影响是乘性的
得分结果是数值型,不便直接用作分类,而soft之后的概率分布可直观用作分类
image.png -
图上是softmax的具体计算,公式如下所示:
image.png
2 softmax在网络中的定位
输入层经过hidden层之后,得到计算值;
然后softmax计算后,得到概率分布;
接着通过交叉熵cross entropy计算损失函数;
随后利用链式法则,反向传播更新网络权重。
多次迭代得到分类的预测结果。
优点:softmax的求导非常简单,反向更新的梯度就是正确分类yi的softmax值
3 python实现
import numpy as np
def softmax(X):
X = X - np.max(X)
return np.exp(X) / np.sum(np.exp(X))
print(softmax([1,2,-3]))
image.png
这里面为什么要进行 x-np.max呢,因为防止每个数都很大,导致计算出来的结果溢出,计算机是有位数限制的,所以要做一个normalization.
4 为什么用softmax,而不直接用标准化将确定范围的值转换到区间[0,1]当中呢
- 如果计算结果里面有很大的值(正、负都有),通过normalization会有部分数会变得非常小。Softmax相较于normalization能够更好的区分不同类别的计算结果(结果区别比较小)
网友评论