2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 李航老师《统计学习方法》第二版第十一章课后习题答案

李航老师《统计学习方法》第二版第十一章课后习题答案

时间:2018-06-24 13:10:58

相关推荐

李航老师《统计学习方法》第二版第十一章课后习题答案

11.1、写出图11.3中无向图描述的概率图模型的因子分解式。

解:根据最大团的定义可知,该最大团共有两个最大团,李航老师的书上也指了出来。分别是:

c1=(Y1,Y2,Y3),c2=(Y2,Y3,Y4)c_{1}=(Y_{1},Y_{2},Y_{3}), c_{2}=(Y_{2},Y_{3},Y_{4})c1​=(Y1​,Y2​,Y3​),c2​=(Y2​,Y3​,Y4​)

那么根据Hammersley-Clifford定理,可以将图11.3上面的无向图的联合概率分布表示为:

P(Y)=1Z∗Ψc1(Yc1)∗Ψc2(Yc2)P(Y)=\frac{1}{Z}*\Psi _{c_{1}}(Y_{c_{1}})*\Psi _{c_{2}}(Y_{c_{2}}) P(Y)=Z1​∗Ψc1​​(Yc1​​)∗Ψc2​​(Yc2​​)

其中:Z=∑Y∏cΨc(Yc)Z=\sum_{Y}\prod_{c}\Psi _{c}(Y_{c}) Z=Y∑​c∏​Ψc​(Yc​)

注:这里求Z的时候应该是对所有可能的Y的取值求和,将P(Y)归一化,这样才满足是概率分布,所有的加起来所得的和是1.比如在词性标注任务,对这句话:“为中华之崛起而读书”,假设词性标签有N个,那么所有的Y的取值有9的N次方这么多,Z是9的N次方这么多非规范化概率的和。还有个问题可以看到,如果使用暴力方法来求的话,这是个Np难问题。

11.2、证明 Z(x)=αnT∗1=1∗β1(x)Z(x)=\alpha _{n}^{T}*1=1*\beta _{1}(x)Z(x)=αnT​∗1=1∗β1​(x),其中1表示元素全为1m维列向量。

证明:

看下李航老师书上的Z(x)的一个计算公式:

Z(x)=[M1(x)∗...∗Mn+1]start,stopZ(x)=[M_{1}(x)*...*M_{n+1}]_{start,stop} Z(x)=[M1​(x)∗...∗Mn+1​]start,stop​

结合书上面的一个例子:给定一个由图11.6所示的线性链条件随机场,观测序列x,状态序列y,i=1,2,3,标记{1,2},假设y0=start=1,y4=stop=1,各个位置的随机矩阵为M1(x)=[a01a0200]M_{1}(x)=\begin{bmatrix} a_{01} & a_{02}\\ 0& 0 \end{bmatrix} M1​(x)=[a01​0​a02​0​]

M2(x)=[b11b12b21b22]M_{2}(x)=\begin{bmatrix} b_{11} & b_{12}\\ b_{21}& b_{22} \end{bmatrix}M2​(x)=[b11​b21​​b12​b22​​]

M3(x)=[c11c12c21c22]M_{3}(x)=\begin{bmatrix} c_{11} & c_{12}\\ c_{21}& c_{22} \end{bmatrix}M3​(x)=[c11​c21​​c12​c22​​]

M4(x)=[1010]M_{4}(x)=\begin{bmatrix} 1 & 0\\ 1& 0 \end{bmatrix}M4​(x)=[11​00​]

可以计算得上面四个矩阵相乘后得到的矩阵的第一行一列的元素就是Z(x),这也对应(start=1,stop=1),如果将y4=stop=1修改为y4=stop=2,那么对应的第4个随机矩阵要修改为:

M4(x)=[0101]M_{4}(x)=\begin{bmatrix} 0 & 1\\ 0& 1 \end{bmatrix}M4​(x)=[00​11​]

再将上面的四个随机矩阵进行连乘的话得到的矩阵的第一行第二个位置就是Z(x).

如果明白了上面这个例子,下面的这个证明就会简单一点。

还要明白一点矩阵运算的小技巧:如果在一个矩阵的乘上一个(1,0,…,0)的行向量,相当于把这个矩阵的第一行取出来,在矩阵右边乘这样的列向量的话就是相当于把第一列取出来。

由递推公式:αiT(x)=αi−1T(x)Mi(x)\alpha _{i}^{T}(x)=\alpha _{i-1}^{T}(x)M_{i}(x)αiT​(x)=αi−1T​(x)Mi​(x)

可以得到αnT(x)=α0T(x)M1(x)...Mn(x)\alpha _{n}^{T}(x)=\alpha _{0}^{T}(x)M_{1}(x)...M_{n}(x)αnT​(x)=α0T​(x)M1​(x)...Mn​(x)

