trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

PRML 4章演習問題 4.12~4.18

4.12


\frac{d\sigma(a)}{da}=\frac{-\{\exp(-a)\}'}{\{1+\exp(-a)\}^2}
=\frac{\exp(-a)}{\{1+\exp(-a)\}^2}
=\frac{1}{1+\exp(-a)}\frac{1+\exp(-a)-1}{1+\exp(-a)}
=\sigma(a)(1-\sigma(a))

4.13


\frac{d y_{n}}{dw}=\frac{d \sigma(w^{T}\phi_{n})}{dw}
=\frac{d \sigma(a)}{da}\frac{d a}{dw}
=\sigma(1-\sigma)\phi_{n}
=y_{n}(1-y_{n})\phi_{n}

\frac{dE(w)}{dw}=-\sum \frac{d}{dw}\{t_{n}\ln y_{n}+(1-t_{n})\ln(1-y_{n})\}
=-\sum \{t_{n}\frac{1}{y_{n}}\sigma(1-\sigma)\phi_{n}-(1-t_{n})\frac{1}{1-y_{n}}\sigma(1-\sigma)\phi_{n}\}\\ \hspace{15pt}
=-\sum \{t_{n}(1-y_{n})\phi_{n}-(1-t_{n})y_{n}\phi_{n}\}
=\sum(y_{n}-t_{n})\phi_{n}

4.14

線形分離可能であれば、 t_{n}=1のときw^{T}\phi(x)\geq0、それ以外ではw^{T}\phi(x)< 0。よってベクトルwは決定境界w^{T}\phi(x)=0を満足する。
(4.90)より負の対数尤度はすべてのt_{n}に対してy_{n}=\sigma(w^{T}\phi_{n})=t_{n}のとき最小化される。t_{n}=0,1より最小化するにはw^{T}\phi_{n}\to\pm\infty。よって|w|は無限となる。

解答見ながら。わかるようなわからないような。

4.15

・ヘッセ行列Hが正定値行列であることを示せ。 
u^{T}\Phi^{T}R\Phi u=(R^{1/2}\Phi u)^{T}(R^{1/2}\Phi u)=||R^{1/2}\Phi u||^{2}>0
ここで
R_{nn}^{1/2}=\sqrt{y_{n}(1-y_{n})}>0
\Phi uは基底関数の線形結合より非ゼロ。

・誤差関数はwの凸関数であり、唯一の最小解を持つことを示せ。
極小値w^{\ast}テイラー展開すると

E(w)=E(w^{\ast})+1/2(w-w^{\ast})^{T}H(w-w^{\ast})
  極小値なので一次項は現れない。
任意の非ゼロベクトルvを用いてw=w^{\ast}+\lambda vとおくと

\frac{\partial^{2}E(w)}{\partial \lambda^{2}}=v^{T}Hv>0
これはE(w)が凸であることを示す。
E(w)の極小値においてH(w-w^{\ast})=0。 正定値なのでH^{-1}が存在し、w=w^{\ast}は唯一の極小値である。

解答見ながら。後半はあまり理解できてない。

4.16

クラスラベルt_{n}の代わりに\pi_{n}、確率モデルp(t=1|\phi)より、


p(t_{n})=p(t_{n}=1|\phi_{n})^{\pi_{n}}\{1-p(t_{n}=1|\phi_{n})\}^{1-\pi_{n}}
データ集合に適切な対数尤度関数は 
-\sum\{\pi_{n}\ln p(tt_{n}=1|\phi_{n})+(1-\pi_{n})\ln\{1-p(t_{n}=1|\phi_{n})\}\}

4.17

f:id:trsing:20181213223740j:plain

4.18

f:id:trsing:20181213225102j:plain

PRML 4章演習問題 4.8~4.10

4.8

・(4.57),(4.58)を使って(4.65)の結果を導出せよ。 f:id:trsing:20181222125356j:plain

4.9

クラスの事前確率p(C_{k})=\pi_{k}と一般的なクラス条件付の確率密度p(\phi|C_{k})によって定義されるKクラス分類問題の生成モデルを考える。
学習データ{\phi_{n},\,t_{n}}が与えられたとする。データがこのモデルから独立に抽出されると仮定する。
・事前確立に対する最尤解が\pi_{k}=N_{k}/Nであることを示せ。 f:id:trsing:20181222130433j:plain 解答見た

4.10

クラス条件付の確率密度が(4.160)によって与えられる。
・平均に対する最尤解が(4.161)で与えられることを示せ。 f:id:trsing:20181222130752j:plain ・共分散に対する最尤解が(4.152)で与えられることを示せ。 f:id:trsing:20181222130841j:plain

4.11

各々がLの離散状態を取ることのできるM個の要素を持つ特徴ベクトルphiに対するKクラスの分離問題を考える。
1-of-L符号化法によって成分の値は表現されるとする。 クラスC_{k}に対し[tex\phi]のM個の成分が独立で、クラス条件付確率密度は\phiの要素に分解できると仮定する。
・(4.63)によって与えられる量a_{k}\phiの成分の線形関数であることを示せ。 f:id:trsing:20181222134802j:plain 解答見ながらやったけどわからん

4章の解答見つけた www.yumpu.com

PRML 4章演習問題 4.4~4.7

4.3

わからん

4.4

クラス分離基準(4.22)w^{T}(m_{2}-m_{1})wに関して最大化すればw\propto(m_{2}-m_{1})となること示せ。


L=w^{T}(m_{2}-m_{1})+\lambda(w^{T}w-1)\\
\frac{\partial}{\partial w}L=m_{2}-m_{1}+\lambda 2w=0\\
w = -\frac{1}{2\lambda}(m_{2}-m_{1})\propto(m_{2}-m_{1})\\

4.5

(4.20),(4.23),(4.24)を使って(4.25)が(4.26)の形で書けることを示せ。


(m_{2}-m_{1})^{2}=(w^{T}m_{n}-w^{T}m_{2})(w^{T}m_{1}-w^{T}m_{2})^{T}=w^{T}(m_{1}-m_{2})(m_{2}-m_{1})^{T}w=w^{T}S_{B}w
\\
(y_{n}-m_{k})^{2}=(w^{T}x_{n}-w^{T}m_{k})(w^{T}x_{n}-w^{T}m_{k})^{T}=w^{T}(x_{n}-m_{k})(x_{n}-m_{k})^{T}w
\\
s_{k}^{2}=\sum_{n\in C_{k}}(y_{n}-m_{k})^{2}=w^{T}\sum_{n\in C_{k}}(x_{n}-m_{k})(x_{n}-m_{k})^{T}w
\\
s_{1}^{2}+s_{2}^{2}=w^{T}(\sum_{n\in C_{1}}(x_{n}-m_{1})(x_{n}-m_{1})^{T}+\sum_{n\in C_{2}}(x_{n}-m_{2})(x_{n}-m_{2})^{T})w=w^{T}S_{W}w

J(w)=\frac{(m_{2}-m_{1})^{2}}{s_{1}^{2}+s_{2}^{2}}=\frac{w^{T}S_{B}w}{w^{T}S_{W}w}

4.6

(4.27),(4.28),(4.34),(4.36)および4.1.5節で述べた目的値を使って(4.33)が(4.37)の形で書けることを示せ。

f:id:trsing:20181221231152j:plain

f:id:trsing:20181221231302j:plain

f:id:trsing:20181221231831j:plain

f:id:trsing:20181221231843j:plain

4.7

(4.59)が\sigma(-a)=1-\sigma(a)を満たすことを示せ。


\sigma(-a)=\frac{1}{1+\exp(a)}=\frac{1}{1+\exp(a)}\frac{\exp(-a)}{\exp(-a)}=\frac{\exp(-a)}{1+\exp(-a)}\\
\hspace{25pt}=\frac{1+\exp(-a)-1}{1+\exp(-a)}=1-\frac{1}{1+\exp(-a)}=1-\sigma(a)

逆関数\sigma^{-1}(y)=\ln{y/(1-y)}で与えられることを示せ


\sigma(\ln\frac{y}{1-y})=\frac{1}{1+\exp(-\ln\frac{y}{1-y})}
=\frac{1}{1+\exp(\ln\frac{1-y}{y})}
=\frac{1}{1+\frac{1-y}{y}}
=\frac{y}{y+1-y}=y

PRML 4章演習問題 4.1、4.2

4.1

データ{x_{n}}の集合と{y_{n}}の集合がある。凸包が重なる場合、2つのデータの集合は線形分離可能ではないことを示せ。 f:id:trsing:20181220232938j:plain 2つのデータの集合が線形分離可能な場合、それらの凸包が重ならないことを示せ。 f:id:trsing:20181220232955j:plain

4.2

(4.15)に対して線形制約 
a^{T}t_{n}+b=0
を満たすと仮定すると、 
a^{T}y(x)+b=0
を満たすことを示せ。

まずE_{D}(\tilde{W})についてw_{0}に関する導関数を0とおく。 f:id:trsing:20181220233219j:plain 次にWに関する導関数を0とおく。 f:id:trsing:20181220233510j:plain y(x)f:id:trsing:20181220234052j:plain ここで f:id:trsing:20181220234104j:plain よってa^{T}y(x)+b=0

4.2は解答参照(てか丸写し)

pythonで二つのリストの比較

二つのリスト(A,B)を比較してAの各要素がBにあるかないか表示できたら便利ということがあったのでpythonで書いてみた。

listA=['a','b','c','d','e','f']
listB=['b','d','e','g','h']

#listAの各要素をkey、keyがlistBに含まれれば'あり'、含まれなければ'なし'をvalueにして辞書型作成
dct={a:'あり' if a in listB else 'なし' for a in listA}
for ky in dct:
    print(ky+":"+dct[ky])

結果:
a:なし
b:あり
c:なし
d:あり
e:あり
f:なし

二つのリストの和集合に対して積集合をあり、差集合をなしにする場合

dct2={a:'あり' if a in set(listA) & set(listB) else 'なし' for a in set(listA) | set(listB)}
for k,v in sorted(dct2.items()):
    print(k+":"+v)

結果:
a:なし
b:あり
c:なし
d:あり
e:あり
f:なし
g:なし
h:なし

便利だ・・・

効率

効率(forの式毎度評価されてない?)が気になったのでリファレンスを見てみるとforの「式リストは一度だけ評価」。 ifのとこは毎回実行されるよなあということでちょっと確認。

import numpy as np
listA=np.random.randint(1,10000,size=5000)
listB=np.random.randint(1,10000,size=5000)

start=time.time()
dct={a:'あり' if a in set(listA) & set(listB) else 'なし' for a in set(listA) | set(listB)}
elapsed_time=time.time()-start
print('elapsed:{0}'.format(elapsed_time))

#forの式(set(listA) | set(listB))を先に評価しておく
start2=time.time()
orab=set(listA) | set(listB)
dct2={a:'あり' if a in set(listA) & set(listB) else 'なし' for a in orab}
elapsed_time2=time.time()-start2
print('elapsed2:{0}'.format(elapsed_time2))

#ifの式(set(listA)&set(listB))を先に評価しておく
start3=time.time()
uni=set(listA)&set(listB)
dct3={a:'あり' if a in uni else 'なし' for a in set(listA) | set(listB)}
elapsed_time3=time.time()-start3
print('elapsed3:{0}'.format(elapsed_time3))

#forの式(set(listA) | set(listB))、ifの式(set(listA)&set(listB))を先に評価しておく
start4=time.time()
uni2=set(listA)&set(listB)
orab2=set(listA)| set(listB)
dct4={a:'あり' if a in uni2 else 'なし' for a in orab2}
elapsed_time4=time.time()-start4
print('elapsed4:{0}'.format(elapsed_time4))

結果:
elapsed:12.282702445983887
elapsed2:12.242701768875122
elapsed3:0.005000114440917969
elapsed4:0.006000995635986328

forの式は一回、ifの式は毎度評価されてるということでよさそう。
ifの式は先に評価したものを使おう。

PRML 4.4~4.5.2

4.4 ラプラス近似

今後の議論(4.5節)について。モデルが複雑(事後確率分布がガウス分布でない)でパラメータベクトルw上で正確に積分することができないため、何らかの近似を導入する必要が出てくる。ここではラプラス近似を紹介する。

ラプラス近似の目的:連続変数の集合上に定義される確率密度分布に対してガウス分布による近似を見出すこと。

(4.127):
一次項があると(4.127)を微分したものがz=z_{0}で0にならない。

4.4.1 モデルの比較とBIC

モデルエビデンスBIC(ベイズ情報量基準)の関係について。

(4.113)から正規化係数Zの近似(4.135)を得る。
モデルエビデンスに(4.135)を適用して(4.137)を得る。
パラメータの上での事前確率分布のガウス分布が広がっており、そのヘッセ行列が非退化であると仮定するなら(4.137)はBIC表現の式(4.139)で書ける。

BIC(ベイズ情報量基準):複雑性の測度。(1.73)のAICよりモデルの複雑さに重いペナルティーを科す。

4.5 ベイズロジスティック回帰

ロジスティック回帰のベイズ的な取り扱いについて。厳密にベイズ推論を適用するのは難しい(特に事後確率分布の評価)ため、ラプラス近似を適用する。

4.5.1 ラプラス近似

ラプラス近似には、事後分布の対数の2階微分の評価が必要。これはヘッセ行列を見つけることと等価。ヘッセ行列は(4.143)。
事後確率分布のガウス分布による近似は(4.144)となる。

(4.143):
(4.97)より

4.5.2 予測分布

近似されたガウス分布(4.144)を周辺化して新たな特徴ベクトル\phi(x)が与えられた場合のクラスC_{1}に対する予測分布を得る。

予測分布の変分近似は(4.151)となるが、解析的に評価できない。しかし、ロジスティックシグモイド関数\sigma(a)とプロビット関数の逆関数\Phi(a)の類似性を利用すれば近似予測分布(4.155)を得ることができる。

(4.147):

\int\sigma(w^{T}\phi)q(w)\,dw=\int\int\delta(a-w^{T}\phi)\sigma(a)\,da\,q(w)dw\\
\hspace{30pt}=\int\sigma(a)\int\delta(a-w^{T}\phi)q(w)\,dw\,da=\int\sigma(a)p(a)\,da

(4.194):

\int p(a)a\,da=\int\int\delta(a-w^{T}\phi)q(w)\,dw\,a\,da=\int\,q(w)\,\int\delta(a-w^{T}\phi)a\,da\,dw\\
\hspace{20pt}=\int \,q(w)w^{T}\phi\,dw=E[w^{T}]\phi

(4.150):

E[a^{2}]=
\int p(a) a^{2} \, da=
\int\int\delta(a-w^{T}\phi)q(w)\,dw\, a^{2}\,da\\
\hspace{20pt}=
\int\int\delta(a-w^{T}\phi)a^{2}\,da\, q(w)\,dw=
\int (w^{T}\phi)^{2}q(w)\,dw\\
\hspace{20pt}=
\phi^{T}\int ww^{T}q(w)dw\phi=
\phi^{T}E[ww^{T}]\phi\\
\\
E[a]^2=(E[w^{T}]\phi)^{2}=
\phi^{T}E[w^{T}]E[w]\phi\\
\\
Var[a]=E[a^{2}]-E[a]^{2}=
\phi^{T}E[ww^{T}]\phi-\phi^{T}E[w^{T}]E[w]\phi\\
\hspace{30pt}=
\phi^{T}( E[ww^{T}]-E[w^{T}]E[w] )\phi=
\phi^{T}S_{N}\phi

(4.153):

\int \, \sigma(a)N(a|\mu,\sigma'^{2})\,da \simeq \int \Phi(\lambda a)N(a|\mu,\sigma'^{2})\,da=\Phi\biggl(\frac{\mu}{(\lambda^{-2}+\sigma'^{2})^{1/2}}\biggr)\\
\hspace{50pt}=
\Phi\biggl(\lambda\frac{\mu}{(1+\lambda^{2}\sigma'^{2})^{1/2}}\biggr)
\simeq \sigma
\biggl(\frac{\mu}{(1+\lambda^{2}\sigma'^{2})^{1/2}}\biggr)