09 Generalized linear models and the exponential family

9.3 广义线性模型(Generalized linear models,缩写为GLMs)

线性回归和逻辑回归都属于广义线性模型的特例(McCullagh and Nelder 1989).
这些模型中输出密度都是指数族分布(参考本书9.2),而均值参数都是输入的线性组合,经过可能是非线性的函数,比如逻辑函数等等.下面就要详细讲一下广义线性模型(GLMs).为了记号简单,先看标量输出的情况.(这就排除了多远逻辑回归,不过这只是为表述简单而已.)

9.3.1 基础知识

要理解广义线性模型,首先要考虑一个标量响应变量的无条件分布(unconditional dstribution)的情况:

p ( y i ∣ θ , σ 2 ) = exp ⁡ [ y i θ − A ( θ ) σ 2 + c ( y i , σ 2 ) ] p(y_i|\theta,\sigma^2)=\exp[\frac{y_i\theta - A(\theta)}{\sigma^2}+c(y_i,\sigma^2)] p(yiθ,σ2)=exp[σ2yiθA(θ)+c(yi,σ2)](9.77)

上式中的 σ 2 \sigma^2 σ2叫做色散参数(dispersion parameter),通常设为1. θ \theta θ是自然参数,A是配分函数,c是归一化常数.例如,在逻辑回归的情况下, θ \theta θ就是对数比值比(log-odds ratio), θ = log ⁡ ( μ 1 − μ ) \theta =\log ( \frac{\mu}{1-\mu} ) θ=log(1μμ),其中 μ = E [ y ] = p ( y = 1 ) \mu=\mathrm{E}[y]=p(y=1) μ=E[y]=p(y=1)是均值参数(mean parameter),参考本书9.2.2.1.要从均值参数转成自然参数(natural parameter),可以使用一个函数 ϕ \phi ϕ,也就是 θ = Ψ ( μ ) \theta=\Psi(\mu) θ=Ψ(μ).这个函数由指数族分布的形式唯一确定(uniquely determined).实际上这是一个可逆映射(invertible mapping),所以也就有 μ = Ψ − 1 ( θ ) \mu=\Psi^{-1}(\theta) μ=Ψ1(θ).另外通过本书9.2.3可以知道这个均值可以通过对配分函数(partition function)求导而得到,也就是有 μ = Ψ − 1 ( θ ) = A ′ ( θ ) \mu=\Psi^{-1}(\theta)=A'(\theta) μ=Ψ1(θ)=A(θ).

然后加上输入/协变量(covariates).先定义一个输入特征的线性函数:

η i = w T x i \eta_i =w^T x_i ηi=wTxi(9.78)

分布Link g ( μ ) g(\mu) g(μ) θ = ψ ( μ ) \theta=\psi(\mu) θ=ψ(μ) μ = ψ − 1 ( θ ) = E [ y ] \mu =\psi^{-1}(\theta)=\mathrm{E}[y] μ=ψ1(θ)=E[y]
N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)indentity θ = μ \theta=\mu θ=μ μ = θ \mu=\theta μ=θ
B i n ( N , μ ) Bin(N,\mu) Bin(N,μ)logit θ = log ⁡ μ 1 − μ \theta=\log\frac{\mu}{1-\mu} θ=log1μμ μ = s i g m ( θ ) \mu=sigm(\theta) μ=sigm(θ)
P o i ( μ ) Poi(\mu) Poi(μ)log θ = log ⁡ ( μ ) \theta =\log(\mu) θ=log(μ) μ = e θ \mu=e^\theta μ=eθ

表 9.1 常见广义线性模型(GLMs)的连接函数(link function) ψ \psi ψ.

然后使这个分布的均值为这个线性组合的某个可逆单调函数.通过转换,得到这个函数就叫做均值函数(mean function),记作 g − 1 g^{-1} g1,所以:
μ i = g − 1 ( η i ) = g − 1 ( w T x i ) \mu_i =g^{-1}(\eta_i) =g^{-1}(w^Tx_i) μi=g1(ηi)=g1(wTxi)(9.79)

如图9.1所示为这个简单模型的总结.

均值函数(mean function)的逆函数,记作 g ( ) g() g(),就叫做连接函数(link function).我们可以随意选择任意函数来作为连接函数,只要是可逆的,以及均值函数 g ( ) g() g()有适当的范围.例如在逻辑回归里面,就设置 μ i = g − 1 ( η i ) = s i g m ( η i ) \mu_i =g^{-1}(\eta_i)=sigm(\eta_i) μi=g1(ηi)=sigm(ηi).

连接函数有一个特别简单的形式,就是 g = ϕ g=\phi g=ϕ,这也叫做规范连接函数(canonical link function).这种情况下则有 θ i = η i = w T x i \theta_i=\eta_i=w^Tx_i θi=ηi=wTxi,所以模型就成了:

p ( y i ∣ x i , w , σ 2 ) = exp ⁡ [ y i w T x i − A ( w T x i ) σ 2 + c ( y i , σ 2 ) ] p(y_i|x_i,w,\sigma^2)=\exp [\frac{y_iw^Tx_i -A(w^Tx_i)}{\sigma^2}+c(y_i,\sigma^2)] p(yixi,w,σ2)=exp[σ2yiwTxiA(wTxi)+c(yi,σ2)](9.80)

表格9.1中所示的是一些分布和规范连接函数.可见伯努利分布或者二项分布的规范连接函数是 g ( μ ) = log ⁡ ( η / ( 1 − η ) ) g(\mu)=\log (\eta/(1-\eta)) g(μ)=log(η/(1η)),而你函数是逻辑函数(logistic function) μ = s i g m ( η ) \mu =sigm(\eta) μ=sigm(η).

基于本书9.2.3的结果,可以得到响应变量的均值和方差:

E [ y ∣ x i , w , σ 2 ] = μ i = A ′ ( θ i ) (9.81) v a r [ y ∣ x i , w , σ 2 ] = σ i 2 = A ′ ′ ( θ i ) σ 2 (9.82) \begin{aligned} \mathrm{E}[y|x_i,w,\sigma^2]&= \mu_i =A'(\theta_i) &\text{(9.81)}\\ var[y|x_i,w,\sigma^2]&= \sigma_i^2 =A''(\theta_i)\sigma^2 &\text{(9.82)}\\ \end{aligned} E[yxi,w,σ2]var[yxi,w,σ2]=μi=A(θi)=σi2=A′′(θi)σ2(9.81)(9.82)

为了记好清楚,接下来就看一些简单样例.

对于线性回归,则有:

log ⁡ p ( y i ∣ x i , w , σ 2 ) = y i μ i − μ i 2 / 2 σ 2 − 1 2 ( y i 2 σ 2 + log ⁡ ( 2 π σ 2 ) ) \log p(y_i|x_i,w,\sigma^2)=\frac{y_i\mu_i-\mu_i^2/2}{\sigma^2}-\frac{1}{2}(\frac{y_i^2}{\sigma^2}+\log(2\pi\sigma^2)) logp(yixi,w,σ2)=σ2yiμiμi2/221(σ2yi2+log(2πσ2))(9.83)

其中 y i ∈ R , θ i = μ i = w T x i y_i\in R,\theta_i=\mu_i =w^Tx_i yiR,θi=μi=wTxi,而 A ( θ ) = θ 2 / 2 A(\theta)=\theta^2/2 A(θ)=θ2/2,所以 E [ y i ] = μ i , v a r [ y i ] = σ 2 \mathrm{E}[y_i]=\mu_i,var[y_i]=\sigma^2 E[yi]=μi,var[yi]=σ2.

对于二项回归(binomial regression),则有:

