Skip to main content
  1. Docs/
  2. Dive Into Deep Learning/
  3. Chapter 3. Linear Neural Network/

D2L 3.4 Softmax Regression

·1963 words
D2L Computer Science Docs
Table of Contents
D2L - This article is part of a series.
Part 5: This Article

回归可以用于预测_多少_的问题。 比如预测房屋被售出价格,或者棒球队可能获得的胜场数,又或者患者住院的天数。

事实上,我们也对_分类_问题感兴趣:不是问“多少”,而是问“哪一个”

3.4.1 分类问题
#

  • [[One-hot encoding 独热编码]]

3.4.2 网格架构
#

  • 为了估计所有可能类别的条件概率,我们需要一个有多个输出的模型,每个类别对应一个输出。 为了解决线性模型的分类问题,我们需要和输出一样多的[[Affine Function 仿射函数]]

E.X.

  • 假设现在有3个未规范化的预测(Logit):\(o_1,o_2和o_3\) \(o_1=x_1w_{11}+x_2w_{12}+x_3w_{13}+x_4w_{14}+b_1\) \(o_2=x_1w_{21}+x_2w_{22}+x_3w_{23}+x_4w_{24}+b_2\) \(o_1=x_1w_{31}+x_2w_{32}+x_3w_{33}+x_4w_{34}+b_3\)

3.4.3 全连接层的参数开销
#

  • 对于任何具有d个输入和q个输出的全连接层[[3.1_LinearRegression#Fully-Connected Layer 全连接层]],其参数开销为\(O(dq)\),但可以通过超参数减少到\(O(\frac{dq}{n})\)

3.4.4 softmax 运算
#

  • 我们希望模型的输出\(\hat y_j\)可以视为属于类\(j\)的概率,然后选择具有最大输出值的类别\(argmaxx_jy_j\)作为我们的预测,例如\(\hat y_1,\hat y_2\)和\(\hat y_3\)分别为\(\hat y={0.1,0.8,0.1}\)那么我们的预测变为独热编码的\(y={0,1,0}\),即为鸡

能否将未规范化的预测o直接视作我们感兴趣的输出呢
#

  • 不行
  • 因为将线性层的输出直接视为概率时存在一些问题
  • 我们没有限制这些输出数字的总和为1
  • 根据输入的不同,它们可以为负值
  • 其违反了[[概率论公理]]

概率论
#

  • 要将输出视为概率,我们必须保证在任何数据上的输出都是非负的且总和为1
  •  此外,我们需要一个训练的目标函数,来激励模型精准地估计概率

Calibration 校准
#

  • 例如, 在分类器输出0.5的所有样本中,我们希望这些样本是刚好有一半实际上属于预测的类别

Softmax 函数
#

  • 社会科学家邓肯·卢斯于1959年在选择模型(choice model)的理论基础上发明的softmax函数
  • softmax函数能够将未规范化的预测变换为非负数并且总和为1,同时让模型保持 可导的性质
  • 为了完成这一目标,我们首先对每个未规范化的预测求幂,这样可以确保输出非负
  • 为了确保最终输出的概率值总和为1,我们再让每个求幂后的结果除以它们的总和。如下式$$\hat y=softmax(o),其中\hat y_j=\frac{exp(o_j)}{\sum_kexp(o_k)}=\frac{e^j}{\sum_ke^k}$$
  • 这里,对于所有的j总有\(0\leq\hat y_j\leq1\),因此\(\hat y\)可以视为一个正确的概率分布
  • 尽管softmax是一个非线性函数,但softmax回归的输出仍然由输入特征的仿射变换决定。 因此,softmax回归是一个线性模型(linear model)。

3.4.5 小批量样本的矢量化
#

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

3.4.6 损失函数
#

  • 使用[[Maximum Likehood Estimation 极大似然估计]]

3.4.6.1 对数似然
#

  • softmax函数给出了一个向量\(\hat y\), 我们可以将其视为“对给定任意输入x的每个类的条件概率

  • 通过计算softmax的对数似然,可以推导出他的损失函数

  • 假设现在有一个数据集 \({X,Y}\),其具有n个样本,其中索引i的样本由特征向量\(x^{(i)}\)和独热标签向量\(y^{(i)}\)组成,可以将估计值与实际值进行比较$$P(Y|X)=\prod^n_{i=1}P(y^{(i)}|x^{(i)})$$

  • 根据[[3.1_LinearRegression#Likehood 似然]],已知最大化$P(Y|X),相当于最小化负对数似然 $$P(Y|X)=\sum^n_{i=1}-logP(y^{(i)}|x^{(i)})=\sum^n_{i=1}l(y^{(i)},\hat y^{(i)})$$

  • 其中对于任何标签y和预测模型\(\hat y\),损失函数为$$l(y,\hat y)=-\sum^{q}_{j=1}y_j\log \hat y_j$$

  • 这个[[3.1_LinearRegression#Loss Function 损失函数]]并没有介绍过,他的名字为Cross-entropy Loss交叉熵损失,将在后面介绍到

为什么要加入对数,而不是直接取负数
#

  • 数值稳定性: 在概率模型中,可能会有大量的乘法运算,这可能导致数值下溢或溢出问题,尤其是当概率很小的时候。通过取对数,可以将乘法运算转换为加法运算,从而提高计算的稳定性。
  • 对数函数的导数相对于原函数来说更简单,这使得梯度的计算更加高效。特别是在梯度下降等优化算法中,简化的导数计算可以显著减少计算量。
  • 对数函数的特性使得推导和分析变得更加简单,因为它可以将乘法转换为加法,并且有很多性质,例如对数函数的导数比原函数更容易处理

3.4.6.2 softmax及其导数
#

  • 由于softmax和相关的损失函数很常见, 因此我们需要更好地理解它的计算方式
  • 将3.4.3带入Cross-entropy Loss Function中,得到 $$\begin{align}l(y,\hat y)=-\sum^{q}{j=1}y_j\log \frac{e^{o_j}}{{\sum^{q}{k=1}e^{o_k}}} \=-\sum_{j=1}^{q}y_j[\ln e^{o_j}-\ln \sum^q_{k=1}e^{o_k}] \=\sum^q_{j=1}y_j\log\sum^q_{k=1}e^{o_k}-\sum^q_{j=1}y_jo_j \=\log \sum^q_{k=1}e^{o_k}-\sum^q_{j=1}y_jo_j\end{align}$$

Softmax结合Cross Entropy的求导过程
#

  • 已知Cross Entropy Function$$H(y_i,p_i)=-\sum_iy_i\log pi$$

  • \(y_i\)为预测事件,\(\log p_i\)为一个分布的最优编码

  • 得到[[Home Page]]

3.4.6.3 交叉熵损失
#

  • [[Cross-Entropy 交叉熵]]

3.4.7.1 熵
#

  • [[Cross-Entropy 交叉熵#2. 熵]]
D2L - This article is part of a series.
Part 5: This Article

Related

D2L 3.1 Linear Regression
·2946 words
D2L Computer Science Docs
D2L 3.2 Object-Oriented Design for Implementation
·568 words
D2L Computer Science Docs
D2L 3.3 A concise implementation of linear regression
·1286 words
D2L Computer Science Docs
D2L 3.5 Image classification datasets
·1074 words
D2L Computer Science Docs
D2L 3.6 Implementation of softmax regression from scratch
·2032 words
D2L Computer Science Docs
D2L 4.1 MultilayerPerceptron
·1476 words
D2L Computer Science Docs