机器学习笔记三

第四讲:牛顿法、一般线性模型

回到上一讲介绍的逻辑回归:在逻辑回归中,我们用S型函数作为 g ( z ) g(z) g(z),使用梯度上升的更新规则求参数 θ \theta θ的最大似然估计。下面来介绍另一种方法:

7. 牛顿法

我们先回忆一下牛顿法找函数值零点:设函数 f :   R → R f:\ \mathbb{R}\to\mathbb{R} f: RR,我们希望找到使 f ( θ ) = 0 f(\theta)=0 f(θ)=0 θ ∈ R \theta\in\mathbb{R} θR值,牛顿法提供下面的更新规则:

θ : = θ − f ( θ ) f ′ ( θ ) \theta:=\theta-\frac{f(\theta)}{f'(\theta)} θ:=θf(θ)f(θ)

该算法的大概流程为:先做对 θ \theta θ做一次猜测 θ = θ 1 \theta=\theta_1 θ=θ1,然后过 f ( θ 1 ) f(\theta_1) f(θ1) f f f的切线,切线交横轴于点 θ 2 \theta_2 θ2(也就是切线函数值的零点),此时更新 θ = θ 2 \theta=\theta_2 θ=θ2,再过 f ( θ 2 ) f(\theta_2) f(θ2) f f f的切线,这样 θ \theta θ就可以逼近使函数值为零的 θ \theta θ取值,下面是牛顿法图解:

在最左的图中为函数 f f f的图像,我们希望找到零 f ( θ ) = 0 f(\theta)=0 f(θ)=0的点,从图中看这个点大约取在 1.3 1.3 1.3附近。假设我们初始化算法时猜测 θ ( 0 ) = 4.5 \theta^{(0)}=4.5 θ(0)=4.5,牛顿法会计算出函数 f f f ( 4.5 ,   f ( 4.5 ) ) (4.5,\ f(4.5)) (4.5, f(4.5))点的切线并解出切线的零点(即切线与 y = 0 y=0 y=0的焦点,如中图所示)。这就是第二次猜测的起点,在图中 θ ( 1 ) \theta^{(1)} θ(1)大约在 2.8 2.8 2.8附近。而最右侧的图像显示了再一次迭代的结果,这使得 θ ( 2 ) \theta^{(2)} θ(2)取到了 1.8 1.8 1.8附近。在几轮迭代之后, θ \theta θ会快速向 1.3 1.3 1.3附近收敛。

根据导数(切线斜率)的定义有 f ′ ( θ ( 0 ) ) = f ( θ ( 0 ) ) Δ f'\left(\theta^{(0)}\right)=\frac{f\left(\theta^{(0)}\right)}{\Delta} f(θ(0))=Δf(θ(0)),于是 Δ = f ( θ ( 0 ) ) f ′ ( θ ( 0 ) ) \Delta=\frac{f\left(\theta^{(0)}\right)}{f'\left(\theta^{(0)}\right)} Δ=f(θ(0))f(θ(0)),所以 θ ( 1 ) = θ ( 0 ) − Δ = θ ( 0 ) − f ( θ ( 0 ) ) f ′ ( θ ( 0 ) ) \theta^{(1)}=\theta^{(0)}-\Delta=\theta^{(0)}-\frac{f\left(\theta^{(0)}\right)}{f'\left(\theta^{(0)}\right)} θ(1)=θ(0)Δ=θ(0)f(θ(0))f(θ(0))。则对于一般情况有 θ ( t + 1 ) = θ ( t ) − f ( θ ( t ) ) f ′ ( θ ( t ) ) \theta^{(t+1)}=\theta^{(t)}-\frac{f\left(\theta^{(t)}\right)}{f'\left(\theta^{(t)}\right)} θ(t+1)=θ(t)f(θ(t))f(θ(t))

牛顿法给了我们一个求 f ( θ ) = 0 f(\theta)=0 f(θ)=0的方法,我们也可以利用它来求函数 l ( θ ) \mathscr{l}(\theta) l(θ)的最大值。函数的最大值点也就是 l ( θ ) \mathscr{l}(\theta) l(θ)一阶倒数为零的点,所以只需要替换上面方法中的 f ( θ ) = l ′ ( θ ) f(\theta)=\mathscr{l}'(\theta) f(θ)=l(θ)即可,我们可以用牛顿方法,按照下面的更新规则求出函数最大值:

