trsing’s diary

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

PRML 5章演習問題 5.8~5.13

5.8


\tanh(a)=2\sigma(2a)-1,\,
\frac{d \sigma}{d a}=\sigma(1-\sigma)
より

\frac{d \tanh}{d a}=4\sigma(2a)(1-\sigma(2a))=2(\tanh(a)+1)(1/2-1/2\tanh(a))=1-\tanh^{2}(a)

5.9

(5.20)の形式にするためにはy,nともに1足して2で割ればよいので

p(t|x,y)=\frac{y+1}{2}^{\frac{t+1}{2}}(1-\frac{y+1}{2})^{1-\frac{t+1}{2}}=
\frac{y+1}{2}^{\frac{t+1}{2}}(\frac{1-y}{2})^{\frac{1-t}{2}}
よって誤差関数は

E(w)=-\sum[\frac{t_{n}+1}{2}\ln\frac{y_{n}+1}{2}+\frac{1-t_{n}}{2}\ln\frac{1-y_{n}}{2}]
\\ \hspace{20pt}=-\frac{1}{2}\sum[(t_{n}+1)\ln(y_{n}+1)+(1-t_{n})\ln(1-y_{n})]+N\ln2
出力ユニットのの活性化関数は2倍して1引けばよいので
y(a)=2\sigma(a)-1=\tanh(\frac{a}{2})

5.10

v=u_{i}とおく。このときv^{T}Hv=\lambda_{i}

・すべての固有値が正ならHは正定値
すべての固有値が正ならv^{T}Hv=\lambda_{i}>0となりHは正定値。

Hが正定値ならすべての固有値は正
Hが正定値とするとv^{T}Hv=\lambda_{i}>0であるため、すべての固有値\lambda_{i}>0

すべてのv\neq 0に対して(5.39)が得られる。(5.39)に対しても同様に考えることができる。よってHはすべての固有値が正のとき、またそのときに限り正定値となる。

5.11

