pythonで単層パーセプトロン

以前の機械学習の記事でAND回路を誤り訂正学習をやってみました。誤り訂正学習の数式等に関してはこちら

3. 誤り訂正学習

実際にAND回路を手作業で学習してみた記事はこちら

4. AND回路を誤り訂正学習してみた

手作業で計算がめんどかったので、pythonで実装してみることにします。今回はも学習データとして、AND回路を使用します。次のCSVファイルを作成しました。

これを「AND.csv」として保存します。もちろんデータを変えればOR回路でもNANDでもできます。これを実行ファイルと同じディレクトリにおいておきます。

実行するコードは以下の通りです。

コードの意味は数式が理解できているとわかるかと思います。もしファイル名を変えたければinput_file_nameを変更すればなんでも対応できます。

後、入力の次元も2とは限らず任意です。

実行結果はこうなりました。

手作業で計算した結果と一致しているのでオッケーです。もちろん重みとバイアスの組み合わせは初期値を変えれば異なる結果になるかとは思いますが。AND回路と同じ挙動を示せば大丈夫です。

続いてOR回路を学習してみました。やることは2つだけ

OR回路のCSVを「OR.csv」として保存する。

実行コードのinput_file_nameを「OR.csv」に変更する。

ORの真理値表はこれですね。

そしてこれを実行してみると

すぐに結果を求めることができました。ニューラルネットワークの最も単純な形ですが、機械学習が中でどういうことをやっているのか実感できたと思います。

pythonで機械学習をしたいなら次の本がオススメです。数式変形も丁寧で原理がわかりやすいです。何より基本中の基本から徐々にステップアップしているので初学者にも分かりやすい内容になってます。本の内容のソースコードも全てGithubに上がっているので、すぐに試せるので便利です。