d2l-3-softmax回归

# d2l
# python

对于一般模型的概述

在深度学习中,实际上对于任意的一个模型,都有两个重要的部分: 1. 模型的结构 2. 模型的损失函数

模型的结构定义了模型的计算过程,而损失函数定义了模型的优劣并且指导模型的优化。

softmax回归

线性回归用于解决回归问题,softmax回归用于解决分类问题。

在简单的线性回归中,我们期望模型能够输出一个 标量值,对于 一系列 输入而言,其能够输出符合预期的结果。

softmax 回归也类似,其被用于解决分类问题,我们希望模型能够输出一个n维向量,这个向量的每一个元素代表了输入属于某个类别的概率。

softmax 函数

为了达到这样的目的,我们需要引入 softmax 函数,其能够将模型的输出转换为概率。softmax 函数的定义如下: \[softmax(x)_i = \frac{exp(x_i)}{\sum_{j=1}^{n}exp(x_j)}\]

其中,\(x\) 为模型的输出,\(n\) 为类别的数量,\(softmax(x)_i\) 代表了输入属于第 \(i\) 个类别的概率。这个函数的优点在于,其能够保持输出的概率和为1,并且各个概率值都在0到1之间。另外,由于 \(exp(x)\) 是一个非线性函数,因此 softmax 函数也是一个非线性函数,这使得模型对于较大的输入值更加敏感,从而能够更好地区分不同的类别。

损失函数——交叉熵

soft函数很好的解决了从模型的输出到概率的转换问题,

但是这样也引出来了另一个问题,为了优化参数,我们需要定义一个损失函数,但是对于分类问题,我该如何定义损失函数呢?这里我们引入了交叉熵损失函数,其定义如下:

\[H(y, \hat{y}) = -\sum_{i=1}^{n}y_i\log(\hat{y}_i)\]

其中,\(y\) 为真实的标签,\(\hat{y}\) 为模型的输出,\(n\) 为类别的数量。

这个损失函数的优点在于,其能够衡量模型的输出与真实标签之间的差距,当模型的输出与真实标签完全一致时,交叉熵损失函数的值为0,当模型的输出与真实标签差距越大时,交叉熵损失函数的值也越大。

对于分类问题,我们期望的输出 应当是 除了真实标签之外,其他标签的概率都应该接近于0,而真实标签的概率应该接近于1。通过计算交叉熵损失函数,我们就能够衡量模型的输出与真实标签之间的差距,从而指导模型的优化。