Fork me on GitHub

神经网络之将二分类问题推广到多分类问题


@[toc]

将神经网络应用到多类分类问题中时,输出层的形式不能用logistic函数(sigmoid激活函数),而应该推广到softmax函数。二分类问题与多分类问题的神经网络模型的最大区别就是输出层。因此下面重点讲解softmax函数的原理。

1. Softmax回归详解

在softmax回归中,我们解决的是多分类问题(相对于logistic回归解决的二分类问题),标记$y$可以取$k$个不同的值。对于训练集$\{(x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)})\}$,我们有$y^{(j)}\in \{1,2,\cdots,k\}$。
对于给定的测试输入$x$,我们想用假设函数针对每一个类别$j$估算出概率值$P(y=j|x)$。因此,我们的假设函数要输出一个$k$维的向量(向量元素的和为1)来表示$k$个估计的概率值。我们采用如下形式的假设函数$h_{\theta}(x)$:

假设输入向量$x$的维数为$n$,则参数$\theta$是一个$k\times (n+1)$的参数矩阵,之所以是$n+1$是因为把截距项$b$表示成了$\theta_0\times x_0$,其中$x_0=1$是一个人工辅助变量。
利用极大似然估计的方法,可以得到每一类的后验概率表达式:

似然函数为:

对数似然函数为:

上面的$(1-4)$就是loss function。
cost function为:

多分类问题的目标就是利用训练数据来训练模型参数$\theta$使其能够最小化$(1-5)$。$(1-5)$是一个凸函数,可以利用梯度下降法得到全局最小值。