Excel

多層パーセプトロン (Multilayer perceptron, MLP)をExcelで理解する

多層パーセプトロン(Multilayer perceptron、MLP)は、順伝播型ニューラルネットワークの一種であり、少なくとも3つのノードの層からなります。入力ノード以外の個々のノードは非線形活性化関数を使用するニューロンであり、誤差逆伝播法(バックプロパゲーション)と呼ばれる教師あり学習手法を利用することで、線形分離可能ではないデータを識別できます。非線形活性化関数として使われる関数のひとつに、シグモイド関数があります。

今回は、入力層Xに4つのノード、隠れ層Hには3つのノード、出力層Oに3つのノードを配置したMLPをExcelで実装しようと思います。

network01.png


あやめのデータ(3品種)を例に説明します。

あやめのデータをダウンロードしてください。

あやめのデータは機械学習の勉強でよく使われるデータで、3品種150サンプルの花片や萼の長さ・太さから品種を当てる(予測する)という問題がよく解かれます。

01データ.png

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とバイアス項θを乱数で初期化します。

02隠れ層と出力層.png


入力データを標準化

それぞれの説明変数Xについて、最大値が1、最小値が0になるような標準化を行います。

03入力データの標準化.png


隠れ層の出力

隠れ層の各ニューロンは、入力層X1〜X4からの入力を受け付けて、行列「B2:E4」で表される重み行列Wとの線形結合とベクトル「F2:F4」で表されるバイアス項θとの和を計算し、それをシグモイド関数で変換した値を出力します。

今はWとθがデタラメな乱数なので、出力もデタラメです。

04隠れ層の出力.png


出力層の出力

出力層の各ニューロンはH0〜H2からの入力を受け付けて、行列「B7:D9」で表される重み行列Wとの線型結合とベクトル「E7:E9」で表されるバイアス項θとの和を計算し、それをシグモイド関数で変換した値を出力します。このO0, O1, O2からの出力がそれぞれ、品種0、品種1、品種2である確率を出力します。

今はWとθがデタラメな乱数なので、出力もデタラメです。

05出力層の出力.png


予測結果の表示

出力層O0〜O2からの出力を比較して、最も大きな出力をしたニューロンが最終的な予測結果(分類された品種)を表すことにします。

06予測結果の表示.png


教師データの表示と答え合わせ

教師データと照合して答え合せをします。

07教師データの表示.png

正解していれば1点、不正解なら0点というスコアが算出されるようにします。

08答え合わせ.png


誤差の算出

スコアとは別に、誤差を算出します。誤差は、出力層O0〜O1からの出力と正解(教師データ)との差分の2乗和とします。

09誤差の算出.png

この誤差の総和Qtを最小化するWとθを求めるわけです。

10誤差の総和.png


精度の算出

誤差の総和を最小化するWとθを求める前に、精度指標も計算できるようにしておきましょう。ここでの精度とは、教師セットと同じ予測を出力した割合です。

11精度.png


ソルバー

ソルバーが解決します。目的セル、目標値、変数セルを間違いなく入力して「解決」してください。

12ソルバー.png


収束例

収束結果はひとつとは限りません。私が計算した例をいくつか挙げます。エクセル表の次に描いたネットワーク図では、数値が大きいほど辺が太くなるように描いてあります。


収束例1

13収束例0927.png

Network0927.png


収束例2

13収録例0953.png

Network0953.png


収束例3

13収束例0960b.png

Network0960b.png


収束例4

13収束例0960c.png

Network0960c.png


収束例5

13収束例0960.png

Network0960.png


課題


  • MLPとロジスティック回帰との関係について説明してください。

  • 収束例1〜5について、結果を解釈してください。また、ベストなモデルはどれか挙げてください。

  • 自分で計算して、その結果を解釈してください。

  • 「制約のない整数を非負数にする」のチェックを外してソルバーを実行するとどのような結果になるか試してください。またその結果について説明してください。

  • 隠れ層のニューロンの数を減らすとどうなるか実験してください。

  • 隠れ層のニューロンの数を増やすとどうなるか実験してください。

  • 最後に、演習用データから「ピマ・インディアンの糖尿病診断」を取得し、糖尿病の人と糖尿病ではない人を区別するためのMLPモデルを作成してください。