θ : = θ − l ′ ( θ ) l ′ ′ ( θ ) \theta:=\theta-\frac{\mathscr{l}'(\theta)}{\mathscr{l}''(\theta)} θ:=θl′′(θ)l(θ)

上一讲中,我们在推导逻辑回归的最大值时,使用向量记法的 θ \theta θ,我们将这一标记法应用到牛顿法中,在这种多维条件下一般化的牛顿法(也称作Newton-Raphson方法)为:

θ : = θ − H − 1 ∇ θ l ( θ ) \theta:=\theta-H^{-1}\nabla_\theta\mathscr{l}(\theta) θ:=θH1θl(θ)

  • 式中的 ∇ θ l ( θ ) \nabla_\theta\mathscr{l}(\theta) θl(θ)仍然表示 l ( θ ) \mathscr{l}(\theta) l(θ)关于向量 θ \theta θ的每一个分量 θ i \theta_i θi的偏导数;
  • H H H是一个 n n n阶方阵(如果算上截距项应该是 n + 1 n+1 n+1阶方阵),称为海森矩阵(Hessian matrix),为了便于记忆可以当做是一阶导数(向量)除以二阶导数(乘以方阵的逆),方阵的定义为:

H i j = ∂ 2 l ( θ ) ∂ θ i ∂ θ j H_{ij}=\frac{\partial^2\mathscr{l}(\theta)}{\partial\theta_i\partial\theta_j} Hij=θiθj2l(θ)

相比于(批量)梯度下降法,牛顿法收敛速度通常更快,且逼近最小值时需要的迭代次数更少(牛顿收敛是一个二阶收敛(quadratic convergence))。然而牛顿法单次迭代的代价通常比梯度下降法更大,因为它需要计算整个 n n n阶方阵再求逆。通常情况下,在 n n n不是很大的条件下,牛顿法总体上更快。当我们使用牛顿法求逻辑回归中对数化似然函数 l ( θ ) \mathscr{l}(\theta) l(θ)的最大值时,这个算法也被称作Fisher scoring

第三部分:一般线性模型(Generalized Linear Models)

到目前为止,我们了解了回归问题、分类问题:在回归问题中我们设 y ∣ x ; θ ∼ N ( μ , σ 2 ) y\mid x;\theta\sim\mathcal{N}\left(\mu,\sigma^2\right) yx;θN(μ,σ2),而在分类问题中我们设 y ∣ x ; θ ∼ B e r n o u l l i ( ϕ ) y\mid x;\theta\sim\mathrm{Bernoulli}(\phi) yx;θBernoulli(ϕ),对关于 x x x θ \theta θ的函数给出合理的 μ \mu μ ϕ \phi ϕ。我们会在这一节看到,这两种假设都是一族算法模型中的特例,这一族算法模型就是我们曾经提到的一般线性模型(GLMs)。我们还将了解别的GLM家族中的模型如何推导、应用于其他分类、回归问题中。

8. 指数族(exponential family)

我们从定义指数分布族开始介绍GLMs,其中属于指数族的分布都可以写为如下形式:

p ( y ; η ) = b ( y ) exp ⁡ ( η T T ( y ) − a ( η ) ) (1) p(y;\eta)=b(y)\exp\left(\eta^TT(y)-a(\eta)\right)\tag{1} p(y;η)=b(y)exp(ηTT(y)a(η))(1)

  • 式中的 η \eta η称为分布的自然参数(natural parameter)规范参数(canonical parameter)
  • T ( y ) T(y) T(y)称为充分统计量(sufficient statistic)(对于我们涉及的分布,通常 T ( y ) = y T(y)=y T(y)=y);
  • a ( η ) a(\eta) a(η)称为对数配分函数(log partition function)
  • e − a ( η ) e^{-a(\eta)} ea(η)这个量起到标准化常量的作用,它使得 p ( y ; η ) p(y;\eta) p(y;η)求和(离散)或对 y y y求积分(连续)的结果等于 1 1 1

如果选定了 T ,   a ,   b T,\ a,\ b T, a, b,就能够定义出由 η \eta η参数化的一族(或一个集合)分布,之后,我们通过改变 η \eta η就能获得这一族分布中不同的分布函数。

我们将展示伯努利分布和高斯分布都是指数分布族中的特例。期望为 ϕ \phi ϕ的伯努利分布写作 B e r n o u l l i ( ϕ ) \mathrm{Bernoulli}(\phi) Bernoulli(ϕ),分布 y ∈ { 0 ,   1 } y\in\{0,\ 1\} y{0, 1}上取值,所以 p ( y = 1 ; ϕ ) = p ;   p ( y = 0 ; ϕ ) = 1 − ϕ p(y=1;\phi)=p;\ p(y=0;\phi)=1-\phi p(y=1;ϕ)=p; p(y=0;ϕ)=1ϕ,我们改变 ϕ \phi ϕ则会得到有不同期望值的伯努利分布。这一类由 ϕ \phi ϕ确定的伯努利分布就在指数分布族中,即将 ( 1 ) (1) (1)式中的 T ,   a ,   b T,\ a,\ b T, a, b确定下来后,式子就可以化为伯努利分布类型的表达式。

我们将伯努利分布写为:

p ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = exp ⁡ ( y log ⁡ ϕ + ( 1 − y ) log ⁡ ( 1 − ϕ ) ) = exp ⁡ ( ( log ⁡ ( ϕ 1 − ϕ ) ) y + l o g ( 1 − ϕ ) ) \begin{align}p(y;\phi)&=\phi^y(1-\phi)^{1-y}\\&=\exp(y\log\phi+(1-y)\log(1-\phi))\\&=\exp\left(\left(\log\left(\frac{\phi}{1-\phi}\right)\right)y+log(1-\phi)\right)\end{align} p(y;ϕ)=ϕy(1ϕ)1y=exp(ylogϕ+(1y)log(1ϕ))=exp((log(1ϕϕ))y+log(1ϕ))

因此,自然参数为 η = log ⁡ ϕ 1 − ϕ \eta=\log\frac{\phi}{1-\phi} η=log1ϕϕ,有趣的是,如果我们反过来用从 η \eta η的表达式中解出 ϕ \phi ϕ,则有 ϕ = 1 1 + e − η \phi=\frac{1}{1+e^{-\eta}} ϕ=1+eη1,这就是逻辑回归中使用的S型函数!当我们用一般线性模型(GLM)的形式表达逻辑回归时,还将再次看到这一现象。为了将伯努利分布完全用指数族分布的形式表达,我们给出其它关于指数分布族的参数:

T ( y ) = y a ( μ ) = − log ⁡ ( 1 − ϕ ) = log ⁡ ( 1 + e η ) b ( y ) = 1 \begin{align}T(y)&=y\\a(\mu)&=-\log(1-\phi)\\&=\log(1+e^{\eta})\\b(y)&=1\end{align} T(y)a(μ)b(y)=y=log(1ϕ)=log(1+eη)=1

上面的参数表明,伯努利分布在选取适当的参数 T ,   a ,   b T,\ a,\ b T, a, b后,就可以写为 ( 1 ) (1) (1)式的形式。

接下来我们考虑高斯分布。回忆由概率模型推导线性回归的过程中,我们发现方差 σ 2 \sigma^2 σ2的取值并不影响我们最终得到的参数 θ \theta θ和假设函数 h θ ( x ) h_\theta(x) hθ(x),因此我们即使选择任意的 σ 2 \sigma^2 σ2也不会对分布的表示造成任何影响。为了便于推导,令 σ 2 = 1 \sigma^2=1 σ2=1。(即使我们将 σ 2 \sigma^2 σ2以变量的形式留在概率密度函数中,高斯分布也可以表达成指数分布族的形式,此时 μ ∈ R 2 \mu\in\mathbb{R}^2 μR2变为一个由 μ ,   σ \mu,\ \sigma μ, σ表示的向量。为了将带有 σ 2 \sigma^2 σ2的高斯分布纳入GLM,我们可以给出更一般的指数族定义:

p ( y ; η , τ ) = b ( a , τ ) exp ⁡ ( η T T ( y ) − a ( η ) c ( τ ) ) p(y;\eta,\tau)=b(a,\tau)\exp\left(\frac{\eta^TT(y)-a(\eta)}{c(\tau)}\right) p(y;η,τ)=b(a,τ)exp(c(τ)ηTT(y)a(η))

上式中的 τ \tau τ称为离散参数(dispersion parameter),而高斯分布对应的 c ( τ ) = σ 2 c(\tau)=\sigma^2 c(τ)=σ2。不过,对于我们简化的高斯分布,并不需要这种更一般的表达。)

p ( y ; μ ) = 1 2 π exp ⁡ ( − 1 2 ( y − μ ) 2 ) = 1 2 π exp ⁡ ( − 1 2 y 2 ) ⋅ exp ⁡ ( μ y − 1 2 μ 2 ) \begin{align}p(y;\mu)&=\frac{1}{\sqrt{2\pi}}\exp\left(-\frac{1}{2}(y-\mu)^2\right)\\&=\frac{1}{\sqrt{2\pi}}\exp\left(-\frac{1}{2}y^2\right)\cdot\exp\left(\mu y-\frac{1}{2}\mu^2\right)\end{align} p(y;μ)=2π 1exp(21(yμ)2)=2π 1exp(21y2)exp(μy21μ2)

于是,将高斯分布写为指数族形式有:

η = μ T ( y ) = y a ( η ) = μ 2 2 = η 2 2 b ( y ) = 1 2 π exp ⁡ ( − y 2 2 ) \begin{align}\eta&=\mu\\T(y)&=y\\a(\eta)&=\frac{\mu^2}{2}=\frac{\eta^2}{2}\\b(y)&=\frac{1}{\sqrt{2\pi}}\exp\left(\frac{-y^2}{2}\right)\end{align} ηT(y)a(η)b(y)=μ=y=2μ2=2η2=2π 1exp(2y2)

指数族当然还有很多别的成员,比如:

  • 多项分布(multinomial),我们将在后面介绍,如同伯努利分布对有两个结果的事件建模一样,多项分布对有 K K K个结果的事件建模;
  • 泊松分布(Poisson),用于计数数据建模,比如样本中放射性元素衰变的书目、某网站访客的数量、商店顾客的数量;
  • 伽马分布和指数分布(the gamma and the exponential),用于非负的连续随机变量建模,如处理时间间隔,或是处理在等公交时发生的“下一辆车什么时候到”的问题;
  • 贝塔分布和狄利克雷分布(the beta and the Dirichlet),通常用于对分数进行建模,它是对概率分布进行建模的概率分布;
  • Wishart分布,这是协方差矩阵的分布。

后面的课程将介绍一种常规方法,来建立对于给定了 x , θ x,\theta x,θ的来自上述任意分布的 y y y的模型。

9. 一般线性模型建模

假如现在需要对我们商店在给定时间内客户数量 y y y做出估计,估计的依据来自诸如商店促销活动、近期广告投入、当地天气状况、给定时间是周几等等,将这些作为特征值 x x x,我们也知道泊松分布适用于预测来访者数量,那接下来该如何针对问题建立模型呢?幸运的是,泊松分布属于指数分布族,于是我们可以应用一般线性模型(GLM)。在这一节,我们将介绍针对类似问题建立一般线性模型的方法。

一般的,对于想要预测的关于 x x x的随机变量 y y y的分类或回归问题,我们为了推导出关于问题的一般线性模型,模型需要遵守以下三条关于给定 x x x y y y的条件概率的假设:

  1. y ∣ x ; θ ∼ E x p o n e n t i a l F a m i l y ( η ) y\mid x;\theta\sim\mathrm{ExponentialFamily(\eta)} yx;θExponentialFamily(η),即对于给定的 x ,   θ x,\ \theta x, θ,分布 y y y服从某个由 η \eta η参数化的指数族分布;
  2. 对于给定的 x x x,我们的目标是求出对于条件 x x x T ( y ) T(y) T(y)的期望,即 E [ T ( y ) ∣ x ] \mathrm{E}[T(y)\mid x] E[T(y)x]。而在大多数情况下 T ( y ) = y T(y)=y T(y)=y,所以我们希望学习算法得到的 h ( x ) = E [ y ∣ x ] h(x)=\mathrm{E}[y\mid x] h(x)=E[yx]。(注意,在关于 h θ ( x ) h_\theta(x) hθ(x)的选择上,这条假设既适用于逻辑回归又适用于线性回归,比如, h θ ( x ) = p ( y = 1 ∣ x ; θ ) = 0 ⋅ p ( y = 0 ∣ x ; θ ) + 1 ⋅ p ( y = 1 ∣ x ; θ ) = E [ y ∣ x ; θ ] h_\theta(x)=p(y=1\mid x;\theta)=0\cdot p(y=0\mid x;\theta)+1\cdot p(y=1\mid x;\theta)=\mathrm{E}[y\mid x;\theta] hθ(x)=p(y=1x;θ)=0p(y=0x;θ)+1p(y=1x;θ)=E[yx;θ]。)
  3. 自然参数 η \eta η(通常是实数)和输入特征值 x x x是线性关系: η = θ T x ,   η ∈ R \eta=\theta^Tx,\ \eta\in\mathbb{R} η=θTx, ηR(或者对于向量有 η i = θ i T x ,   η ∈ R ∗ \eta_i=\theta_i^Tx,\ \eta\in\mathbb{R}^* ηi=θiTx, ηR。)

第三条也许是这些假设中“最欠合理”的了,它看起来更像是构建一般线性模型的”设计决策“,而不是”假设“。这三条假设(设计决策)可以让我们得到一类十分简洁的学习算法,也就是一般线性模型,并且具有良好的特性,比如便于我们学习。此外,所得模型通常对关于 y y y的不同类型分布的建模都有良好的效果,比如我们接下来将介绍一般线性模型既能推导出逻辑回归,又能推导出普通最小二乘。

9.1 普通最小二乘法

为了证明普通最小二乘是一般线性模型中的特例,需要考虑目标变量 y y y(在一般线性模型术语中也称作响应变量(response variable))是连续的,我们使用高斯分布 N ( μ ,   σ 2 ) \mathcal{N}\left(\mu,\ \sigma^2\right) N(μ, σ2)建立关于给定 x x x y y y的条件概率模型( μ \mu μ可能与 x x x有关)。所以我们令上面的 E x p o n e n t i a l F a m i l y ( η ) \mathrm{ExponentialFamily}(\eta) ExponentialFamily(η)为高斯分布。在前面推导出的将高斯分布写为指数分布族的公式中,有 μ = η \mu=\eta μ=η,所以:

h θ ( x ) = E [ y ∣ x ; θ ] = μ = η = θ T x \begin{align}h_\theta(x)&=\mathrm{E}[y\mid x;\theta]\\&=\mu\\&=\eta\\&=\theta^Tx\end{align} hθ(x)=E[yx;θ]=μ=η=θTx

  • 第一个式子来自假设2;
  • 第二个式子根据 y ∣ x ; θ ∼ N ( μ , σ 2 ) y\mid x;\theta\sim\mathcal{N}\left(\mu,\sigma^2\right) yx;θN(μ,σ2) y y y的期望值就是 μ \mu μ
  • 第三个式子来自假设1(结合前推导出的将高斯分布写为指数分布族的公式);
  • 第四个式子来自假设3。

9.2 逻辑回归

再来考虑逻辑回归。现在主要看二元分类,也就是 y ∈ { 0 , 1 } y\in\{0,1\} y{0,1},我们很自然的联想到使用伯努利族分布对 y y y建模。在前面推导出的将伯努利分布写为指数分布族的公式中, ϕ = 1 1 + e − η \phi=\frac{1}{1+e^{-\eta}} ϕ=1+eη1。此外,如果 y ∣ x ; θ ∼ B e r n o u l l i ( ϕ ) y\mid x;\theta\sim\mathrm{Bernoulli}(\phi) yx;θBernoulli(ϕ),则 E [ y ∣ x ; θ ] = ϕ \mathrm{E}[y\mid x;\theta]=\phi E[yx;θ]=ϕ。同上面推导普通最小二乘一样:

h θ ( x ) = E [ y ∣ x ; θ ] = ϕ = 1 1 + e − η = 1 1 + e − θ T x \begin{align}h_\theta(x)&=\mathrm{E}[y\mid x;\theta]\\&=\phi\\&=\frac{1}{1+e^{-\eta}}\\&=\frac{1}{1+e^{-\theta^Tx}}\end{align} hθ(x)=E[yx;θ]=ϕ=1+eη1=1+eθTx1

于是我们得到了假设函数 h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+eθTx1,这就是上讲中逻辑函数的来源:一旦我们假设对给定 x x x y y y的条件概率服从伯努利分布,就可以推导出伯努利分布的指数分布族形式,进而得到一般线性模型的定义。

再引入一些术语,一个关于自然参数 η \eta η的函数 g g g给出了分布期望( g ( η ) = E [ T ( y ) ; η ] g(\eta)=\mathrm{E}[T(y);\eta] g(η)=E[T(y);η]),我们把这个函数称作正则响应函数(canonical response function),其逆 g − 1 g^{-1} g1称作正则关联函数(canonical link function)。对于高斯分布,正则响应函数就是 g ( η ) = η g(\eta)=\eta g(η)=η;对于伯努利分布就是逻辑函数。(很多其他教材使用 g g g正则连接函数,而用 g − 1 g^{-1} g1表示正则响应函数,但我们在这里的表示法沿用以往的机器学习课程,并将在后面的课程中继续使用这种记法。)

9.3 Softmax回归

再多看一个一般线性模型的例子:如果在分类问题中,遇到 y y y能够取 k k k个值(不再限于两个)的情况,即 y ∈ { 1 , 2 , ⋯   , k } y\in\{1,2,\cdots,k\} y{1,2,,k}。继续用垃圾邮件的例子,我们前面将一封邮件通过算法标记为”垃圾邮件“或”正常邮件“,这是一个二元分类问题,现在我们想将其分为三类:”垃圾邮件“、”私人邮件“和”工作邮件“。这个问题中,响应变量仍然是离散值,只不过变成了两个以上的值,我们因此需要使用多项分布来建立模型。

要推导此类问题的一般线性模型,我们首先得将多项分布表达成指数分布族的形式。

为了参数化有 k k k个可能取值的多项分布,我们使用 k k k个参数 ϕ 1 , ⋯   , ϕ k \phi_1,\cdots,\phi_k ϕ1,,ϕk,用来表示每个可能得取值发生的概率。然而,这样设置参数可能会有冗余(过度参数化,over-parameterized),也就是参数线性相关(如果知道任意 k − 1 k-1 k1 ϕ i \phi_i ϕi,都可以使用 ∑ i = 1 k ϕ i = 1 \displaystyle\sum_{i=1}^k\phi_i=1 i=1kϕi=1算出最后一个 未知 ϕ 未知\phi 未知ϕ的值)。所以我们应该设置 k − 1 k-1 k1个参数 ϕ 1 , ⋯   , ϕ k − 1 \phi_1,\cdots,\phi_{k-1} ϕ1,,ϕk1,则 ϕ i = p ( y = i ; ϕ ) \phi_i=p(y=i;\phi) ϕi=p(y=i;ϕ) p ( y = k ; ϕ ) = 1 − ∑ i = 1 k − 1 ϕ i p(y=k;\phi)=1-\displaystyle\sum_{i=1}^{k-1}\phi_i p(y=k;ϕ)=1i=1k1ϕi。为了写起来方便,在后面的推导中,我们令 ϕ k = 1 − ∑ i = 1 k − 1 ϕ i \phi_k=1-\displaystyle\sum_{i=1}^{k-1}\phi_i ϕk=1i=1k1ϕi,但得清楚这不是一个参数,它是从其他参数中计算出来的。

接下来我们需要定义 T ( y ) ∈ R k − 1 T(y)\in\mathbb{R}^{k-1} T(y)Rk1(多项分布是少数几个 T ( y ) ≠ y T(y)\neq y T(y)=y的概率模型):

T ( 1 ) = [ 1 0 0 ⋮ 0 ] ,   T ( 2 ) = [ 0 1 0 ⋮ 0 ] ,   T ( 3 ) = [ 0 0 1 ⋮ 0 ] ,   ⋯   ,   T ( k − 1 ) = [ 0 0 0 ⋮ 1 ] ,   T ( k ) = [ 0 0 0 ⋮ 0 ] T(1)=\begin{bmatrix}1\\0\\0\\\vdots\\0\end{bmatrix},\ T(2)=\begin{bmatrix}0\\1\\0\\\vdots\\0\end{bmatrix},\ T(3)=\begin{bmatrix}0\\0\\1\\\vdots\\0\end{bmatrix},\ \cdots,\ T(k-1)=\begin{bmatrix}0\\0\\0\\\vdots\\1\end{bmatrix},\ T(k)=\begin{bmatrix}0\\0\\0\\\vdots\\0\end{bmatrix} T(1)= 1000 , T(2)= 0100 , T(3)= 0010 , , T(k1)= 0001 , T(k)= 0000

与前面介绍的分布不同的是,这里不再是 T ( y ) = y T(y)=y T(y)=y,现在的 T ( y ) T(y) T(y)不再是一个实数,它变成了一个 k − 1 k-1 k1维向量,我们使用 ( T ( y ) ) i (T(y))_i (T(y))i表示向量 T ( y ) T(y) T(y)的第 i i i个分量。

我们再引入一个非常有用的标记:指示函数(indicator function) 1 { ⋅ } 1\{\cdot\} 1{},如果参数为真则返回 1 1 1,反之返回 0 0 0 1 { T r u e } = 1 ,   1 { F a l s e } = 0 1\{True\}=1,\ 1\{False\}=0 1{True}=1, 1{False}=0)。举个例子 1 { 2 = 3 } = 0 1\{2=3\}=0 1{2=3}=0 1 { 3 = 5 − 2 } = 1 1\{3=5-2\}=1 1{3=52}=1

