机器学习(三)softmax回归

3. softmax回归

softxmax回归推导

softmax回归是一种用于多类分类的机器学习算法,它是逻辑回归在多类分类问题上的推广。

在softmax回归中,我们试图找到一组权重向量,使得对于每个输入样本,我们可以通过将权重向量与输入向量进行点积,然后将结果传递到softmax函数中来预测输出的概率分布。

让我们先从线性回归开始推导。假设我们有一个输入向量 x ∈ R n x\in\mathbb{R}^n xRn,我们想要预测一个实值输出 y ∈ R y\in\mathbb{R} yR。我们可以使用线性模型来进行预测:

y ^ = w T x + b \hat{y} = w^Tx + b y^=wTx+b

其中 w ∈ R n w\in\mathbb{R}^n wRn b ∈ R b\in\mathbb{R} bR是要学习的参数, y ^ \hat{y} y^是我们预测的输出。

我们的目标是通过最小化预测值和真实值之间的平方误差来学习参数 w w w b b b

min ⁡ w , b ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 \min_{w,b}\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2 w,bmini=1m(y^(i)y(i))2

其中 m m m是训练集中的样本数量。我们可以使用梯度下降法来求解此问题。首先,我们需要计算损失函数的梯度:

∂ ∂ w j ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 = 2 ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial w_j}\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2=2\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})x_j^{(i)} wji=1m(y^(i)y(i))2=2i=1m(y^(i)y(i))xj(i)

∂ ∂ b ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 = 2 ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) \frac{\partial}{\partial b}\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2=2\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)}) bi=1m(y^(i)y(i))2=2i=1m(y^(i)y(i))

接下来,我们可以使用梯度下降法来更新权重向量和偏置项:

w j : = w j − α ∂ ∂ w j ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 w_j:=w_j-\alpha\frac{\partial}{\partial w_j}\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2 wj:=wjαwji=1m(y^(i)y(i))2

b : = b − α ∂ ∂ b ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 b:=b-\alpha\frac{\partial}{\partial b}\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2 b:=bαbi=1m(y^(i)y(i))2

其中 α \alpha α是学习率。

现在让我们将线性回归推广到分类问题。假设我们有 m m m个训练样本,每个样本有 n n n个特征和 c c c个类别。我们将每个训练样本表示为一个向量 x ( i ) ∈ R n x^{(i)}\in\mathbb{R}^n x(i)Rn,并将其对应的类别表示为 y ( i ) ∈ 1 , 2 , . . . , c y^{(i)}\in{1,2,...,c} y(i)1,2,...,c

为了使我们的模型能够预测类别,我们需要将线性回归的输出转换为概率分布。这可以通过softmax函数来实现。对于输入向量 x ∈ R n x\in\mathbb{R}^n xRn和权重向量 w k ∈ R n w_k\in\mathbb{R}^n wkRn(对于每个类别 k k k),我们可以计算类别 k k k的概率为:

P ( y = k ∣ x ) = e w k T x ∑ j = 1 c e w j T x P(y=k|x)=\frac{e^{w_k^Tx}}{\sum_{j=1}^ce^{w_j^Tx}} P(y=kx)=j=1cewjTxewkTx

其中 e e e是自然常数 e e e,分母是所有类别的概率之和。我们可以将所有类别的概率表示为一个向量:

y ^ = s o f t m a x ( w T x ) = [ P ( y = 1 ∣ x ) P ( y = 2 ∣ x ) … P ( y = c ∣ x ) ] = 1 ∑ j = 1 c e w j T x [ e w 1 T x e w 2 T x … e w c T x ] \begin{split}\hat{y}&=softmax(w^Tx)\\&=\begin{bmatrix} P(y=1|x) \\ P(y=2|x) \\ \dots \\ P(y=c|x) \end{bmatrix}\\&=\frac{1}{\sum_{j=1}^ce^{w_j^Tx}}\begin{bmatrix} e^{w_1^Tx} \\ e^{w_2^Tx} \\ \dots \\ e^{w_c^Tx} \end{bmatrix}\end{split} y^=softmax(wTx)= P(y=1∣x)P(y=2∣x)P(y=cx) =j=1cewjTx1 ew1Txew2TxewcTx

现在我们可以定义损失函数,以便在训练集上最小化分类误差。我们可以使用负对数似然函数来定义损失函数:

J ( w ) = − ∑ i = 1 m ∑ k = 1 c y k ( i ) log ⁡ P ( y = k ∣ x ( i ) ) J(w)=-\sum_{i=1}^m\sum_{k=1}^c y_k^{(i)}\log P(y=k|x^{(i)}) J(w)=i=1mk=1cyk(i)logP(y=kx(i))

其中 y k ( i ) y_k^{(i)} yk(i)是训练样本 i i i的真实类别(如果样本 i i i属于类别 k k k,则 y k ( i ) = 1 y_k^{(i)}=1 yk(i)=1,否则 y k ( i ) = 0 y_k^{(i)}=0 yk(i)=0)。我们可以使用梯度下降法来最小化损失函数,并更新权重向量 w w w

w j : = w j − α ∂ J ( w ) ∂ w j w_j:=w_j-\alpha\frac{\partial J(w)}{\partial w_j} wj:=wjαwjJ(w)

其中 α \alpha α是学习率。

现在我们需要计算损失函数的梯度。对于权重向量 w k w_k wk中的每个元素 w j k w_{jk} wjk,我们可以得到以下梯度公式:

∂ J ( w ) ∂ w j k = − ∑ i = 1 m ( y k ( i ) − e w k T x ( i ) ∑ j = 1 c e w j T x ( i ) ) x j ( i ) \frac{\partial J(w)}{\partial w_{jk}}=-\sum_{i=1}^m \left(y_k^{(i)} - \frac{e^{w_k^Tx^{(i)}}}{\sum_{j=1}^ce^{w_j^Tx^{(i)}}}\right)x_j^{(i)} wjkJ(w)=i=1m(yk(i)j=1cewjTx(i)ewkTx(i))xj(i)

这个梯度公式的形式与线性回归的梯度公式非常相似。在实践中,我们通常使用随机梯度下降法来优化损失函数。

最后,让我们总结一下softmax回归的推导过程。我们从线性回归开始推导,然后将其推广到多类别分类问题。通过使用softmax函数将线性回归的输出转换为概率分布,我们可以定义负对数似然函数来度量分类误差,并使用梯度下降法来最小化损失函数。梯度下降法的更新公式使用了损失函数的梯度,我们可以通过对损失函数求偏导数来计算权重向量的梯度。最后,我们可以使用随机梯度下降法来加速优化过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值