log ⁡ p ( y i ∣ x i , w ) = y i log ⁡ ( π i 1 − π i + N i log ⁡ ( 1 − π i ) + log ⁡ N i y i \log p(y_i|x_i,w) =y_i \log(\frac{\pi_i}{1-\pi_i}+N_i\log(1-\pi_i)+\log\begin{aligned} N_i\\ y_i \end{aligned} logp(yixi,w)=yilog(1πiπi+Nilog(1πi)+logNiyi(9.84)

其中 y i ∈ { 0 , 1 , . . . , N i } , π i = s i g m ( w T x i ) , θ i = log ⁡ ( π i / ( 1 − π i ) ) = w T x i , σ 2 = 1 y_i \in \{0,1,...,N_i\},\pi_i =sigm(w^Tx_i),\theta_i=\log (\pi_i/(1-\pi_i))=w^Tx_i,\sigma^2=1 yi{0,1,...,Ni},πi=sigm(wTxi),θi=log(πi/(1πi))=wTxi,σ2=1. A ( θ ) = N i log ⁡ ( 1 + e θ ) A(\theta)=N_i\log (1+e^\theta) A(θ)=Nilog(1+eθ),所以 E [ y i ] = N i π i = μ i , v a r [ y i ] = N i π i ( 1 − π i ) \mathrm{E}[y_i]=N_i\pi_i =\mu_i,var[y_i]= N_i\pi_i(1-\pi_i) E[yi]=Niπi=μi,var[yi]=Niπi(1πi)

对于泊松分布(poisson regression),则有:
log ⁡ p ( y i ∣ x i , w ) = y i log ⁡ μ i − μ i − log ⁡ ( y i ! ) \log p(y_i|x_i,w)= y_i \log \mu_i -\mu_i -\log(y_i!) logp(yixi,w)=yilogμiμilog(yi!)(9.85)

其中 y i ∈ { 0 , 1 , 2 , . . . } , μ i = exp ⁡ ( w T x i ) , θ = log ⁡ ( μ i ) = w T x i , σ 2 = 1 y_i\in \{0,1,2,...\},\mu_i =\exp (w^Tx_i),\theta=\log(\mu_i)=w^Tx_i,\sigma^2=1 yi{0,1,2,...},μi=exp(wTxi),θ=log(μi)=wTxi,σ2=1.而 A ( θ ) = e θ A(\theta)=e^\theta A(θ)=eθ,所以 E [ y i ] = v a r [ y i ] = μ i \mathrm{E}[y_i]=var[y_i]=\mu_i E[yi]=var[yi]=μi.泊松回归在生物统计中应用很广,其中的 y i y_i yi可能代表着给定人群或者地点的病患数目,或者高通量测序背景下基因组位置的读数数量,参考(Kuan et al. 2009).

9.3.2 最大似然估计(MLE)和最大后验估计(MAP)

广义线性模型的最重要的一个性质就是可以用和逻辑回归拟合的同样方法来进行拟合.对数似然函数形式如下所示:

l ( w ) = log ⁡ p ( D ∣ w ) = 1 σ 2 ∑ i = 1 N l i (9.86) l i = △ θ i y i − A ( θ i ) (9.87) \begin{aligned} l(w) = \log p(D|w)&= \frac{1}{\sigma^2}\sum^N_{i=1}l_i &\text{(9.86)}\\ l_i&\overset{\triangle}{=} \theta_i y_i-A(\theta_i) &\text{(9.87)}\\ \end{aligned} l(w)=logp(Dw)li=σ21i=1Nli=θiyiA(θi)(9.86)(9.87)

d l i d w j = d l i d θ i d θ i d μ i d μ i d η i d η i d w j (9.88) = ( y i − A ′ ( θ i ) ) d θ i d μ i x i j (9.89) = ( y i − μ i ) d θ i d μ i x i j (9.90) \begin{aligned} \frac{dl_i}{dw_j}&= \frac{dl_i}{d\theta_i} \frac{d\theta_i}{d\mu_i} \frac{d \mu_i}{d\eta_i} \frac{d\eta_i}{d w_j} &\text{(9.88)}\\ &= (y_i -A'(\theta_i))\frac{d\theta_i}{d\mu_i} \frac{}{} x_{ij} &\text{(9.89)}\\ &= (y_i-\mu_i)\frac{d\theta_i}{d\mu_i} \frac{}{} x_{ij} &\text{(9.90)}\\ \end{aligned} dwjdli=dθidlidμidθidηidμidwjdηi=(yiA(θi))dμidθixij=(yiμi)dμidθixij(9.88)(9.89)(9.90)

名称公式
Logistic g − 1 ( η ) = s i g m ( η ) = e η 1 + e η g^{-1}(\eta)=sigm(\eta)=\frac{e^\eta}{1+e^\eta} g1(η)=sigm(η)=1+eηeη
Probit g − 1 ( η ) = Φ ( η ) g^{-1}(\eta)=\Phi(\eta) g1(η)=Φ(η)
Log-log g − 1 ( η ) = exp ⁡ ( − exp ⁡ ( − η ) ) g^{-1}(\eta)=\exp(-\exp(-\eta)) g1(η)=exp(exp(η))
Complementary log-log g − 1 ( η ) = 1 − exp ⁡ ( − exp ⁡ ( η ) ) g^{-1}(\eta)=1-\exp(-\exp(\eta)) g1(η)=1exp(exp(η))
表格9.2 二值回归(binary regression)的一些可能的均值函数的总结.

如果使用规范连接函数 θ i = η i \theta_i = \eta_i θi=ηi,就简化成了:
∇ w l ( w ) = 1 σ 2 [ ∑ i = 1 N ( y i − μ i ) x i ] \nabla_w l(w)=\frac{1}{\sigma^2}[\sum^N_{i=1}(y_i-\mu_i)x_i] wl(w)=σ21[i=1N(yiμi)xi](9.91)

这就成了输入向量以误差为权重的求和.这可以在一个(很复杂的)梯度下降过程中用到,具体参考本书8.5.2.不过为了提高效率,还是应该用一个二阶方法.如果使用一个规范连接函数,海森矩阵(Hessian)就是:
H = − 1 σ 2 ∑ i = 1 N d μ i d θ i x i x i T = − 1 σ 2 X T S X H=-\frac{1}{\sigma^2}\sum^N_{i=1}\frac{d\mu_i}{d\theta_i} x_ix_i^T =-\frac{1}{\sigma^2}X^TSX H=σ21i=1NdθidμixixiT=σ21XTSX(9.92)

其中 S = d i a g ( d μ 1 d θ 1 , . . . , d μ N d θ N ) S= diag(\frac{d\mu_1}{d\theta_1},...,\frac{d\mu_N}{d\theta_N}) S=diag(dθ1dμ1,...,dθNdμN)是对角权重矩阵(diagonal weighting matrix).这可以用在一个迭代重加权最小二乘法(Iteratively reweighted least squares,缩写为IRLS)算法内部(参考本书8.3.4).然后可以有下面所示的牛顿更新:

w t + 1 = ( X T S t X ) − 1 X T S t z t (9.93) z t = θ t + S t − 1 ( y − μ t ) (9.94) \begin{aligned} w_{t+1}&= (X^TS_tX)^{-1}X^TS_tz_t &\text{(9.93)}\\ z_t &= \theta_t+S_t^{-1}(y-\mu_t) &\text{(9.94)}\\ \end{aligned} wt+1zt=(XTStX)1XTStzt=θt+St1(yμt)(9.93)(9.94)

其中 θ t = X w t , μ t = g − 1 ( η t ) \theta_t =Xw_t,\mu_t =g^{-1}(\eta_t) θt=Xwt,μt=g1(ηt).

如果我们扩展求导(extend derivation)来处理非规范连接函数(non-canonical links),就会发现海森矩阵(Hessian)有另外一项.不过最终期望海森矩阵(expected Hessian)和等式9.92一模一样,利用这个期望海森矩阵(也就是费舍尔信息矩阵(Fisher information matrix))来替代真实的海森矩阵就叫做费舍尔排序方法(Fisher scoring method).

修改上面的过程来进行高斯先验的最大后验估计(MAP estimation)就很简单了:只需要调整目标函数(objective),梯度*gradient)和海森矩阵(Hessian),就像是在本书8.3.6里面对逻辑回归加上 l 2 l_2 l2规范化(regularization)一样.

9.3.3 贝叶斯推导

广义线性模型(GLMs)的贝叶斯推导通常都用马尔科夫链蒙特卡罗方法(Markov chain Monte Carlo,缩写为 MCMC),参考本书24章.可用基于迭代重加权最小二乘法(IRLS-based proposal)来的Metropolis Hastings方法(Gamerman 1997),或者每个全条件(full conditional)使用自适应拒绝采样(adaptive rejection sampling,缩写为ARS)的吉布斯采样(Gibbs sampling)(Dellaportas and Smith 1993).更多信息参考(Dey et al. 2000).另外也可以用高斯近似(Gaussian approximation,本书8.4.1)或者变分推理(variational inference,本书21.8.11).

9.4 概率单位回归(Probit regression)

在(二值化)洛基回归中,用到了形式为 p ( y = 1 ∣ x i , w ) = s i g m ( w T x i ) p(y=1|x_i,w)=sigm(w^Tx_i) p(y=1∣xi,w)=sigm(wTxi)的模型.对任何从区间 [ − ∞ , ∞ ] [-\infty,\infty] [,] [ 0 , 1 ] [0,1] [0,1]进行映射的函数 g − 1 g^{-1} g1,一般都可以写出 p ( y = 1 ∣ x i , w ) = g − 1 ( w T x i ) p(y=1|x_i,w)=g^{-1}(w^Tx_i) p(y=1∣xi,w)=g1(wTxi).表格9.2所示为若干可能的均值函数.
在本节,要讲的情况是 g − 1 ( η ) = Φ ( η ) g^{-1}(\eta)=\Phi(\eta) g1(η)=Φ(η),其中的 Φ ( η ) \Phi(\eta) Φ(η)是标准正态分布(standard normal)的累积密度函数(cdf).这样就叫概率单位回归(probit regression).概率函数(probit function)和逻辑函数(logistic function)很相似,如图8.7(b)所示.不过这个模型比逻辑回归有一些优势.

9.4.1 使用基于梯度优化的最大似然估计(MLE)和最大后验估计(MAP)

我们可以对概率单位回归使用标准梯度方法来得到最大似然估计(MLE).设 μ i = w T x i , y ~ i ∈ { − 1 , + 1 } \mu_i=w^Tx_i,\tilde y_i\in \{-1,+1\} μi=wTxi,y~i{1,+1}.然后对于一个特定情况的对数似然函数的梯度就是:
g i = △ d d w log ⁡ p ( y ~ i ∣ w T x i ) = d μ i d w d d μ i log ⁡ p ( y ~ i ) ∣ w T x i ) = x i y ~ i ϕ ( μ i ) Φ ( y ~ i μ i ) g_i \overset{\triangle}{=} \frac{d}{dw}\log p(\tilde y_i|w^Tx_i)=\frac{d\mu_i}{dw}\frac{d}{d\mu_i}\log p(\tilde y_i)|w^Tx_i)=x_i\frac{\tilde y_i\phi(\mu_i)}{\Phi(\tilde y_i\mu_i)} gi=dwdlogp(y~iwTxi)=dwdμidμidlogp(y~i)wTxi)=xiΦ(y~iμi)y~iϕ(μi)(9.95)

