机器学习&&深度学习——softmax回归(上)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er

🌌上期文章:机器学习&&深度学习------线性回归的简洁实现

📚订阅专栏:机器学习&&深度学习

希望文章对你们有所帮助

softmax回归

回归可以用来预测多少的问题,比如房屋被售出价格。而除了预测,我们也对分类问题感兴趣,不是问"多少",而是问"哪一个"。如:"某个邮件是否是垃圾邮件?图像描绘的是什么动物?某人接下来最可能看哪部电影?"

分类问题

以图像分类为例,每次输入一个2×2的灰度图像,可以用一个标量表示每个像素值,每个图像对应四个特征x1、x2、x3、x4。假设每个图像属于类别"猫""鸡"和"狗"中的一个。

接下来要选择如何表示标签,最直接的想法是选择y∈{1,2,3}分别代表{狗,猫,鸡}。

如果类别间有一些自然顺序,比如我们要试图预测{婴儿,儿童,青少年,青年人,中年人,老年人},那么该问题就会转变为回归问题。但一般的分类问题和类别之间的自然顺序是无关的。
独热编码

独热编码是一个向量,它的分量与类别是一样多的。类别对应的分量设置为1,其它所有分量设置为0,如:

y∈{(1,0,0),(0,1,0),(0,0,1)}分别代表三类动物。

网络架构

要解决线性模型的分类问题,需要设置和输出一样多的仿射函数,在上面的问题中,我们有4个特征和3个可能的输出类别,所以我们需要用12个标量来表示权重,3个标量来表示偏置(带下标的b):
o 1 = x 1 w 11 + x 2 w 12 + x 3 w 13 + x 4 w 14 + b 1 o 2 = x 2 w 21 + x 2 w 22 + x 3 w 23 + x 4 w 24 + b 2 o 1 = x 1 w 31 + x 2 w 32 + x 3 w 33 + x 4 w 34 + b 3 o_1=x_1w_{11}+x_2w_{12}+x_3w_{13}+x_4w_{14}+b_1\\ o_2=x_2w_{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 o1=x1w11+x2w12+x3w13+x4w14+b1o2=x2w21+x2w22+x3w23+x4w24+b2o1=x1w31+x2w32+x3w33+x4w34+b3

其中o表示未规范化的预测。

我们可以用神经网络图来描述这个计算过程,显然softmax回归也是个单层神经网络。由于输出取决于所有的输入,所以softmax回归的输出层也是全连接层

可以用o=Wx+b来表示模型。

全连接层的参数开销

全连接层无处不在,对于任何具有d个输入和q个输出的全连接层,参数开销为:
O ( d q ) O(dq) O(dq)

这个数字还是太大了,但将d个输入转换为q个输出的成本可以减少到:
O ( d q n ) O(\frac{dq}{n}) O(ndq)

超参数n可以由我们灵活指定。

softmax运算

现在我们将优化参数以最大化观测数据的概率。为了得到预测结果,我们设置一个阈值,如选择具有最大概率的标签。

我们希望模型输出三个类的概率,然后选用最大输出值来作为我们的预测。

我们不能将未规范化的预测o直接视作我们感兴趣的输出 。因为将线性层的输出直接视为概率时会存在一些问题:

1、我们没有限制这些输出数字的总和为1。

2、根据输入的不同,它们可以为负值,违背了概率基本公理。

要将输出视为概率,必须保证在任何数据上的输出都是非负的且总和为1 。此外,需要训练一个目标函数,来激励模型精准的估计概率。例如,在分类器输出0.5的所有样本中,我们希望这些样本是刚好有一半实际上属于预测的类别。这个属性叫做校准

而softmax函数能够将未规范化的预测变换为非负数并且总和为1,同时让模型保持可导的性质。为了完成这一目标,我们首先对每个未规范化的预测求幂,这样可以确保输出非负。为了确保最终输出的概率值总和为1,我们让每个求幂后的结果除以它们的总和:
y ^ = s o f t m a x ( o ) ,其中 y ^ j = e x p ( o j ) ∑ k e x p ( o k ) \hat{y}=softmax(o),其中\hat{y}_j=\frac{exp(o_j)}{\sum_kexp(o_k)} y^=softmax(o),其中y^j=∑kexp(ok)exp(oj)

这里,对于所有的j,总有:
0 ≤ y ^ j ≤ 1 0≤\hat{y}_j≤1 0≤y^j≤1

因此,y hat可以视为一个正确的概率分布。

softmax运算不会改变未规范化的预测o之间的大小次序,只会确定分配给每个类别的概率。因此,在预测过程中,我们可以用下式来选择最有可能的类别:
a r g m a x j y ^ j = a r g m a x j o j argmax_j\hat{y}_j=argmax_jo_j argmaxjy^j=argmaxjoj

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

小批量样本的矢量化

为了提高计算效率并且充分利用GPU,我们通常会对小批量样本的数据执行矢量计算。假设我们读取了一个批量的样本X,其中特征维度(输入数量)为d,批量大小为n。此外,假设我们在输出中有q个类别。那么:
小批量样本的特征为 X ∈ R n × d 权重为 W ∈ R d × q 偏置为 b ∈ R 1 × q 小批量样本的特征为X∈R^{n×d}\\ 权重为W∈R^{d×q}\\ 偏置为b∈R^{1×q} 小批量样本的特征为X∈Rn×d权重为W∈Rd×q偏置为b∈R1×q

softmax回归的矢量计算表达式为:
O = X W + b Y ^ = s o f t m a x ( O ) O=XW+b\\ \hat{Y}=softmax(O) O=XW+bY^=softmax(O)

小批量样本的矢量化加快了X和W的矩阵-向量乘法。

由于X中的每一行代表一个数据样本,那么softmax运算可以按行执行:对于O的每一行,我们先对所有项进行幂运算,然后通过求和来对他们进行标准化。(XW+b的求和会使用广播机制,小批量的未规范化预测和输出概率都是n×q的矩阵)。

相关推荐
魔力之心1 小时前
人工智能与机器学习原理精解【27】
人工智能·机器学习·集成学习
川泽曦星1 小时前
【第十四周】PyTorch深度学习实践1
人工智能·pytorch·深度学习
余生H2 小时前
前端大模型入门:实战篇之Vue3+Antdv+transformers+本地模型实现增强搜索
前端·javascript·vue.js·深度学习·transformer·深度搜索·webml
B站计算机毕业设计超人2 小时前
计算机毕业设计hadoop+hive航班预测系统 飞机票航班数据分析可视化大屏 机票预测 机票爬虫 飞机票推荐系统 大数据毕业设计
大数据·hive·hadoop·爬虫·机器学习·spark·数据可视化
绕灵儿2 小时前
YOLO V8半自动标注工具设计
python·深度学习·yolo
_老码3 小时前
从入门到入土:计算机视觉CV学习路线图
人工智能·深度学习·计算机视觉·aigc
小言从不摸鱼4 小时前
【机器学习】探索LSTM:深度学习领域的强大时间序列处理能力
人工智能·rnn·深度学习·神经网络·机器学习·自然语言处理·lstm
深度学习实战训练营4 小时前
ST-GCN模型实现花样滑冰动作分类
人工智能·深度学习
BulingQAQ4 小时前
论文阅读:多模态医学图像融合方法的研究进展
论文阅读·深度学习·计算机视觉·gan
LIjin_10065 小时前
GPT2模型源码解析
深度学习