机器学习在监督学习畛域次要解决两个问题,分类和回归问题。那么分类问题又分为二分类问题和多分类问题,而二分类问题相对来说很好解决,咱们只须要构建输入层有一个神经元的神经网络,而后联合 sigmoid 函数,即可实现二分类问题。而神经网络的多分类问题就绝对简单一些,如果咱们要解决三分类的问题,那么咱们构建神经网络的时候,就须要构建一个输入层为三个神经元的神经网络,而后配合应用 softmax 回归来实现神经网络多分类的工作。
Softmax 回归的含意
通常,机器学习实践者用 分类 这个词来形容两个有奥妙差异的问题:
(1)咱们只对样本的硬性类别感兴趣,即属于哪个类别;
(2)咱们心愿失去软性类别,即失去属于每个类别的概率。
这两者的界线往往很含糊,这其中的一个起因是:即便咱们只关怀硬类别,但咱们依然应用软类别的模型。
那么我拿一个图像分类的问题来具体阐明一下。假如每次输出的是一个图像,可能是“猫”,“鸡”和“狗”中的任意一个,那对于它们的标签示意咱们必定不能用{猫, 鸡, 狗}{\text{猫}, \text{鸡},\text{狗}}{猫, 鸡, 狗}。
于是,咱们应用统计学家很早以前就创造的一种示意分类数据的简略办法:独热编码(one-hot encoding)。
独热编码是一个向量,它的重量和类别一样多。类别对应的重量设置为 1,其余所有重量设置为 0。在咱们的例子中,标签 yyy 将是一个三维向量,其中 (1,0,0)(1, 0, 0)(1,0,0) 对应于“猫”、(0,1,0)(0, 1, 0)(0,1,0)对应于“鸡”、(0,0,1)(0, 0, 1)(0,0,1)对应于“狗”:
softmax 回归是一个单层神经网络。因为计算每个输入 o1o_1o1、o2o_2o2和 o3o_3o3取决于所有输出 x1x_1x1、x2x_2x2、x3x_3x3和 x4x_4x4,所以 softmax 回归的输入层也是全连贯层。
Softmax 运算
那么对于多分类问题来说,应用的 softmax 函数即是网络输入层的激活函数,softmax 函数能够对输入值进行归一化操作,把所有输入值都转化为概率,所有概率值加起来等于 1。
为了将未归一化的预测变换为非负并且总和为 1,同时要求模型放弃可导。首先对每个未归一化的预测求幂,这样能够确保输入非负。为了确保最终输入的总和为 1,须要再对每个求幂后的后果除以它们的总和。运算公式如下:
y^=softmax(o)其中 y^j=exp(oj)∑kexp(ok)\hat{\mathbf{y}} = \mathrm{softmax}(\mathbf{o})\quad \text{其中}\quad \hat{y}_j = \frac{\exp(o_j)}{\sum_k \exp(o_k)}y^=softmax(o)其中 y^j=∑kexp(ok)exp(oj)
其中 y^j\hat{y}_jy^j(模型的输入)能够视为属于 类 jjj 的概率。而后咱们能够抉择具备最大输入值的类别 argmaxjyj\operatorname*{argmax}_j y_jargmaxjyj 作为咱们的预测。例如,如果 y^1\hat{y}_1y^1、y^2\hat{y}_2y^2和 y^3\hat{y}_3y^3别离为 0.1、0.8 和 0.1,那么咱们预测的类别是 2,在咱们的例子中代表“鸡”。
咱们能够看出对于所有的 jjj 总有 0≤y^j≤10 \leq \hat{y}_j \leq 10≤y^j≤1,因而,y^\hat{\mathbf{y}}y^能够视为一个正确的概率分布。softmax 运算不会扭转未归一化的预测 o\mathbf{o}o 之间的程序,只会确定调配给每个类别的概率。
因而,在预测过程中,依然用下式来抉择最有可能的类别。