Update 2023.11.25

TwoMoons 2DNN(Dense2層ニューラルネットワーク) TensorFlow, Keras
機械学習ディープラーニング・シャローラーニング ベストプラクティス
TensorFlow, Keras, LightGBM の教科書

最も単純な 2-3-2 2DNNでToy DataのTwoMoonsを学習します

左の図はTwoMoons 2DNN(Dense2層ニューラルネットワーク)(中間層1層)の出力図です。

分類問題はシャローラーニングでもできますが,ニューラルネットワークの出力図はそれらに比べて圧倒的に滑らかです。

かなり高次の曲線のようにも見えますが,ノード数は,2-3-2 でありパラメータ数は,17です。

この図は,フロムスクラッチで作ったものとまったく同じ図になっています。


(2023-11-25 Python3.10.9(GPUマシン)で動作確認済み)


model.summary()によって2DNNの構造が表示されています。2-3-2 の構成と合わせてパラメータ数を数えることができます。このニューラルネットワークのパラメータ数は,17です。

パラメータ数の数え方の法則は別記事で紹介します。

出力の決定境界図を見てもらえば判るが,3層か4層にすれば LightGBM はニューラルネットワークにかなわないと思います。ましてや scikit-learn にあるシャローラーニングでは勝負になりません。ただ言語系の機械学習マシーンラーニングでは軽さが重要なので出番はあります。

TensorFlow はニューラルネットワークの構築の方法の一つですが,その手続きはかなり複雑です。代わりに複雑な構造のネットワークも組めるのですが,ベテランでも必要性を感じません。

Keras は TensorFlow のラッパーライブラリであり,ニューラルネットワークの構築がその構造の見た目のままに書ける特徴があります。詳細はコードを読むと判ります。層が増えていけばそのありがたみが判ります。

本プラグラムでは学習の評価に単純なホールドアウト法を使っており,データの分け方も定型的です。ホールドアウト法のデメリットはtrainに使えるデータが減ってしまうことですが,Toy Dataですから問題になりません。

また出力図の描画プログラムも定型的であり,典型例です。応用が多いと思われます。


下の枠に添付のhtmlファイルは「Jupyter Notebook」の.ipynbファイルをhtml化したものでそれぞれのファイルは左上隅からダウンロードできます。

Python3 on Jupyter Notebook(拡張子.ipynb)on GPU


トップページに戻る
inserted by FC2 system