【动手学深度学习 | week2b】09 Softmax回归

【动手学深度学习 | week2b】09 Softmax回归

softmax 回归

sofrmax虽然叫回归,但是其实解决的是一个分类问题(线性回归解决的是预测“是多少”的问题,而不是“是什么”的问题)。

  • 回归估计的是连续值,一般是单输出。
  • 分类预测的是一个离散类别(MNIST、ImageNet),一般是多输出。
    在这里插入图片描述
    从回归到多类分类
  • 架构:均方损失进行训练
  1. 对类别进行一位有效编码
    𝑦 ∈ ( 1 , 0 , 0 ) , ( 0 , 1 , 0 ) , ( 0 , 0 , 1 ) 独 热 编 码 𝑦∈{(1,0,0),(0,1,0),(0,0,1)} 独热编码 y(1,0,0),(0,1,0),(0,0,1)

  2. 使用均方损失进行训练(计算出多个仿射函数的结果, o i o_i oi
    softmax回归也是一个单层神经网络。 由于计算每个输出 𝑜1 、 𝑜2 和 𝑜3 取决于 所有输入 𝑥1 、 𝑥2 、 𝑥3 和 𝑥4 , 所以softmax回归的输出层也是全连接层。
    在这里插入图片描述
    softmax回归的向量形式可以表达为:
    𝐨 = 𝐖 𝐱 + 𝐛 𝐨=𝐖𝐱+𝐛 o=Wx+b

  3. 最大值作为预测(对比 o i o_i oi的结果,输出,最大的 o i o_i oi

  • 无校验比例——让正确类别的置信度大,这步也是softmax运算
  1. 有效编码最大值作为预测
  2. 更置信的识别正确类(比较大的余量,相对值要较大)
    o y − o i ≥ y − i o_y-o_i ≥ y-i oyoiyi
  3. 输出匹配概率(非负,和为1) softmax运算
    y ^ = softmax ⁡ ( o ) y ^ i = exp ⁡ ( o i ) ∑ k exp ⁡ ( o k ) \begin{aligned} \hat{\mathbf{y}} &=\operatorname{softmax}(\mathbf{o}) \\ \hat{y}_{i} &=\frac{\exp \left(o_{i}\right)}{\sum_{k} \exp \left(o_{k}\right)} \end{aligned} y^y^i=softmax(o)=kexp(ok)exp(oi)
    为了确保最终输出的总和为1,我们再对每个求幂后的结果除以它们的总和
  4. 两个概率之间的区别作为损失(真实的和预测的)
    使用softmax得到非负并且和为1的 y ^ \hat{y} y^,计算的过程就是一个缩放范围的问题
    对于每个小批量样本,softmax回归的矢量计算表达式为
    𝐎 = 𝐗 𝐖 + 𝐛 𝐘 ^ = s o f t m a x ( 𝐎 ) 𝐎=𝐗𝐖+𝐛\\ 𝐘̂ =softmax(𝐎) O=XW+bY^=softmax(O)
  • 交叉熵损失:衡量预测与真实概率之间的区别,度量softmax的预测效果
  1. 用交叉熵来衡量两个概率的区别
    H ( p , q ) = ∑ i − p i log ⁡ ( q i ) H(\mathbf{p}, \mathbf{q})=\sum_{i}-p_{i} \log \left(q_{i}\right) H(p,q)=ipilog(qi)
  2. 把交叉熵作为损失交叉熵损失就是最小化负对数似然,或者叫最大似然估计的结果
    l ( y , y ^ ) = − ∑ i y i log ⁡ y ^ i = − log ⁡ y ^ y l(\mathbf{y}, \hat{\mathbf{y}})=-\sum_{i} y_{i} \log \hat{y}_{i}=-\log \hat{y}_{y} l(y,y^)=iyilogy^i=logy^y
  3. 梯度就是真实概率和预测概率的区别 ,计算结果为:
    ∂ o i l ( y , y ^ ) = softmax ⁡ ( o ) i − y i \partial_{o_{i}} l(\mathbf{y}, \hat{\mathbf{y}})=\operatorname{softmax}(\mathbf{o})_{i}-y_{i} oil(y,y^)=softmax(o)iyi

损失函数

  • L2 Loss 均方损失
    l ( y , y ′ ) = ( y − y ′ ) 2 / 2 l(y, y^{'}) = (y-y^{'})^2/2 l(y,y)=(yy)2/2
    在这里插入图片描述
    其中,纵轴就是loss的计算值,横轴就是预测值的取值,设定真实值y为0
    蓝色曲线表示损失函数曲线。 y y y为0的时候,变换预测值 y ′ y{'} y所得到的函数,也就是一个二次函数。
    绿色的是一个似然函数,是高斯分布。
    橙色的是梯度,也就是一次函数。随着预测值和真实值的靠近,loss降为0。
    注:给定输出 x x x时,关于参数θ的似然函数 L ( θ ∣ x ) L(θ|x) L(θx)(在数值上)等于给定参数θ后变量X的概率:
    L ( θ ∣ x ) = P ( X = x ∣ θ ) L(θ|x)=P(X=x|θ) L(θx)=P(X=xθ)
    问题:对于离原点比较远的情况,可能不需要非常大的梯度来更新参数。
  • L1 Loss

l ( y , y ′ ) = ∣ y − y ′ ∣ l(y, y^{'}) = |y-y^{'}| l(y,y)=yy
在这里插入图片描述
蓝色为损失函数曲线,绿色为最大似然函数,橙色为梯度。L1 LOSS比较重要的特性是,对于预测值大于0的情况夏,Loss为1,小于0的情况下,Loss为-1。这样可以带来稳定性的好处。
问题:对于接近0的时候,可能出现-1和1之间的反复横跳。这是平滑性的问题

  • Huber’s Robust Loss
    在这里插入图片描述
    同时兼具了原点处的平滑性和原点外的稳定性。

信息论基础


  • H [ P ] = ∑ j − P ( j ) log ⁡ P ( j ) . H[P] = \sum_j - P(j) \log P(j). H[P]=jP(j)logP(j).
    为了对从分布 𝑝 中随机抽取的数据进行编码, 我们至少需要 𝐻[𝑃] “纳特(nat)”对其进行编码

图像分类数据集

Softmax回归从0实现

Softmax回归简洁实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值