ディープラーニング入門
カテゴリ:Pythonの話
こんにちは!今回はpythonによる機械学習には欠かせない
ディープラーニングについて紹介していきたいと思います!
1.ディープラーニングとは
ディープラーニングとは、人工知能の根幹をなす技術のことで十分なデータ量があれば、機械が自動的にデータから特徴を抽出してくれるディープニュートラルネットワーク(DNN)を用いた学習のことです。
2.ディープラーニングができること
- 画像認識
- 音声処理
- 自然言語処理
などがあります。逆にできないこととしては十分なデータ量がないような事例や人間にしかできない道徳的な活動です。
3.ディープラーニングの実装
実装をする上で今回は、「スタビジ 【入門】ディープラーニングとは?仕組みとPythonでの実装を見ていこう!」(https://toukei-lab.com/deep-learning#i-2 )こちらの記事を参考にさせていただきます。今回はKerasを使ったディープラーニングを使用して画像認識問題を解いていきます。
まずは、必要なライブラリをインストールしておきます。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/ee357c2349979d0291a8376ea1eadad2.png)
このときに「sklearn」をインストールしておくのを忘れたため、エラーが出てきたので「pip install -U scikit-learn」でインストールしておきました。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/62b4f488f5fc26eae9b912a0c7ad279a-1-1024x329.png)
次に、mnistのデータを学習データとテストデータに分けます。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/9f47c160225cb00204e4bea520c18d1a-1024x128.png)
※以下のようなソースコードになります。
1 2 3 4 5 |
np.random.seed(0) (X_train_base, labels_train_base), (X_test, labels_test) = mnist.load_data() # Training set を学習データ(X_train, labels_train)と検証データ(X_validation, labels_validation)に8:2で分割する X_train,X_validation,labels_train,labels_validation = train_test_split(X_train_base,labels_train_base,test_size = 0.2) |
そして、画像データを学習するために1×784に直し、さらに0~255のスケールを正規化します。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/8deadd38c16a32b4865250752762e3c6.png)
続いて、ラベルをダミー変数化します。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/3085de89424f26f2038d7b7ee4f85f64.png)
次は、ネットワーク構築です。
隠れ層では、RELU関数を用いて出力層ではソフトマックス関数を用いています。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/6730ac9c9e55a92350c9747083ef276c.png)
続いて、最適化手法であるAdamOptimizerを使います。
「Early stopping」・・・学習時に何らかの指標を監視して、学習を終了させるテクニック
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/885258bf54828664ef33cb2a55c4b18e.png)
最後に、テストデータで予測を実行して実測値と予測値の正解率を求めます。結果は、97.010%でした。
![](https://inglow.jp/wordpress/wp-content/uploads/2020/07/7deef1c35bcd2f92dbb9aa3c4ecfc349.png)
4.さいごに
今回はディープラーニングをPythonで実装してみましたが、今回だけでなくライブラリのインストールがされていないことによるエラーが何回かありました。(笑)必要なライブラリのインストールはあらかじめしておくと実装するスピードが上がると思いました。