E資格講座の中でコーディング学習をしたこともあり、忘れないうちに活用しようと思って、Google Colab環境上で多層パーセプトロンのコードを作って遊んでみました。フレームワークはPytorchを使っています。モデルはごくシンプルに隠れ層を1層だけ持ちます。パラメータ数は入力層3つで出力層1つとして、回帰問題を解かせます。
データセットは自前で用意しています。問題の難易度とモデルの表現力を比べる場合、データセットの内容を自分でコントロール出来た方が都合が良いからです。
コードの準備が出来ていざ実行したら、期待通りの結果にならず、一向に学習が収束しません。調べたところ、2つ拙いところがありました。1つ目は元々分類問題向けに作ったモデルであったため、出力ユニットにソフトマックス関数が使われ、活性化関数にはシグモイド関数が使われていました。2つ目は重みの初期値が0から1の範囲の乱数であるのに対して、入力値がそれらよりかなり大きい値になっていたことです。このため全然学習が進みませんでした。
本来は正規化などの処理を行うべきなのでしょうが、今回は入力値のスケールを十分に小さくするという安直な方法で対処しました。この結果、期待通り学習が収束するようになりました。
ちなみに、今回作成したコードは下記になります。
次はロト6の当選番号を推論するモデルを作ってみようと思います。有意なものが出来上がるとは思っていませんが、モチベーションは高くなるお題かと思います。