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

697 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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

Softmax回归详解

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

hθ(x(i))=[P(y(i)=1x(i);θ)P(y(i)=2x(i);θ)P(y(i)=10x(i);θ)]=1j=1keθjTx(i)[eθ1Tx(i)eθ2Tx(i)eθkTx(i)](1-1)\begin{aligned} h_{\theta}(x^{(i)})&= \begin{bmatrix} P(y^{(i)}=1|x^{(i)};\theta) \\ P(y^{(i)}=2|x^{(i)};\theta) \\ \vdots \\ P(y^{(i)}=10|x^{(i)};\theta) \end{bmatrix} \\ &=\frac{1}{\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}} \begin{bmatrix} e^{\theta_1^Tx^{(i)}} \\ e^{\theta_2^Tx^{(i)}} \\ \vdots \\ e^{\theta_k^Tx^{(i)}} \end{bmatrix} \\ \tag{1-1} \end{aligned}

假设输入向量xx的维数为nn,则参数θ\theta是一个k×(n+1)k\times (n+1)的参数矩阵,之所以是n+1n+1是因为把截距项bb表示成了θ0×x0\theta_0\times x_0,其中x0=1x_0=1是一个人工辅助变量。 利用极大似然估计的方法,可以得到每一类的后验概率表达式: P(y^{(i)}|x^{(i)};\theta)=\prod_{j=1}^k\left\{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}\right\}^{1(y^{(i)}=j)} \tag{1-2}
似然函数为:

L(θ)=P(YX;θ)=i=1mP(y(i)x(i);θ)=i=1mj=1k{eθjTx(i)l=1keθlTx(i)}1(y(i)=j)(1-3)\begin{aligned} L(\theta) &=P(\boldsymbol{Y}|\boldsymbol{X};\theta) \\ &=\prod_{i=1}^{m}P(y^{(i)}|x^{(i)};\theta) \\ &=\prod_{i=1}^{m}\prod_{j=1}^k\left\{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}\right\}^{1(y^{(i)}=j)}\\ \tag{1-3} \end{aligned}

对数似然函数为:

l(θ)=logL(θ)=i=1mj=1k1(y(i)=j)logeθjTx(i)l=1keθlTx(i)(1-4)\begin{aligned} l(\theta) &=\log L(\theta) \\ &=\sum_{i=1}^{m}\sum_{j=1}^k1(y^{(i)}=j)\log{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}}\\ \tag{1-4} \end{aligned}

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

J(θ)=1m[i=1mj=1k1(y(i)=j)logeθjTx(i)l=1keθlTx(i)](1-5)J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m}\sum_{j=1}^k1(y^{(i)}=j)\log{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}}\right] \tag{1-5}

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