深度学习基础之sofxmax回归

【代码】
模型输出可以是一个像图像类别的离散值。对于这样的离散值预测问题,可以使用诸如softmax回归在内的分类模型。和线性回归不同,softmax回归的输出单元从一个变成了多个,且引入了softmax运算使输出更适合离散值的预测和训练。

1. 分类问题

考虑⼀个简单的图像分类问题,其输⼊图像的高和宽均为2像素,且色彩为灰度。这样每个像素值都可以用一个标量表示。我们将图像中的4像素分别记为x1,x2,x3,x4x_1,x_2,x_3,x_4x1​,x2​,x3​,x4​。假设训练数据集中图像的真实标签为狗、猫或鸡(假设可以用4像素表示出这3种动物),这些标签分别对应离散值y1,y2,y3y_1,y_2,y_3y1​,y2​,y3​。

通常使⽤离散的数值来表示类别,例如y1=1,y2=2,y3=3y_1 = 1, y_2 = 2, y_3 = 3y1​=1,y2​=2,y3​=3。如此,⼀张图像的标签为1、2和3这3个数值中的⼀个。虽然我们仍然可以使⽤回归模型来进⾏建模,并将预测值就近定点化到1、2和3这3个离散值之一,但这种连续值到离散值的转化通常会影响到分类质量。因此我们一般使用更加适合离散值输出的模型来解决分类问题。

2. softmax回归模型

softmax回归跟线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,softmax回归的输出值个数等于标签里的类别数。

o1=x1w11+x2w21+x3w31+x4w41+b1,o2=x1w12+x2w22+x3w32+x4w42+b2,o3=x1w13+x2w23+x3w33+x4w43+b3.(1)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. \tag 1 o1​=x1​w11​+x2​w21​+x3​w31​+x4​w41​+b1​,o2​=x1​w12​+x2​w22​+x3​w32​+x4​w42​+b2​,o3​=x1​w13​+x2​w23​+x3​w33​+x4​w43​+b3​.(1)
⽤神经⽹络图描绘了上⾯的计算。softmax回归同线性回归⼀样,也是⼀个单层神经⽹络。由于每个输出o1,o2,o3o_1, o_2, o_3o1​,o2​,o3​的计算都要依赖于所有的输⼊x1,x2,x3,x4x_1, x_2, x_3, x_4x1​,x2​,x3​,x4​,softmax回归的输出层也是⼀个全连接层。

softmax运算

既然分类问题需要得到离散的预测输出,⼀个简单的办法是将输出值oio_ioi​当作预测类别是iii的置信度,并将值最大的输出所对应的类作为预测输出,即输出arg⁡max⁡ioi\arg \max_i o_iargmaxi​oi​。例如,如果o1,o2,o3o_1, o_2, o_3o1​,o2​,o3​分别为0.1, 10, 0.1,由于o2o_2o2​最大,那么预测类别为2,其代表猫。然后该方法有很大的问题。⼀方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例⼦中的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍。但如果o1=o3=103o_1 = o_3 = 10^3o1​=o3​=103,那么输出值10却⼜表示图像。类别为猫的概率很低。另⼀方面,由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

