机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

时间:2022-10-31 14:22:08

本文简单整理了以下内容:

(一)线性回归

(二)二分类:二项Logistic回归

(三)多分类:Softmax回归

(四)广义线性模型

闲话:二项Logistic回归是我去年入门机器学习时学的第一个模型(忘记了为什么看完《统计学习方法》第一章之后直接就跳去了第六章,好像是对“逻辑斯蒂”这个名字很感兴趣?。。。),对照《机器学习实战》写了几行代码敲了一个toy版本,当时觉得还是挺有意思的。我觉得这个模型很适合用来入门(但是必须注意这个模型有很多很多很多很多可以展开的地方)。更有意思的是那时候还不会矩阵微积分,推导梯度时还是把矩阵全都展开求然后再归纳成矩阵形式的(牛顿法要用的二阶梯度也是)。。。

下面的文字中,“Logistic回归”都表示用于二分类的二项Logistic回归。

首先约定一下记号。

样本的特征矩阵 $X=(\textbf x_1,\textbf x_2,...,\textbf x_N)=({\textbf x^{(1)}}^{\top};{\textbf x^{(2)}}^{\top};...;{\textbf x^{(d)}}^{\top})\in\mathbb R^{d\times N}$ ,$X_{ji}=x_i^{(j)}$;

$N$ 是训练集的样本数,每个样本都表示成 $\textbf x_i\in\mathbb R^d$ 的列向量,真实标签为 $y_i$ ;如果出现了 $\textbf x$ 这样没有上下标的记号就泛指任一样本,相当于省略下标,真实标签为 $y$ ;特别地,对于二分类问题,$y$ 只可能取0、1两个值。

$d$ 是特征的维数,每维特征都表示成 $\textbf x^{(j)}\in\mathbb R^N$ 的列向量;如果出现了 $x^{(j)}$ 这样的记号就泛指任一样本的第 $j$ 维特征,相当于省略下标;

权重向量 $\textbf w=(w_1,w_2,...,w_d)^{\top}\in\mathbb R^d$ ,偏置 $b\in\mathbb R$ 。

$\textbf y$ 在本文可能表达两种含义:一种是表示全部训练样本的真实标签组成的列向量 $\textbf y=(y_1,y_2,...,y_N)^{\top}\in\mathbb R^N$ ;另一种含义则是表示样本 $\textbf x$ 的one-hot表示 $\textbf y=(0,0,...,0,1,0,...,0)^{\top}\in\mathbb R^C$(只有真实类别的那一维是1,其他维均是0),相当于 $\textbf y_i$ 省略了下标。

可能看起来有点别扭,因为对于样本来说,下标是序号索引、上标是特征索引;而对于权重来说,下标是特征索引。

(一)线性回归

    1. 概述

线性回归(Linear regression)就是用一个超平面去拟合样本点的标签:

$$f(\textbf x)=\textbf w^{\top}\textbf x+b$$

对于一维特征的情况,就是用一条直线去拟合样本点,如下图所示。为了方便起见,将偏置也记到权重向量中并保持记号不变,同时每个样本增加一维特征并保持记号不变:$\textbf w=(1,w_1,w_3,...,w_d)^{\top}$ ,$\textbf x=(1,x^{(1)},x^{(2)},...,x^{(d)})^{\top}$ ,$f(\textbf x)=\textbf w^{\top}\textbf x$ 。

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

图片来源:[1]

2. 求解

对于回归任务,最常使用的损失函数是平方损失函数 $L(y,f(\textbf x))=(y-f(\textbf x))^2$ ,对应的经验风险就是均方误差(Mean square error,MSE)

$$\mathcal R=\frac1N\sum_{i=1}^N(y_i-f(\textbf x_i))^2=\frac1N\|X^{\top}\textbf w-\textbf y\|^2=\frac1N(X^{\top}\textbf w-\textbf y)^{\top}(X^{\top}\textbf w-\textbf y)$$

该式的 $\textbf y$ 表示全部训练样本的真实标签组成的列向量 $\textbf y=(y_1,y_2,...,y_N)^{\top}\in\mathbb R^N$ 。

