3. softmax回归

softxmax回归推导

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

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

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

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

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

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

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

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

∂∂wj∑i=1m(y^(i)−y(i))2=2∑i=1m(y^(i)−y(i))xj(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=1m(y^(i)−y(i))2=2∑i=1m(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))

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

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

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

其中α\alphaα是学习率。

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

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

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

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

y^=softmax(wTx)=[P(y=1∣x)P(y=2∣x)…P(y=c∣x)]=1∑j=1cewjTx[ew1Txew2Tx…ewcTx]\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=1m∑k=1cyk(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))

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

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

其中α\alphaα是学习率。

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

∂J(w)∂wjk=−∑i=1m(yk(i)−ewkTx(i)∑j=1cewjTx(i))xj(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函数将线性回归的输出转换为概率分布,我们可以定义负对数似然函数来度量分类误差,并使用梯度下降法来最小化损失函数。梯度下降法的更新公式使用了损失函数的梯度,我们可以通过对损失函数求偏导数来计算权重向量的梯度。最后,我们可以使用随机梯度下降法来加速优化过程。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