我们可以利用这个函数将 T ( y ) T(y) T(y) y y y的关系表示成 ( T ( y ) ) i = 1 { y = i } (T(y))_i=1\{y=i\} (T(y))i=1{y=i}(则 T ( y ) = [ ( T ( y ) ) 1 ( T ( y ) ) 2 ⋮ ( T ( y ) ) k − 1 ] = [ 1 { y = 1 } 1 { y = 2 } ⋮ 1 { y = k − 1 } ] T(y)=\begin{bmatrix}(T(y))_1\\(T(y))_2\\\vdots\\(T(y))_{k-1}\end{bmatrix}=\begin{bmatrix}1\{y=1\}\\1\{y=2\}\\\vdots\\1\{y=k-1\}\end{bmatrix} T(y)= (T(y))1(T(y))2(T(y))k1 = 1{y=1}1{y=2}1{y=k1} ,这样就可以简洁的表示上面的一系列向量了)。更进一步,有 E [ ( T ( y ) ) i ] = P ( y = i ) = ϕ i \mathrm{E}[(T(y))_i]=P(y=i)=\phi_i E[(T(y))i]=P(y=i)=ϕi

一切准备就绪,可以开始将多项分布化为为指数分布族了:

p ( y ; ϕ ) = ϕ 1 1 { y = 1 } ϕ 2 1 { y = 2 } ⋯ ϕ k − 1 1 { y = k − 1 } ϕ k 1 { y = k } = ϕ 1 1 { y = 1 } ϕ 2 1 { y = 2 } ⋯ ϕ k − 1 1 { y = k − 1 } ϕ k 1 − ∑ i = 1 k − 1 1 { y = i } = ϕ 1 ( T ( y ) ) 1 ϕ 2 ( T ( y ) ) 2 ⋯ ϕ k − 1 ( T ( y ) ) k − 1 ϕ k 1 − ∑ i = 1 k − 1 ( T ( y ) ) i = exp ⁡ ( ( T ( y ) ) 1 log ⁡ ( ϕ 1 ) + ( T ( y ) ) 2 log ⁡ ( ϕ 2 ) + ⋯ + ( T ( y ) ) k − 1 log ⁡ ( ϕ k − 1 ) + ( 1 − ∑ i = 1 k − 1 ( T ( y ) ) i ) log ⁡ ( ϕ k ) ) = exp ⁡ ( ( T ( y ) ) 1 log ⁡ ( ϕ 1 ϕ k ) + ( T ( y ) ) 2 log ⁡ ( ϕ 2 ϕ k ) + ⋯ + ( T ( y ) ) k − 1 log ⁡ ( ϕ k − 1 ϕ k ) + log ⁡ ( ϕ k ) ) = b ( y ) exp ⁡ ( η T T ( y ) − a ( η ) ) \begin{align}p(y;\phi)&=\phi_1^{1\{y=1\}}\phi_2^{1\{y=2\}}\cdots\phi_{k-1}^{1\{y=k-1\}}\phi_k^{1\{y=k\}}\\&=\phi_1^{1\{y=1\}}\phi_2^{1\{y=2\}}\cdots\phi_{k-1}^{1\{y=k-1\}}\phi_k^{1-\sum_{i=1}^{k-1}1\{y=i\}}\\&=\phi_1^{(T(y))_1}\phi_2^{(T(y))_2}\cdots\phi_{k-1}^{(T(y))_{k-1}}\phi_k^{1-\sum_{i=1}^{k-1}(T(y))_i}\\&=\exp\left((T(y))_1\log(\phi_1)+(T(y))_2\log(\phi_2)+\cdots+(T(y))_{k-1}\log(\phi_{k-1})+\left(1-\sum_{i=1}^{k-1}(T(y))_i\right)\log(\phi_k)\right)\\&=\exp\left((T(y))_1\log\left(\frac{\phi_1}{\phi_k}\right)+(T(y))_2\log\left(\frac{\phi_2}{\phi_k}\right)+\cdots+(T(y))_{k-1}\log\left(\frac{\phi_{k-1}}{\phi_k}\right)+\log(\phi_k)\right)\\&=b(y)\exp\left(\eta^TT(y)-a(\eta)\right)\end{align} p(y;ϕ)=ϕ11{y=1}ϕ21{y=2}ϕk11{y=k1}ϕk1{y=k}=ϕ11{y=1}ϕ21{y=2}ϕk11{y=k1}ϕk1i=1k11{y=i}=ϕ1(T(y))1ϕ2(T(y))2ϕk1(T(y))k1ϕk1i=1k1(T(y))i=exp((T(y))1log(ϕ1)+(T(y))2log(ϕ2)++(T(y))k1log(ϕk1)+(1i=1k1(T(y))i)log(ϕk))=exp((T(y))1log(ϕkϕ1)+(T(y))2log(ϕkϕ2)++(T(y))k1log(ϕkϕk1)+log(ϕk))=b(y)exp(ηTT(y)a(η))

