《动手学深度学习》softmax回归(pytorch版)

ZSYL ZSYL     2023-01-20     583

关键词:

前几节介绍的线性回归模型适用于输出为连续值的情景。在另一类情景中,模型输出可以是一个像图像类别这样的离散值

对于这样的离散值预测问题,我们可以使用诸如softmax回归在内的分类模型。和线性回归不同,softmax回归的输出单元从一个变成了多个,且引入了softmax运算使输出更适合离散值的预测和训练。本节以softmax回归模型为例,介绍神经网络中的分类模型。

1 分类问题

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

我们通常使用离散的数值来表示类别,例如 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这3个数值中的一个。

虽然我们仍然可以使用回归模型来进行建模,并将预测值就近定点化到1、2和3这3个离散值之一,但这种连续值到离散值的转化通常会影响到分类质量。因此我们一般使用更加适合离散值输出的模型来解决分类问题。

2 softmax回归模型

softmax回归跟线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,softmax回归的输出值个数等于标签里的类别数。因为一共有4种特征和3种输出动物类别,所以权重包含12个标量(带下标的 w w w)、偏差包含3个标量(带下标的 b b b),且对每个输入计算 o 1 , o 2 , o 3 o_1, o_2, o_3 o1,o2,o3这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 . \\beginaligned 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. \\endaligned o1o2o3=x1w11+x2w21+x3w31+x4w41+b1,=x1w12+x2w22+x3w32+x4w42+b2,=x1w13+x2w23+x3w33+x4w43+b3.

图3.2用神经网络图描绘了上面的计算。softmax回归同线性回归一样,也是一个单层神经网络。

由于每个输出 o 1 , o 2 , o 3 o_1, o_2, o_3 o1,o2,o3的计算都要依赖于所有的输入 x 1 , x 2 , x 3 , x 4 x_1, x_2, x_3, x_4 x1,x2,x3,x4softmax回归的输出层也是一个全连接层


图3.2 softmax回归是一个单层神经网络

既然分类问题需要得到离散的预测输出,一个简单的办法是将输出值 o i o_i oi当作预测类别是 i i i的置信度,并将值最大的输出所对应的类作为预测输出,即输出 arg ⁡ max ⁡ i o i \\underseti\\arg\\max o_i iargmaxoi。例如,如果 o 1 , o 2 , o 3 o_1,o_2,o_3 o1,o2,o3分别为 0.1 , 10 , 0.1 0.1,10,0.1 0.1,10,0.1,由于 o 2 o_2 o2最大,那么预测类别为2,其代表猫。

然而,直接使用输出层的输出有两个问题。一方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例子中的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍。但如果 o 1 = o 3 = 1 0 3 o_1=o_3=10^3 o1=o3=103,那么输出值10却又表示图像类别为猫的概率很低。另一方面,由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

softmax运算符(softmax operator)解决了以上两个问题。它通过下式将输出值变换成值为正且和为1的概率分布:

y ^ 1 , y ^ 2 , y ^ 3 = softmax ( o 1 , o 2 , o 3 ) \\haty_1, \\haty_2, \\haty_3 = \\textsoftmax(o_1, o_2, o_3) y^1,y^2,y^3=查看详情

深度学习入门softmax回归模型

文章目录前言Softmax回归1.分类问题2.softmax回归模型3.单样本分类的矢量计算表达式4.小批量样本分类的矢量计算表达式5.交叉熵损失函数6.模型预测及评价7.小结前言因为工作需求需要接触到深度学习知识,导师推荐了一本书用... 查看详情

搞定《动手学深度学习》-(李牧)pytorch版本的所有内容

...回归3.2线性回归的从零开始实现3.3线性回归的简洁实现3.4softmax回归3.5图像分类数据集(Fashion-MNIST)3.6softmax回归的从零开始实现3.7softmax回归的简洁实现3.8多层感知机3.9多层感知机的从零开始实现3.10多层感知机的简洁实现... 查看详情

3.1线性回归解析解动手学深度学习v2

3.1线性回归解析解【动手学深度学习v2】1线性回归2损失函数3解析解1线性回归矩阵-向量乘法表示:X的每一行是一个样本,每一列是一种特征。2损失函数3解析解 查看详情

深度学习——线性神经网络(代码片段)

...计时的Python类二.线性回归的实现三.线性回归简洁实现四.softmax回归的实现五.softmax回归简洁实现一.用以计时的Python类classTimer:"" 查看详情