H i = d d w 2 log ⁡ p ( y ~ i ∣ w T x i ) = − x i ( ϕ ( μ i ) 2 Φ ( y ~ i μ i ) + y ~ i μ i ϕ ( μ i ) Φ ( y ~ i μ i ) ) x i T H_i =\frac{d}{dw^2}\log p(\tilde y_i|w^Tx_i)=-x_i ( \frac{\phi(\mu_i)^2}{\Phi(\tilde y _i \mu_i)}+\frac{\tilde y_i \mu_i \phi(\mu_i)}{\Phi(\tilde y_i\mu_i)})x_i^T Hi=dw2dlogp(y~iwTxi)=xi(Φ(y~iμi)ϕ(μi)2+Φ(y~iμi)y~iμiϕ(μi))xiT(9.96)

p ( w ) = N ( 0 , V 0 ) p(w)=N(0,V_0) p(w)=N(0,V0) ∑ i g i + 2 V 0 − 1 w \sum_ig_i+2V_0^{-1}w igi+2V01w ∑ i H i + 2 V 0 − 1 \sum_iH_i+2V_0^{-1} iHi+2V01

9.4.2 潜在变量解释(latent variable interpretation)

u 0 i = △ w 0 T x i + δ 0 i (9.97) u 1 i = △ w 1 T x i + δ 1 i (9.98) y i = I ( u 1 i ≥ u 10 ) (9.99) \begin{aligned} u_{0i}& \overset{\triangle}{=} w_0^Tx_i+\delta_{0i} &\text{(9.97)}\\ u_{1i}& \overset{\triangle}{=} w_1^Tx_i+\delta_{1i} &\text{(9.98)}\\ y_i& = I(u_{1i}\ge u_{10}) &\text{(9.99)}\\ \end{aligned} u0iu1iyi=w0Txi+δ0i=w1Txi+δ1i=I(u1iu10)(9.97)(9.98)(9.99)

随机效用模型(random utility model,缩写为RUM,McFadden 1974; Train 2009).

ϵ i = δ 1 i − δ 0 i \epsilon_i=\delta_{1i}-\delta_{0i} ϵi=δ1iδ0i

z i = △ w T x i + ϵ i (9.100) ϵ i ∼ N ( 0 , 1 ) (9.101) y i = 1 = I ( z i ≥ 0 ) (9.102) \begin{aligned} z_i& \overset{\triangle}{=} w^Tx_i+\epsilon_i &\text{(9.100)}\\ \epsilon_i & \sim N(0,1) &\text{(9.101)}\\ y_i=1&=I(z_i\ge 0) &\text{(9.102)}\\ \end{aligned} ziϵiyi=1=wTxi+ϵiN(0,1)=I(zi0)(9.100)(9.101)(9.102)

根据(Fruhwirth-Schnatter and Fruhwirth 2010),将这叫做差别随机效用模型(difference random utility model,缩写为dRUM).

当边缘化去掉(marginalize out) z i z_i zi之后,就恢复(recover)了概率单位模型(probit model):

p ( y i = 1 ∣ x i , w ) = ∫ I ( z i ≥ 0 ) N ( z i ∣ w T x i , 1 ) d z i (9.103) p ( w T x i + ϵ ≥ 0 ) = p ( ϵ ≥ − w T x i ) (9.104) 1 − Φ ( − w T x i ) = Φ ( w T x i ) (9.105) \begin{aligned} p(y_i=1|x_i,w)& = \int I(z_i\ge 0)N(z_i|w^Tx_i,1)dz_i &\text{(9.103)}\\ & p(w^Tx_i+\epsilon \ge0)=p(\epsilon\ge -w^Tx_i) &\text{(9.104)}\\ & 1-\Phi(-w^Tx_i)=\Phi(w^Tx_i) &\text{(9.105)}\\ \end{aligned} p(yi=1∣xi,w)=I(zi0)N(ziwTxi,1)dzip(wTxi+ϵ0)=p(ϵwTxi)1Φ(wTxi)=Φ(wTxi)(9.103)(9.104)(9.105)

上面用到了高斯分布的对称性(symmetry).这个潜在变量解释提供了你和模型的另外一种方法,具体参考本书11.4.6.

如果我们队 δ \delta δ使用一个冈贝尔分布(Gumbel distribution),得到的就是对 ϵ i \epsilon_i ϵi的逻辑分布(logistic distribution),模型也降低到了(reduces to)逻辑回归(logistic regression).更多细节参考本书24.5.1.

9.4.3 有序概率回归(Ordinal probit regression)*

概率回归的潜在变量解释的一个优势就是很容易扩展到响应变量有序的情况下,也就是取C个离散值,以某种方式排序,比如从小到大等.这样就成了有序回归(ordinal regression).基本思想如下所述.引入 C + 1 C+1 C+1个阈值 γ j \gamma_j γj以及集合:

