2023.11.10

『ディープラーニングを支える技術 2』

第1章 ディープラーニングの最適化ーなぜ学習できるのか
    学習過程のいろいろな工夫である。この辺はいろいろな非線形モデルを扱ってきた僕にも馴染み深い。

第2章 ディープラーニングの汎化
    汎化とは学習に使われていないケースに対しても的外れでない答えを出す能力である。

●バイアスとバリアンス:汎化誤差の評価法

変数 x と y の間に、本当の関係 y=f(x) があると仮定する。
ただし、実際に観測される場合には、ノイズ ε が入るので、
      yj=f(xj) + ε  となる。
いくつかの実測データセット (xj,yj) ( j は各データを区別する番号)を使って学習させるとき、
パラメータを含む関数形 g(x) を仮定して、例えば最小二乗法でパラメータを決めることになる。
つまり、Σj (yj - g(xj))^2 を最小化するように、パラメータを決める。
こうして決められた関数 g はどんな実測データを使ったかに依存している。
そこで、多数の実測データ(訓練データ)のセットを区別する番号 i を使うことにして、その時の g を gi と表記する。
バイアスは、
      bias(g,x) =average_on_i(gi(x))-f(x)  
と定義される。
  つまり、訓練データの採り方 i で平均化された予測値と本当の値との差である。
バリアンスは、
  variance(g,x) =average_on_i(gi(x)-bias(x) )^2 と定義される。
  つまり、訓練データ i の採り方による予測値のばらつき具合である。
いずれも、データ x の関数である。

汎化誤差を全てのデータ x についての真の値 y と予測値 g(x) の差の二乗和の平均値と定義すると、

汎化誤差(g)=average_on_x(bias(g,x)^2)+average_on_x(variance(g,x))+average_on_x(ε^2)

第1項は系統誤差で、パラメータ最適化がなされていないか、パラメータが少なすぎる場合に生じる。
第2項はパラメータが訓練データに含まれる誤差に振り回されて予測値がばらついている為に生じる。
第3項は外乱項である。
パラメータ数を増やすと第1項は小さくなるが、第2項は大きくなるから、

さまざまな実験的研究によって、汎化誤差を最小にするようなパラメータ数(あるいは関数形g)を最適化する指標が提案されている。MDL,AIC,TIC,WAIC,,,等々。

(注)実際の状況では、真の値を与える f(x) は知られていないので、上記の評価法は隅々まで状況の判る人為的な例を解析する方法である。その結果としていろいろな経験的評価基準が判ってきた。訓練誤差を小さくすることとパラメータ数を少なくすることのバランスを取る。例えば、AIC=-2log(到達尤度) - 2・自由度(パラメータ数)。これは、パラメータ数を増やしていくと最大値を経て減少していくので、最大値を取るパラメータ数が推奨されることになる。また、使われたモデルが適当かどうかの業界的な意味での評価基準になる。
    限られた数の訓練データに対しては、ある程度の複雑さを備えたモデル(関数形)、(例としては、4組のデータに対しての3次関数のように、パラメータ数が4である場合)においては、訓練データに関しては予測値が完全になる。丸暗記学習と呼ぶ。しかし、訓練データから外れた x に対しての誤差は大きくなるので、汎化誤差が大きくなる(過学習)。

●ニューラルネットワークでの人為的正則化

正則化というのはパラメータを増やした場合にも過学習をしないように、工夫することである。つまり汎化性能を上げる事。3つの方法が知られている。
・Augmentation:過学習はデータ数に対してパラメータが多すぎる場合に起きるので、データ数を増やせばよい。画像であれば回転させたり、平行移動させたりする。
・Weight Decay:よく行われるのは、訓練誤差に対してパラメータの二乗和(ノルム)を追加することである。こうすると、パラメータの値を小さくする方向で解を求める為、一部のパラメータがノイズに対して過剰に応答することを防ぐことが出来る。
・Dropout:学習時に確率 α で、一部のニューロン出力を 0 にする。こうすると少しづつ異なったネットワークで学習していることになり、正則化の効果がある。推論時には (1 - α) 倍して使う。

●多層ニューラルネットワークの不思議

    多層ニューラルネットワークはパラメータ数が膨大になるので、過学習が起きると予測されたが、いろいろな工夫によって逆であることが判った。つまり、完全学習よりも更にパラメータ数が増えると汎化誤差が小さくなることが判った。これを二重降下と呼んでいる。その理由が次第に判ってきた。

・陰的正則化
多層ニューラルネットワークの学習において、パラメータの初期値を小さくしておくと、勾配降下法では少しづつ大きくしながらノルムの小さい解から順番に見つけていくので、自然に正則化される。

・フラットな解
フラットな解というのは、パラメータを多少変えても訓練誤差があまり変わらないような解という意味である。勾配降下法においては、パラメータ数が膨大なので、一部のパラメータに限定しながら勾配計算をするので、自然に勾配に対するノイズが取り込まれて、このノイズが入った条件下においてはシャープな解には落ち着きにくいために、自然にフラットな解を見つけることになる。パラメータを多少変えても誤差がそれほど変わらないということはパラメータ同士の独立性が低いということで、実質的に正則化が行われていて、汎化性能が高い。

