2 机器学习知识 Softmax回归 deep learning system

本文介绍了机器学习中的线性模型用于多分类问题,包括模型的假设函数、损失函数(尤其是softmax和交叉熵损失)以及优化方法,如梯度下降法。讨论了如何通过梯度下降更新参数以减小损失函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习算法的三个主要部分

  1. The hypothesis class: 模型结构
  2. loss fuction 损失函数
  3. An optimization method:在训练集上减小loss的方法

多分类问题

  • 训练数据:x(i)∈Rn,y(i)∈1,...,kfori=1,...mx^{(i)}\in \mathbb{R}^n ,y^{(i)}\in {1,...,k} for i=1,...mx(i)Rn,y(i)1,...,kfori=1,...m
  • n 是输入数据的维度,输入的每一例数据是一个n维向量
  • k 是要分成的类的数量
  • m 是训练集的大小,总共有m例数据

线性假设函数

假设函数 h:Rn→Rkh:\mathbb{R}^n \rightarrow\mathbb{R}^kh:RnRk
其中hi(x)h_i(x)hi(x) 用来衡量划分到类 i 的可能性

一个线性的假设函数
hθ(x)=θTxh_{\theta}(x)=\theta^Txhθ(x)=θTx
参数θ∈Rn×k\theta\in\mathbb{R}^{n\times k}θRn×k

矩阵形式

X∈Rm×n=[x(1)T...x(m)T],y∈1,...,km=[y(1)...y(m)]X\in \mathbb{R}^{m\times n} = \begin{bmatrix} x^{(1)T} \\ ... \\ x^{(m)T} \end{bmatrix}, y\in{1,...,k}^m=\begin{bmatrix}y^{(1)} \\ ... \\ y^{(m)}\end{bmatrix}XRm×n=x(1)T...x(m)T,y1,...,km=y(1)...y(m)
线性假设函数可以写成下面的形式

hθ(X)=[hθ(x(1))T...hθ(x(m))T]=[x(1)Tθ...x(1)Tθ]=Xθh_\theta(X) = \begin{bmatrix}h_{\theta}(x^{(1)})^T \\... \\h_{\theta}(x^{(m)})^T \end{bmatrix}= \begin{bmatrix}x^{(1)T}\theta \\...\\x^{(1)T} \theta\end{bmatrix} = X\thetahθ(X)=hθ(x(1))T...hθ(x(m))T=x(1)Tθ...x(1)Tθ=

损失函数1 classification error

这个损失函数,不可微,对于optimization是非常不好用的

ℓerr(h(x),y)={0,ifargmaxihi(x)=y1,otherwis\ell_{err}(h(x),y) = \left\{\begin{matrix} 0\quad ,if\quad argmax_i\quad h_i(x)=y \\ 1\quad ,otherwis \end{matrix}\right.err(h(x),y)={0,ifargmaxihi(x)=y1,otherwis

损失函数2 softmax / cross-entropy loss

zi=p(label=i)=exp(hi(x))∑j=1kexp(hj(x))⟺z=normalsize(exp(h(x)))z_i = p(label=i)=\frac{exp(h_i(x))}{\sum_{j=1}^kexp(h_j(x))} \Longleftrightarrow z = normalsize(exp(h(x)))zi=p(label=i)=j=1kexp(hj(x))exp(hi(x))z=normalsize(exp(h(x)))

zi 表示分类为i的概率,将假设函数的输出转为概率。

softmax 或者交叉熵损失

ℓerr(h(x),y)=−log⁡p(label=y)=−hy(x)+log⁡∑j=1kexp(hj(x))\ell_{err}(h(x),y) =- \log p(label=y)= -h_y(x)+\log \sum_{j=1}^kexp(h_j(x))err(h(x),y)=logp(label=y)=hy(x)+logj=1kexp(hj(x))

softmax 回归优化问题

接下来的任务就是想办法减小损失函数

min⁡θ1m∑i=1mℓ(hθ(x(i)),y(i))\min_{\theta} \frac{1}{m}\sum_{i=1}^m\ell(h_\theta(x^{(i)}),y^{(i)})θminm1i=1m(hθ(x(i)),y(i))

如何找到θ\thetaθ来减少损失函数呢?

优化:梯度下降法

对一个输入为矩阵,输出为标量的函数 f:Rn×k→Rf:\mathbb{R}^{n\times k} \rightarrow \mathbb{R}f:Rn×kR ,以下为梯度的定义,针对θ\thetaθ的每一个元素求偏导。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcojNuCy-1684499011760)(null)]

梯度指示了增长最快的方向。

更新θ\thetaθ

θ:=θ−α▽θf(θ)\theta:=\theta - \alpha \triangledown_\theta f(\theta)θ:=θαθf(θ)

α\alphaα 是学习率,用来控制更新的步长

随机梯度下降

不使用所有的数据来更新参数,每次选择一个 minibatch ,针对minibatch求loss和梯度及进行更新

image.png

回到我们的问题,如何计算softmax损失函数的梯度?

h=θTx,h∈Rkh = \theta^Tx,h\in \mathbb{R}^kh=θTx,hRk

image.png
eye_yey 是一个向量,只有y位置为1,其余位置为0

image.png
image.pngimage.png

XT∈Rn×mX^T \in \mathbb{R}^{n\times m}XTRn×m Z−Iy∈Rm×kZ -I_y \in \mathbb{R}^{m\times k}ZIyRm×k

总的过程为
先选择一个minibatch,再更新θ\thetaθ
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值