自学内容网 自学内容网

从0开始深度学习(8)——softmax回归

1 分类问题

深度学习从大方向上来说,就是回归预测和分类问题。

假设输入一个 2 ∗ 2 2*2 22的灰度图像,可能属于“鸡、猫、狗”三个类别中的一个,那如何在计算机中表示标签呢?最常见的想法是 y = { 1 , 2 , 3 } y= \{1,2,3\} y={1,2,3},其中的数字分别代表 { 狗 , 猫 , 鸡 } \{ 狗,猫,鸡 \} {,,}

但是一般的分类问题并不与类别之间的自然顺序有关,所以会使用one-hot编码, 即类别对应的分量设置为1,其他所有分量设置为0。

在我们的例子中,标签将是一个三维向量, 其中 ( 0 , 1 , 0 ) (0,1,0) (0,1,0)对应于“猫”、 ( 0 , 0 , 1 ) (0,0,1) (0,0,1)对应于“鸡”、 ( 1 , 0 , 0 ) (1,0,0) (1,0,0)对应于“狗”。

2 网络架构

为了估计所有可能类别的条件概率,我们需要一个有多个输出的模型,每个类别对应一个输出。

我们假设有4个特征和3个可能对的输出,所有有12个标量表示权重 w w w,3个标量表示偏置项 b b b o o o 是预测输出:
在这里插入图片描述

为了解决这种多分类问题,这里使用softmax网络:
在这里插入图片描述
softmax网络是一个有多个输入、多个输出的单层神经网络,我们使用向量表达式 o = W x + b o=Wx+b o=Wx+b 简洁的表达模型

3 全连接层的参数开销

具体来说,对于任何具有 d d d 个输入和 q q q 个输出的全连接层, 参数开销为 O ( q d ) O(qd) O(qd) ,这个数字在实践中可能高得令人望而却步。

幸运的是,将 d d d 个输入转换为 q q q 个输出的成本可以减少到 O ( d q / n ) O(dq/n) O(dq/n), 其中超参数 n n n 可以由我们灵活指定。

4 softmax运算

我们希望模型最后输出的 数据 X 数据X 数据X 对应的 各个标签 各个标签 各个标签 的是一个概率,然后把最大的概率标签视为我们最后的预测结果。要将输出视为概率,我们必须保证在任何数据上的输出都是非负的且总和为1。

此外,我们需要一个训练的目标函数,来激励模型精准地估计概率。 softmax函数会将每个元素转换为一个介于0和1之间的值,同时保证所有输出的概率总和为1,同时让模型保持可导的性质,公式如下:

P = e o i ∑ j = 1 k e o j P = \frac{e^{o_{i} } }{ {\textstyle \sum_{j=1}^{k}}e^{o_{j} } } P=j=1keojeoi

o o o是把输入的特征向量 x x x经过线性变换得到的向量,长度为 k k k P P P表示输入向量 x x x属于类别 i i i的概率

尽管softmax是一个非线性函数,但softmax回归的输出仍然由输入特征的仿射变换决定。 因此,softmax回归是一个线性模型。

5 小批量样本的矢量化

为了提高计算效率并充分利用GPU,我们通常会对小批量样本的数据执行矢量计算。

假设我们读取一个批量的样本 X X X,特征维度为 d d d,批量大小为 n n n,我们输出有 q q q 个类别。

所以小批量样本的特征为 X ∈ R n × d X \in \mathbb{R}^{n\times d} XRn×d,权重为 W ∈ R d × q W \in \mathbb{R}^{d\times q} WRd×q,偏置为 W ∈ R 1 × q W \in \mathbb{R}^{1\times q} WR1×q

所以softmax回归的矢量表达式为:
在这里插入图片描述
相对于一次处理一个样本, 小批量样本的矢量化使用了矩阵-向量乘法,可以充分利用GPU进行加速计算。

6 损失函数

在线性回归中,我们使用的是MSE作为损失函数,但之前那个例子是回归预测,这里是分类任务,所以这里使用最大似然估计,概念如下:

假设我们有一个概率模型 P ( x ∣ θ ) P(x∣θ) P(xθ),其中 x x x 是观测数据, θ θ θ 是模型的参数。我们的目标是找到参数 θ θ θ 的最优值,使得观测数据 x x x 出现的概率最大。

6.1 对数似然

