多層パーセプトロン(Multilayer perceptron、MLP)は、順伝播型ニューラルネットワークの一種であり、少なくとも3つのノードの層からなります。入力ノード以外の個々のノードは非線形活性化関数を使用するニューロンであり、誤差逆伝播法(バックプロパゲーション)と呼ばれる教師あり学習手法を利用することで、線形分離可能ではないデータを識別できます。非線形活性化関数として使われる関数のひとつに、シグモイド関数があります。
今回は、入力層Xに4つのノード、隠れ層Hには3つのノード、出力層Oに3つのノードを配置したMLPをExcelで実装しようと思います。
あやめのデータ(3品種)を例に説明します。
あやめのデータをダウンロードしてください。
あやめのデータは機械学習の勉強でよく使われるデータで、3品種150サンプルの花片や萼の長さ・太さから品種を当てる(予測する)という問題がよく解かれます。
B-E列が説明変数X、F列が目的変数Yと思ってください。このYを予測するMLPモデルを構築したいと思います。
隠れ層と出力層を乱数で初期化
2行目〜3行目のH0〜H2が隠れ層のニューロンを表します。各ニューロンは入力層X1〜X4からの入力を受け付けて、行列「B2:E4」で表される重み行列Wとの線形結合とベクトル「F2:F4」で表されるバイアス項θとの和を計算し、それをシグモイド関数で変換した値を出力します。
7〜9行目のO0〜O2が出力層のニューロンを表します。各ニューロンはH0〜H2からの入力を受け付けて、行列「B7:D9」で表される重み行列Wとの線型結合とベクトル「E7:E9」で表されるバイアス項θとの和を計算し、それをシグモイド関数で変換した値を出力します。このO0, O1, O2からの出力がそれぞれ、品種0、品種1、品種2である確率を出力します。
説明変数Xから目的変数Yを精度よく出力するための重み行列Wとバイアス項θを求める、というのが今回の計算の目的になります。まずは、これらの重み行列Wとバイアス項θを乱数で初期化します。
入力データを標準化
それぞれの説明変数Xについて、最大値が1、最小値が0になるような標準化を行います。
隠れ層の出力
隠れ層の各ニューロンは、入力層X1〜X4からの入力を受け付けて、行列「B2:E4」で表される重み行列Wとの線形結合とベクトル「F2:F4」で表されるバイアス項θとの和を計算し、それをシグモイド関数で変換した値を出力します。
今はWとθがデタラメな乱数なので、出力もデタラメです。
出力層の出力
出力層の各ニューロンはH0〜H2からの入力を受け付けて、行列「B7:D9」で表される重み行列Wとの線型結合とベクトル「E7:E9」で表されるバイアス項θとの和を計算し、それをシグモイド関数で変換した値を出力します。このO0, O1, O2からの出力がそれぞれ、品種0、品種1、品種2である確率を出力します。
今はWとθがデタラメな乱数なので、出力もデタラメです。
予測結果の表示
出力層O0〜O2からの出力を比較して、最も大きな出力をしたニューロンが最終的な予測結果(分類された品種)を表すことにします。
教師データの表示と答え合わせ
教師データと照合して答え合せをします。
正解していれば1点、不正解なら0点というスコアが算出されるようにします。
誤差の算出
スコアとは別に、誤差を算出します。誤差は、出力層O0〜O1からの出力と正解(教師データ)との差分の2乗和とします。
この誤差の総和Qtを最小化するWとθを求めるわけです。
精度の算出
誤差の総和を最小化するWとθを求める前に、精度指標も計算できるようにしておきましょう。ここでの精度とは、教師セットと同じ予測を出力した割合です。
ソルバー
ソルバーが解決します。目的セル、目標値、変数セルを間違いなく入力して「解決」してください。
収束例
収束結果はひとつとは限りません。私が計算した例をいくつか挙げます。エクセル表の次に描いたネットワーク図では、数値が大きいほど辺が太くなるように描いてあります。
収束例1
収束例2
収束例3
収束例4
収束例5
課題
- MLPとロジスティック回帰との関係について説明してください。
- 収束例1〜5について、結果を解釈してください。また、ベストなモデルはどれか挙げてください。
- 自分で計算して、その結果を解釈してください。
- 「制約のない整数を非負数にする」のチェックを外してソルバーを実行するとどのような結果になるか試してください。またその結果について説明してください。
- 隠れ層のニューロンの数を減らすとどうなるか実験してください。
- 隠れ層のニューロンの数を増やすとどうなるか実験してください。
- 最後に、演習用データから「ピマ・インディアンの糖尿病診断」を取得し、糖尿病の人と糖尿病ではない人を区別するためのMLPモデルを作成してください。