对于此式有(注意这里的 ϕ k = 1 − ∑ i = 1 k − 1 ϕ i \phi_k=1-\displaystyle\sum_{i=1}^{k-1}\phi_i ϕk=1i=1k1ϕi,它并不是一个参数):

η T = [ log ⁡ ϕ 1 ϕ k log ⁡ ϕ 2 ϕ k ⋯ log ⁡ ϕ k − 1 ϕ k ] a ( η ) = − log ⁡ ( ϕ k ) b ( y ) = 1 \begin{align}\eta^T&=\begin{bmatrix}\log\frac{\phi_1}{\phi_k}&\log\frac{\phi_2}{\phi_k}&\cdots&\log\frac{\phi_{k-1}}{\phi_k}\end{bmatrix}\\a(\eta)&=-\log(\phi_k)\\b(y)&=1\end{align} ηTa(η)b(y)=[logϕkϕ1logϕkϕ2logϕkϕk1]=log(ϕk)=1

于是我们将多项分布写成了指数分布族的形式。

正则连接函数为(参数 η \eta η关于期望 ϕ \phi ϕ的函数):

η i = log ⁡ ϕ i ϕ k ( i = 1 , ⋯   , k − 1 ) \eta_i=\log\frac{\phi_i}{\phi_k}\quad (i=1,\cdots,k-1) ηi=logϕkϕi(i=1,,k1)