由上面那个矩阵运算的小技巧可以知道,αnT(x)=α0T(x)M1(x)...Mn(x)\alpha _{n}^{T}(x)=\alpha _{0}^{T}(x)M_{1}(x)...M_{n}(x)αnT​(x)=α0T​(x)M1​(x)...Mn​(x)表示的是M1(x)...Mn(x)M_{1}(x)...M_{n}(x)M1​(x)...Mn​(x)的start行,如果将他们使用全1的m维列向量乘积之后就是矩阵M1(x)...Mn(x)M_{1}(x)...M_{n}(x)M1​(x)...Mn​(x)的(start,stop)位置的元素,因而也就是Z(x).其实结合上面的那个例子很容易理解,我们看到M4随机矩阵的第一列也就是全1的元素,其实这个是对应的。

感觉这个题目的第二部分可能是有点错误的。

由递推公式βi(x)=Mi+1(x)βi+1(x)\beta _{i}(x)=M_{i+1}(x)\beta _{i+1}(x) βi​(x)=Mi+1​(x)βi+1​(x)可知β1(x)=M2(x)...Mn+1(x)βn+1\beta _{1}(x)=M_{2}(x)...M_{n+1}(x)\beta _{n+1}β1​(x)=M2​(x)...Mn+1​(x)βn+1​

如果还是使用上面的那个例子具体来验证的话,算不出正确的结果的。

证明都是类似的。差别不大。

11.3、写出条件随机场模型学习的梯度下降算法。

**解:**李航老师的这本书第231页上面给出了学习的优化目标函数和他的梯度函数。有了这两个公式,可以很简单的写出梯度下降算法,梯度下降算法是优化方法里面最简单的了估计。

首先,学习的优化目标函数和梯度函数公式为:

一个需要注意的地方,无论是什么优化方法,下降的方向都要尽量归一化变为模长为1的单位向量。因为,假如有方向(2,0,3),设置下降步长为2,由于没有进行下降方向模长归一化,实际上模型是下降了2*sqrt(13)的步长,会造成模型的不收敛

算法步骤如下:

输入:各个特征函数,以及经验分布;

输出:最优的参数和最优模型。

(1)选定初始点w0w_{0}w0​,令k=0,也就是此时wk=w0w_{k}=w_{0}wk​=w0​

(2)计算梯度gk=g(wk)g_{k}=g(w_{k})gk​=g(wk​),如果gk=0g_{k}=0gk​=0,停止计算,否则转入下一步。

(3)进行一维搜索求出最优的下降步长λk\lambda_{k}λk​,也就是求解下列的优化问题

f(ωk−λkgk)=minλ>=0f(ωk−λgk)f(\omega ^{k}-\lambda _{k}g_{k})=min_{\lambda >=0}f(\omega ^{k}-\lambda g_{k})f(ωk−λk​gk​)=minλ>=0​f(ωk−λgk​)

注:其实在实际实现的时候,我们都是直接预先设置一个固定的步长,或者让步长随模型训练的轮数增加而逐渐减小

(4)令wk+1=wk−λkgkw_{k+1}=w_{k}-\lambda_{k}g_{k}wk+1​=wk​−λk​gk​,如果gk+1g_{k+1}gk+1​=0,停止计算,否则令k=k+1,转步骤(3)

11.4、参考图11.6的状态路径图,假设随机矩阵分别为M1(x)=[000.50.5]M_{1}(x)=\begin{bmatrix}0 & 0\\ 0.5& 0.5\end{bmatrix}M1​(x)=[00.5​00.5​]M2(x)=[0.30.70.70.3]M_{2}(x)=\begin{bmatrix}0.3 & 0.7\\ 0.7& 0.3\end{bmatrix}M2​(x)=[0.30.7​0.70.3​]M3(x)=[0.50.50.60.4]M_{3}(x)=\begin{bmatrix}0.5 & 0.5\\ 0.6& 0.4\end{bmatrix}M3​(x)=[0.50.6​0.50.4​]M4(x)=[0101]M_{4}(x)=\begin{bmatrix}0 & 1\\ 0& 1\end{bmatrix}M4​(x)=[00​11​],求以start=2为起点,以stop=2为终点的所有路径的状态序列y的概率以及概率最大的状态序列。

解:

使用上题结论最好。下面是暴力法

按照暴力求法很容易计算,可以参考李航老师书上的例子11.2,在求的过程中只需要注意一下不同状态的取值对应的矩阵的元素的行数和列数。这里就简单举个例子吧,比如计算路径start,1,2,1,stop的概率分数。其实也即是2,1,2,1,2的概率大小。

取M1矩阵的(2,1)位置的元素0.5和M2矩阵的(1,2)位置的元素0.7和M3矩阵的(2,1)位置的元素0.6和M4矩阵的(1,2)位置的元素1,乘积可得0.50.70.6*1=0.21

其他的路径分数也可以类似计算。

其实可以看到,如果序列非常长,这就变成了一个NP难问题,在多项式时间复杂度内是不可以解决的,可以参考动态规划的计算方法。数据结构里面也有这样的算法,数学课运筹学,最优化,图论等等都会有这样的计算方法。当然,该题最好使用上题的结论

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。