- 参考:动手学深度学习:
- 注:本文是 jupyter notebook 当文档转换时,可能无法直接复制部分代码!
- 前文介绍的 经典机器学习方法(1)—— 线性回归 本文介绍了适用于离散值预测(分类问题)的连续值预测(回归问题) softmax 基于神经网络的经典回归模型
- softmax 回归和线性回归,区别在于
- softmax 回归输出从一个变为多个
- softmax 引入回归 softmax 运算使其更适合预测和训练离散值
文章目录
- 1. softmax 回归原理
-
- 1.1 分类问题
- 1.2 softmax 回归模型
-
- 1.2.1 单样本分类的矢量计算表达式
- 1.2.2 mini-batch 样本分类的矢量计算表达式
- 1.3 交叉熵损失函数
- 1.4 模型预测与评价
- 2. 实现 softmax 回归
-
- 2.1 数据准备
- 2.2 模型设计
- 2.3 模型评价
- 2.4 模型训练
-
- 2.4.1 优化算法
- 2.4.2 训练流程
- 2.5 使用模型进行预测
- 2.6 完整代码
- 3. 利用 Pytorch 简洁地实现 softmax 回归
-
- 3.1 模型设计
-
- 3.1.2 模型定义
- 3.1.2 模型初始化
- 3.1.3 softmax 以及交叉熵损失函数
- 3.2 模型训练
-
- 3.2.1 优化器
- 3.2.2 训练流程
- 3.3 完整代码
1. softmax 回归原理
1.1 分类问题
-
考虑以下简单的分类问题
- 输入: 2 × 2 2\times 2 2×2 尺寸的图像 x \pmb{x} xxx,四个像素记为 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4
- 输出:预测标记 y ∈ Y y \in\mathcal{Y} y∈Y,其中 Y = { y 1 , y 2 , y 3 } \mathcal{Y} = \{y_1,y_2,y_3\} Y={ y1,y2,y3} 是大小为 3 的输出空间。我们习惯使用离散的数值来表示类别,比如将其处理为 y 1 = 1 , y 2 = 2 , y 3 = 3 y_1=1,y_2=2,y_3=3 y1=1,y2=2,y3=3,这样需要输出 1,2,3 这三个数字中的一个
如果使用数值化的标记,仍然可以使用回归模型来处理,将预测值就近离散化到 1、2、3 这三个值即可。但是
1.2 softmax 回归模型
-
softmax 回归模型内部和线性回归模型几乎一致,也是一个简单的,只是在,以 1.1 节的 4 维输入(特征维度为4) 3 维输出(类别总数为3)为例
其中每个输出层节点都是输入的线性组合,即 o 1 = x 1 w 11 + x 2 w 21 + x 3 w 31 + x 4 w 41 + b 1 o 2 = x 1 w 12 + x 2 w 22 + x 3 w 32 + x 4 w 42 + b 2 o 3 = x 1 w 13 + x 2 w 23 + x 3 w 33 + x 4 w 43 + b 3 \begin{aligned} &o_1 = x_1w_{11}+x_2w_{21}+x_3w_{31}+x_4w_{41} + b_1\\ &o_2 = x_1w_{12}+x_2w_{22}+x_3w_{32}+x_4w_{42} + b_2\\ &o_3 = x_1w_{13}+x_2w_{23}+x_3w_{33}+x_4w_{43} + b_3\\ \end{aligned} o1=x1w11+x2w21+x3w31+x4w41+b1o2=x1w12+x2w22+x3w32+x4w42+b2o3=x1w13+x2w23+x3w33+x4w43+b3
-
为了得到离散的预测输出,我们可以把输出值 o i o_i oi 看作置信度,输出越大的节点,对应的标记越可能是真实标签。在这里我们,即 y ^ 1 , y ^ 2 , y ^ 3 = softmax ( o 1 , o 2 , o 3 ) \hat{y}_1,\hat{y}_2,\hat{y}_3 = \text{softmax}(o_1,o_2,o_3) y^1,y^2,y^3=softmax(o1,o2,o3) 其中 y ^ i \hat{y}_i y^i 是如下计算的 y ^ i = exp ( o i ) ∑ j exp ( o j ) \hat{y}_i = \frac{\exp(o_i)}{\sum_j \exp(o_j)} y^i=∑jexp(oj)exp(oi) 我们注意到 arg max i o i = arg max i y ^ i \arg\max_i o_i = \arg\max_i \hat{y}_i argmaxioi=argmaxiy^i,因此
1.2.1 单样本分类的矢量计算表达式
- 为了提升运算效率,将上述运算都改成矩阵形式,
- softmax 回归的权重和偏置参数为 W = [ w 11 w 12 w 13 w 21 w 22 w 23 w 31 w 32 w 33 w 41 w 42 w 43 ] b = [ b 1 , b 2 , b 3 ] \pmb{W} = \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \\ w_{31} &w_{32} & w_{33} \\ w_{41} &w_{42} & w_{43} \\ \end{bmatrix}\space\space\space \pmb{b} = [b_1,b_2,b_3] WWW=⎣⎢⎢⎡w11w21w31w41w12w22 标签: 5w33kr电阻