解一:正规方程组(Normal equations。可以直接用 $R$ 的一阶导数等于0来求极值点(省略常系数):

$$\frac{\partial \mathcal R}{\partial\textbf w}=2X(X^{\top}\textbf w-\textbf y)=0\Rightarrow \textbf w=(XX^{\top})^{-1}X\textbf y$$

可以看出,这个不就是最小二乘法(Ordinary Least Squares,OLS解方程 $X^{\top}\textbf w=\textbf y$ 嘛。值得注意的是 $(XX^{\top})^{-1}X$ 其实就是 $X^{\top}$ 的伪逆,计算伪逆的复杂度很高。

需要注意一个问题:$XX^{\top}$ 需要是可逆矩阵,也就是说每维特征之间线性无关,才可以求得唯一解。当其不可逆(特征个数比样本个数还要多)时,解不唯一,需要用梯度下降(Gradient descent)来迭代求解。另外,最小二乘法的结果总是低偏差高方差的。

(注:部分求导法则,使用分母布局,维度为 $q$ 的列向量对维度为 $p$ 的列向量求导后得到的矩阵维数为 $p\times q$ 。关于矩阵求导,可以参考 [8] 。

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

图片来源:[1]

$$\frac{\partial A^{\top}\textbf x}{\partial\textbf x}=\frac{\partial \textbf x^{\top}A}{\partial\textbf x}=A$$

$$\frac{\partial \textbf y^{\top}\textbf z}{\partial\textbf x}=\frac{\partial \textbf y}{\partial\textbf x}\textbf z+\frac{\partial \textbf z}{\partial\textbf x}\textbf y$$

$$\frac{\partial \textbf y^{\top}A\textbf z}{\partial\textbf x}=\frac{\partial \textbf y}{\partial\textbf x}A\textbf z+\frac{\partial \textbf z}{\partial\textbf x}A^{\top}\textbf y$$

$$\frac{\partial y\textbf z}{\partial\textbf x}=\frac{\partial y}{\partial\textbf x}\textbf z^{\top}+y\frac{\partial \textbf z}{\partial\textbf x}$$

$$\frac{\partial \text{tr}AB}{\partial A}=B^{\top}\quad\quad\frac{\partial \text{tr}AB}{\partial A^{\top}}=B$$

$$\frac{\partial f(A)}{\partial A^{\top}}=(\frac{\partial f(A)}{\partial A})^{\top}$$

解二:最小均方误差(least mean squares,LMS)规则,也叫Widrow-Hoff规则,用梯度下降法求解。梯度在上面已经求出来了:

$$\frac{\partial \mathcal R}{\partial\textbf w}=2X(X^{\top}\textbf w-\textbf y)=2X(\hat{\textbf y}-\textbf y)$$

该式的 $\hat{\textbf y}$ 表示模型对全部训练样本的输出标签组成的列向量 $\hat{\textbf y}=(\hat y_1,\hat y_2,...,\hat y_N)^{\top}\in\mathbb R^N$ 。

这样的方式是每更新一次参数就要计算整个训练集上的梯度,是批梯度下降(batch GD);如果把这个过程拆成 $N$ 次,也就是每次只随机挑选一个样本计算梯度,就是随机梯度下降(Stochastic GD,SGD)。还有一种是mini-batch梯度下降,每次挑选一个小批量样本计算梯度。整个训练集计算完一次梯度称为“一轮”。

3. 均方误差优化目标的概率解释

重新考虑以下问题:设样本的特征和标签存在关系 $y_i=\textbf w^{\top}\textbf x_i+\epsilon_i$ ,并假设每个 $\epsilon_i$ 都是服从高斯分布的随机变量 $\epsilon\sim N(0,\sigma^2)$ 的iid样本(之所以假设为高斯分布,是认为误差由多个独立的随机因素构成,根据多个独立随机变量之和趋于高斯分布,所以假设 $\epsilon$ 服从高斯分布)。从而有

$$p(\epsilon_i)=\frac1{\sqrt{2\pi}\sigma}\exp(-\frac{\epsilon_i^2}{2\sigma^2})$$

也就是说

$$p(y_i|\textbf x_i;\textbf w)=\frac1{\sqrt{2\pi}\sigma}\exp(-\frac{(y_i-\textbf w^{\top}\textbf x_i)^2}{2\sigma^2})$$

用分号隔开是因为在频率学派的观点下 $\textbf w$ 不是随机变量。

进一步用极大似然估计来求取参数 $\textbf w$ :对数似然函数为

$$l(\textbf w)=\log\prod_{i=1}^Np(y_i|\textbf x_i;\textbf w)=\log\prod_{i=1}^N\frac1{\sqrt{2\pi}\sigma}\exp(-\frac{(y_i-\textbf w^{\top}\textbf x_i)^2}{2\sigma^2})$$

再往后写一步就可以知道,极大似然估计和最小化均方误差是一致的。

4. 局部加权回归(Locally weighted regression,LWR)

相比于普通的线性回归,LWR对于一个点来说使用其附近的点来做回归(而不是全部点)。

相比于线性回归的优化目标 $\sum_{i=1}^N(y_i-\textbf w^{\top}\textbf x_i)^2$ ,局部加权线性回归的优化目标为

$$\sum_{i=1}^N\omega_i(y_i-\textbf w^{\top}\textbf x_i)^2$$

式中 $\omega_i$ 就是非负值的权重,一个常用的选择为 $\omega_i=\exp(-\frac{(\textbf x_i-\textbf x)^{\top}(\textbf x_i-\textbf x)}{2\tau^2})$ ,$\tau$ 是指定的带宽参数(bandwidth)。不难看出,LWR每预测一个点的值都要重新得到一个新的模型。

(二)二项Logistic回归

    1. 概述

对于分类任务,一个可行的思路是把基于样本 $\textbf x$ 计算出的连续值 $z$(比如,线性加权值 $z=\textbf w^{\top}\textbf x$ )和离散的类别标签值联系起来。

二项Logistic回归(Binomial logistic regression)是工业界应用非常广泛的一个经典的二分类模型。一般就叫逻辑回归,这里无意争论到底应该怎么翻译,虽然古人云“名不正则言不顺”,但提起“逻辑回归”大家都知道这是哪个东西,我觉得这就够了。对Logistic回归的历史感兴趣的朋友们可以看一下 [7] 的介绍。首先使用logistic函数 $\sigma(\cdot)$ 将 $ z$ 从实数空间 $(-\infty,+\infty)$ 映射到概率空间 $(0,1)$ 上,可以将映射之后的值 $\sigma(z)$ 解释为样本 $\textbf x$ 属于正类(记类别标记为1)的可能性,也就是后验概率的估计值:

$$\hat y=P(y=1|\textbf x)=\sigma(z)=\frac{1}{1+\exp(-z)}$$

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

既然解释成后验概率,然后就可以给出分类规则(最大后验概率决策):当 $P(y=1|\textbf x)>0.5$ ,认为样本 $\textbf x$ 属于正类;否则样本 $\textbf x$ 属于正类属于负类。

下面两个图是一维特征、二分类的情况。大致说了线性回归为什么不可以用来分类。因为线性回归输出连续值,而类别标签只有0、1两个,所以需要人为设定一个阈值,将输出值与该值比较大小,从而来判断模型将样本分到哪一类,而这个阈值会受到离群点(outlier)的牵制,因为线性回归的拟合曲线会因为离群点而受到较大影响,所以不好确定;相比之下,logistic回归不会受到图示离群点的牵制。

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

图片来源:[5]、[1]

待补充:为什么使用logistic函数归到区间 $(0,1)$ 之后就可以解释成概率了。

2. 决策边界

下面说一下决策边界。当 $P(y=1|\textbf x)=0.5$ 时,意味着 $z=0$ ,这就是决策边界的方程。换句话说,$z$ 的形式决定了逻辑回归的决策面是线性的还是非线性的。如果 $z=\textbf w^{\top}\textbf x$ ,那决策面当然是线性的;但是如果 $z$ 的形式并不是特征的线性组合,而是非线性的形式,当然也可以是非常复杂的决策面。

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型

图片来源:[1]

下面我们只讨论线性决策面的情况。Logistic回归模型为:

$$\hat y=P(y=1|\textbf x)=\sigma(\textbf w^{\top}\textbf x)=\frac{\exp(\textbf w^{\top}\textbf x)}{1+\exp(\textbf w^{\top}\textbf x)}$$

$$P(y=0|\textbf x)=1-\sigma(\textbf w^{\top}\textbf x)=\frac{1}{1+\exp(\textbf w^{\top}\textbf x)}$$

稍加变换就可以看出Logistic回归和线性回归的区别:

线性回归是用 $\textbf w^{\top}\textbf x$ 去拟合 $y$ ;二项Logistic回归则是去拟合 $\ln \dfrac{\hat y}{1-\hat y}$ ,换句话说就是在拟合对数几率(log-odds,几率是样本属于正类的可能性与属于负类的可能性的比值)。也就是说,二项Logistic回归在对对数几率做回归,进而转化为解决分类问题。

3. 求解

(1)经验风险最小化:极大似然估计

logistic函数 $\sigma(\cdot)$ 的导函数为 $\sigma'(\cdot)=\sigma(\cdot)\odot (\textbf 1-\sigma(\cdot))$ 。也就是说当自变量为向量时,函数对逐元素进行计算,输出同维度的向量。

首先从经验风险最小化的角度推导参数的求解过程。使用交叉熵损失函数(单标签情况下就是对数损失函数),模型对一个样本 $(\textbf x,y)$ 的对数损失为:

$$\begin{aligned}\mathcal L&=-\biggl(y\ln P(y=1|\textbf x)+(1-y)\ln P(y=0|\textbf x)\biggr)\\&=-\biggl(y\ln\frac{\exp(\textbf w^{\top}\textbf x)}{1+\exp(\textbf w^{\top}\textbf x)}+(1-y)\ln\frac{1}{1+\exp(\textbf w^{\top}\textbf x)}\biggr)\\&=-\biggl(y\textbf w^{\top}\textbf x-\ln(1+\exp(\textbf w^{\top}\textbf x))\biggr)\end{aligned}$$

所以经验风险为:

$$\mathcal R=\frac1N\sum_{i=1}^N\mathcal L_i=-\frac1N\sum_{i=1}^N\biggl(y_i\textbf w^{\top}\textbf x_i-\ln(1+\exp(\textbf w^{\top}\textbf x_i))\biggr)$$

如果不加正则的话,优化目标为上式最小化。前面的系数 $\dfrac1N$ 也就是训练样本数的倒数,是定值,去掉后不影响优化目标。

极大似然估计的角度也可以推出等价的优化目标:对数似然函数为

$$\begin{aligned}l(\textbf w)&=\ln[\prod_{i=1}^NP(y_i|\textbf x_i;\textbf w)]\\&=\ln[\prod_{i=1}^NP(y_i=1|\textbf x_i)^{y_i}P(y_i=0|\textbf x_i)^{1-y_i}]\\&=\sum_{i=1}^N\biggl(y_i\ln P(y_i=1|\textbf x_i)+(1-y_i)\ln P(y_i=0|\textbf x_i)\biggr)\end{aligned}$$

该式最大化就等价于经验风险最小化。

由于优化目标求不出解析解,但它是高阶连续可微的凸函数,所以可以用迭代的方法,如梯度下降法(GD)。

因为SGD每次迭代是随机选择一个样本,所以这里先求取模型对一个样本的损失的梯度(经验风险的梯度无非就是加个求和号再除以训练样本数而已):

$$\frac{\partial \mathcal L}{\partial\textbf w}=-\biggl(y\textbf x-\textbf x\frac{\exp(\textbf w^{\top}\textbf x)}{1+\exp(\textbf w^{\top}\textbf x)}\biggr)$$

可以发现其实它就是个特别简单的形式:

$$\frac{\partial \mathcal L}{\partial\textbf w}=-(y-\hat y)\textbf x$$

经验风险的梯度可以写成矩阵的形式( $\textbf y$ 表示训练集样本的真实标签组成的列向量),省略系数 $\dfrac1N$ :

$$\begin{aligned}\frac{\partial \mathcal R}{\partial\textbf w}&=-\sum_{i=1}^N (y_i-\sigma(\textbf w^{\top}\textbf x_i))\textbf x_i\\&= -X(\textbf y-\sigma(X^{\top}\textbf w))\\&= -X(\textbf y-\hat{\textbf y})\end{aligned}$$

可以很容易把这种批处理GD的形式改写成mini-batch SGD的形式。

不难看出,这个梯度形式和线性回归是一样的。(后面会知道,Softmax回归的梯度形式和它们也是一样的。)

这里顺便把二阶梯度也求一下,可以使用牛顿法或拟牛顿法来迭代求取参数:

$$\frac{\partial \mathcal L}{\partial\textbf w}=-(y-\sigma(\textbf w^{\top}\textbf x))\textbf x=\sigma(\textbf w^{\top}\textbf x)\textbf x -y\textbf x$$

$$\begin{aligned}\frac{\partial^2\mathcal L}{\partial\textbf w^2}&=\frac{\partial(\sigma(\textbf w^{\top}\textbf x)\textbf x -y\textbf x)}{\partial\textbf w}\\&=\frac{\sigma(\textbf w^{\top}\textbf x)}{\partial\textbf w}\textbf x^{\top}\\&=\sigma(\textbf w^{\top}\textbf x)(1-\sigma(\textbf w^{\top}\textbf x))\textbf x\textbf x^{\top}\\&=\hat y(1-\hat y)\textbf x\textbf x^{\top}\end{aligned}$$

$$\frac{\partial^2\mathcal R}{\partial\textbf w^2}=\sum_{i=1}^N\hat y_i(1-\hat y_i)\textbf x_i\textbf x_i^{\top}$$

(2)结构风险最小化:最大后验概率估计

如果将正则项加上,那就是用结构风险最小化的准则来学习参数,常用的有参数的 $L_1$ 范数(LASSO)和 $L_2$ 范数(Ridge):

$$R_{\text{srm}}=R+\lambda\|\textbf w\|_1$$

$$R_{\text{srm}}=R+\lambda\|\textbf w\|_2^2$$

从梯度的形式来看,相比于不加正则的时候,变化量为

$$\frac{\partial \|\textbf w\|_1}{\partial w_j}=\frac{\partial \sum_{j=1}^d|w_j|}{\partial w_j}=1\text{ if }w_j>0\text{ else if }w_j<0\,-1$$

$$\frac{\partial \|\textbf w\|_2^2}{\partial w_j}=\frac{\partial \sum_{j=1}^d|w_j|^2}{\partial w_j}=2w_j$$

如果 $w_j$ 为正,那么新迭代点相比之前会减去一个正数而变小;如果 $w_j$ 为负,那么新迭代点相比之前会减去一个负数而变大。也就是说避免了特别大或者特别小的权重值出现,可以使权重的绝对值变小,从而避免过于依赖某些特征的情况,减轻过拟合。

加 $L_1$ 正则时会使某些维的参数变成0,这就是所谓的稀疏解,相当于进行了一个特征选择的过程;加 $L_2$ 正则时权重的绝对值会变小,起到平滑化的作用。更详细地可以参考[4]。

如果从贝叶斯估计的角度来说,正则项相当于加上了先验知识:加 $L_1$ 正则相当于是认为参数服从Laplace分布,加 $L_2$ 正则相当于是认为参数服从均值为0、协方差为 $\frac{1}{\lambda}$ 的高斯分布。此时,结构风险最小化等价于最大后验概率估计。具体可以参考[6]。

4. 与其他模型的关系

最显然的一个就是全连接的前馈神经网络就是多层Logistic回归模型(不知道为什么被叫成MLP,多层感知机)。其与朴素贝叶斯的联系可以看本系列博客第二篇。更详细地请参考 [7] ,后面有空的话会简单谈一点。

5. 并行

这里参考[7]。

(三)Softmax回归

Softmax回归可以用于多类分类问题,而不像Logistic回归等二分类模型那样需要借助One-vs-rest。设样本 $\textbf x_i$ 的真实类别标签 $y_i\in\{1,2,...,C\}$ ,one-hot向量为 $\textbf y_i=(0,0,...,0,1,0,...,0)^{\top}\in\mathbb R^C$ (只有真实类别的那一维是1)。

与Logistic回归类似,Softmax回归输出的是样本 $\textbf x_i$ 属于各个类别的后验概率的估计值 $P(y_i=c|\textbf x_i),c\in\{1,2,...,C\}$ :

$$z_c=\textbf w_c^{\top}\textbf x_i$$

$$\begin{aligned}P(y_i=c|\textbf x_i)&=\text{softmax}(z_c)\\&=\frac{\exp(z_c)}{\sum_{j=1}^C\exp(z_j)}\\&=\frac{\exp(\textbf w_c^{\top}\textbf x_i)}{\sum_{j=1}^C\exp(\textbf w_j^{\top}\textbf x_i)},\quad c\in\{1,2,...,C\}\end{aligned}$$

将模型对一个样本 $(\textbf x_i,\textbf y_i)$ 的后验概率估计组成列向量

$$\hat{\textbf y}_i=(P(y_i=1|\textbf x),P(y_i=2|\textbf x),...,P(y_i=C|\textbf x))^{\top}\in\mathbb R^C$$

并将各个类别的权重向量 $\textbf w_c\in\mathbb R^d$ 组成权重矩阵 $W=(\textbf w_1,\textbf w_2,...,\textbf w_C)\in\mathbb R^{d\times C}$ ,可以写成如下形式:

$$\textbf z_i=(z_1,z_2,...,z_c)^{\top}=W^{\top}\textbf x_i$$

$$\begin{aligned}\hat{\textbf y}_i&=\text{softmax}(\textbf z_i)=\frac{\exp(\textbf z_i)}{\sum_{j=1}^C\exp(z_j)}\\&=\frac{\exp(W^{\top}\textbf x_i)}{\sum_{j=1}^C\exp(\textbf w_j^{\top}\textbf x)}=\frac{\exp(W^{\top}\textbf x_i)}{\textbf 1^{\top}\exp(W^{\top}\textbf x_i)}\\&=\frac{\exp(\textbf z_i)}{\textbf 1^{\top}\exp(\textbf z_i)}\end{aligned}$$

使用交叉熵损失函数,模型对一个样本 $(\textbf x_i,\textbf y_i)$ 的损失为:

$$\mathcal L_i=-\textbf y_i^{\top}\ln\hat{\textbf y}_i=-\textbf y_i^{\top}\ln\text{softmax}(\textbf z_i)=-\textbf y_i^{\top}\ln\frac{\exp(\textbf z_i)}{\textbf 1^{\top}\exp(\textbf z_i)}$$

所以经验风险(省略系数 $\dfrac1N$ )为

$$\mathcal R=\sum_{i=1}^N\mathcal L_i=-\sum_{i=1}^N\biggl(\textbf y_i^{\top}\ln\text{softmax}(W^{\top}\textbf x_i)\biggr)$$

下面求取对一个样本 $(\textbf x_i,\textbf y_i)$ 的损失的梯度。先上结论:

$$\frac{\partial \mathcal L_i}{\partial\textbf w_c}=-[\textbf y_i-\hat{\textbf y}_i]_c\textbf x_i,\quad c\in\{1,2,...,C\}$$

$$\frac{\partial \mathcal L_i}{\partial W}=-\textbf x_i(\textbf y_i-\hat{\textbf y}_i)^{\top}$$

式中 $[\textbf y_i]_c$ 表示的是向量 $\textbf y_i$ 的第 $c$ 维元素的值。

经验风险的梯度依旧可以写成矩阵的形式:

$$\frac{\partial \mathcal R}{\partial W}=\sum_{i=1}^N\frac{\partial \mathcal L_i}{\partial W}=-X(Y-\hat Y)$$

其中 $Y\in\mathbb R^{N\times C}$ 是one-hot标签构成的矩阵,每一行都是一个样本的one-hot标签;$\hat Y$ 含义类似。

Softmax回归的 $\dfrac{\partial \mathcal L_i}{\partial\textbf w_c}$ 的形式和Logistic回归的 $\dfrac{\partial \mathcal L_i}{\partial\textbf w}$ 是一样的。

下面给出推导过程。

$\dfrac{\partial \mathcal L_i}{\partial\textbf w_c}$ 的求法有三种:

(1)普通方法,一步步推,可以参考我很早之前写的一篇讲word2vec的博客,我觉得写的还挺清楚的;

(2)[1] 中的方法,在第三章;

(3)[3] 中的方法,而且用这个方法可以直接把 $\dfrac{\partial \mathcal L_i}{\partial W}$ 求出来。

$\dfrac{\partial \mathcal L_i}{\partial W}$ 推导方式可以是用 $\dfrac{\partial \mathcal L_i}{\partial\textbf w_c}$ “拼”成对矩阵 $W$ 的梯度。下面使用 [3] 里面介绍的技巧,直接求对矩阵 $W$ 的梯度。

[3] 介绍的是这样形式的求导:已知矩阵 $X$ ,函数 $f(X)$ 的函数值为标量,求 $\dfrac{\partial f}{\partial X}$ 。一种典型的例子就是求取损失对权重矩阵的导数。

对于一元微积分,$\text{d}f=f'(x)\text{d}x$ ;多元微积分,$\text{d}f=\sum_i\dfrac{\partial f}{\partial x_i}\text{d}x_i=(\dfrac{\partial f}{\partial \textbf x})^{\top}\text{d}\textbf x$;由此建立矩阵导数和微分的联系:

$$\text{d}f=\sum_{i,j}\frac{\partial f}{\partial X_{ij}}\text{d}X_{ij}=\text{tr}((\frac{\partial f}{\partial X})^{\top}\text{d}X)$$

上式第二个等号成立是因为对于两个同阶方阵有 $\text{tr}(A^{\top}B)=\sum_{i,j}A_{ij}B_{ij}$ 。求解的流程就是,先求微分 $\text{d}f$ 表达式,然后再套上迹(因为标量的迹等于标量本身),然后再把表达式 $\text{tr}(\text{d}f)$ 和 $\text{tr}((\dfrac{\partial f}{\partial X})^{\top}\text{d}X)$ 进行比对,进而把 $\dfrac{\partial f}{\partial X}$ 给“挖”出来。

所以,问题就从求梯度转化成了求微分。求微分当然少不了很多法则和技巧,下面随着讲随着介绍。接下来就来求取Softmax回归中的 $\dfrac{\partial \mathcal L}{\partial W}$ (样本序号 $i$ 被省略)。

首先求取 $\text{d}\mathcal L$ 。

$$\begin{aligned}\mathcal L&=-\textbf y^{\top}\ln\frac{\exp(\textbf z)}{\textbf 1^{\top}\exp(\textbf z)}\\&=-\textbf y^{\top}(\textbf z-\ln\begin{pmatrix}\textbf 1^{\top}\exp(\textbf z) \\ \textbf 1^{\top}\exp(\textbf z) \\ \vdots \\ \textbf 1^{\top}\exp(\textbf z)\end{pmatrix})\quad \textbf 1^{\top}\exp(\textbf z)\text{是标量}\\&=\ln(\textbf 1^{\top}\exp(\textbf z))-\textbf y^{\top}\textbf z\end{aligned}$$

根据法则 $\text{d}(g(X))=g'(X)\odot\text{d}X$ 、$\text{d}(XY)=(\text{d}X)Y+X(\text{d}Y)$,可得

$$\text{d}(\ln(\textbf 1^{\top}\exp(\textbf z)))=\frac{1}{\textbf 1^{\top}\exp(\textbf z)}\odot\text{d}(\textbf 1^{\top}\exp(\textbf z))$$

$$\text{d}(\textbf 1^{\top}\exp(\textbf z))=\textbf 1^{\top}\text{d}(\exp(\textbf z))=\textbf 1^{\top}(\exp(\textbf z)\odot\text{d}\textbf z)$$

所以

$$\text{d}\mathcal L=\frac{\textbf 1^{\top}(\exp(\textbf z)\odot\text{d}\textbf z)}{\textbf 1^{\top}\exp(\textbf z)}-\textbf y^{\top}\text{d}\textbf z$$

现在可以套上迹,根据恒等式 $\text{tr}(A^{\top}(B\odot C))=\text{tr}((A\odot B)^{\top}C)=\sum_{i,j}A_{ij}B_{ij}C_{ij}$ ,可得

$$\begin{aligned}\text{d}\mathcal L&=\text{tr}(\frac{(\textbf 1\odot \exp(\textbf z))^{\top}\text{d}\textbf z}{\textbf 1^{\top}\exp(\textbf z)})-\text{tr}(\textbf y^{\top}\text{d}\textbf z)\\&=\text{tr}(\biggl(\frac{(\exp(\textbf z))^{\top}}{\textbf 1^{\top}\exp(\textbf z)}-\textbf y^{\top}\biggr)\text{d}\textbf z)\\&=\text{tr}((\hat{\textbf y}-\textbf y)^{\top}\text{d}\textbf z)\\&=\text{tr}((\frac{\partial L}{\partial\textbf z})^{\top}\text{d}\textbf z)\end{aligned}$$

现在已经成功了一半,因为已经有了 $\dfrac{\partial \mathcal L}{\partial\textbf z}$ 。因为

$$\text{d}\textbf z=\text{d}(W^{\top}\textbf x)=(\text{d}W^{\top})\textbf x+W^{\top}\text{d}\textbf x=(\text{d}W^{\top})\textbf x$$

并且 $\text{tr}(ABC)=\text{tr}(BCA)=\text{tr}(CAB)$ ,所以有

$$\begin{aligned}\text{d}\mathcal L&=\text{tr}((\frac{\partial L}{\partial\textbf z})^{\top}(\text{d}W^{\top})\textbf x)\\&=\text{tr}(\textbf x(\frac{\partial L}{\partial\textbf z})^{\top}\text{d}W^{\top})\\&=\text{tr}((\frac{\partial L}{\partial W^{\top}})^{\top}\text{d}W^{\top})\end{aligned}$$

也就是说,$\dfrac{\partial \mathcal L}{\partial W^{\top}}=\dfrac{\partial \mathcal L}{\partial\textbf z}\textbf x^{\top}=(\hat{\textbf y}-\textbf y)\textbf x^{\top}$,所以

$$\frac{\partial \mathcal L}{\partial W}=-\textbf x(\textbf y-\hat{\textbf y})^{\top}$$

(四)广义线性模型

其实上面介绍的三种模型,都属于广义线性模型(Generalized linear model,GLM)。

1. 指数族分布

说到GLM,就不得不说指数族分布。设有一随机变量 $Y$ ,观测值为 $y$ ,那么指数族分布(Exponential family distributions)的 PDF/PMF 为如下函数:

$$p(y;\boldsymbol\eta)=b(y)\exp(\boldsymbol\eta^{\top}T(y)-a(\boldsymbol\eta))$$

式中,$\boldsymbol\eta$ 被称为nature parameter或canonical parameter,$T(y)$ 是充分统计量(通常设 $T(y)=y$ ),$a(\boldsymbol\eta)$ 是log partition function,$\exp(-a(\boldsymbol\eta))$ 用来保证PDF的积分为1(或PMF的加和为1)。把随机变量服从指数族分布记为 $ Y\sim ExponentialFamily(\boldsymbol\eta)$ 。伯努利分布(两点分布)、高斯分布、多项式分布、泊松分布、指数分布、伽马分布、贝塔分布、狄利克雷分布、维希特分布……等等都属于指数族分布。

通过选取不同的 $\boldsymbol\eta$ ,可以得到不同的分布:

例如,对于参数为 $\phi$ 两点分布,其PMF为

$$P(y;\phi)=\phi^y(1-\phi)^{1-y}=\exp(y\ln(\frac{\phi}{1-\phi})+\ln(1-\phi))$$

所以

$$\phi=\frac{1}{1+\exp(-\eta)}$$

这正是logistic函数。

再比如参数为均值 $\mu$ 、方差1的高斯分布,其PDF为

$$p(y;\mu)=\frac{1}{\sqrt{2\pi}}\exp(-\frac12(y-\mu)^2)=\frac{1}{\sqrt{2\pi}}\exp(-\frac12y^2)\exp(\mu y-\frac12\mu^2)$$

所以

$$\mu=\eta$$

2. 广义线性模型

通过指数族分布,可以构建广义线性模型。设模型的参数为 $\boldsymbol\theta$ ,对于记 $X$ 、$Y$ 分别是代表特征和标签的随机变量,观测值为 $\textbf x$ 、$y$ 。首先假定如下三点:

1. 条件分布服从指数族分布,即 $Y|X;\boldsymbol\theta\sim ExponentialFamily(\boldsymbol\eta)$ 。例如,

2. 给定特征 $\textbf x$ ,目标是预测 $E[T(y)|\textbf x]$ 。因为通常设  $T(y)=y$ ,所以目标就是预测 $E[y|\textbf x]$ 。

实际上,就相当于对模型输出值进行预测。用Logistic回归举例:模型输出值为 $P(y=1|\textbf x)$ ,随机变量 $Y$ 服从两点分布(只可能取0、1两个值),所以 $E[y|\textbf x;\boldsymbol\theta]=0\times P(y=0|\textbf x)+1\times P(y=1|\textbf x)=P(y=1|\textbf x)$

3. 指数族分布的参数 $\boldsymbol\eta$ 和给定特征 $\textbf x$ 的关系为线性:$\boldsymbol\eta=\boldsymbol\theta^{\top}\textbf x$

下面可以开始利用不同的 $\boldsymbol\eta$ 来构建GLM。

(1)线性回归

对于第一个假设,设指数族分布是参数为 $\mu$ 的高斯分布,即 $\mu=\eta$ ;那么对于第二个假设,可知模型输出值为 $\mu$ ,结合第一个假设可知模型输出值为 $\eta$ ;根据第三个假设 $\boldsymbol\eta=\boldsymbol\theta^{\top}\textbf x$ ,可知模型输出值为 $\boldsymbol\theta^{\top}\textbf x$ 。这就推导出了线性回归模型。

(2)Logistic回归

对于第一个假设,设指数族分布是参数为 $\phi$ 的伯努利分布,即 $\phi=\frac{1}{1+\exp(-\eta)}$ ;那么对于第二个假设,因为伯努利分布的期望为 $\phi$ ,可知模型输出值为 $\phi$ ;根据第三个假设 $\boldsymbol\eta=\boldsymbol\theta^{\top}\textbf x$ ,可知模型输出值为 $\phi=\frac{1}{1+\exp(-\boldsymbol\theta^{\top}\textbf x)}$ 。这就推导出了Logistic回归模型。

(3)Softmax回归

相应的指数族分布是多项式分布,代表标签的是一个随机向量 $\boldsymbol Y$ 。详细的推导这里就不赘述了,可以参考 [5] 的最后一部分。

参考资料:

[1] 《神经网络与深度学习讲义》

[2] 《统计学习方法》

[3] 《矩阵求导术(上)》

[4] 机器学习中的范数规则化之(一)L0、L1与L2范数

[5] CS229 Lecture Notes1、Lecture6 slides

[6] Regularized Regression: A Bayesian point of view

[7] 浅析Logistic Regression   (写的比我这篇真的好太多了。。。)

[8] Matrix_calculus

机器学习 —— 基础整理(五)线性回归;二项Logistic回归;Softmax回归及其梯度推导;广义线性模型的更多相关文章

  1. 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法

    这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...

  2. 机器学习之线性回归---logistic回归---softmax回归

    在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分类等问题 ...

  3. 机器学习 —— 基础整理(八)循环神经网络的BPTT算法步骤整理;梯度消失与梯度爆炸

    网上有很多Simple RNN的BPTT(Backpropagation through time,随时间反向传播)算法推导.下面用自己的记号整理一下. 我之前有个习惯是用下标表示样本序号,这里不能再 ...

  4. 机器学习 —— 基础整理(七)前馈神经网络的BP反向传播算法步骤整理

    这里把按 [1] 推导的BP算法(Backpropagation)步骤整理一下.突然想整理这个的原因是知乎上看到了一个帅呆了的求矩阵微分的方法(也就是 [2]),不得不感叹作者的功力.[1] 中直接使 ...

  5. 【分类器】感知机&plus;线性回归&plus;逻辑斯蒂回归&plus;softmax回归

    一.感知机     详细参考:https://blog.csdn.net/wodeai1235/article/details/54755735 1.模型和图像: 2.数学定义推导和优化: 3.流程 ...

  6. Softmax回归 softMax回归与logistic回归的关系

    简介 在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签  可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分 ...

  7. 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  8. python基础整理笔记(二)

    一. 列表 1. 创建实例: a = [1,2,3] b = list() 2. 主要支持的操作及其时间复杂度如下: 3. 其他 python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似 ...

  9. 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器

    本文简述了以下内容: (一)生成式模型的非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻分类器(k-nearest neighbor,kNN) (一)非参数方法(Non-param ...

随机推荐

  1. 为什么C&num;中要设计IntPtr&quest;

    示例代码: IntPtr vertex = someObj.Get().Lock(0, someObj.Get().GetSizeInBytes(), HardwareBuffer.LOCKOPTIO ...

  2. cocos2d-x 中的基本概念

    在 cocos2d-x 开头配置(Windows 平台)中,介绍了新建工程,这篇就介绍下 cocos2d-x 的一些概念.(前提是需要有C++的面向对象的基本知识和C++11的常用知识) 层,场景,导 ...

  3. c&num; 高效的线程安全队列ConcurrentQueue&lpar;下&rpar; Segment类

    Segment成员变量 long long m_index; 记录该segment的索引号. int* volatile m_state; 状态数组,标识所对应的元素节点的状态,默认值为0,如果该元素 ...

  4. POJ 1182 食物链 经典并查集&plus;关系向量简单介绍

    题目: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有 ...

  5. Win下 MySQL数据库安装与配置详解

    第一步 从官网下载安装包 (本次只写安装版的32位的mysql) 1. https://www.mysql.com/downloads/ 下载的官网地址 一直滑到最下面 然后点第一个 然后选第一个 这 ...

  6. 崩溃 golang入坑系列

    早上(11.30)收到邮件,Vultr东京机房网络故障.当时搭建SS时,考虑到了机房故障.所以特意分出了日本和香港两条线路.但千算万算,忘记数据库还在东京机房中. 现在网络故障,SS服务器无法读取数据 ...

  7. 【Dojo 1&period;x】笔记6 配置对象dojoConfig的用处和真身所在

    dojoConfig是对整个Dojo开发环境的配置,它的位置必须是页面的最前,可以是script标签也可以是独立的js文件. 它允许开发者为Dojo SDK的各个方面设置选项和默认行为. 但是,这个对 ...

  8. iOS字体大小

    1,iOS 字体大小单位是pt——磅. 英文字体的1磅,相当于1/72 英寸,约等于1/2.8mm. px:相对长度单位.像素(Pixel).(PS字体) pt:绝对长度单位.点(Point).(iO ...

  9. 如何查看Isilon节点的硬件信息?

    Isilon节点虽然是一个Linux,但是很多linux下常用的命令都没有,比如说看内存的.笔者经过试验,列出了一些可用的命令. 查看硬件状态 isi_hw_status 查看内存 sysctl hw ...

  10. GIT的使用方法

    GIT的使用方法 1.电脑首先安装GIT, 2.在官网注册GitHub账号. 一,使用git在控制台进行本地操作 1.打开GitBash 2.填写用户名和邮箱作为标识分别执行以下命令: git/ co ...