・宝くじ仮説
今度はパラメータ数が膨大な場合で、初期値としてランダムにパラメータを選定すると、その中にはかなり正解に近い部分(サブネットワーク)が含まれてしまう、という考えである。この考えでは学習過程というのは、正解を 0 から組み立てていくのではなくて、パラメータ空間内での正解の部分集合(サブネットワーク)を次第に拡張していく、ということになる。ネットワークを大規模にすればするほど、正解に近いサブネットワークが最初からある確率が高くなり、訓練誤差を大きくするような周辺のネットワークを侵食するようにして広がっていく。こうして生き残っていくサブネットワークにおいては最初からパラメータの次元が限られているために、正則化してあるのと同じ効果があって、汎化性能も高くなる。

・・教師ネットワークと生徒ネットワーク
教師ネットワークは既に学習済みである。その入力と出力を生徒ネットワークに学習させる、という実験を行うと、生徒ネットワークは勿論学習するのであるが、それは単に正しい出力を出すというだけでなく、内部のパラメータについても教師ネットワークを真似するようになっている。生徒の方がより多くのパラメータをもつ場合(大規模な場合)、不要なニューロンが整理されていく。それらのパラメータは多少変えても結果に影響が無い。つまり、これがフラットな解の実態である。世の中のデータは、階層的、再帰的、構成的なものが殆どである。まったくランダムな場合は少ない。生物が、そして地球が、宇宙が、階層的な構造を持ち、それぞれの階層において、再帰的な生成をするからである。ニューラルネットワークはそのようなデータの基本的な特徴にうまく適合していると言える。

第3章 深層生成モデル

3.1 生成モデルとは何か
    学習という意味では教師あり学習と同じで、汎化性能の高いモデルを目指すことになる。汎化性能が高いということは、訓練データの背後にある確率分布が正確であるということである。生成モデルではこの確率分布を使って新たなデータを生成する。使い方が識別モデルとは逆になっているので、それなりにスキームが工夫されているということであろう。

●使い道
・未知のデータを生成することで、シミュレーションができる。運転の訓練や化合物探索等。
・条件付け生成(一部の確率変数を固定した条件付確率分布を使う)を使えば、創作に近いことが行える(Chat-GPT)。
・逆に、与えられたデータがどれくらい尤もらしいか、という判断が出来る。テキストデータの場合が「言語モデル」。
・あるデータを人間が解析(帰納)してみて、その解析結果を条件としてデータを生成(演繹)することで、解析の正しさを評価することができる。
・生成過程が判るという事は、特定の因子を消去して生成させることができる、ということであるから、新たな観測データを生み出した原因の中から不要なものを排除したデータを作り出すことが出来る。例えば画像からのノイズの除去、鮮明化、周囲光源を取り除いた画像の生成。

●線形モデルを使った潜在変数モデル

    観測された多数のデータを多数のベクトル x (x(1),x(2),x(3),,,x(n))で表す。個々のベクトル x を潜在変数 z からの線形変換 A と観測ノイズとの和で生じていると考える。観測ノイズは x の各成分毎に独立で正規分布をしているとする。数式で表すと、
  x ~ N(Az, σ^2 I)
N(平均,分散)  は正規分布、~はサンプリングを表す。I は対角成分が全て 1 となる対角行列、σは標準偏差。
潜在変数 z は平均が 0 で分散が各成分独立で 1 となる正規分布であるとする。
  z ~ N(0,I)
    例えば、σ=0 の場合を考えると、これは「主成分分析」の問題になる。例えば、x としては、その各成分が性格を表現するいろいろな(m個の)言葉(優しい、派手である、良く喋る、、、)として、その程度を5段階評価した数字として見れば良い。多くの人間(n人)に対して、そのようなデータを集めれば、これが観測データのセット(学習データ、n行m列の行列 D)となる。当然ながら、性格表現の言葉の意味はかなり重複しているから、データ同士には相関が生じている。m個の言葉をうまく組み合わせて(線形和を採って)新たな概念のセット(z 各成分の意味)を見出すことで、z(1),z(2),z(3),,,z(n) というデータを作ることで、データ同士の相関を無しにすれば、最小限の独立概念の組み合わせで性格が記述できる。その独立概念そのものを求める為には、変換行列 A を求めれば良い。行列 D は特異値分解できる。
  D=U S V'
と出来る。ここで S は対角行列、U は n行n列、V は m行m列、V' は V の転置行列。S の対角成分を特異値と言う。
V' x = z ということで(A=V')、z の成分では、特異値の大きな z 成分が重要であるということになる。特定の重要な成分だけの z をモデルに従って変換すれば、計算された x という日常用語の世界にいくつかの代表的な「人格」を定義できる、という次第である。

●非線形モデルを使った生成モデル

    現実世界では、潜在変数 z と観測変数 x の関係は線形とは限らないので、z から x を作り出すモデルとして、多層ニューラルネットワークが使われる。今までの教師あり学習による識別モデルが関数のパラメータを決める問題であったのに対して、この生成モデルというのは、ある条件を与えてそれを満たすデータの確率分布を求める問題である。だから、問題自身を統計解析の問題として捉えなおさなくてはならない。多層ニューラルネットワークはそのプロセスの内部で使われる有用な「関数」の一つにすぎないという位置づけになる。

ここから本格的になるのだが、ちょっと難しくなるので統計解析の勉強が必要になった。一旦、本を返却。なお目次は下記。

3.2 VAE(ニューラルネットワークを使った潜在変数モデル):variational auto-encoder
3.3 GAN(敵対的生成モデル)
3.4 自己回帰モデル
3.5 正規化フロー
3.6 拡散モデル

第4章 深層強化学習
    変動する環境にどう対処していくか?というのが目的である。典型的なのは囲碁や将棋のソフトである。当然、株式投資や会社経営、更には政策決定補助等も考えられる。

  <目次へ>       <一つ前へ>     <次へ>