Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kerasで深層学習を実践する

3,251 views

Published on

Pythonで動かして学ぶ機械学習入門 第三回
Jupyter Notebooks: https://goo.gl/5rTZt3

Published in: Engineering
  • Be the first to comment

Kerasで深層学習を実践する

  1. 1. Kerasで深層学習を実践する Pythonで動かして学ぶ機械学習入門 第三回 谷田和章
  2. 2. 自己紹介 ● 谷田和章 (たにだかずあき) ○ GitHub: slaypni ● ソフトウェアエンジニア (フリーランス&白ヤギコーポレーション ) ○ 機械学習, 自然言語処理 ○ Web, iOS, Android ● カメリオの機械学習アルゴリズムの開発 2
  3. 3. 深層学習のライブラリ (一部) ● 計算グラフを記述 ○ Chainer ○ Tensorflow ○ Theano ● 深層学習の構成を記述 ○ Caffe ■ 専用ファイルに構成を記述 ○ Keras ■ Pythonで構成を記述 ■ ThensorflowかTheanoをバックエンドで利用 これからKerasの使いかたを見ていきます 3 ※分類は便宜的なものです
  4. 4. 深層学習を試す流れ 入力: データと正解ラベル 出力: テストデータの推定ラベル、および評価 実験の手順 1. データを特徴ベクトルに変換 ← (今回の)深層学習では生のベクトルでもOK 2. データを学習用とテスト用に分ける 3. モデルを定義 4. モデルを学習 5. テストデータの正解ラベルを推定 6. 結果を評価 4
  5. 5. モデル定義 5 from keras.layers import Activation, Dense from keras.models import Sequential model = Sequential() model.add(Dense(8, input_dim=4)) model.add(Activation('relu')) model.add(Dense(3)) model.add(Activation('softmax')) model.compile( loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'] ) ... ReLU softmax input output Sequential: .add()で層を順に追加 層を設定 損失関数 最適化法
  6. 6. 学習 6 # パラメータを最適化 model.fit( X_train, Y_train, nb_epoch=5, batch_size=32 ) エポック数 ミニバッチのサイズ X_train: 訓練データ Y_train: 正解データ
  7. 7. 推定 7 # ラベルを推定 y_pred = model.predict_classes(X_test) # 各ラベルの確率 y_proba = model.predict_classes(X_test) X_test: テストデータ
  8. 8. 評価 X_test: テストデータ y_test: 正解データ 8 # Accuracy _, acc = model.evaluate(X_test, Y_test)
  9. 9. 実行環境の準備 必要なもの ● anaconda ● keras ○ 未インストールの場合、 pip install kerasで入れられます 手順 1. 以下のリポジトリをクローン https://github.com/yosukekatada/python_ml_study 2. そのディレクトリでjupyterを実行 9
  10. 10. サンプル: Iris Dataset 20161027_keras/iris.ipynb 内容 ● 実験の流れを確認 (データ準備 → モデル定義 → 学習 → 評価 ) ● モデルその1: ロジスティック回帰 ○ 一層だけのニューラルネットワーク ● モデルその2: 多層パーセプトロン ○ 復数層のニューラルネットワーク ● 使う層 ○ Dense(): 全結合 ○ Activation(): 活性化関数 ○ BatchNormalization(): バッチ正規化 (学習しやすくする) 10
  11. 11. サンプル: MNIST 20161027_keras/mnist.ipynb モデルを作って実験してみてください ● モデルの良さはaccuracyで評価 ● 考えられること ○ 層の数 ○ 各層の幅 ○ 活性化関数 ○ エポック数 ○ 最適化法 ○ などなど ● Kerasのドキュメント: https://keras.io/ 11
  12. 12. サンプル: CIFAR10 20161027_keras/cifar10.ipynb 内容 ● 畳み込み層を利用 ○ Convolution2D() ○ 入力チャネル数の行列を受け取り、出力チャネル数の畳み込み行列を出力する ● プーリング層を利用 ○ MaxPooling2D() ● CPUでは学習に時間がかかります 12
  13. 13. サンプル: IMDB 映画レビュー感情分類 20161027_keras/imdb.ipynb 内容 ● 単語埋め込み層を利用 ○ Embedding() ○ 単語をベクトルに変換 ● RNN層を利用 ○ GRU() ○ ベクトルの系列をベクトルに変換 ● CPUでは学習に時間がかかります 13
  14. 14. おまけ: Dockerで実行環境を作る 利点 ● 簡単に実行環境が作れる ● プロジェクトごとに環境を分けられる 必要なもの ● GPUドライバがインストール済みのLinuxホスト ● nvidia-docker ○ GPUを触れるDockerコンテナを作れる 実行するには ● nvidia-docker run -it slaypni/keras-gpu bash 14

×