softmax激活函数: , (x属于分类 j的概率)
用在多分类问题,输出的结果为和为 1的多个概率值
(该图为2分类, 代码是3分类, 原理都一样)
x: 输入数据, w: 权重值, a: 激活函数的缩写,即softmax激活函数
一:定义输入数据,这里使用了python语言和numpy包
这里用最简单的线性模型:
二:随机生成五行三列的权重值
三:定义 softmax函数并调用算出 3个概率值:
得出三个概率值,概率之和为 1.
四:查看分类结果:
索引为2,因为是从0开始的,所以类别 3.
交叉熵 cross entropy: 这个就是 softmax对应的损失函数 loss function
这里 y是真实值比如 [1, 0, 0], 属于类别1,ai就是我们通过 softmax算出的概率值了
因为 y2, y3 都等于 0,所以结果就是 -ln(a1). 交叉熵越小越好
反向传播:
简单说下,假设我们求 w1的梯度,即 i=1,j又是什么呢,因为 softmax激活函数中,w1既可以出现在分子,也可以出现在分母,所以要分两种情况讨论,得出两种结果并不复杂,之后再用梯度下降更新即可,推导过程网上有很多,有兴趣可以自己上网找.