为了表示方便,我们令 η k = log ⁡ ϕ k ϕ k = 0 \eta_k=\log\frac{\phi_k}{\phi_k}=0 ηk=logϕkϕk=0,求正则响应函数(即正则连接函数的逆,期望 ϕ \phi ϕ关于参数 η \eta η的函数):

e η i = ϕ i ϕ k ϕ k e η i = ϕ i ϕ k ∑ i = 1 k e η i = ∑ i = 1 k ϕ i = 1 \begin{align}e^{\eta_i}&=\frac{\phi_i}{\phi_k}\\\phi_ke^{\eta_i}&=\phi_i\\\phi_k\sum_{i=1}^ke^{\eta_i}&=\sum_{i=1}^k\phi_i=1\end{align} eηiϕkeηiϕki=1keηi=ϕkϕi=ϕi=i=1kϕi=1

第三个式子表明 ϕ k = 1 ∑ i = 1 k e η i \phi_k=\frac{1}{\sum_{i=1}^ke^{\eta_i}} ϕk=i=1keηi1,代回第二个式子得到正则响应函数:

ϕ i = e η i ∑ i = 1 k e η i ( i = 1 , ⋯   , k − 1 ) \phi_i=\frac{e^{\eta_i}}{\sum_{i=1}^ke^{\eta_i}}\quad (i=1,\cdots,k-1) ϕi=i=1keηieηi(i=1,,k1)