w=\sum\alpha_{i}u_{i},\,w^{\ast}=\sum\beta_{i}u_{i} とおくと、 $$ E(w)=E(w^{\ast})+\frac{1}{2}\sum\lambda_{i}(\alpha_{i}-\beta_{i})^{2}=Const\\ \sum\lambda_{i}(\alpha_{i}^{2}-\beta_{i})^{2}=2(Const-E(w^{\ast}))=Const'\\ \sum\frac{(\alpha_{i}-\beta_{i})^{2}}{\frac{Const'}{\lambda_{i}}} =1 $$
これはu_{i}を軸とする楕円の式で各軸長は 
\sqrt{\frac{Const'}{\lambda_{i}}}

5.12

・(5.30)で定義されるヘッセ行列Hが正定値ならw^{\ast}は局所的極小点

Hが正定値ならある\delta w\neq0に対して

E(w^{\ast}+\delta w)-E(w^{\ast})=\frac{1}{2}\delta w^{T}H\delta w>0
よりw^{\ast}は局所的極小点

w^{\ast}が局所的極小点なら(5.30)で定義されるヘッセ行列Hは正定値

w^{\ast}が局所的極小点ならある\delta w\neq0に対して

E(w^{\ast}+\delta w)-E(w^{\ast})=\frac{1}{2}\delta w^{T}H\delta w>0
より(5.37)を満たすのでHは正定値。

5.13

Hが対称なためHの独立成分は\frac{1}{2}W(W+1)bの独立成分はWであるため計\frac{1}{2}W(W+3)

PRML 5.2.1~5.2.4

5.2.1 パラメータ最適化

課題

誤差関数E(w)を最小にする重みベクトルwを見つける。

結論

方程式\nabla Eの解を見つければよい。 しかし、解析的な解を見つけるのはほぼ無理なため数値的な反復手段により解を見つける。

理由

誤差関数の勾配\nabla Eが0になる点が最小値になる(勾配が0でないなら-\nabla Eの方向に少し動かすと更に誤差関数を小さくできる)。 勾配が0なら最小値というわけではないことに注意。

補足

極小点種類
大域的最小点:誤差関数の最小値に相当する極小点
局所的極小点:大域的最小値以外の極小点 一般的に大域的最小点を見つけたかどうか知ることはできない。

5.2.2 局所二次近似

目的

最適化問題とそれを解くテクニックへの理解を得るため、誤差関数の局所二次近似を考える。

結論

w^{\ast}で評価されたヘッセ行列が正定値ならw^{\ast}は極小点である。

理由

E(w)をある点\hat{w}の周りでテイラー展開すると(5.28)。
3次以上の項は省略、b,Hはそれぞれ(5.29),(5.30)。

極小点w^{\ast}の周りで局所二次近似を考えると(5.32)。
※極小点で勾配0なのでb=\nabla E(w^{\ast})=0

(5.32)をHの固有ベクトルで表現すると $$ E(w)=E(w^{\ast})+\frac{1}{2}(\sum\alpha_{i}u_{i})^{T}H(\sum\alpha_{i}u_{i})\\ =E(w^{\ast})+\frac{1}{2}(\sum\alpha_{i}u_{i})^{T}(\sum\lambda_{i}\alpha_{i}u_{i})\\ =E(w^{\ast})+\frac{1}{2}\sum\lambda_{i}\alpha_{i}^{2} $$ Hが正定値(\sum\lambda_{i}\alpha_{i}^{2}>0)なら、w\ne w^{\ast}のときE(w^{\ast})<E(w)となるためw^{\ast}は極小点となる。

5.2.3 勾配情報の利用

勾配情報の利用により、誤差巻子の極小点を見つけるのに必要な計算量はO(W^{3})からO(W^{2})に向上する。

勾配情報を利用しない場合

O(W^{2})個の点で関数を評価、それぞれの評価にO(W)ステップが必要なため、O(W^{3})ステップとなる。

勾配情報を利用する場合

O(W)回の評価、それぞれの評価にO(W)ステップが必要なため、O(W^{2})ステップとなる。

5.2.4 勾配降下最適化

勾配情報を用いたアプローチの紹介。

勾配降下法あるいは最急降下法

(5.41)。直感的には合理的だが、実際には性能が悪い。

共役勾配法準ニュートン法

単純な勾配降下法よりも頑強でかつ早い。また、極小点に到達しない限り、反復ごとに常に誤差関数が減少する。

オンライン勾配降下法あるいは逐次的勾配降下法、確率的勾配降下法

誤差関数は各データ点を表す項の和からなる(5.42)。
重みベクトルの更新を1回ごとに1つのデータ点に基づいて作成する(5.43)。

オンライン手法の利点

データの冗長度を効率的扱うことができる。
局所的極小値を回避できる可能性がある。

PRML 5章演習問題 5.1~5.7

5.1

演習問題3.1(3.100)を参照

5.2

f:id:trsing:20190112161344j:plain

5.3

wに関する最尤推定解を見つけるための最小化すべき誤差関数 f:id:trsing:20190112161533j:plain

\Sigma最尤推定f:id:trsing:20190112161544j:plain ※ $$ \frac{\partial \ln|X|}{\partial X}=(X^{^1})^{T},\,\frac{\partial a^{T}X^{-1}b}{\partial X}=-(X^{-1})^{T}ab^{T}(X^{-1})^{-T} $$ を用いた。

5.4

p(t=1|x,w)は[ クラス1にクラス1のラベルを付ける確率]と[クラス2にクラス1のラベルを付ける確率]を足し合わせたものなので

p(t=1|x,w)=(1-\epsilon)y+\epsilon (1-y)\\
p(t|x,w)=y^{t}(1-y(x,w))^{1-t}=(\epsilon+(1-\epsilon)y)^{t}((1-\epsilon)-(1-2\epsilon)y)^{1-t}
よって誤差関数は

E(w)=-\sum [ t_{n}\ln(\epsilon+(1-\epsilon)y_{n})+(1-t_{n})\ln((1-\epsilon)-(1-2\epsilon)y_{n}) ]

5.5


p(t|w)=\prod_{k=1}^{K} y_{k}(x,w)^{t_{k}}\\
p(T|w)=\prod_{n=1}^{N}\prod_{k=1}^{K} y_{nk}(x_{n},w)^{t_{nk}}
負の対数尤度を取ると

-\ln\prod_{n=1}^{N}\prod_{k=1}^{K} y_{nk}^{t_{nk}}
=-\sum_{n=1}^{N}\sum_{k=1}^{K} t_{nk}\ln y_{nk}

5.6

(5.21)を活性a_{k}微分すると、(4.88)を使用して f:id:trsing:20190112161713j:plain

5.7

(5.24)を活性a_{k}微分すると、(4.106)を使用して f:id:trsing:20190112161751j:plain

PRML 5.2

5.2 ネットワーク訓練

ニューラルネットワークの出力を確率的に解釈すると、出力ユニットの非線形活性化関数の選択と誤差関数により明確な理由付けができるようになる。

それぞれの問題と、問題に対応する非線形活性化関数と誤差関数

問題 出力ユニットの活性化関数 誤差関数
回帰問題 線形出力関数 二乗和誤差
2クラス分類問題 ロジスティックシグモイド関数 交差エントロピー誤差関数
多クラス分類問題 ソフトマックス関数 多クラス交差エントロピー誤差関数
回帰問題

目標値はガウス分布(5.12)に従うとする。
任意のxからyへの連続関数を近似できるため、出力ユニットの活性化関数は恒等写像で良い。
N個の独立同分布に従う観測値と目標値からなるデータ集合が与えられた場合、負の対数尤度で与えられる誤差関数は(5.13)となる。 ここからwについて考えると二乗和誤差関数(5.14)となる。

目標変数が複数ある場合、仮定をおくと目標値の条件付き分布は(5.16)で与えられ、尤度を最大化する重みは二乗和誤差関数(5.11)を最小化することで得られる。

2クラス分類問題

目標変数tで、t=1がクラスC_{1}t=0がクラスC_{2}を表すとする。
0\leq y\leq 1となるようにロジスティックシグモイド関数を活性化関数とする。
y(x,w)を条件付確率p(C_{1}|x)と解釈すると、目標の条件付き分布はベルヌーイ分布(5.20)となる。負の対数尤度で与えられる誤差関数は誤差関数は交差エントロピー誤差関数(5.21)となる。

K個の異なる2クラス分類問題を解く時は、条件付き分布は(5.22)、誤差関数は(5.22)となる。

多クラス分類問題

1-of-K符号化法で表すとy_{k}(x,w)=p(t_{k}=1|x)と解釈でき、誤差関数は多クラス交差エントロピー誤差関数(5.24)となる。出力ユニットの活性化関数をソフトマックス関数とすると0\leq y_{k}\leq 1,\,\sum_{k}y_{k}=1を満たす。

y_{k}(x,w)はすべてのa_{k}(x,w)に定数を加えても分子分母でキャンセルされるため不変である。この退化を除くためには適当な正則化項を誤差関数に加えればよい。

ここで考えた問題はいずれも、誤差関数の特定の出力ユニットの関数に関する微分は(5.18)となる。この性質は5.3節で誤差逆伝播を議論する際に利用される。

Visual Studioにてテストエクスプローラにテストが表示されない場合の解決方法

現象

Visual Studioにてテストエクスプローラにテストが表示されない。

解決方法

テスト→テスト設定→既定のプロセッサアーキテクチャ→X64
f:id:trsing:20190109224228p:plain
としてリビルド

環境

Visual Studio Professional 2015
C#
NUNIT
Windows10 Pro 64bit

参考

blog.house-soft.info

備考

引き継いだもの(前任者とは連絡取れず)。テストは書いてあるけどテストエクスプローラに表示されない。 規定のプロセッサアーキテクチャX86、プラットフォームがAny CPU。たぶん前任者のOSは32bitだったのだろう。

他、フォルダを消す、パッケージをアップデートする(MSTestの場合)などもあるみたい。

m12i.hatenablog.com

qiita.com

PRML 5~5.1.1

第五章 ニューラルネットワーク

・固定された基底関数の線形和で表されるモデルだと、次元の呪いのため実際的な応用可能性は限られる
・大規模な問題に適用するためには、基底関数をデータに適応させる必要がある

基底関数群を定義し、その一部を訓練中に選ぶアプローチ
SVM
メリット:最適化が比較的簡単。
デメリット:含まれる基底関数は一般には比較的大きい場合が多い。訓練集合のサイズが増加すると増加する。(訓練データ点よりはるかに少ない)。
・RVM
メリット:SVMより基底関数が少ないモデルになることが多い。確率を出力することができる
デメリット:非凸最適化問題を解く必要あり。

事前に基底関数の数を固定し、それらを適用型にしておくアプローチ
フィードフォワードニューラルネットワーク(多層パーセプトロン)
メリット:SVMに比べてコンパクト。そのため評価もより迅速。
デメリット:尤度関数がモデルパラメータの凸関数ならない。

・5章では多層パーセプトロンに限定する

5章の構成
1.ネットワークモデルの関数の形を考える。基底関数をどのようにパラメータ表示するか?
2.ネットワークパラメータを決定する問題を考える。非線形最適化問題をどのように解くか?
3.対数尤度関数のネットワークパラメータに関する微分の評価を得る。誤差逆伝播法を用いる。
4.逆伝播の枠組みがどのようにほかの微分の評価に拡張できるかを示す。ヤコビ行列やヘッセ行列。
5.ニューラルネットワーク正則化へのさまざまなアプローチとそれらの互いの関係を考える。
6.その他のニューラルネットワークモデルへの拡張を考える。混合密度ネットワーク。
7.ベイズ理論の視点からニューラルネットワークについて考える。

5.1 フィードフォワードネットワーク

5章の目標:線形モデル(5.1)を拡張すること。 基底関数\phi_{j}(x)をパラメータ依存とし、これらのパラメータを訓練中に係数{w_{j}}と共に調整することにより拡張する。

基本的なニューラルネットワークモデル
1.入力変数の線形和(活性a_{j})を作る。(5.2)
2.a_{j}微分可能な非線形活性化関数で変換してz_{j}(基底関数 \phi_{j}(x)の出力に相当)を作る。(5.3)
3.z_{j}の線形和を計算して出力ユニット活性a_{k}を得る。(5.4)
4.a_{k}を活性化関数を用いて変換し、ネットワークの出力y_{k}を得る。

使用する活性化関数はデータの性質と目標変数の分布に依存する。
標準的な回帰問題の場合:恒等写像を用いてy_{k}=a_{k}
2クラス分類問題の場合:ロジスティックシグモイド関数を用いて[tex:y_{k}=\sigma(a_{k})。
多クラス分類問題の場合:ソフトマックス活性化関数を用いる。

ニューラルネットワークとは可変パラメータベクトルwで制御される、入力変数の集合{x_{i}}から出力変数の集合{y_{k}}への非線形関数である。

ニューラルネットワークによる関数はネットワークパラメータに関して微分可能であり、この性質はネットワークの訓練において中心的な役割を果たす。

図5.1で示す構造が良く使われるが、層を追加する、層を飛び越えた結合をするなど拡張が可能(図5.2)。ただし、閉じた有向閉路があってはならない。出力が入力の決定論的な関数であることを保証するため。

ニューラルネットワークにおいて重要な問題は、与えられた訓練データ集合に対して適切なパラメータの値をどのように見つけるかである。

5.1.1 重み空間対称性

同じ結果を得られる重みベクトルwが複数存在する。

M個の隠れユニット、活性化関数tanh、各層間は完全結合している2層のネットワークの場合を考える。
活性化関数が奇関数であるため、重みとバイアスの符号を反転させた場合、出る重みの符号を反転させることで補償できる。反転させる、反転させないをM個のユニットに関してなので2^{M}通り。
隠れユニット内で順番を変更してもネットワークの入出力関数は変化しないが、重みベクトルとしては異なったものになる。 並ぶ順序なのでM!通り。
全部でM!2^{M}個の等価な重みベクトルがある。

多くの場合、このような対称性は重要ではないが、考慮しなければならない状況も存在する(5.7節)

PRML 4章演習問題 4.23~4.26

4.23

(4.138)より $$ A=-\nabla\nabla\ln p(D|\theta_{MAP})p(\theta_{MAP})=-\nabla\nabla(\ln p(D|\theta_{MAP})+p(\theta_{MAP}))=H-\nabla\nabla\ln p(\theta_{MAP}) $$ p(\theta)=N(\theta|m,V_{0})より $$ A=H+V_{0}^{-1} $$ 事前確率が広い幅を持っている(V_{0}が大きい)、もしくはデータ数Nが多いと仮定するとHと比べてV_{0}^{-1}を無視できる。この結果より(4.137)は $$ \ln p(D)\simeq\ln p(D|\theta_{MAP})-\frac{1}{2}(\theta_{MAP}-m)^{T}V_{0}^{-1}(\theta_{MAP}-m)-\frac{1}{2}|H|+const\hspace{15pt} (113) $$

事前分布が広い幅を持っているとの仮定により(113)の右辺第二項を第一項と比較して無視できる。

独立同時分布と仮定したので、Hは各データ点に対応する項の和で書くことができ、 $$ H=\sum_{n=1}^{N}H_{n}=N\frac{1}{N}\sum_{n=1}^{N}H_{n}=N\hat{H} $$ H_{n}はn個目のデータ点による寄与。

行列式は $$ \ln|H|=\ln|N\hat{H}|=\ln(N^{M}|\hat{H}|)=M\ln N+\ln|\hat{H}| $$ ここでM\thetaに含まれるパラメータ数。\hat{H}はフルランクMと仮定している。この結果と(113)、\ln Nに比べてO(1)のため\ln|\hat{H}|を無視することにより(4.139)を得ることができる。

解答見ながら。わからん。

4.24

M次元ベクトルwの座標軸の回転を考える。 ここでw=(w_{||},w_{\perp})w^{T}\phi=w_{||}||\phi||w_{\perp}はサイズM-1のベクトル。

\displaystyle
\int\sigma(w^{T}\phi)q(w)dw=\int\int\sigma(w_{||}||\phi||)q(w_{\perp}|w_{||})q(w_{||})dw_{||}dw_{\perp}\\
\displaystyle
\hspace{75pt}=\int \sigma(w_{||}||\phi||)q(w_{||})dw_{||}

同時分布q(w_{perp},w_{||})ガウス分布である。それゆえ周辺分布q(w_{||})ガウス分布であり、2.3.2節で示された結果を使用してパラメータを得ることができる。 単位ベクトル $$ e=\frac{1}{||\phi||}\phi $$ を使用して
$$ q(w_{||})=N(w_{||}|e^{T}m_{N},e^{T}S_{N}e) $$ を得る。 a=w_{||}||\phi||と定義し、 aの分散は ガウス分布の単純なスケーリング変換により得ることができる。 つまり
$$ q(a)=N(a|\phi^{T}m_{N},\phi^{T}S_{N}\phi) $$ ここで||\phi||e=\phiを用いた。 それゆえ(4.151)を得る。 ここで\mu_{a}と[\sigma_{a}^{2}]は(4.149)と(4.150)。

なるほどわからん・・・

4.25

\displaystyle
\hspace{30pt}\frac{d \Phi(\lambda a)}{da}=\lambda N(\lambda a|0,1)=\frac{\lambda}{(2\pi)^{1/2}}\exp(-\frac{1}{2}(\lambda a)^{2})
a=0のとき 
\frac{\lambda}{(2\pi)^{1/2}}

\displaystyle
\hspace{30pt}\frac{d \sigma(a)}{d a}=\sigma(a)(1-\sigma(a))

\sigma(0)=\frac{1}{1+\exp(-0)}=\frac{1}{2}
よりa=0のとき 
\frac{1}{2}(1-\frac{1}{2})=\frac{1}{4}


\frac{\lambda}{(2\pi)^{1/2}}=\frac{1}{4}
より \lambda^{2}=\frac{\pi}{8}

4.26

f:id:trsing:20181228212852j:plain f:id:trsing:20181228212907j:plain

左辺と右辺が等しいということは\sigma^{2}\lambdaの関数に至るまで等しい。極限\mu\to-\inftyをとると左辺と右辺は両方0になる。これは積分の定数項がゼロであることを示す。

解答見ながら。前半はわかる。