Web系エンジニアのアウトプット練習場

エンジニアリングのことはもちろん、全然関係無い話もします。

PythonとKerasによるディープラーニングを読み進める その1

Kerasの作者によるPythonとKerasによるディープラーニングの日本語訳版が2018/5/28に発売されましたので、早速購入しました。 ディープラーニングは仕事で使用する予定がある技術ですので、良いタイミングで発売してくれました。

サンプルコードの実行環境は、Google Colaboratoryを使っています。 詳しくは他ページで詳しく紹介されているのですが、なんといってもGPUインスタンスが無料で使えるというところが大きすぎます。

ノートブックを開いたら、ランタイム => ランタイムのタイプを変更から、ハードウェアアクセラレータをNoneからGPUに変更することでGPUインスタンスが使用できます。

f:id:h-sakano:20180603000919p:plain

ちなみに、本の3.3節にてサンプルコードはGPUインスタンスでの実行を推奨すると記載されています。 この本では「手元のPCにGPUを導入するか、AWSのEC2を使用せい」と紹介されていますが、両方お金がかかってしまいますので、宗教上の理由がない限りはGoogle Colaboratoryがオススメです。 なお、EC2でのKerasのセットアップ方法については、付録に詳細が記載されていました。

1章および2章はディープラーニングを扱う前の準備という立ち位置の章で、機械学習の歴史、前提となる数学知識がざっくりとまとめられています。
ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装を読んでいたので、ここらへんは軽く読むことができました。

ここまではブログにまとめることも特にないので、3章からいきます。

3章. 入門: ニューラルネットワーク

Kerasの標準的なワークフローの紹介。

  1. 訓練データ(入力テンソルと目的テンソル)を定義する
  2. 入力値を目的値にマッピングする複数の層からなるネットワーク(モデル)を定義する
  3. 損失関数、オプティマイザ、監視する指標を選択することで、学習プロセスを設定する
  4. モデルのfitメソッドを呼び出すことで、訓練データを繰り返し学習する

tensor(テンソル)

数字配列。

  • 0次元テンソル・・・スカラー値
  • 1次元テンソル・・・ベクトル
  • 2次元テンソル・・・行列

loss function(損失関数)

予測結果と正答との損失を求める関数。

損失関数の選択にはセオリーがある。

問題 損失関数
二値分類問題 二値の交差エントロピー
多クラス分類問題 多クラス交差エントロピー
回帰問題 平均二乗誤差(MSE)
系列学習問題 CTC(Connectionist Temporal Classification))

Optimizer(オプティマイザ)

損失関数に基づいてネットワークをどのように更新するのかを決定する手法。

今日のまとめ

時間切れでここまで!

今日はディープラーニングの前提知識を整理しました。
明日からはいよいよ実践しながら学んでいく章になります!

最初は映画のレビューデータを良いか悪いかを判断する二値分類問題の紹介のようです。
楽しみ・・・!