y i = j  if  γ j − 1 ≤ z i ≤ γ j y_i =j \text{ if } \gamma_{j-1}\le z_i\le \gamma_j yi=j if γj1ziγj(9.106)

其中的 γ 0 ≤ . . . ≤ γ C \gamma_0\le...\le \gamma_C γ0...γC.为了好辨认,就设 γ 0 = − ∞ , γ 1 = 0 , γ C = ∞ \gamma_0=-\infty,\gamma_1=0,\gamma_C=\infty γ0=,γ1=0,γC=.例如,如果 C = 2 C=2 C=2,这就降低到了标准二值化概率模型(standard binary probit model),其中 z i < 0 z_i<0 zi<0导致 y i = 0 y_i=0 yi=0,而 z i ≥ 0 z_i\ge 0 zi0对应就是 y i = 1 y_i=1 yi=1.如果C=3,就把这个实线(real line)分成了三个区间: ( − ∞ , 0 ] , ( 0 , γ 2 ] , ( γ 2 , ∞ ) (-\infty,0],(0,\gamma_2],(\gamma_2,\infty) (,0],(0,γ2],(γ2,).这时候通过调节参数 γ 2 \gamma_2 γ2就可以确保每个区间有正确相关规模的概率质量,也能符合每个类标签的经验频率(empirical frequencies).

对这个模型找最大似然估计(MLE)就可能比二值化概率回归要更麻烦点了,因为需要优化 w w w γ \gamma γ,而后面的那个必须服从一个有序约束(ordering constraint).(Kawakatsu and Largey 2009)提出了一个基于期望最大化(EM)的方法.另外从这个模型也可以推导出一个简单的吉布斯采样算法(Gibbs sampling algorithm),参考(Hoff 2009, p216).

9.4.4 多项概率模型(Multinomial probit models)*

然后考虑响应变量可以去C个无排序分类值的情况,也就是 y i ∈ { 1 , . . . , C } y_i\in \{1,...,C\} yi{1,...,C}.多项概率模型定义如下所示:

z i c = w T x i c + ϵ i c (9.107) ϵ ∼ N ( 0 , R ) (9.108) y i = arg ⁡ max ⁡ c z i c (9.109) \begin{aligned} z_{ic}& = w^Tx_{ic}+\epsilon _{ic} &\text{(9.107)}\\ \epsilon &\sim N(0,R) &\text{(9.108)}\\ y_i &= \arg\max_c z_{ic} &\text{(9.109)}\\ \end{aligned} zicϵyi=wTxic+ϵicN(0,R)=argcmaxzic(9.107)(9.108)(9.109)

关于这个模型的更多细节以及和多项逻辑回归(multinomial logistic regression)之间的关系可以去参考(Dow and Endersby 2004; Scott 2009; Fruhwirth-Schnatter and Fruhwirth 2010).(通过定义 w = [ w 1 , . . . , w C ] , x i c = [ 0 , . . . , 0 , x i , 0 , . . . , 0 ] w=[w_1,...,w_C],x_{ic}=[0,...,0,x_i,0,...,0] w=[w1,...,wC],xic=[0,...,0,xi,0,...,0],就可以恢复到更熟悉的函数方程 z i c = x i T w C z_{ic} =x_i^T w_C zic=xiTwC.)由于只有相对效用(relative utilities)有影响,可以将R限制为一个相关矩阵(correlation matrix).如果不去设 y i = arg ⁡ max ⁡ C z i c y_i=\arg\max_Cz_{ic} yi=argmaxCzic而是使用 y i c = I ( z i c > 0 ) y_{ic} =I(z_{ic}>0) yic=I(zic>0),就得到了多元概率模型(multivariate probit model),也是对于二值化输出相关的C建模的一种方法,参考(Talhouk et al. 2011).

9.5 多任务学习(multi-task learning)

有时候要对多个相关的分类或者拟合模型进行你和.通常都可能会假设不同模型之间的输入输出映射是相似的,所以可以在同时拟合所有参数来得到更好的性能.在机器学习里面,这一般叫做多任务学习 (multi-task learning,Caruana 1998), 转换学习 (transfer learning,Raina et al.2005), 或者(learning to learn,Thrun and Pratt 1997).在统计学上,通常的解决方法是分层贝叶斯模型(hierarchical Bayesian models,Bakker and Heskes 2003),当然也有一些其他方法(Chai 2010),后文会讲到.

9.5.1 多任务学习的分层贝叶斯

