-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_MachineLearningTheory
機械学習の理論
-
情報理論は数学を用いて「情報」の本質を明らかにする学問。
-
応用先には効率の良い情報通信や通信時の情報誤りの訂正等がある。
-
ココでは機械学習の習得に必要な範囲の情報理論を習得する。
-
機械学習において、情報理論を元にした手法
-
ランダムフォレスト(統計解析の該当節を参照)
ランダムに選択された説明変数のエントロピーを最小化
するような閾値を決定し特徴量の重要度を自動で算出 -
マルコフ確率場
画像内のノイズ除去等に用いるグラフィカルモデルとして利用される。
-
移行メモ(正誤): 元ページの「情報理論の習得する」は
「情報理論を習得する」の誤記と判断し修正した。
-
直感的に表現するとすれば「情報の珍しさ」の値
-
「ある事象が起きた時にどのくらい珍しい事象か」という尺度
-
確率の逆数(レア度)のlogで、
情報が珍しいほど大きく珍しくないほど小さい
I(x) = log (1/P(x)) = -log P(x) ※ 0≦P(x)≦1
- 確率を用いて表す。
- 珍しい=確率が低い事ほど情報量が多い。
- 実際、logのグラフ(E資格:試験対策の該当節を参照)で見ると明らか。
- 複数の事象が起こる確率は積で計算されるが情報量は和で計算
-
「平均情報量」や「シャノン・エントロピー」とも呼ばれる。
-
「自己情報量」の拡張で「事象の予想のし難さ」
-
グラフは予想の難しい事象時に最大で非一様分布の方がエントロピーが低い。
-
[事象の起こる確率]と[ 自己情報量 ]を掛け合わせたモノの総和
H(x) = Σ-P(xi)logP(xi) = -ΣP(xi)logP(xi)
-
複数の事象が起こる確率は積で計算されるが情報量は和で計算
-
それぞれの事象の起こり易さを足し合わせた情報
-
それぞれの事象の起こり難さの重み付けを行った上で計算
-
結合エントロピー
H(x, y) = Σ -P(xi,yi)logP(xi,yi) = -Σ P(xi,yi)logP(xi,yi)
x,y x,y
- 条件付きエントロピー
H(x|y) = H(x, y) - H(y)
- 相互情報量
I(x;y) = H(x) + H(y) - H(x, y)
I(x;y) = H(x) - H(x|y)
I(x;y) = H(y) - H(y|x)

