【总结】
softmax是一个多类的分类问题。
使用softmax操作子得到每个类的预测置信度。
使用交叉熵来衡量预测和标号的区别。
1、回归与分类
回归:预测一个连续值
分类:预测一个离散类别
2、softmax与交叉熵损失
首先对类别进行编码,独热编码,假设有n个类别,那么就是一个长为n的向量。
上图最后一行,就是选最大化置信度的i作为预测的类别(i就是预测的标号,o是置信度)。
o_i其实数值不关心,重要的是使正确类别的置信度大于其他类别的。但是通常更希望输出是一个概率,所以将softmax作用在o上,得到一个y_hat(y^),它是一个长为n的向量,但是他有我们要的属性,每个元素非负,且和为1。
其实真实值y也是一个概率,因为n维中只有1维为1。
上图最后一行,其损失对o_i进行求导,即梯度,结果等于真实概率和预测概率的差别。(求导过程如下图)梯度下降时,就是不断减去他们之间的差别,最后使预测的softmax(o)i与真实的yi更相近。
2、损失函数
单独放了一篇文章,在“李沐-动手学深度学习(1)”
3、图像分类数据集
主要讲了数据读取的实现
chapter_linear-networks/image-classification-dataset.ipynb
4、softmax回归的从零开始实现
chapter_linear-networks/softmax-regression-scratch.ipynb
5、softmax回归的简单实现
chapter_linear-networks/softmax-regression-concise.ipynb
6、问答
(1)softmax有个问题是,用one-hot表示类别标签,其中一个维1,其他为0。但是用了指数,很难去逼近0、1(要求一个接近无穷大,其他都极小)。有一个方案是,正确的类记成0.9,剩下不正确的类记成0.1/(n-1),这是一个常用技巧。
(2)Q:softmax回归和logistric回归分析是一样的吗?
A:logistric是softmax的一个特例(只有两类时)。设想softmax只有两类,(因为softmax输出加起来要为1)只有0和1两类,那么我只需要预测其中一个类的概率,另一个自然是1-那个概率。后续深度学习中很少遇到二分类问题,logistric用的较少。
(3)Q:为什么用交叉熵,不用相对熵、互信息等其他基于信息量的度量。
A:相对熵衡量两个概率间的区别,好处是对称的。以及互信息等,不用主要是不好算。交叉熵好算一些。
网友评论