softmax运算符(softmax operator)将输出值变换成值为正且和为1的概率分布,解决了上述问题:
y1^,y2^,y3^=softmax(o1,o2,o3)(2)\hat{y_1},\hat{y_2},\hat{y_3}={softmax}(o_1,o_2,o_3) \tag 2 y1​^​,y2​^​,y3​^​=softmax(o1​,o2​,o3​)(2)
其中:
y1^=exp⁡(o1)∑i=13exp⁡(oi),y2^=exp⁡(o2)∑i=13exp⁡(oi),y3^=exp⁡(o3)∑i=13exp⁡(oi)(3)\hat{y_1}=\frac{\exp(o_1)}{\sum_{i=1}^{3} \exp(o_i)},\hat{y_2}=\frac{\exp(o_2)}{\sum_{i=1}^{3} \exp(o_i)},\hat{y_3}=\frac{\exp(o_3)}{\sum_{i=1}^{3} \exp(o_i)} \tag 3 y1​^​=∑i=13​exp(oi​)exp(o1​)​,y2​^​=∑i=13​exp(oi​)exp(o2​)​,y3​^​=∑i=13​exp(oi​)exp(o3​)​(3)
容易看出y1^+y2^+y3^=1\hat{y_1}+\hat{y_2}+\hat{y_3}=1y1​^​+y2​^​+y3​^​=1且0≤y1^,y2^,y3^≤10 \leq \hat{y_1},\hat{y_2},\hat{y_3} \leq 10≤y1​^​,y2​^​,y3​^​≤1,因此y1^,y2^,y3^\hat{y_1},\hat{y_2},\hat{y_3}y1​^​,y2​^​,y3​^​是一个合法的概率分布。如果y2^=0.8\hat{y_2}=0.8y2​^​=0.8,不管y1^\hat{y_1}y1​^​和y3^\hat{y_3}y3​^​的值是多少,我们都知道图像类别为猫的概率是80%:
arg⁡max⁡ioi=arg⁡max⁡iyi^(4)\arg \max_io_i=\arg \max_i\hat{y_i} \tag 4 argimax​oi​=argimax​yi​^​(4)
因此softmax运算不改变预测类别输出。

3. 单样本分类的矢量计算表达式