这个函数是由 η \eta η ϕ \phi ϕ的映射,也叫作softmax函数。

接下来需要使用假设3,也就是 η i \eta_i ηi是输入变量 x x x的线性函数,这次我们要使用括号里关于向量 η i \eta_i ηi的定义: η i = θ i T x ,   η ∈ R k − 1 ,   i = 1 , ⋯   , k − 1 \eta_i=\theta_i^Tx,\ \eta\in\mathbb{R}^{k-1},\ i=1,\cdots,k-1 ηi=θiTx, ηRk1, i=1,,k1,这里 θ \theta θ仍旧是特征值 x x x的系数,有 θ 1 , ⋯   , θ k − 1 ∈ R n + 1 \theta_1,\cdots,\theta_{k-1}\in\mathbb{R}^{n+1} θ1,,θk1Rn+1 n n n是训练样本所取特征值的个数)。为了方便公式书写,我们依旧令 θ k = 0 \theta_k=0 θk=0,则多出来一项 η k = θ k T x = 0 \eta_k=\theta_k^Tx=0 ηk=θkTx=0,于是在 x x x条件下 y y y的概率可以表示为:

p ( y = i ∣ x ; θ ) = ϕ i = e η i ∑ i = 1 k e η j = e θ i T x ∑ j = 1 k e θ j T x \begin{align}p(y=i\mid x;\theta)&=\phi_i\\&=\frac{e^{\eta_i}}{\sum_{i=1}^ke^{\eta_j}}\\&=\frac{e^{\theta_i^Tx}}{\sum_{j=1}^ke^{\theta_j^Tx}}\tag{2}\end{align} p(y=ix;θ)=ϕi=i=1keηjeηi=j=1keθjTxeθiTx(2)

