入門向けのkeras勉強会やったよ！

* 最近機械学習はじめたので、内部向けに勉強会を開催しました。
その際の資料を共有します。（寄せ集めです（汗））

## 目的

* 機械学習の敷居を下げ、機械学習をはじめてもらう！
* 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
            
* オーバーフィッティング
訓練データにあわせすぎて、テストデータだとうまくいかない状態。
対策→ドロップアウトなど（ドロップアウトすると、結果的に複数のモデルで訓練したようになるため効果的）

* モデル
	* やさしい深層学習の原理: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