花书+吴恩达深度学习(四)多分类 softmax

目录

0. 前言

1. 二分类 sigmoid

2. 多分类 softmax

3. 多分类 softmax 梯度下降推导


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

花书+吴恩达深度学习(一)前馈神经网络(多层感知机 MLP)

花书+吴恩达深度学习(二)非线性激活函数(ReLU, maxout, sigmoid, tanh)

花书+吴恩达深度学习(三)反向传播算法 Back Propagation

花书+吴恩达深度学习(四)多分类 softmax

0. 前言

在神经网络的输出单元,通常采用与隐藏单元不同的激活函数。

二分类中,通常采用 sigmoid 函数:

\sigma(z)=\frac{1}{1+\exp(-z)}

多分类中,通常采用 softmax 函数:

\textup{softmax}(z)_i=\frac{\exp(z_i)}{\sum_{j=1}^n\exp(z_j)}

1. 二分类 sigmoid

在二分类中,最后一层网络仅有一个单元:

\begin{align*} & Z^{[L]}=W^{[L]}A^{[L-1]}+B^{[L]} \\ & A^{[L]}=\sigma(Z^{[L]}) \end{align*}

因为 sigmoid 的值域为 (0,1) ,所以最后一个单元表示输出正类(反类)的概率。

在使用梯度下降时:

\frac{\mathrm{d} \mathfrak{L}}{\mathrm{d} z}=a-y

详细的推导可以移步我的博客。

2. 多分类 softmax

在多分类中,最后一层网络有 C 个单元( C 表示类别数量):

\begin{align*} & Z^{[L]}=W^{[L]}A^{[L-1]}+B^{[L]} \\ & A^{[L]}_i=\frac{\exp(Z^{[L]}_i)}{\sum_{j=1}^C\exp(Z^{[L]}_j)} \end{align*}

A_i 为最后一层网络第 i 个单元的输出,这使得最后一层网络总和为 1 。

数值最大的单元,为最终类别,我们将类别向量化:

\begin{bmatrix} 1\\ 0\\ ...\\ 0 \end{bmatrix} \begin{bmatrix} 0\\ 1\\ ...\\ 0 \end{bmatrix} ... \begin{bmatrix} 0\\ 0\\ ...\\ 1 \end{bmatrix}

3. 多分类 softmax 梯度下降推导

在使用梯度下降时,与 sigmoid 相同,可以看作是 sigmoid 的多分类版本:

\frac{\partial \mathfrak{L}}{\partial z}=a-y

使用对数最大似然定义代价函数:

\mathfrak{L}(\hat{y},y)=-\sum_{j=1}^Cy_j\log \hat{y_j}=-\sum_{j=1}^Cy_j\log a_j

根据链式求导法则,梯度下降表示为:

\frac{\partial \mathfrak{L}}{\partial z}=\frac{\partial \mathfrak{L}}{\partial a}\cdot \frac{\partial a}{\partial z}

第一项的求导:

花书+吴恩达深度学习(四)多分类 softmax_第1张图片

\frac{\partial \mathfrak{L}}{\partial a}=-\frac{y}{a}

第一项的导数是一个 1\times C 的向量:

\begin{bmatrix} -\frac{y_1}{a_1} &... & -\frac{y_C}{a_C} \end{bmatrix}

第二项的求导:

花书+吴恩达深度学习(四)多分类 softmax_第2张图片

花书+吴恩达深度学习(四)多分类 softmax_第3张图片

(\frac{\partial a}{\partial z})_{i,j}=\frac{\partial a_i}{\partial z_j}

第二项的导数是一个 C\times C 的 Jacobian 矩阵:

\begin{bmatrix} a_1(1-a_1) & -a_1a_2 &... \\ -a_1a_2 &... &... \\ ... & ... & a_C(1-a_C) \end{bmatrix}

综上所述:

花书+吴恩达深度学习(四)多分类 softmax_第4张图片


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~

 

 

 

你可能感兴趣的:(深度学习)