文章目录

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

1. Softmax回归详解

在softmax回归中,我们解决的是多分类问题(相对于logistic回归解决的二分类问题),标记 y y y可以取 k k k个不同的值。对于训练集 { ( x ( 1 ) , y ( 1 ) ) , ⋯   , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)})\} {(x(1),y(1)),⋯,(x(m),y(m))},我们有 y ( j ) ∈ { 1 , 2 , ⋯   , k } y^{(j)}\in \{1,2,\cdots,k\} y(j)∈{1,2,⋯,k}。
对于给定的测试输入 x x x,我们想用假设函数针对每一个类别 j j j估算出概率值 P ( y = j ∣ x ) P(y=j|x) P(y=j∣x)。因此,我们的假设函数要输出一个 k k k维的向量(向量元素的和为1)来表示 k k k个估计的概率值。我们采用如下形式的假设函数 h θ ( x ) h_{\theta}(x) hθ​(x):
h θ ( x ( i ) ) = [ P ( y ( i ) = 1 ∣ x ( i ) ; θ ) P ( y ( i ) = 2 ∣ x ( i ) ; θ ) ⋮ P ( y ( i ) = 10 ∣ x ( i ) ; θ ) ] = 1 ∑ j = 1 k e θ j T x ( i ) [ e θ 1 T x ( i ) e θ 2 T x ( i ) ⋮ e θ k T x ( 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} hθ​(x(i))​=⎣⎢⎢⎢⎡​P(y(i)=1∣x(i);θ)P(y(i)=2∣x(i);θ)⋮P(y(i)=10∣x(i);θ)​⎦⎥⎥⎥⎤​=∑j=1k​eθjT​x(i)1​⎣⎢⎢⎢⎢⎡​eθ1T​x(i)eθ2T​x(i)⋮eθkT​x(i)​⎦⎥⎥⎥⎥⎤​​(1-1)
假设输入向量 x x x的维数为 n n n,则参数 θ \theta θ是一个 k × ( n + 1 ) k\times (n+1) k×(n+1)的参数矩阵,之所以是 n + 1 n+1 n+1是因为把截距项 b b b表示成了 θ 0 × x 0 \theta_0\times x_0 θ0​×x0​,其中 x 0 = 1 x_0=1 x0​=1是一个人工辅助变量。
利用极大似然估计的方法,可以得到每一类的后验概率表达式:
P ( y ( i ) ∣ x ( i ) ; θ ) = ∏ j = 1 k { e θ j T x ( i ) ∑ l = 1 k e θ l T x ( i ) } 1 ( y ( i ) = j ) (1-2) 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} P(y(i)∣x(i);θ)=j=1∏k​{∑l=1k​eθlT​x(i)eθjT​x(i)​}1(y(i)=j)(1-2)
似然函数为:
L ( θ ) = P ( Y ∣ X ; θ ) = ∏ i = 1 m P ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ∏ j = 1 k { e θ j T x ( i ) ∑ l = 1 k e θ l T x ( 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(θ)​=P(Y∣X;θ)=i=1∏m​P(y(i)∣x(i);θ)=i=1∏m​j=1∏k​{∑l=1k​eθlT​x(i)eθjT​x(i)​}1(y(i)=j)​(1-3)
对数似然函数为:
l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m ∑ j = 1 k 1 ( y ( i ) = j ) log ⁡ e θ j T x ( i ) ∑ l = 1 k e θ l T x ( 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} l(θ)​=logL(θ)=i=1∑m​j=1∑k​1(y(i)=j)log∑l=1k​eθlT​x(i)eθjT​x(i)​​(1-4)
上面的 ( 1 − 4 ) (1-4) (1−4)就是loss function。
cost function为:
J ( θ ) = − 1 m [ ∑ i = 1 m ∑ j = 1 k 1 ( y ( i ) = j ) log ⁡ e θ j T x ( i ) ∑ l = 1 k e θ l T x ( 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} J(θ)=−m1​[i=1∑m​j=1∑k​1(y(i)=j)log∑l=1k​eθlT​x(i)eθjT​x(i)​](1-5)
多分类问题的目标就是利用训练数据来训练模型参数 θ \theta θ使其能够最小化 ( 1 − 5 ) (1-5) (1−5)。 ( 1 − 5 ) (1-5) (1−5)是一个凸函数,可以利用梯度下降法得到全局最小值。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