为了提高计算效率,我们可以将单样本分类通过矢量计算来表达。在上面的图像分类问题中,假设softmax回归的权重和偏差参数分别为:
W=[w11w12w13w21w22w23w31w32w33w41w42w43],b=[b1b2b3](5)W=\left [ \begin{matrix} 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{matrix} \right ] ,b=\left [ \begin{matrix} b_{1} & b_{2} & b_{3} \end{matrix} \right ] \tag 5 W=⎣⎢⎢⎡​w11​w21​w31​w41​​w12​w22​w32​w42​​w13​w23​w33​w43​​⎦⎥⎥⎤​,b=[b1​​b2​​b3​​](5)
设高和宽分别为2个像素的图像样本iii的特征为:
x(i)=[x1(i)x2(i)x3(i)x4(i)](6)x^{(i)}=\left [ \begin{matrix} x_1^{(i)} & x_2^{(i)} & x_3^{(i)} & x_4^{(i)} \end{matrix} \right ] \tag 6 x(i)=[x1(i)​​x2(i)​​x3(i)​​x4(i)​​](6)
输出层的输出为:
o(i)=[o1(i)o2(i)o3(i)](7)o^{(i)}=\left [ \begin{matrix} o_1^{(i)} & o_2^{(i)} & o_3^{(i)} \end{matrix} \right ] \tag 7 o(i)=[o1(i)​​o2(i)​​o3(i)​​](7)
预测为狗、猫或鸡的概率分布为:
y^(i)=[y1^(i)y2^(i)y3^(i)](8)\hat{y}^{(i)}=\left [ \begin{matrix} \hat{y_1}^{(i)} & \hat{y_2}^{(i)} & \hat{y_3}^{(i)} \end{matrix} \right ] \tag 8 y^​(i)=[y1​^​(i)​y2​^​(i)​y3​^​(i)​](8)
softmax回归对样本iii分类的矢量计算表达式为:
o(i)=x(i)W+b,y^(i)=softmax(o(i)(9)o^{(i)}=x^{(i)}W+b, \\ \hat{y}^{(i)}=softmax(o^{(i)} \tag 9 o(i)=x(i)W+b,y^​(i)=softmax(o(i)(9)

4. ⼩批量样本分类的矢量计算表达式

为了进⼀步提升计算效率,我们通常对小批量数据做⽮量计算。⼴义上讲,给定⼀个小批量样本,其批量大小为nnn,输入个数(特征数)为ddd,输出个数(类别数)为qqq。设批量特征为X∈Rn×dX \in R^{n \times d}X∈Rn×d。假设softmax回归的权重和偏差参数分别为W∈Rd×qW \in R^{d \times q}W∈Rd×q和b∈R1×qb \in R^{1 \times q}b∈R1×q。softmax回归的矢量计算表达式为:
O=XW+b,Y^=softmax(O)(10)O=XW+b, \\ \hat{Y}=softmax(O) \tag {10} O=XW+b,Y^=softmax(O)(10)
其中的加法运算使⽤了⼴播机制,OOO,Y^∈Rn×q\hat{Y} \in R^{n \times q}Y^∈Rn×q且这两个矩阵的第iii行分别为样本iii的输出oi(i)o_i^{(i)}oi(i)​和概率分布y^(i)\hat{y}^{(i)}y^​(i)

5. 交叉熵损失函数

对于样本iii,构造向量y(i)∈Rq\textbf{y}^{(i)} \in R^qy(i)∈Rq,使其第y(i)y^{(i)}y(i)(样本iii类别的离散数值)个元素为1,其余为0。此时训练目标可以设为使预测概率分布y^(i)\hat{\textbf{y}}^{(i)}y^​(i)尽可能接近真实的标签概率分布y(i)\textbf{y}^{(i)}y(i)。

交叉熵(cross entropy):
H(y(i),y^(i))=−∑j=1qyj(i)log⁡y^j(i)(11)H(\textbf{y}^{(i)},\hat{\textbf{y}}^{(i)})=-\sum_{j=1}^{q} y_j^{(i)} \log \hat{y}_j^{(i)} \tag {11} H(y(i),y^​(i))=−j=1∑q​yj(i)​logy^​j(i)​(11)
如果一个样本只有一个标签,于是:
H(y(i),y^(i))=−log⁡y^y(i)(i)(12)H(\textbf{y}^{(i)},\hat{\textbf{y}}^{(i)})=-\log \hat{y}_{y^{(i)}}^{(i)} \tag {12} H(y(i),y^​(i))=−logy^​y(i)(i)​(12)
假设训练数据集的样本数为nnn,交叉熵损失函数定义为:
l(Θ)=1n∑i=1nH(y(i),y^(i))(13)l(\Theta)=\frac{1}{n} \sum_{i=1}^{n} H(\textbf{y}^{(i)},\hat{\textbf{y}}^{(i)}) \tag {13} l(Θ)=n1​i=1∑n​H(y(i),y^​(i))(13)
其中Θ\ThetaΘ代表模型参数。如果每个样本只有一个标签,那么交叉熵损失可以简写成l(Θ)=−(1/n)∑i=1nlog⁡y^y(i)(i)l(\Theta)=-(1/n)\sum_{i=1}^{n} \log \hat{y}_{y^{(i)}}^{(i)}l(Θ)=−(1/n)∑i=1n​logy^​y(i)(i)​。
从另一个角度来说,最小化l(Θ)l(\Theta)l(Θ)等价于最大化exp⁡(−nl(Θ))=∏i=1ny^y(i)(i)\exp(-nl(\Theta))=\prod_{i=1}^{n} \hat{y}_{y^{(i)}}^{(i)}exp(−nl(Θ))=∏i=1n​y^​y(i)(i)​,即最小化交叉熵损失函数等价于最⼤化训练数据集所有标签类别的联合预测概率。

6. 模型预测及评价

使用准确率(accuracy)来评价模型的表现。它等于正确预测数量与总预测数量之⽐。

深度学习基础之sofxmax回归相关推荐

  1. 【深度学习基础-14】回归中的相关系数r和决定系数R^2

    1 皮尔逊相关系数(Pearson Correlation Coefficient) 皮尔逊相关系数广泛用于度量两个变量之间的相关程度,其值介于-1与1之间. 两个变量之间的皮尔逊相关系数定义为两个变 ...

  2. 深度学习基础--SOFTMAX回归(单层神经网络)

    深度学习基础–SOFTMAX回归(单层神经网络) 最近在阅读一本书籍–Dive-into-DL-Pytorch(动手学深度学习),链接:https://github.com/newmonkey/Div ...

  3. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐

    人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...

  4. 第三章_深度学习基础

    文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...

  5. 【零基础深度学习教程第一课:深度学习基础】

    深度学习基础 目录 *深度学习基础* <第一节 深度学习简介> 一.深度学习与机器学习区别 二.神经网络简介 2.1 单神经元网络 2.2 多神经元网络 <第二节 神经网络基础> ...

  6. 五万字总结,深度学习基础。

    文章目录 1 基本概念 1.1 神经网络组成? 1.2 神经网络有哪些常用模型结构? 1.3 如何选择深度学习开发平台? 1.4 为什么深层神经网络难以训练? 1.5 深度学习和机器学习的异同? 2 ...

  7. 第3章(3.11~3.16节)模型细节/Kaggle实战【深度学习基础】--动手学深度学习【Tensorflow2.0版本】

    项目地址:https://github.com/TrickyGo/Dive-into-DL-TensorFlow2.0 UC 伯克利李沐的<动手学深度学习>开源书一经推出便广受好评.很多开 ...

  8. 2021-07-14 深度学习基础与实践(二)

    深度学习基础与实践(二) 一.分类及其性能度量 1.分类问题 2.分类性能度量 (1)准确率 (2)精确率和召回率 (3)P-R曲线 (4)F值 (5)ROC曲线 3.分类性能可视化 (1)混淆矩阵的 ...

  9. 日月光华深度学习(一、二)深度学习基础和tf.keras

    日月光华深度学习(一.二)深度学习基础和tf.keras [2.2]--tf.keras实现线性回归 [2.5]--多层感知器(神经网络)的代码实现 [2.6]--逻辑回归与交叉熵 [2.7]--逻辑 ...

  10. (十四)从零开始学人工智能-深度学习基础及CNN

    文章目录 一.深度学习基础 1.1 深度学习及其发展历史 1.1.1 什么是学习? 1.1.2 什么是机器学习? 1.1.3 什么是深度学习? 1.1.4 深度学习发展历史 1.1.5 小结 1.2 ...

最新文章

  1. ORACLE 表空间SQL
  2. windows kernel 可以直接读写文件系统资料吗_嵌入式杂谈之文件系统
  3. jenkins sonar-scanner 安装测试
  4. Windows Networking 4: CloudMonitor 引发的网络问题排查一则
  5. 如何找到适合结婚的女朋友
  6. (IT)这个行当里你应该知道的10个小秘密
  7. win7下IDEA黑色主题看不到鼠标指针的修改方式
  8. 永中word页码怎么从第二页开始_Word文档”双面打印“全攻略,解决打印难题!...
  9. Android:Canvas: trying to draw too large
  10. 推荐mac os 下更改键盘映射软件KeyRemap4MacBook
  11. 2023西安交通大学计算机考研信息汇总
  12. 导致计算机科学硕士和计算机科学理学硕士,诺丁汉大学计算机科学理学硕士研究生offer一枚...
  13. Perl脚本语言(一)
  14. 指针及其应用4——结构体指针
  15. 计算机管理中打开移动硬盘磁盘必须格式化,最佳解决方案:无法打开移动硬盘分区,并且未格式化解决方案。...
  16. 《道德经》| 夫唯不盈,故能蔽而新成
  17. 在vue添加lottie动画
  18. [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateF
  19. Qt播放视频报错 DirectShowPlayerService::doRender: Unresolved error code 0x80040266
  20. python google 搜索结果爬取_python爬取百度谷歌搜索结果

热门文章

  1. 模糊c均值聚类_聚类算法及其数据可视化
  2. 7 php程序的调试方法_PHP 程序员的调试技术
  3. 【转】js如何准确获取当前页面url网址信息
  4. springMvc--接受日期类型参数处理
  5. Android CircleMenu:旋转转盘选择Menu
  6. UVa 10082 WERTYU
  7. ios 8 适配须知
  8. 甲骨文公司总部Oracle技术沙龙《Hadoop》邀请函-2013.8.31(周六)
  9. 使用Sphinx对MySQL数据库进行全文检索
  10. 三路划分快速排序 java_程序员面试—快速排序的三路划分