-
「相対エントロピー」や「KLダイバージェンス」「KL情報量」とも呼ばれる。
-
異なる確率分布P(x), Q(x)にどれだけの差があるのか?を考える情報量の1種。
-
二つの確率分布が一致するなら値は 0 になる
(確率分布の差なので確率分布が同じなら0)。 -
データの分布とガウス分布の類似度をダイバージェンスの考え方で測る。
D(P||Q)=∫q(x) log(q(x) / p(x)) dx = ∫q(x) log q(x) - q(x) log p(x)
- この式は機械学習を行うときの損失関数として用いられる。
- その際、この式の第1項が常に一定だから第2項のみを用いる。
※ KL:カルバック・ライブラー
細工されたサイコロの出る目の確率分布表
| 確率変数 X | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 確率 P | 0.3 | 0.2 | 0.2 | 0.2 | 0.1 | 0.0 |
| 確率変数 Y : 1(X1=X2) | 0.09 | 0.04 | 0.04 | 0.04 | 0.01 | 0.00 |
| 確率変数 Y : 0(X1≠X2) | 0.3-0.09 = 0.21 | 0.2-0.04 = 0.16 | 0.2-0.04 = 0.16 | 0.2-0.04 = 0.16 | 0.1-0.01 = 0.09 | 0.00 |
移行メモ: 元表は「確率変数 Y」の行が PukiWiki の縦セル結合(
|~|)で
まとめられていたため、各行に「確率変数 Y :」を付与して展開した。
※ ビットでの回答になる場合は、logの底は2となる。
- X=3の自己情報量
log(1 / 0.2) = -log0.2
-
- エントロピー(H(X1))
= - (0.3 * log0.3) - (0.2 * log0.2)*3 - (0.1 * log0.1) = - ( (0.3 * log0.3) + (0.2 * log0.2)*3 + (0.1 * log0.1) )
- エントロピー(H(Y))
...
- 結合エントロピー(H(X1, Y))
= - {(0.21 * log 0.21) + (0.16 * log 0.16)*3 + (0.04 * log 0.04)*3 + (0.09 * log 0.09)*2 + (0.01 * log 0.01)}
- 条件付きエントロピー、相互情報量(I(X1;Y))
...は以下で計算可能(H(Y)は与えられる、計算方法は?)。
I(X1;Y) = H(X1) + H(Y) - H(X1, Y)
(元ページに記載なし)
- 複数の変数同士の関係を定量的に表す。
- 統計モデルでよく使われるのは回帰モデル
ある確率密度分布があって、その分布に従い、データが生まれてくるような、モデル。
データがある、ということは、そのデータを生成する原因がある、と考える。
-
最尤法、ベイズ法で最適化されたモデルも生成モデルの可能性があるが、
最小二乗法で最適化されたモデルはそうではない。- 最尤法では、パラメタの点推定を行い、固定された確率密度/質量関数を得る。
- ベイズ法では、パラメタ自体が確率分布となり、
確率密度/質量関数は事後分布を考慮した形で得られる。
-
言語モデルが生成AIと言えるのは、
- 言語モデルは、データそのものの同時分布をモデル化し、
そこからサンプリングして新規データを合成できる生成モデルであり、 - その学習は出力をカテゴリカル分布として扱い
交差エントロピー損失(=負の対数尤度)を最小化して
パラメタθの点推定を行うため。 - ガウス誤差の特殊ケースである最小二乗法や、
θに事前分布を置き事後分布を扱うベイズ法とは異なり、
最尤法(MLE)そのものに基づいている。
- 言語モデルは、データそのものの同時分布をモデル化し、
-
生成AI
生成AIに分類されるアルゴリズムは機械学習モデルでも開発できるが、
実用的なものは、深層学習モデルのものが多い。
機械学習で分類問題を解く場合、
- 識別関数
確率は関係なく、入力空間に識別面を直接引く方法- サポートベクターマシン(SVM)、k近傍法(機械学習の該当節を参照)、
パーセプトロン(PPN)
(データマイニング(DM)- Pythonの該当節を参照)などの
識別的アプローチ。 - 識別関数に入力データを与えると、
それが属すると予測されるクラスを直接出力する手法
- サポートベクターマシン(SVM)、k近傍法(機械学習の該当節を参照)、
C = f(w, x)
pred
-
確率値が出力値でないので、クラスの評価がどの程度正しいか、
間違っているのか知ることができない。 -
SVMでは入力データの超次元空間に識別境界を描きクラスの分布を把握できる。
-
識別モデル
事後確率P(Ci|x)を直接モデル化する確率的モデル、
識別の部分のみに確率の考え方が導入されたモデル。- 条件付き確率(ベイズ統計の該当節を参照)
(Xが観測されたときクラスYが実現する確率)を学習する。 - 入力データを与えると、各クラス毎にそれが属する条件付き確率(事後確率)を
割り当てる。
- 条件付き確率(ベイズ統計の該当節を参照)
C = argmax p(C|x)
pred c
-
ロジスティック回帰、DNNやCNNの2値分類、多値分類など。
- ロジスティック回帰分析ではSigmoid関数を使用している。
- DNN、CNNなどSigmoid関数、Softmax関数を使用している。
-
確率に基づいた識別境界を設定することが可能。
-
確率に基づいた閾値を設定し、
閾値を下回った場合は回答しないモデルとすることもできる。
-
何らかの分布に基づいてデータが生成されると考える。
-
データの生成過程を確率的にモデル化する。
- 事前確率P(Ci)と確率密度関数P(x|Ci)をモデル化し、
- それからベイズの定理を使って事後確率P(Ci|x)を計算し、
- 最も事後確率が高いクラスを識別したクラスとする方法
- つまり、与えられたデータセットの確率分布を推定し、
その分布から新しいデータをサンプリングする。
-
入力データの分布(生成モデル)を学習する。
- データは背後にある確率分布から生成されたものと仮定。
- データの背後にある同時確率分布は生成モデルと呼ばれる。
- 与えられているデータから未知の生成モデルを予測(モデル化)できる。
- 学習と生成の間の2つの確率分布間の差異を数理最適化で最小化するなど。
- 教師なし学習(外れ値検知、画像生成)などにも応用できる。
-
生成タスクとは
- 訓練データの分布を推論し、同じ分布のデータを生成する。
- 潜在的空間を学習することによって、様々な表現を取ることができる。
-
生成モデルでできること。
- 生成モデルにより(クラスに属する)擬似的データを生成できる。
- その他にも、ノイズ除去、異常検知などを行うことができる。
- 画像生成系:VAE(Variational auto-encoder)、DRAW、
GAN(Generative Adversarial Network)
(いずれも ニューラルネットワークの該当節を参照)
- データの生成過程を確率的ではなく、通常は決定論的にモデル化する。
- つまり、生成されたデータは確率的ではなく、
一意の出力が与えられた入力に対して生成される。
典型的なモデルに、RNNやAEなどがある。 - テキスト生成系:BERT(Bidirectional Encoder Representations from Transformers)、
GPT(Generative Pre-trained Transformer)
(いずれも 言語処理(AI)の該当節を参照)
-
機械学習の最適化とは「経験損失最小化」で純粋な最適化とは異なる。
- 本来は訓練データではなくデータ集合全体
- 真のデータ分布を訓練データ集合の分布に置き換え損失関数の最小化にすり替える。
- 実用的な損失関数は簡単に最適化できないものもある。
- このため最適化が容易な代理損失関数を最適化する。
- 早期終了があるという点でも一般的な最適化と異なる。
-
以下のような方法で関数(的なモノ)のパラメタの更新(学習)をおこなう。
(パラメタは 機械学習の該当節を参照)
サンプル・データとの誤差が最小になる平均値を探す。
- 説明変数から推定される目的変数と教師データの誤差を最小化するよう、
損失関数を最小化する近似関数のパラメタのポイントを探る。
最小二乗法の次なのに一気に難しくなる。ここが理解できたのは黒本やってから。
-
サンプル・データが得られる確率(尤度)が最大になる平均値を探す。
-
ダイバージェンスの最小化が、最尤推定と一致する場合がある。
-
損失関数のかわりに尤度関数を使用する。
尤度関数は損失最小化ではなく、もっともらしさを最大化する。 -
尤度関数は、初期値として仮定した確率分布に対応する
確率密度/質量関数と得られる値の積で定義される。- 尤度関数は、積の形にすることで、
すべての観測データの条件付き確率を評価しその最大化を行うことができる。 - 尤度関数は、条件付き確率
(説明変数に対する目的変数が特定の関数の下で観測される確率)自体ではないが
その大きさを表す。
- 尤度関数は、積の形にすることで、
-
この尤度関数を最大化するように、
確率密度/質量関数の近似関数のパラメタのポイントを探る。 -
分布→尤度→対数尤度(ΠをΣに変換、微分が楽になる)
→ 対数尤度関数の(正負反転の)最小化問題を微分で解く。 -
最尤法でロジスティク関数やソフトマックス関数を使用する分類問題を
最適化する場合、尤度関数はロジスティク関数やソフトマックス関数の
合成関数になる。
簡単なベイズ更新のような仕組みでしか説明されていない。
- 新しいデータが得られるたびに、事前分布から事後分布を求め、
事前分布を更新していく。
(IID仮定)
-
学習データに対して置かれた仮定。
- 各データのサンプルが互いに独立
- 訓練データとテストデータが同一の分布に従う
-
訓練データと検証データを同じモデルで扱うことができる。
-
ただし、コレによって過学習(機械学習の該当節を参照)が発生し得る。
https://www.osscons.jp/joho108j0-537/#_537
Tags: 移行, 機械学習, 情報理論, 生成モデル, 数理最適化, 開発基盤
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。