这就是在 y ∈ { 1 , ⋯   , k } y\in\{1,\cdots,k\} y{1,,k}取值下的分类问题模型,也叫作softmax回归,是一般化的逻辑回归。

此时的假设函数为:

h θ ( x ) = E [ T ( y ) ∣ x ; θ ] = E [ 1 { y = 1 } 1 { y = 2 } ⋮ x ; θ 1 { y = k − 1 } ] = [ ϕ 1 ϕ 2 ⋮ ϕ k − 1 ] = [ exp ⁡ ( θ 1 T x ) ∑ j = 1 k exp ⁡ ( θ j T x ) exp ⁡ ( θ 2 T x ) ∑ j = 1 k exp ⁡ ( θ j T x ) ⋮ exp ⁡ ( θ k − 1 T x ) ∑ j = 1 k exp ⁡ ( θ j T x ) ] \begin{align}h_\theta(x)&=\mathrm{E}[T(y)\mid x;\theta]\\&=\mathrm{E}\left[\begin{array}{c|c}1\{y=1\}&\\1\{y=2\}&\\\vdots&x;\theta\\1\{y=k-1\}&\end{array}\right]\\&=\begin{bmatrix}\phi_1\\\phi_2\\\vdots\\\phi_{k-1}\end{bmatrix}\\&=\begin{bmatrix}\frac{\exp\left(\theta_1^Tx\right)}{\sum_{j=1}^k\exp\left(\theta_j^Tx\right)}\\\frac{\exp\left(\theta_2^Tx\right)}{\sum_{j=1}^k\exp\left(\theta_j^Tx\right)}\\\vdots\\\frac{\exp\left(\theta_{k-1}^Tx\right)}{\sum_{j=1}^k\exp\left(\theta_j^Tx\right)}\end{bmatrix}\end{align} hθ(x)=E[T(y)x;θ]=E 1{y=1}1{y=2}1{y=k1}x;θ = ϕ1ϕ2ϕk1 = j=1kexp(θjTx)exp(θ1Tx)j=1kexp(θjTx)exp(θ2Tx)j=1kexp(θjTx)exp(θk1Tx)

