- 最近機械学習はじめたので、内部向けに勉強会を開催しました。
その際の資料を共有します。(寄せ集めです(汗))
目的
- 機械学習の敷居を下げ、機械学習をはじめてもらう!
- kerasのソースベースなので、とりあえず動かせる(はず)
進め方
- keras説明(2分)
- kerasインストール(2分)
- 実装&理論(30分)
- 質問時間(10分)
- 参考資料の共有(6分)
keras説明(2分)
-
TensorFlowやTheanoのラッパー。超簡単に機械学習ができる!
-
参考
Python製深層学習ライブラリ「Keras」の紹介 (with TensorFlow):http://amacbee.hatenablog.com/entry/2015/12/02/220414
keras github:https://github.com/fchollet/keras-resources
Keras/Tensorflowで始めるディープラーニング入門:https://qiita.com/yampy/items/706d44417c433e68db0d
kerasインストール方法説明(2分)
windowsで入れる場合は、Anaconda(Pythonとかライブラリいろいろ入ってる)インストール→pip install tensorflow, kerasだけ!(おそらく5分くらい)
- Anaconda で Python 環境をインストールする:https://qiita.com/t2y/items/2a3eb58103e85d8064b6
- TensorFlow(+Keras)がWindowsで簡単にインストールできた件:https://qiita.com/samacoba/items/207f2650ee60fe1de25a
- Anaconda は Environment Isolation Tool (環境分離ツール) ではない:https://qiita.com/t2y/items/dd6d7f9c70ac2b8a79da
実装&パラメータ、理論等解説(30分)
- 入り口資料
- kerasのmnistのサンプルを読んでみる:https://qiita.com/ash8h/items/29e24fc617b832fba136
- DeepLearning系ライブラリ、Kerasがあまりにも便利だったので使い方メモ:http://www.procrasist.com/entry/2017/01/07/154441
各種用語&補足説明
-
MNISTとは
- MNIST 手書き数字データベース:https://keras.io/ja/datasets/#mnist
- MNIST 手書き数字データを画像ファイルに変換する:http://y-uti.hatenablog.jp/entry/2014/07/23/074845
- はじめての Deep Learning - Keras で MLP for MNIST:https://m0t0k1ch1st0ry.com/blog/2016/07/15/keras/
-
numpyとは
- numpy: https://deepage.net/features/numpy-reshape.html
- numpyはtensorflowで使うと、GCがちゃんとはたらなくてメモリ不足になることあるよ。
→tensorflow.variable使いましょう。
-
keras構築フロー解説
- KerasでMNISTを分類(ソフトマックス編):https://note.nkmk.me/python-keras-mnist-softmax/
-
活性化関数
- 活性化関数とは:https://qiita.com/namitop/items/d3d5091c7d0ab669195f
- 発火条件種類によって選ぶ
- 0 or 1 あるとき(閾値)に突然発火する。 → ステップ関数(単純パーセプトロン)
- 0 or 1 確率をだしてくれる → シグモイド、ReLU(中間層)
- 多分類の最終層につかう → softmax
- 発火条件種類によって選ぶ
- 活性化関数とは:https://qiita.com/namitop/items/d3d5091c7d0ab669195f
-
オーバーフィッティング
訓練データにあわせすぎて、テストデータだとうまくいかない状態。
対策→ドロップアウトなど(ドロップアウトすると、結果的に複数のモデルで訓練したようになるため効果的) -
モデル
- やさしい深層学習の原理:http://gagbot.net/machine-learning/ml4
- ニューラルネットワークのモデルのバリエーション:https://thinkit.co.jp/story/2015/09/09/6399
→RNN(Recurrent neural networks) 時系列データ, 例:sin波等
→LSTM(long short-term memory) 時間の長期依存、短期依存も学習可能
→CNN(convolutional network) 画像や、自然言語
-
optimizer: 最適値を見つけて行く際の手段(たくさんある)
- 深層学習における勾配法について:https://qiita.com/tokkuman/items/1944c00415d129ca0ee9
- 確率的勾配降下法とは何か、をPythonで動かして解説する:https://qiita.com/kenmatsu4/items/d282054ddedbd68fecb0
参考資料の共有(6分)
学習用マテリアル(無料)
-
(日本語)ニューラルネットワークと深層学習:
http://nnadl-ja.github.io/nnadl_site_ja/index.html
ニューラルネットワークの仕組みが知りたい場合 -
(英語&日本語字幕)Machine Learning:
https://www.coursera.org/learn/machine-learning
機械学習のオンラインプログラム、テスト等もあり非常に面白い
途中から難易度があがっていくが、アルゴリズムの理解には最適
本とか
- 図解ディープラーニング(tensorflowによる時系列データ処理)
→おすすめ!アルゴリズムを詳しく説明してくれます。tensorflowとkeras両方のサンプルコードがあるのがうれしい
データセット
- 機械学習を行う際に利用可能なデータセットまとめ
https://github.com/arXivTimes/arXivTimes/tree/master/datasets
Vision,Video,3D,Satellite,Medical,Captioning(認識),NLP(言語処理),Classification(分類),Q&A...
その他参考URL一覧
- Python製深層学習ライブラリ「Keras」の紹介 (with TensorFlow):http://amacbee.hatenablog.com/entry/2015/12/02/220414
- DeepLearning系ライブラリ、Kerasがあまりにも便利だったので使い方メモ:http://www.procrasist.com/entry/2017/01/07/154441
- 機械学習に挑んだ一年間 – 機械学習について一から学び、仕事に活用するまでの道のり: http://postd.cc/learning-new-stuffmachine-learning-in-a-year/
- 一から始める機械学習(機械学習概要):https://qiita.com/taki_tflare/items/42a40119d3d8e622edd2
- IPython Notebook:https://qiita.com/payashim/items/d4fe5227b21a5215e78b
- KerasでGridSearchCVをしてみた:https://qiita.com/cvusk/items/285e2b02b0950537b65e