ニューラルネットを使ってみよう










1. ニューラルネットを使ってみましょう。


matlab プログラム


これは、わずか83行のプログラムですから、いろいろ変えて試してみることができると思います。

なんども実行してみると、真の分布が同じであっても現れるデータは大きく異なり、得られる 学習結果もそれに応じて変動することがわかります。







データの例です。真の識別境界は円です。赤○は 0.99 で、青*は 0.01 を表しています。


データ



ニューラルネットの出力は(0,1)の間の連続値になりますので、等高線で示してあります。緑色の線が 識別境界を表していると思います。赤○と青*が混んでいるところでは等高線が急峻ですが、 どちらのデータも少ない場所では等高線は緩やかになっています。


識別結果データ








2. 層をふやしてみましょう。


上のプログラムは3層パーセプトロンです。次に4層パーセプトロンの例をあげます。

真の識別境界は x2 + 2 sin(2πx1) = 0 ですが、うまく推測できるでしょうか。

matlab プログラム

層が増えると・・・。

(1) 複雑な識別境界も実現しやすくなります。

(2) プログラムは特に難しくはなりません(同じコードを並べるだけです)。

(3) 初期値によって最急降下法が最適な状況まで行かないことが起こりやすくなるような感じがします。


データ











3.具体的な例に使ってみましょう。


1970年から2013年までの528ヶ月の毎月の108種目の物価の推移を表した一覧表があります。

108種目の毎月の物価から翌月の物価の予測をニューラルネットで学習してみましょう。


深層学習プログラム

深層学習描画プログラム

具体的な例の学習結果を描くプログラム

データの例(csvファイル)   ( 政府統計の総合窓口 より)。

108種目の物価


学習結果を描画しないようにすると 深層学習プログラムをスピードアップできます。 変数 Network_draw を0にしてください。


学習したニューラルネットは下図のようになりました。


学習結果


赤い線は正値を、青い線は負値を意味しています。 また絶対値が0.5よりも大きい結合のみを表示しています。

入力ユニットと出力ユニットはどちらも108個です。

一番下の層が入力層で、一番上の層が出力層です。

つまり情報は下から上に向かって流れています。

間にある三つの層は中間層です。

学習には、誤差逆伝播法の改良である石川眞澄先生の忘却つき学習(1990)を使いました。 LASSO(1996)とも呼ばれています。

忘却つき学習あるいはLASSOを使うと必要な結合だけが残るようになります。 (注:ハイパーパラメータの適切な設定が必要です)。


課題:このニューラルネットワークで物価の予測ができるわけですが、 このグラフは何を表現しているのでしょうか。

この図から何が読み取れるかを考えてみましょう。





下図は、上記のニューラルネットを使って、 さんま・はくさい・アイスクリームの物価予測を学習した結果です。
赤い線は実際のデータで、青い線はニューラルネットの出力です。


学習結果








4.考察など。


考察を書きます。


◎ データを識別する問題では、識別境界の近くにあるデータは学習結果に大きな 影響を及ぼしますが、そうでないデータはほとんど影響を及ぼしません。

データの影響力が、ものすごく異なるのです。

しかしその影響力は、他のデータとの関係から相対的に定まるものであり、データに固有のものではありません。

新しいデータが加わると、それまでは影響力大だったデータがまったく影響しなくなることがあります。

逆に、新しいデータが加わったために、それまでは影響力がなかったデータが強い影響力を持つこともあります。




◎ 学習者は真の分布を知りません。

オンライン学習では、次に来るデータが何かはわからないので、捨ててもよいデータというのは(理論的には)ありません。




◎ サポートベクタマシンでは、影響力の大きなデータとはまさしくサポートベクタのことです。

サポートベクタは、もちろんカーネルの選び方に依存します。

すなわち、データの影響力は、データの相対関係だけでなく、学習モデルによっても変わります。




◎「サンプル平均から真の平均を推測する」という問題では、全てのサンプルが同じ重さで 推測結果に影響しています。つまりどのデータも影響力は同じです。

一方、上記で述べたように、データを識別する問題では、個々のデータの影響力は大きく異なります。 情報学で現れる課題には、データの影響力が大きく異なるようなものが多いのではないでしょうか。

画像や音声の認識・理解、機械翻訳や自動運転のような問題では高次元の空間上にあるデータの識別が 必要になることが多いのですが、そうした問題は統計学的には容易なものではなさそうであることがわかります。






以下は、専門的な解説です。読む必要はありません。

理解できないことが書いてあっても気にしないようにしましょう。




◎ 画像・音声・言語・運転のような高次元の空間では、データが非常にたくさんある場合であっても、 高次元空間の中でポツンポツンとしか存在していない状況になります。この状況のことを 「高次元空間ではデータがスパースである」という言葉で表現します。




◎ 高次元空間ではデータがスパースになるため、高次元空間上の関数を推定することは 著しく困難な問題になります。『広い空間のデータがないところをどうやって推定するの?』というわけです。 これを【次元の呪い】といいます。 人工知能の研究者は【次元の呪い】こそが人工知能の実現の前に立ち塞がる最も厳しい壁であると 考えてきました。




◎ さて、ニューラルネットのように階層構造を持つ学習モデルを用いることにより、 次元の呪いが克服できることが証明されました(1993, Andrew Barron)。 このためマシンラーニングで考案された様々な学習モデルは 高次元空間上にある対象の情報処理において力を発揮するのではないかと期待されています。

A.R.Barron, “Universal approximation bounds for superposition of a sigmoidal function”, IEEE Trans. on Information Theory. Vol.39, pp.930-945, 1993.