可以看出,假设函数会对 p ( y = i ∣ x ; θ ) p(y=i\mid x;\theta) p(y=ix;θ)的每一个 i = 1 , ⋯   , k i=1,\cdots,k i=1,,k做出概率估计(尽管我们仅把 h θ ( x ) h_\theta(x) hθ(x)定义在 k − 1 k-1 k1维,但显然第 k k k个情况的概率估计 p ( y = k ∣ x ; θ ) p(y=k\mid x;\theta) p(y=kx;θ)可以从 1 − ∑ i = 1 k − 1 ϕ i 1-\sum_{i=1}^{k-1}\phi_i 1i=1k1ϕi算出)。

最后一步就是求拟合参数了。与普通最小二乘、逻辑回归中的推导方法相似,如果训练集中有 m m m个训练样本 { ( x ( i ) , y ( i ) ) ; i = 1 , ⋯   , m } \left\{(x^{(i)},y^{(i)});i=1,\cdots,m\right\} {(x(i),y(i));i=1,,m},想通过学习算法得到 θ i \theta_i θi,则需要同以前一样,先写出似然函数:

L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( ϕ 1 1 { y ( i ) = 1 } ϕ 2 1 { y ( i ) = 2 } ⋯ ϕ k 1 { y ( i ) = k } ) = ∏ i = 1 m ( ∏ l = 1 k ( exp ⁡ ( θ l T x ( i ) ) ∑ j = 1 k exp ⁡ ( θ j T x ( j ) ) ) 1 { y ( i ) = l } ) \begin{align}L(\theta)&=\prod_{i=1}^mp\left(y^{(i)}\mid x^{(i)};\theta\right)\\&=\prod_{i=1}^m\left(\phi_1^{1\left\{y^{(i)}=1\right\}}\phi_2^{1\left\{y^{(i)}=2\right\}}\cdots\phi_k^{1\left\{y^{(i)}=k\right\}}\right)\\&=\prod_{i=1}^m\left(\prod_{l=1}^k\left(\frac{\exp\left(\theta_l^Tx^{(i)}\right)}{\sum_{j=1}^k\exp\left(\theta_j^Tx^{(j)}\right)}\right)^{1\left\{y^{(i)}=l\right\}}\right)\end{align} L(θ)=i=1mp(y(i)x(i);θ)=i=1m(ϕ11{y(i)=1}ϕ21{y(i)=2}ϕk1{y(i)=k})=i=1m l=1k(j=1kexp(θjTx(j))exp(θlTx(i)))1{y(i)=l}

再对似然函数取对数:

l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m log ⁡ ∏ l = 1 k ( exp ⁡ ( θ l T x ( i ) ) ∑ j = 1 k exp ⁡ ( θ j T x ( j ) ) ) 1 { y ( i ) = l } \begin{align}\mathscr{l}(\theta)&=\log L(\theta)\\&=\sum_{i=1}^m\log\prod_{l=1}^k\left(\frac{\exp\left(\theta_l^Tx^{(i)}\right)}{\sum_{j=1}^k\exp\left(\theta_j^Tx^{(j)}\right)}\right)^{1\left\{y^{(i)}=l\right\}}\end{align} l(θ)=logL(θ)=i=1mlogl=1k(j=1kexp(θjTx(j))exp(θlTx(i)))1{y(i)=l}

在上面的推导中我们使用了 ( 2 ) (2) (2)式给出的 p ( y = i ∣ x ; θ ) p(y=i\mid x;\theta) p(y=ix;θ)的定义,剩下的就是计算 l ( θ ) \mathscr{l}(\theta) l(θ)中参数 θ \theta θ的最大似然估计了,计算过程可以使用前面介绍的梯度上升或牛顿法。(如果取 n n n个特征值,则向量 x ∈ R n + 1 x\in\mathbb{R}^{n+1} xRn+1(含截距项 x 0 = 1 x_0=1 x0=1),有 θ j ∈ R n + 1 ,   j = 1 , ⋯   , k − 1 \theta_j\in\mathbb{R}^{n+1},\ j=1,\cdots,k-1 θjRn+1, j=1,,k1(也就是对每一个可能的 y j y_j yj都有一套 θ j \theta_j θj拟合,线性无关的共 k − 1 k-1 k1个),如果愿意的话可以把 θ j ,   i = 1 , ⋯   , k − 1 \theta_j,\ i=1,\cdots,k-1 θj, i=1,,k1组成一个矩阵,即系数矩阵 θ ∈ R ( n + 1 ) × ( k − 1 ) \theta\in\mathbb{R}^{(n+1)\times(k-1)} θR(n+1)×(k1)。)

一般线性模型建模过程可以概括为:

  1. 根据训练集 x ( i ) , y ( i ) x^{(i)},y^{(i)} x(i),y(i)选择概率分布模型,参数为 ϕ \phi ϕ
  2. 将该分布写为指数分布族的形式,参数为 η \eta η
  3. 可以得到正则响应函数 g ( η ) = E [ T ( y ) ; η ] g(\eta)=\mathrm{E}[T(y);\eta] g(η)=E[T(y);η]
  4. η = θ T x \eta=\theta^Tx η=θTx带入正则响应函数得到假设函数 h θ ( x ) = g ( θ T x ) h_\theta(x)=g(\theta^Tx) hθ(x)=g(θTx)
  5. 根据模型的概率解释得到似然函数 L ( θ ) = p ( y ( i ) ∣ x ( i ) ; θ ) L(\theta)=p(y^{(i)}\mid x^{(i)};\theta) L(θ)=p(y(i)x(i);θ)(根据假设函数得到);
  6. 取合适的 θ \theta θ使似然函数最大化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值