本小节主要围绕解决分类问题中的提出问题,定义神经网络结构,前向计算,反向传播展开介绍。
我们有如表 2.4.1 所示的1000个样本和标签。
表 2.4.1 多分类问题数据样本
样本 | |||
---|---|---|---|
1 | 0.22825111 | -0.34587097 | 2 |
2 | 0.20982606 | 0.43388447 | 3 |
... | ... | ... | ... |
1000 | 0.38230143 | -0.16455377 | 2 |
还好这个数据只有两个特征,所以我们可以用可视化的方法展示,如图 2.4.1。
图 2.4.1 可视化样本数据
一共有3个类别:
- 蓝色方点
- 红色叉点
- 绿色圆点
样本组成了一个貌似铜钱的形状,我们就把这个问题叫做“铜钱孔形分类”问题吧。
三种颜色的点有规律地占据了一个单位平面内$(-0.5,0.5)$的不同区域,从图中可以明显看出,这不是线性可分问题,而单层神经网络只能做线性分类,如果想做非线性分类,需要至少两层神经网络来完成。
红绿两色是圆形边界分割,红蓝两色是个矩形边界,都是有规律的。但是,学习神经网络,要忘记“规律”这个词,对于神经网络来说,数学上的“有规律”或者“无规律”是没有意义的,对于它来说一概都是无规律,训练难度是一模一样的。
另外,边界也是无意义的,要用概率来理解:没有一条非0即1的分界线来告诉我们哪些点应该属于哪个区域,我们可以得到的是处于某个位置的点属于三个类别的概率有多大,然后我们从中取概率最大的那个类别作为最终判断结果。
先设计出能完成非线性多分类的网络结构,如图11-2所示。
图 2.4.2 非线性多分类的神经网络结构图
-
输入层两个特征值$x_1, x_2$ $$ x= \begin{pmatrix} x_1 & x_2 \end{pmatrix} $$
-
隐层$2\times 3$的权重矩阵$W1$ $$ W1= \begin{pmatrix} w1_{11} & w1_{12} & w1_{13} \ w1_{21} & w1_{22} & w1_{23} \end{pmatrix} $$
-
隐层$1\times 3$的偏移矩阵$B1$
-
隐层由3个神经元构成
-
输出层$3\times 3$的权重矩阵$W2$ $$ W2=\begin{pmatrix} w2_{11} & w2_{12} & w2_{13} \ w2_{21} & w2_{22} & w2_{23} \ w2_{31} & w2_{32} & w2_{33} \end{pmatrix} $$
-
输出层$1\times 1$的偏移矩阵$B2$
- 输出层有3个神经元使用Softmax函数进行分类
根据网络结构,可以绘制前向计算图,如图 2.4.3 所示。
图 2.4.3 前向计算图
- 线性计算
- 激活函数
- 线性计算
- 分类函数
使用多分类交叉熵损失函数: $$ loss = -(y_1 \ln a2_1 + y_2 \ln a2_2 + y_3 \ln a2_3) \ J(w,b) = -\frac{1}{m} \sum^m_{i=1} \sum^n_{j=1} y_{ij} \ln (a2_{ij}) $$
根据前向计算图,可以绘制出反向传播的路径如图 2.4.4。
图 2.4.4 反向传播图
Softmax与多分类交叉熵配合时的反向传播推导过程,最后是一个很简单的减法:
从Z2开始再向前推:
训练过程如图 2.4.5 所示。
图 2.4.5 训练过程中的损失函数值和准确率值的变化
迭代了5000次,没有到达损失函数小于0.1的条件。
分类结果如图 2.4.6 所示。
图 2.4.6 分类效果图
因为没达到精度要求,所以分类效果一般。从分类结果图上看,外圈圆形差不多拟合住了,但是内圈的方形还差很多,最后的测试分类准确率为0.952。如果在第一层增加神经元的数量(目前是 3,可以尝试 8),是可以得到比较满意的结果的。
本小节主要介绍了解决分类问题中的提出问题,定义神经网络结构,前向计算,反向传播。
请读者通过PyTorch实现一个模型解决一个简单的分类问题。
-
《智能之门》,胡晓武等著,高等教育出版社
-
Duchi, J., Hazan, E., & Singer, Y. (2011). Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12(Jul), 2121-2159.
-
Zeiler, M. D. (2012). ADADELTA: an adaptive learning rate method. arXiv preprint arXiv:1212.5701.
-
Tieleman, T., & Hinton, G. (2012). Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural networks for machine learning, 4(2), 26-31.
-
Kingma, D. P., & Ba, J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.
-
周志华老师的西瓜书《机器学习》
-
Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of Artificial Intelligence Research, 2002, 16(1):321-357.
-
Inoue H. Data Augmentation by Pairing Samples for Images Classification[J]. 2018.
-
Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.
-
《深度学习》- 伊恩·古德费洛
-
Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Link: https://arxiv.org/pdf/1506.01497v3.pdf