【16-softmax回归】
softmax回归
softmax回归是对逻辑回归的扩展;
image.png
softmax回归是逻辑回归的广义形式,当N=2时,softmax回归就是逻辑回归;
基于sigmoid逻辑回归的损失函数和成本函数做推广,推导出softmax回归的损失函数和成本函数
softmax回归成本函数
对于逻辑回归,输出为0/1,
对于输出为N种类别,这里假设输出为 1- N;所得到的成本函数;
softmax的神经网络
将softmax回归作为激活函数放入神经网络的神经元中。
对于模型而言,只需要将输出层的一个神经元改成n个神经元即可(这里的n指的是输出y的类别数)。然后输出层的每个元的激活函数就是softmax函数;
softmax函数与之前的激活函数相比(sigmoid, ReLU, 线性),有些不同,主要体现在:
a1-a10:输出层的激活值;z1 = w1·a[2] + b1;z1 -z10 :输出层各神经元的线性函数;
1、对于之前的激活函数(sigmoid, ReLU, 线性),a1仅仅是z1的函数,a2仅仅是z2的函数;而在softmax中,a1不仅仅是z1, 还是z2-z10的函数;所有这些激活值中的每一个都依赖于所有的Z值;
(sigmoid, ReLU, 线性)换句话说,要求得激活值,将激活函数逐个元素地应用在z1 z2上,从而得到a1 a2;
softMax的改进
在计算机中由于存储方式的问题会导致在计算过程中存在浮点误差,比如 1 + 1/10000 - (1 - 1/10000) 和 2/10000的计算结果不同;
可以使用tensorFlow中的优化算法来解决这个问题,
model.compile(loss=BinaryCrossEntropy(from_logits=True))
来判断是否需要计算每一项或是重排后再计算;