y i j y_{ij} yij是第j群(group)当中的第i项(item)的响应变量,其中 i = 1 : N j , j = 1 : J i= 1:N_j,j=1:J i=1:Nj,j=1:J.例如,j可以对学校进行索引,然后i就是检索该学校中的学生,然后 y i j y_{ij} yij就是这个学生的测试分数,如本书5.6.2所示.或者也可以用j来对人进行索引,然后i代表队是购买次数,这样 y i j y_{ij} yij就只带被购买的特定商品(这就叫做离散选择模型(discrete choice modeling, Train 2009).设 x i j x_{ij} xij是对应 y i j y_{ij} yij的特征向量.目标就是要对于所有的j拟合出模型 p ( y j ∣ x j ) p(y_j|x_j) p(yjxj).

虽然有的组可能有很多数据,通常都是长尾的(long tail),其中大多数组都只有很少的数据.因此不能很有把握地去分开拟合各个模型,可又不想对所有组使用同一个模型.所以就折中一下,可以对每个组拟合一个离散的模型,但设置在不同的组织间模型参数具有相似性.更具体来说就是设 E [ y i j ∣ x i j ] = g ( x i T β j ) \mathrm{E}[y_{ij}|x_{ij}]= g(x_i^T\beta _j) E[yijxij]=g(xiTβj),其中的g是广义线性模型(GLM)的连接函数(link function).另外设 β j ∼ N ( β ∗ , σ j 2 I ) , β ∗ ∼ N ( μ , σ ∗ 2 I ) \beta _j\sim N(\beta _*,\sigma_j^2 I),\beta _* \sim N(\mu,\sigma^2_*I) βjN(β,σj2I),βN(μ,σ2I).在这个模型里面,小样本规模的组就从更多样本的组借用统计强度,因为 β j \beta _j βj是和潜在通用母变量(latent common parents) β ∗ \beta _* β相关的(这一点相关内容参考本书5.5). σ j 2 \sigma_j^2 σj2这一项控制了第j组对通用母变量(common parents)的依赖程度,而 σ ∗ 2 \sigma_*^2 σ2这一项控制了全局先验的强度.

为了简单起见,假设 μ = 0 \mu=0 μ=0,这样 σ j 2 \sigma_j^2 σj2 σ ∗ 2 \sigma_*^2 σ2就都是一直的了(可以通过交叉验证来设置).全局对数概率函数(overall log probability)形式为:

log ⁡ p ( D ∣ β ) + log ⁡ p ( β ) = ∑ j [ log ⁡ p ( ( D j ∣ β j ) − ∣ ∣ β j − β ∗ ∣ ∣ 2 2 σ j 2 ) ] − ∣ ∣ β ∗ ∣ ∣ 2 2 σ ∗ 2 \log p(D|\beta )+\log p(\beta )=\sum_j [\log p((D_j|\beta _j)-\frac{||\beta _j-\beta _*||^2}{2\sigma_j^2})]-\frac{||\beta _*||^2}{2\sigma^2_*} logp(Dβ)+logp(β)=j[logp((Djβj)2σj2∣∣βjβ2)]2σ2∣∣β2(9.110)

可以使用标准梯度方法进行对 β = ( β 1 : j , β ∗ ) \beta =(\beta _{1:j},\beta _*) β=(β1:j,β)的最大后验估计(MAP).或者也可以使用迭代优化的策略,在 β j \beta _j βj β ∗ \beta _* β之间进行优化;因为似然函数和先验都是凸函数,这就保证了会收敛到全局最优解.要记住一旦一个模型训练出来了,就可以不用理会 β ∗ \beta _* β,分别使用每个模型.

9.5.2 应用:个性化垃圾邮件过滤

多任务学习的一个有趣应用就是个性化垃圾邮件过滤(personalized email spam filtering).假如要针对每个用户来拟合一个分类器 β j \beta _j βj.由于大部分用户都不会来标记他们的邮件是不是垃圾邮件,这就很难分开来对他们各自的模型进行估计.所以要设 β j \beta _j βj有一个通用的先验 β ∗ \beta _* β,表示了一个通用用户的参数.

这时候就可以利用上面的模型来估计这行为,这需要一点小技巧(Daume 2007b; Attenberg et al. 2009; Weinberger et al. 2009):将每个特征 x i x_i xi都只做两个分本,一个联接(concatenated)到用户id,另外的一份则不做联接.这样要学习的预测器(predictor)的形式就为:

E [ y i ∣ x i , u ] = ( β ∗ , w 1 , . . . , w J ) T [ x i , I ( u = 1 ) x i , . . . , I ( u = J ) x i ] \mathrm{E}[y_i|x_i,u]= (\beta _*,w_1,...,w_J)^T [x_i,I(u=1)x_i,...,I(u=J)x_i] E[yixi,u]=(β,w1,...,wJ)T[xi,I(u=1)xi,...,I(u=J)xi](9.111)

其中的u是用户id.也就是说:

E [ y i ∣ x i , u = j ] = ( β ∗ + w j ) T x i \mathrm{E}[y_i|x_i,u=j]=(\beta _*+w_j)^Tx_i E[yixi,u=j]=(β+wj)Txi(9.112)

因此 β ∗ \beta _* β就可以从每个人的邮件中来进行估计,而 w j w_j wj则只从第j个用户的邮件中来估计.

这和上面的分层贝叶斯模型具有对应关系(correspondence),定义 w j = β j − β ∗ w_j=\beta _j-\beta _* wj=βjβ.然后原始模型的对数概率函数就可以重新写成下面的形式:

∑ j [ log ⁡ p ( D j ∣ β ∗ + w j ) − f r a c ∣ ∣ w j ∣ ∣ 2 2 σ j 2 ] − ∣ ∣ β ∗ ∣ ∣ 2 2 σ ∗ 2 \sum_j [\log p(D_j|\beta _*+w_j)-frac{||w_j||^2}{2\sigma^2_j}]-\frac{||\beta _*||^2}{2\sigma^2_*} j[logp(Djβ+wj)frac∣∣wj22σj2]2σ2∣∣β2(9.113)

如果我们假设 σ j 2 = σ ∗ 2 \sigma^2_j=\sigma^2_* σj2=σ2,效果就和使用增强特征技巧(augmented feature trick)一样了,对 w i w_i wi β ∗ \beta _* β都有一样的规范化强度(regularizer strength).不过如果让这两个不相等通常能得到更好的性能(Finkel and Manning 2009).

9.5.3 应用:域自适应(Domain adaptation)

域自适应问题是要训练从不同分布取样来的数据,比如邮件和新闻报道的文本.这个问题很明显是一个多任务学习的特例,其中各个任务都相同.

(Finkel and Manning 2009)使用了上面的分层贝叶斯模型来使用域自适应来实现两个自然语言处理任务(NLP tasks),命名实体识别(namely named entity recognition)和解译(parsing).他们的研究成果比区分每个数据集来拟合分散模型有更大的进步,而对于将所有数据放到一个简单模型来拟合相比就提升较小了.

9.5.4 其他类别的先验

在多任务学习里面,通常都假设先验是高斯分布的.不过有时候也可能选择别的先验更适合.比如对于联合分析(conjoint analysis)的任务,这个任务需要想办法弄清用户最喜欢产品的哪个特征.这可以使用跟前文同样的分层贝叶斯模型设置,不过要对 β j \beta _j βj使用更加稀疏的先验(sparsity-promoting prior),而不是高斯先验.这就叫做多任务特征选择(multi-task feature selection).更多可用方法等等参考(Lenk et al. 1996; Argyriou et al. 2008).

总去假设所有任务都一样想死并不总是很合理的.如果把不同质量(qualitatively different)的任务的参数汇集到一起,计算性能回避不汇聚要更差,因为咱们先验中的归纳偏见(inductive bias)是错误的.实际上已经有研究发现有点时候多任务学习要比分开解决每个任务效果更差,这也叫做负转换(negative transfer).

这类问题的另外一个方法就是使用更灵活的先验,比如混合高斯模型.这类灵活先验可以提供健壮性,应对先验误判(prior mis-specification).更多细节参考(Xue et al.2007; Jacob et al. 2008).当然也可以把稀疏提升先验(sparsity-promoting priors)混合起来使用(Ji et al. 2009).当然也有很多其他变体方法.

9.6 广义线性混合模型(Generalized linear mixed models)*

假如将多任务学习场景扩展来允许响应变量包含分组水平(group level) x j x_j xj,和项目水平(item level) x i j x_{ij} xij.然后也允许参数 β j \beta _j βj在组间改变,或者参数 α \alpha α在组间固定.这样就得到了下面的模型:

E [ y i j ∣ x i j , x j ] = g ( ϕ ( x i j ) T β j + ϕ 2 ( x j ) T β j ′ + ϕ 3 ( x i j ) T α + ϕ t ( x j ) T α ′ ) \mathrm{E}[y_{ij}|x_{ij},x_j]=g(\phi(x_{ij})^T\beta _j+\phi_2(x_j)^T\beta '_j +\phi_3 (x_{ij})^T\alpha+\phi_t(x_j)^T\alpha') E[yijxij,xj]=g(ϕ(xij)Tβj+ϕ2(xj)Tβj+ϕ3(xij)Tα+ϕt(xj)Tα)(9.114)
其中的 ϕ k \phi_k ϕk是基函数(basis functions).这个函数如图9.2(a)所示.(这种图在本书第十章会解释.)参数 β j \beta _j βj的个数随着组个数增长而增长,而参数 α \alpha α则是固定的.

频率论里面将 β j \beta _j βj这一项叫做随机效应(random effects),因为它们在各组中随机变化;称 α \alpha α为固定效应(fixed effect),看做是一个固定但未知的敞亮.如果一个模型同时有固定效应和随机效应,就称之为混合模型(mixed model).如果 p ( y ∣ x ) p(y|x) p(yx)是一个广义线性模型(GLM),整个模型就叫做广义线性混合模型(generalized linear mixed effects model,缩写为GLMM).这种模型在统计学里面用的很普遍.

9.6.1 样例:针对医疗数据的半参数化广义线性混合模型(semi-parametric GLMMs for medical data)

下面的例子来自(Wand 2009).假如 y i j y_{ij} yij是第j个病人在第i次测量的脊椎骨矿物密度(spinal bone mineral density,缩写为SBMD).设 x i j x_{ij} xij为这个人的年龄,设 x j x_j xj为此人的种族(ethnicity),可以是白种人/亚裔/黑种人/拉丁裔.主要目标就是要判断四个种族的平均脊椎骨矿物密度是否有显著区别.数据如图9.2(b)中浅灰色线所示.其中可见脊椎骨矿物密度(SBMD)和年龄有一个非线性关系,所以可以使用一个半参数化模型(semi-parametric model)综合了线性回归和非参数化回归(Ruppert et al. 2003).另外还可以发现每个组内不同个体之间也有变化,所以要用一个混合效应模型.具体来说就是使用 ϕ 1 ( x i j ) = 1 \phi_1(x_{ij})=1 ϕ1(xij)=1来计量每个人的随机效应; ϕ 2 ( x i j ) = 0 \phi_2(x_{ij})=0 ϕ2(xij)=0,因为没有其他的按照人来变化的量; ϕ 3 ( x i j ) = [ b k ( x i j ) ] \phi_3(x_{ij})=[b_k(x_{ij})] ϕ3(xij)=[bk(xij)],其中的 b k b_k bk是第k个样条基函数(spline basis functions)(参考本书15.4.6.2),这是用来及计数年龄的非线性效应(nonlinear effect);另外还有个计算不同种族效应的 ϕ 4 ( x j ) = [ I ( x j = w ) , I ( x j = a ) , I ( x j = b ) , I ( x j = h ) ] \phi_4(x_j) =[I(x_j=w),I(x_j=a),I(x_j=b),I(x_j=h)] ϕ4(xj)=[I(xj=w),I(xj=a),I(xj=b),I(xj=h)].然后使用一个线性连接函数(linear link function).整个模型就是:

E [ y i j ∣ x i j , x j ] = β j + α T b ( x i j ) + ϵ i j (9.115) + α w ′ I ( x j = w ) + α a ′ I ( x j = a ) + α b ′ I ( x j = b ) + α h ′ I ( x j = h ) (9.116) \begin{aligned} \mathrm{E}[y_{ij}|x_{ij},x_j]& = \beta _j +\alpha^Tb(x_{ij})+\epsilon_{ij} &\text{(9.115)}\\ &+ \alpha'_wI(x_j=w)+\alpha'_aI(x_j=a)+\alpha'_bI(x_j=b)+\alpha'_hI(x_j=h) &\text{(9.116)}\\ \end{aligned} E[yijxij,xj]=βj+αTb(xij)+ϵij+αwI(xj=w)+αaI(xj=a)+αbI(xj=b)+αhI(xj=h)(9.115)(9.116)

其中 ϵ i j ∼ N ( 0 , σ y 2 ) \epsilon_{ij}\sim N(0,\sigma_y^2) ϵijN(0,σy2). α \alpha α包含了模型中和年龄相关的非参数部分, α ′ \alpha' α包含了和种族相关的参数部分,而 β j \beta _j βj则包含了随着每个人j变化的随机偏移量.将这些回归系数(regression coefficients)都赋予各自的高斯先验.然后可以进行后验推导来计算 p ( α , α ′ , β , σ 2 ∣ D ) p(\alpha,\alpha',\beta ,\sigma^2|D) p(α,α,β,σ2D)(计算细节参考本书9.6.2).你喝了模型之后,可以对每个组计算预测.结果如图9.2(b)所示.还可以进行显著性检验(significance testing),以某个种群作为基准值(比如白人),来对每个种群g计算 p ( α g − α w ∣ D ) p(\alpha_g-\alpha_w|D) p(αgαwD),这就跟本书5.2.3里面讲的一样了.