深度学习——线性神经网络(代码片段)

...计时的Python类二.线性回归的实现三.线性回归简洁实现四.softmax回归的实现五.softmax回归简洁实现一.用以计时的Python类classTimer:"" 查看详情

《动手学深度学习》线性回归(pytorch版)

线性回归(PyTorch版)1.线性回归1.1线性回归的基本要素1.1.1模型定义1.1.2模型训练(1)训练数据(2)损失函数(3)优化算法1.1.3模型预测1.2线性回归的表示方法1.2.1神经网络图1.2.2矢量计算表达式小结1.线性回归线性回归输出是一... 查看详情

softmax回归的从零开始实现(softmax-regression-scratch)(代码片段)

《动手学深度学习》Softmax回归的从零开始实现Softmax回归的从零开始实现获取和读取数据初始化模型参数实现softmax运算定义模型定义损失函数计算分类准确率训练模型预测小结Softmax回归的从零开始实现这一节我们来动手实现softm... 查看详情

《动手学深度学习》图像分类数据集(fashion-mnist)(代码片段)

...数据集下载图像分类数据集(Fashion-MNIST)在介绍softmax回归的实现前我们先引入一个多类图像分类数据集。它将在后面的章节中被多次使用,以方便我们观察比较算法之间在模型 查看详情

《动手学深度学习》线性回归从零开始(linear-regression-scratch)(代码片段)

...言在了解了线性回归的背景知识之后,现在我们可以动手实现它了。尽管强大的深度学习框架可以减少大量重复性工作,但若过于依赖它提供的便利,会导致我们很难深入理解深度学习是如何工作的。因此,本节... 查看详情

《动手学深度学习》线性回归从零开始(linear-regression-scratch)(代码片段)

...言在了解了线性回归的背景知识之后,现在我们可以动手实现它了。尽管强大的深度学习框架可以减少大量重复性工作,但若过于依赖它提供的便利,会导致我们很难深入理解深度学习是如何工作的。因此,本节... 查看详情

《动手学深度学习》线性回归的简洁实现(linear-regression-pytorch)(代码片段)

线性回归的简洁实现(linear-regression-pytorch)1.生成数据集2.读取数据3.定义模型4.初始化模型参数5.定义损失函数6.定义优化算法7.训练模型8.小结随着深度学习框架的发展,开发深度学习应用变得越来越便利。实践中... 查看详情

《动手学深度学习》线性回归的简洁实现(linear-regression-pytorch)(代码片段)

线性回归的简洁实现(linear-regression-pytorch)1.生成数据集2.读取数据3.定义模型4.初始化模型参数5.定义损失函数6.定义优化算法7.训练模型8.小结随着深度学习框架的发展,开发深度学习应用变得越来越便利。实践中... 查看详情

《动手学深度学习(李沐)》笔记1

实现一个简单的线性回归(mxnet)frommxnetimportndarrayasndfrommxnetimportautogradimportmatplotlib.pyplotaspltimportrandomnum_input=2#变量数num_examples=1000#1000个样例true_w=[2,-3.4]#真实的系数Wtrue_b=4.2#真实的偏倚bX=nd.random_no 查看详情

注意力机制attention注意力分数动手学深度学习v2

1.注意力机制attention2.注意力机制attention代码实现3.注意力分数4.注意力打分函数实现5.Q&Amasked_softmax()把填充padding的值,求softmax的时候,padding位置的值都设置为0.参考https://www.bilibili.com/video/BV1264y1i7R1?p=1 查看详情

动手学pytorchsoftmax回归(代码片段)

一、什么是softmax?有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值。具体公式表示为:softmax回归本质上也是一种对数据的估计      二、交叉熵损失函数在... 查看详情

《动手学深度学习》小记

一、随着书上的步骤安装环境,第一个需要解决的问题是如何配合该书利用jupyter:在下载好的gluon_tutorials_zh-1.0文件夹处启动命令窗口(1.shift+右键+从此处打开命令行窗口2.进入该文件夹,在文件路径处输入cmd可达到同样的效果... 查看详情

动手学深度学习diveintodeeplearning--day01--学习资料环境配置

正式开始《动手学深度学习v2-从零开始介绍深度学习算法和代码实现》的学习惊诧于李沐老师2021年的视频里就已经提到DALL·E2、ChatGPT等相关的内容了闲话休叙,先贴一下学习资料链接:课程主页:OpenLearningCamp-《动手学深度学习... 查看详情