softmax函数会输出一个向量 y ^ \hat{y} y^,即“输入的 x x x 对应的每个标签的条件概率”,例如 y ^ 1 = P ( y = 猫 ∣ X ) \hat{y}_{1}=P(y=猫 | X) y^1=P(y=X)

假设整个数据集 { X , Y } \{X,Y\} {X,Y},其中索引为 i i i的样本由特征向量 x ( i ) x^{(i)} x(i)和one-hot编码 y ( i ) y^{(i)} y(i)组成,所以我们可以将估计值和真实值进行比较:
在这里插入图片描述
表示在给定整个数据集的特征 X X X 的情况下,标签 Y Y Y 的概率等于每个样本中在给定该样本特征 x ( i ) x^{(i)} x(i) 的情况下标签 y ( i ) y^{(i)} y(i) 的概率之积。

我们要最大化 P ( Y ∣ X ) P(Y|X) P(YX) ,所以应该取负对数,因为取对数可以把累积转化为累加,同时因为对数函数是单调递增的,对概率取对数后再取负,最小化负对数似然就等价于最大化原始的概率,所以损失函数如下:
在这里插入图片描述

6.2 softmax及其导数

将softmax函数带入损失函数得到:
**注意:**因为是 y y y 独热标签向量,即除了对应真实类别的那个位置为 1 1 1,其余位置都为 0 0 0,所以 ∑ j = 1 q y i = 1 \sum_{j=1}^{q}y_{i}=1 j=1qyi=1
在这里插入图片描述
然后对损失函数求 o j o_{j} oj的导数(为了计算梯度),步骤如下:
在这里插入图片描述

在这里插入图片描述
换句话说,这个导数是我们softmax模型分配的概率与实际发生的情况(由独热标签向量表示)之间的差异。

6.3 交叉熵损失

最后输出的是 ( 0.1 , 0.2 , 0.7 ) (0.1,0.2,0.7) (0.1,0.2,0.7),而不是 ( 0 , 0 , 1 ) (0,0,1) (0,0,1),所以所有标签分布的预期损失值,称为交叉熵损失(cross-entropy loss),它是分类问题最常用的损失之一。

下面将通过介绍信息论来帮助理解交叉熵损失

7 信息论基础

信息论(Information Theory)是研究信息的量化、存储、传输和处理的数学理论,涉及编码、解码、发送以及尽可能简洁地处理信息或数据。

7.1 熵

信息论的核心思想是量化数据中的信息内容。 在信息论中,该数值被称为分布 P P P 的(entropy)。

对于一个随机变量 X X X ,其概率分布为 P ( X = j ) = p ( j ) P(X=j)=p(j) P(X=j)=p(j),即一个事件 X = j X=j X=j 的概率为 P ( j ) P(j) P(j),所以该事件的自信息量(表示一个事件发生所带来的信息量) 被定义为 I ( j ) = − l o g P ( j ) I(j)=-logP(j) I(j)=logP(j)

之所以这样定义,是因为概率 P ( j ) P(j) P(j) 越小, − l o g P ( j ) -logP(j) logP(j) 的值就越大,符合低概率事件带来高信息量的直观理解。

所以熵 H [ P ] H[P] H[P]就是所有可能发生的事件的自信息量的期望:
在这里插入图片描述

7.2 重新审视交叉熵

交叉熵(Cross-Entropy)是信息论中的一个重要概念,用于衡量两个概率分布之间的差异。

假设有两个概率分布 P P P Q Q Q ,其中 P P P 表示真实分布, Q Q Q 表示模型预测的分布,所以交叉熵分布 H ( P , Q ) H(P,Q) H(P,Q) 定义为:
H ( P , Q ) = ∑ x P ( x ) l o g Q ( x ) H(P,Q)=\sum_{x}P(x)logQ(x) H(P,Q)=xP(x)logQ(x)
x x x 表示所有可能的事件或者类别。

8 模型预测和评估

在训练softmax回归模型后,给出任何样本特征,我们可以预测每个输出类别的概率。 通常我们使用预测概率最高的类别作为输出类别。 如果预测与实际类别(标签)一致,则预测是正确的。 在接下来的实验中,我们将使用精度(accuracy)来评估模型的性能。 精度等于正确预测数与预测总数之间的比率。


原文地址:https://blog.csdn.net/m0_53115174/article/details/142831996

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!