此处参考原书图9.2

9.6.2 计算问题

广义线性混合模型(GLMMs)的主要问题是不太好拟合,这有两个原因.首先是 p ( y i j ∣ θ ) p(y_{ij}|\theta) p(yijθ)可能和先验 p ( θ ) p(\theta) p(θ)未必共轭,其中 θ = ( α , β ) \theta=(\alpha,\beta ) θ=(α,β).另外一个原因是这个模型里面有两个未知层次,回归系数 θ \theta θ以及先验 η = ( μ , σ ) \eta=(\mu,\sigma) η=(μ,σ)的均值和方差.

一个方法是采用全贝叶斯方法(fully Bayesian inference methods),比如变分贝叶斯(variational Bayes,Hall et al.2011),或者马尔科夫链蒙特卡罗方法(MCMC,Gelman and Hill 2007).变分贝叶斯(VB)在本书21.5会讲到,而马尔科夫链蒙特卡罗方法(MCMC)在本书24.1.

另一种方法就是使用经验贝叶斯(empirical Bayes),在本书5.6大概讲过.在广义线性混合模型的语境下,可以使用期望最大化算法(EM algorithm,本书11.4).
其中的E步骤计算 p ( θ ∣ η , D p(\theta |\eta,D p(θη,D,而M这一步骤优化 η \eta η.如果是线性回归的情况下,E步骤就可以确切进行,但一般都不用确切计算出来,使用个近似值就行了.传统方法是使用数值正交(numerical quadrature)或者蒙特卡罗方法(Breslow and Clayton 1993).更快的方法是使用变分期望最大化(variational EM),参考Braun and McAuliffe 2010提供了对多水平离散选择模型问题使用变分期望最大化的应用案例.

在频率论统计学中,有一个拟合广义线性混合模型的流行方法叫做广义估计方程(generalized estimating equations,缩写为GEE,Hardin and Hilbe 2003).不过不推荐这个方法,因为在统计学上这个方法效率不如似然函数方法(参考本书6.4.3).另外这个方法也只能对人口参数 α \alpha α进行估计,而不能对随机效应 β j \beta _j βj进行估计,而后者可能是更需要的.

p ( y i j ∣ θ ) p(y_{ij}|\theta) p(yijθ) p ( θ ) p(\theta) p(θ) θ = ( α , β ) \theta =(\alpha,\beta ) θ=(α,β) η = ( μ , σ ) \eta =(\mu,\sigma) η=(μ,σ)

p ( θ ∣ η , D ) p(\theta|\eta,D) p(θη,D)

9.7 学习排序(Learning to rank)*

在本节降低是学习排序(learning to rank,缩写为LETOR)问题.也就是要学习一个函数,可以将一系列项目进行排序(后面会详细说具体内容).最常见的用途是信息检索(information retrieval).假如有一个检索查询(query)q,以及一系列文档 d 1 , . . . , d m d^1,...,d^m d1,...,dm,这些文档和q可能相关(比如所有文档都包含字符串q).然后我们想要对文档按照和q的相关性来降序排列,展示出其中前面k个给用户.类似问题也出现在其他领域,比如协作过滤(collaborative filtering)(在一个游戏里面对玩家进行排名或者类似的问题,具体参考本书22.5.5).

接下来简单总结一些解决这个问题的方法,这部分内容参考了(Liu 2009).这部分内容其实并不是基于广义线性模型(GLM)的,但这本书其他地方也不适合放这些内容,就放这里了,就是这么任性.

衡量文档d和查询q之间相关性的标准方法是使用一个概率语言模型(probabilistic language model),基于词汇袋模型(bag of words model).也就是定义 s i m ( q , d ) = △ p ( q ∣ d ) = ∏ i = 1 n p ( q i ∣ d ) sim(q,d)\overset{\triangle}{=} p(q|d)=\prod^n_{i=1}p(q_i|d) sim(q,d)=p(qd)=i=1np(qid),其中的 q i q_i qi是第i个查询项目或者词汇,而 p ( q i ∣ d ) p(q_i|d) p(qid)是从文档d里面估计的一个多重伯努利分布(multinoulli distribution).实际使用中需要将这个估计分布进行光滑处理,比如使用狄利克雷先验(Dirichlet prior),来表示每个词汇的全局频率(overall frequency).这可以从系统中的全部文档来估计.具体来说就是使用下面这个表达式:

p ( t ∣ d ) = ( 1 − λ ) T F ( t d ) L E N ( d ) + λ p ( t ∣ b a c k g r o u n d ) p(t|d)=(1-\lambda)\frac{TF(td)}{LEN(d)}+\lambda p(t|background) p(td)=(1λ)LEN(d)TF(td)+λp(tbackground)(9.117)

其中 T F ( t ∣ d ) TF(t|d) TF(td)是文档d中第t项的频率,而 L E N ( d ) LEN(d) LEN(d)是文档d中词汇长度,而 0 < λ < 1 0<\lambda <1 0<λ<1是光滑参数(smoothing parameter,更多细节参考 Zhai and Lafferty 2004).

不过也可能还有很多其他的信号也能用来衡量相关性.比如网络文本的页面评级(PageRank)就是对其权威性(authoritativeness)的衡量,是从网页链接结构来推导的(具体参考本书17.2.4).可以计算在一个文档中某个查询项目出现的次数和位置.接下来就讲一下如何将这些信号集中起来学习使用.

9.7.1 单点法(pointwise approach)

假如我们要收集代表一系列文档对每个查询项的相关度的训练数据.具体来说就是对每个查询q,设找到了m个可能的相关文档 d j , for j = 1 : m d_j, \text{for} j=1:m dj,forj=1:m.对每个查询文档对,定义一个特征向量 x ( q , d ) x(q,d) x(q,d).比如可能包含了查询项和文档的相似度排序,以及文档的页面评级分数(page rank score).然后假设有一系列的标签 y i y_i yi代表的是文档 d j d_j dj和查询项q之间的相关程度.这样的类标签可以十二指华东(比如是相关或不想管),或者也可以使用离散的相关程度来描述(比如很相关,有点相关,不相关).这样的类标签可以从查询项日志(query logs)获得,通过限制一个文档对于一个给定的查询项被点击的次数.

如果使用二值化相关标签,就可以使用标准二值化分类来估计 p ( y = 1 ∣ x ( q , d ) ) p(y=1|x(q,d)) p(y=1∣x(q,d)),来解决这个问题你.如果使用排序相关标签,就可以使用有序回归(ordinal regression) p ( y = r ∣ x ( q , d ) ) p(y=r|x(q,d)) p(y=rx(q,d))来预测排序.这两种情况下都可以通过排序矩阵(scoring metric)来整理文档.这就叫做学习排序(LETOR)的单点法(pointwise approach),用的很广泛,因为特别简单.不过这个方法没有将文档在列表中的各自位置考虑进去.因此对列表中最末项目和最首位项目有一样的错误惩罚,这通常就不符合预期了.另外每次对相关性的判断也都非常短视(myopically).

9.7.2 成对法(pairwise approach)

Carterette et al. 2008 的研究证明人类要更擅长判断两个对象之间的相对相性,而不是绝对相关性.结果就导致数据可能告诉我们 d j d_j dj d k d_k dk和给定的查询更相关,或者反过来.可以对这种数据使用二值化分类器来进行建模,形式为 p ( y j k ∣ x ( q , d j ) , x ( q , d k ) ) p(y_{jk}|x(q,d_j),x(q,d_k)) p(yjkx(q,dj),x(q,dk)) ,当 r e l ( d j , q ) > r e l ( d k , q ) rel(d_j,q)>rel(d_k,q) rel(dj,q)>rel(dk,q)时设 y j k = 1 y_{jk}=1 yjk=1,反之则设置 y j k = 0 y_{jk}=0 yjk=0.

对这个函数建模的一种方法如下所示:

p ( y j k = 1 ∣ x j , x k ) = s i g m ( f ( x j ) − f ( x k ) ) p(y_{jk}=1|x_j,x_k)=sigm(f(x_j)-f(x_k)) p(yjk=1∣xj,xk)=sigm(f(xj)f(xk))(9.118)

其中的 f ( x ) f(x) f(x)是排序函数,一般都设置为线性函数 f ( x ) = w T x f(x)=w^Tx f(x)=wTx.这是一类特殊的神经网络,叫做排序网络(RankNet,Burges et al. 2005,关于神经网络的讨论参考本书16.5).可以通过最大化对数似然函数来找到w的最大似然估计(MLE),或者也可以等价地对交叉熵损失函数(cross entropy loss)最小化,也就是:

L = s u m i = 1 N ∑ j = 1 m i ∑ k = j + 1 m i L i j k (9.119) − L i j k = I ( y i j k = 1 ) log ⁡ p ( y i j k = 1 ∣ x i j , x i k , w ) + I ( y i j k = 0 ) log ⁡ p ( y i j k = 0 ∣ x i j , x i k , w ) (9.120) \begin{aligned} L& =sum^N_{i=1} \sum^{m_i}_{j=1}\sum^{m_i}_{k=j+1} L_{ijk} &\text{(9.119)}\\ -L_{ijk}&=I(y_{ijk}=1)\log p(y_{ijk}=1|x_{ij},x_{ik},w) \\ & + I(y_{ijk}=0)\log p(y_{ijk}=0|x_{ij},x_{ik},w) &\text{(9.120)}\\ \end{aligned} LLijk=sumi=1Nj=1mik=j+1miLijk=I(yijk=1)logp(yijk=1∣xij,xik,w)+I(yijk=0)logp(yijk=0∣xij,xik,w)(9.119)(9.120)

这就可以使用梯度下降法来优化了.微软的Bing搜索引擎就使用了排序网络的一个变种.

9.7.3 列表法(listwise approach)

承兑发的问题就是关于相关性的决策判断只是基于一对项目或者一堆文档,而不是考虑完整的语境(context).接下来要讲的方法就要同时查看整个项目列表.

在列表上可以制定一个索引排序来定义一个全排列, π \pi π.要对关于 π \pi π的不确定性建模,就可以使用一个Plackett-Luce分布,这个分布的命名就是基于两个独立推导该公式的人(Plackett 1975)和(Luce 1959).这个分布形式如下所示:

p ( π ∣ s ) = ∏ j = 1 m s j ∑ u = j m s u p(\pi|s)=\prod^m_{j=1}\frac{s_j}{\sum^m_{u=j}s_u} p(πs)=j=1mu=jmsusj(9.121)

其中的 s j = s ( π − 1 ( j ) ) s_j=s(\pi^{-1}(j)) sj=s(π1(j))是对排在第j个位置的文档的排序.

要理解等式9.121,可以举个简单例子.设 π = ( A , B , C ) \pi =(A,B,C) π=(A,B,C).然后就得到了 p ( π ) p(\pi) p(π)是A排第一的概率,乘以A排第一的条件下B排第二的概率,再乘以AB分别排第一第二之后C排第三未知的概率,也就是说:

p ( π ∣ s ) = s A s A + s B + s C × s B s B + s C × s C s C p(\pi|s)=\frac{s_A}{s_A+s_B+s_C}\times \frac{s_B}{s_B+s_C}\times \frac{s_C}{s_C} p(πs)=sA+sB+sCsA×sB+sCsB×sCsC(9.122)

要整合特征,可以定义 s ( d ) = f ( x ( q , d ) ) s(d)=f(x(q,d)) s(d)=f(x(q,d)),通常都设f为线性函数 f ( x ) = w T x f(x)=w^Tx f(x)=wTx.这就叫做列表网络模型(ListNet model,Cao et al. 2007).要训练这个模型,设 y i y_i yi是文档对于查询项目i的相关性分数.然后就要最小化交叉熵项(cross entropy term):

− ∑ i ∑ p i p ( π ∣ y i ) log ⁡ p ( π ∣ s i ) -\sum_i\sum_pi p(\pi|y_i)\log p(\pi |s_i) ipip(πyi)logp(πsi)(9.123)

当然了,这也很困难,因为第i项目需要累加总共超过 m i ! m_i! mi!次排列才行.要让这个好处理,可以考虑只在前面的k个位置上进行排列:

p ( π 1 : k ∣ s 1 : m ) = ∏ j = 1 k s j ∑ u = 1 m s u p(\pi_{1:k}|s_{1:m}) = \prod^k_{j=1}\frac{s_j}{\sum^m_{u=1}s_u} p(π1:ks1:m)=j=1ku=1msusj(9.124)

这样就只需要 m ! / ( m − k ) ! m!/(m-k)! m!/(mk)!次这样的排列了.如果设置 k = 1 k=1 k=1,那就可以在 O ( m ) O(m) O(m)时间内计算每个交叉熵以及其导数了.

在列表中只有一个文档被认为相关的特例下,比如设 y i = c y_i=c yi=c,就可以使用多项逻辑回归(multinomial logistic regressi)了:

p ( y i = c ∣ x ) = exp ⁡ ( s C ) ∑ ( m c ′ = 1 ) exp ⁡ ( s c ′ ) p(y_i=c|x)=\frac{\exp(s_C)}{\sum^m_(c'=1)\exp(s_{c'})} p(yi=cx)=(mc=1)exp(sc)exp(sC)(9.125)

这个方法至少能达到排序方法的性能水平,至少在协作过滤(collaborative filtering)的情况下如此(Yang et al. 2011).

9.7.4 排序的损失函数

对一个排序系统的性能衡量,有好几种方法,大概如下所述.

  • 平均排序倒数(Mean reciprocal rank,缩写为MRR).对于一个查询项q,设其第一个相关文档的排序位置记作 r ( q ) r(q) r(q).然后定义一个平均排序倒数为 1 / r ( q ) 1/r(q) 1/r(q).这是很简单的性能衡量.
  • 均值平均准确率(Mean average precision,缩写为MAP,注意要和最大后验分布 MAP相区分).在二值化相关标签的情况下,可以定义某个排序在k位置上的精度如下:

P @ k ( π ) = △ num. relevant documents in the top k positions of π k P @ k(\pi)\overset{\triangle}{=} \frac{\text{num. relevant documents in the top k positions of} \pi}{k} P@k(π)=knum. relevant documents in the top k positions ofπ(9.126)

然后可以定义平均精度(average precision)如下:

A P ( π ) = △ ∑ k P @ k ( π ) × I k num relevant documents AP(\pi)\overset{\triangle}{=} \frac{\sum_k P @ k(\pi) \times I_k}{\text{num relevant documents}} AP(π)=num relevant documentskP@k(π)×Ik(9.127)

其中当且仅当文档k为相关的时候 I k I_k Ik才等于1.例如,如果有相关标签 y = ( 1 , 0 , 1 , 0 , 1 ) y = (1, 0, 1, 0, 1) y=(1,0,1,0,1),然后AP就是 1 3 ( 1 1 + 2 3 + 3 5 ) ≈ 0.76 \frac13(\frac11 +\frac23 +\frac35 )\approx 0.76 31(11+32+53)0.76最终就定义了均值平均精度(mean average precision)为对所有查询上的AP求平均值.

  • 归一化折扣累积增益(Normalized discounted cumulative gain,缩写为NDCG).假如香瓜鸟枪有多种层次.就可以定义对前面以一定次序排列的k个项目的折扣累积增益(discounted cumulative gain)如下所示:

D C G @ k ( r ) = r 1 + ∑ i = 2 k r i log ⁡ 2 i DCG @ k(r)=r_1+\sum^k_{i=2} \frac{r_i}{\log_2 i} DCG@k(r)=r1+i=2klog2iri(9.128)

其中的 r i r_i ri是第i项的相关性,而 log ⁡ 2 \log_2 log2项目是用来稍后在列表中扣除项目的.表9.3展示了一个简单的数值样本.另一重定义就是强调了检索到相关文档(retrieving relevant documents),使用的是:

D C G @ k ( r ) = ∑ i = 1 k 2 r i − 1 log ⁡ 2 ( 1 + i ) DCG @ k(r)= \sum^k_{i=1} \frac{2^{r_i}-1}{\log_2(1+i)} DCG@k(r)=i=1klog2(1+i)2ri1(9.129)

折扣累积增益(DCG)的一个问题就是只要返回列表的长度变化,这个增益的数量级就会有变化.因此通常都要用理想折扣累积增益(ideal DCG)来将其归一化,理想折扣累积增益(ideal DCG)是指通过使用最优排序来得到的DCG,即 I D C G @ k ( r ) = arg ⁡ max ⁡ π D C G @ k ( r ) IDCG @ k(r)=\arg\max_\pi DCG @ k(r) IDCG@k(r)=argmaxπDCG@k(r).最终就定义出来了归一化折扣累积增益(Normalized discounted cumulative gain,缩写为NDCG),定义为 D C G / I D C G DCG/IDCG DCG/IDCG.表9.4给出了一个简单数值样本.NDCG方法可以对查询项目进行平均然后来衡量性能.

  • 排序相关性(Rank correlation).可以在排序列表 π \pi π和相关性判断 π ∗ \pi^* π之间衡量相关性,使用的方法就很多了.比如可以使用加权肯德尔 τ \tau τ统计(weighted Kendall’s τ statistics),这个统计定义形式为两个列表间不连续的加权值对:

τ ( π , π ∗ ) = ∑ u < v w u v [ 1 + s g n ( π u − π v ) s g n ( π u ∗ − π v ∗ ) ] 2 ∑ u < v w u v \tau(\pi,\pi^*)=\frac{\sum_{u<v} w_{uv} [1+sgn(\pi_u-\pi_v)sgn(\pi^*_u-\pi^*_v)]}{2\sum_{u<v}w_{uv}} τ(π,π)=2u<vwuvu<vwuv[1+sgn(πuπv)sgn(πuπv)](9.130)

其他方法也都很常用.

这些损失函数可以有不同用法.在贝叶斯方法中,首先使用后验推断来拟合模型;这就一来似然函数和先验,但不用管损失函数.然后选在测试的时候选择行为来最小化期望未来损失(expected future loss).一种方法就是从后严重对参数取样,即 θ s ∼ p ( θ ∣ D ) \theta^s\sim p(\theta|D) θsp(θD),然后评估,比如对在k精确度不同的阈值,在 θ s \theta^s θs上取平均值.这种方法的具体样例参考(Zhang et al. 2010).

在频率论方法中,在训练集上就要试图最小化经验损失函数.问题就是这些损失函数并不是模型参数的可微函数(differentiable functions).要么就要用非梯度的优化方法,要么就要使用代理损失函数来替代进行最小化.交叉熵损失函数(比如负对数似然函数)是一个广泛使用的代理损失函数.

另外一种损失函数,也叫作加权估计-排序成对损失函数(weighted approximate-rank pairwise loss,缩写为WARP loss),由(Usunier et al. 2009)提出,然后由(Weston et al. 2010)对其进行了扩展,提供了对在k精度上的损失函数的更好的估计.这个损失函数的定义如下所示:

W A R P ( f ( x , : ) , y ) = △ L ( r a n k ( f ( x , : ) , y ) (9.131) r a n k ( f ( x , : ) , y ) = ∑ y ′ ≠ y I ( f x , y ′ ) ≥ f ( x , y ) ) (9.132) L ( k ) = △ ∑ j = 1 k α j , with α 1 ≥ α ≥ . . . ≥ 0 (9.133) \begin{aligned} WARP(f(x,:),y)&\overset{\triangle}{=} L(rank(f(x,:),y) &\text{(9.131)}\\ rank(f(x,:),y)&= \sum_{y'\ne y}I(fx,y')\ge f(x,y)) &\text{(9.132)}\\ L(k)&\overset{\triangle}{=} \sum^k_{j=1}\alpha_j,\text{with} \alpha_1\ge \alpha_\ge ...\ge 0 &\text{(9.133)}\\ \end{aligned} WARP(f(x,:),y)rank(f(x,:),y)L(k)=L(rank(f(x,:),y)=y=yI(fx,y)f(x,y))=j=1kαj,withα1α...0(9.131)(9.132)(9.133)

上式中的 f ( x , : ) = [ f ( x , 1 ) , . . . , f ( x , ∣ y ∣ ) ] f(x,:)=[f(x,1),...,f(x,|y|)] f(x,:)=[f(x,1),...,f(x,y)]是对每个可能输出标签的评分向量,或者在迭代重加权(IR)项目中,就是对每个对应输入查询x的每个可能文章的评分向量.表达式 r a n k ( f ( x , : ) , y ) rank(f(x,:),y) rank(f(x,:),y)衡量由该评分函数分配真实标签y的评分.最后的L是讲整数值的评分转化成实数值的惩罚项(real-valued penalty).使用 α 1 = 1 , α j > 1 = 0 \alpha_1=1,\alpha_{j>1}=0 α1=1,αj>1=0可以优化前部位置分类标签正确的比例.设置 α 1 : k \alpha_{1:k} α1:k为非零值可以优化排序列表中的前k个项目,因为使用了均值平均准确率(MAP)或k精确度来衡量,所以性能不错.即便这样,加权估计-排序成对损失函数(weighted approximate-rank pairwise loss,缩写为WARP loss)也还是很难去优化的,但是可以使用蒙特卡罗取样方法来近似,然后再用梯度下降法去优化,这部分参考(Weston et al. 2010).

练习略

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值