You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SJ2050cn fc8153f281
Finish derivativing the formulas of softmax method.
4 years ago
..
README.md Finish derivativing the formulas of softmax method. 4 years ago

README.md

第四次作业报告

一、多分类问题方法

通过查阅资料了解到使用逻辑回归处理多分类问题常用的有三种方法第一种是One-Vs-All先把其中一类(A)看成一组剩下的都看成一组这样交给二分类的逻辑回归程序后可以训练出识别A类的特征剩下的几类继续照前面的方法训练第二种是One-Vs-One将多类两两一组组合在每一组中使用二分类程序进行训练训练完在使用时将给定数据分别使用这些二元分类器最后投票票数哪个多就归哪类第三种是Softmax方法它可以让多输出映射到[0, 1]区间内并使它们映射后值的和为1。Softmax方法中对一个测试样本得到的属于各类别的概率和一定为 1而多个二分类器策略中不管是 One-Vs-All、One-Vs-One策略一个样本在多个二分类器上得到的概率和不一定为 1。因此当分类之间是互斥的情况下e.g 数字手写识别、动物识别),通常采用 Softmax方法而目标类别不是互斥时e.g 华语音乐、流行音乐、重金属音乐等)则采用多个二分类器策略进行预测。

本次作业中要求进行手写数字识别适合采用Softmax方法故接下来就对Softmax的原理以及公式进行解释和推导。

二、Softmax方法原理

Softmax函数的公式如下


g(z_i)=\frac{e^{z_{i}}}{\sum\limits_{j=1}^{n} e^{z_{j}}}

其中n表示多个输出或类别数z_j为第j个输出或类别的值,i表示当前需要计算的类别。从上述公式中可以看出Softmax函数的计算结果落在[0,\ 1]且所有类别的Softmax函数值之和等于1。

在输入到输出之间引入一层函数映射,取\mathbf{\Theta}^T\cdot\mathbf{x}=\mathbf{z},其中\mathbf{\Theta}=[\theta_1,\ \theta_2,\ ,...,\ \theta_n]为权重系数,\theta为权重向量,\mathbf{x}为输入向量,\mathbf{z}为输出向量则Softmax函数可以写成


g(z_i)=g(\theta_i^T \mathbf{x})=\frac{e^{\theta_i^T\mathbf{x}}}{\sum\limits_{j=1}^{n} e^{\theta_j^T \mathbf{x}}}=h_{\theta_i}(\mathbf{x})

构造似然函数,若有m个训练样本:


\begin{aligned}
L(\Theta)&=p(\mathbf{y}|\mathbf{X};\Theta) \\
& = \prod\limits_{i=1}^{m} p(y^{i}|\mathbf{x}^{i};\Theta) \\
& = \prod_{i=1}^m h_{\theta_i}(\mathbf{x})
\end{aligned}

对似然函数取对数,转换为:


l(\Theta)=log(L(\Theta))=\sum\limits_{i=1}^m log(h_{\theta_i}(\mathbf{x}))

log(h_{\theta_i}(\mathbf{x}))求导得到:


\frac{\partial{log(h_{\theta_i}(\mathbf{x}))}}{\partial{z_k}}=\begin{cases}
1-h_{\theta_k}(\mathbf{x}) & \text{ if } k=i \\ 
-h_{\theta_k}(\mathbf{x}) & else
\end{cases}

转换后的似然函数对\theta求偏导,在这里我们以只有一个训练样本的情况为例:


\begin{aligned}
\frac{\partial}{\partial\theta_k}l(\Theta)&=\frac{\partial l(\Theta)}{\partial{z_k}}\cdot \frac{\partial z_k}{\partial \theta_k} \\
&=(y_k-h_{\theta_k}(\mathbf{x}))\mathbf{x}
\end{aligned}

上式中y_k的表达式如下:


y_k=\begin{cases}
1 & \text{ if } k=i \\ 
0 & else
\end{cases}

此时,我们就可以写出最大化似然函数的更新方向,\theta_k的迭代表示为:


\theta_k=\theta_k+\eta(\sum\limits_{i=1}^{m}(y_k-h_{\theta_k}(\mathbf{x}^i))\cdot \mathbf{x}^i)

其中\eta为学习率可以看到当输出向量的维度等于2时即二分类时上式与二分类中权重向量的迭代公式相等。