深度学习——Softmax与分类模型

理解
我们常见的逻辑回归、SVM等机器学习算法常用于解决二分类问题,对于多分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这里讨论另外一种方式来解决多分类——Softmax。
在机器学习中,我们学习了Logistic回归模型的基础概念。Softmax回归模型是Logistic回归模型在多分类问题上的推广,当分类数为2的时候会退化为Logistic分类。Logistic回归和Softmax回归都是有监督学习的。
在Logistic回归中,训练集由m个已标记的样本构成:
在这里插入图片描述
由于Logistic回归是针对二分类问题的,因此类标记:
在这里插入图片描述
假设函数采用Sigmoid曲线如下:
在这里插入图片描述
训练模型参数,使其能够最小化代价函数:
在这里插入图片描述
对于给定的测试输入 x ,用假设函数针对每一个类别 y 估算出概率值 p{ y = j | x } ,即估计 x 的每一种分类结果出现的概率。假设函数将要输出 一个 k 维的向量来表示这 k 个估计的概率值。假设函数 h_theta(x) 形式如下:
在这里插入图片描述
在这里插入图片描述
Softmax代价函数与Logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的 k 个可能值进行了累加。注意在Softmax回归中将 x 分类为类别 j 的概率为:
在这里插入图片描述
一般使用梯度下降优化算法来最小化代价函数,而其中会涉及到偏导数,即对代价函数求偏导,得到代价函数对参数权重的梯度就可以优化了。

例子
从下图看,神经网络中包含了输入层,然后通过两个特征层处理,最后通过Softmax分析器就能得到不同条件下的概率,这里需要分成三个类别,最终会得到y=0、y=1、y=2的概率值。
在这里插入图片描述
继续看下面的图,三个输入通过Softmax后得到一个数组[0.05 , 0.10 , 0.85],这就是soft的功能。
在这里插入图片描述
可以看到它有多个值,所有值加起来刚好等于1,每个输出都映射到了0到1区间,可以看成是概率问题。
为多个输入,训练其实就是为了逼近最佳的。

问题和解答
在学习过程中,出现的一些问题也得到了大佬们的讲解。

1、如果说Softmax的目的只是得到不同类别概率一个和为1的计算方法,那这种计算方法不是很多吗?为什么一定要用exp呢?
Softmax公式的得出方法大概解释可以解释为:
首先假设样本与理论标准函数的误差(类似于线性回归那一章中生成数据时叠加上的高斯误差)服从正态分布(高斯分布),并且不同样本之间独立同分布,通过贝叶斯公式计算各个分类的概率,将高斯分布的公式带入公式之后化简得到。在一些地方Softmax函数又被称为归一化指数(normalized exponential)。

2、Softmax函数的常数不变性,即softmax(x)=softmax(x+c)。算softmax概率的时候,为了保证数值稳定性(numerical stability),我们可以选择给输入项减去一个常数,比如x的每个元素都要减去一个x中的最大元素。当输入项很大的时候,如果不减这样一个常数,取指数之后结果会变得非常大,发生溢出的现象,导致结果出现inf。

3、broadcasting,广播,传递,赋值,拷贝。
执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise(按位加,按位减) 的运算,而不是矩阵乘法的运算,矩阵乘法运算时需要维度之间严格匹配。(且矩阵乘法,np.dot(A, B) 如果维度不匹配,提示的错误不会是 broadcast,而是 aligned)。
broadcasting机制的功能是为了方便不同shape的array(numpy库的核心数据结构)进行数学运算。

>>> a = np.array([1., 2., 3.])
>>> b = np.array([2., 2., 2.])
>>> print(a * b)
array([2., 4., 6.])

以上做法也可以看作是:

>>> a = np.array([1., 2., 3.])
>>> b = 2.
>>> print(a * b)
array([2., 4., 6.])

当操作两个array时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两arrays才算兼容:相等;其中一个为1,(进而可进行拷贝拓展已至,shape匹配)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值