Skip to content

Latest commit

 

History

History
105 lines (68 loc) · 7.27 KB

ch10_deeplearning.asciidoc

File metadata and controls

105 lines (68 loc) · 7.27 KB

10章: ディープラーニング入門

本章からディープラーニングを利用して、QSARモデルや生成モデルを作成します。

ディープラーニングに関して

生物の脳には神経細胞が存在し、それらがネットワークを形成することで情報を伝達したり、記憶や学習しています。このネットワーク構造を数理モデル化したものがArtificial Neural Network(ANN)です。

一般的なANNは、学習のための情報を入れる入力層、入力情報のパターンを元に反応(神経シナプスの発火に対応)を学習する中間層(または隠れ層)、最後の出力層の三層から構成されていますが、ディープラーニングは隠れ層を多層にすることで高精度な予測を可能とします。

本書では特にこれ以上の説明はしませんが、自分でゼロからコードを書いて理解したい場合はゼロから作るDeep Learningが助けになります。また、理論についてきちんと学びたい場合は深層学習をお薦めします。

TensorFlowとKerasについて

Tensorflowは Googleが開発してOSSとして公開している機械学習のためのフレームワークです。主にディープラーニングのフレームワークとして使われることが多いです。

NOTE: Tensorflowは最近1.xから2.xにメジャーアップデートをしましたが、2.x版はまだ登場したばかりで参考情報が少ないので、1.x系を利用します。また同じ1.xでもバージョンによってAPIが異なるので、動かしたいコードがあった場合、どのバージョンで書かれているかに気をつけてください。

KerasはTensoflowなどの低レベルフレームワークをバックエンドにした高レベルAPIで、より簡単にコードが書けます。KerasはTensorflowとは独立して開発されてきましたが、最近、TensorflowはKerasを同梱するようになりました。そのため別にイントールせずにKerasを利用できます。Tensorflow同梱バージョンのKerasが本家の最新バージョンになっていないことがあります。

どちらのKerasを使うのが良いかは悩ましいところですが、本書では利便性のためにTensorflow統合版Kerasを利用します。

KerasとTensorflowの関係性

KerasとTensoflowをオフィシャルブログを参照しつつ少し整理しておきます。元々KerasはTensoflowとは別のプロジェクトとして開発されており(もちろん今もです)Kerasを使うにはTensorflowとはインストールする必要がありました。しかし2017年Keras2.xのメジャーバージョンアップのタイミングのあたりでTensoflowプロジェクトがKerasを統合するようになりました。以下の英文は上記リンクの記事の抜粋です。現在はTensorflowからKerasを呼び出し利用することが可能になっています。

TensorFlow integration Although Keras has supported TensorFlow as a runtime backend since December 2015, the Keras API had so far been kept separate from the TensorFlow codebase. This is changing: the Keras API will now become available directly as part of TensorFlow, starting with TensorFlow 1.2. This is a big step towards making TensorFlow accessible to its next million users.

インストールしてみよう

Tensorflow とKerasをインストールしてみましょう。 anacondaでインストールする場合、GPU対応バージョンを使うか、CPUバージョンを使うかでインストールするパッケージが少し異なります。

# CPU版
$ conda install -c conda-forge tensorflow
# GPU版
$ conda install -c anaconda tensorflow-gpu
Note
pipコマンドを利用してTensorFlowをインストールすることもできます。その場合は公式ドキュメントを参照してください。しかし基本的にはCondaで環境を作ったらCondaでパッケージを入れることが望ましいでしょう。

参考リンク

Google colabとは

Google colab

Google colaboratoryはクラウド上で実行できるJupyter notebook環境です。Theano, Thensorflow, Keras, Pytorchなどのディープラーニング用のフレームワークがインストール済みなのと時間の制限はありますがGPUが使えるため、手元にGPUマシンがなくてもディープラーニングを利用できる点が非常に魅力的です。

利用にはGoogleのアカウントが必要なので、もしGoogleアカウントを持っていなければこの機会にアカウントを取得し利用してみると良いでしょう。

Google のアカウントがある方はGitHub状のノートブックをそのままColab上で実行することもできます。以前Mishima.sykで使ったScikit-learnハンズオンのノートブックを開いてみます。

NOTE

@y__samaが作成したノートブックですが、データの準備から、AutoSklearn まで一通り学習できるようになっています。

まずGoogle colaboratoryにアクセスします。もし下のような画面にならなければ左上の「ファイル」から「ノートブックを開く」を実行してください

GoogleColabTop

次にGitHubというタブをクリックし、以下のURLをコピーペーストするとJupyter Notebookからコードを動かせます。

GoogleColab2

ノートブックを開くとJupyter Notebookと同じような画面になります。Shift+リターンキーでセルのコードを実行できます。

NoteBook

GoogleColabデフォルトで利用できるライブラリを確認するにはセルの中で '!pip freeze’と打つと列記されます。

  • absl-py==0.7.0

  • alabaster==0.7.12

  • たくさん出てくる

  • yellowbrick==0.9.1

  • zict==0.1.3

  • zmq==0.0.0

Pythonのディープラーニング用フレームワーク

Pythonのディープラーニング用フレームワークはいくつもあります。主にTheano, Tensorflow, Keras, MXNet, Chainer, PyTorch, などが挙げられます。

様々なディープラーニングの文献では実装に上記のフレームワークのいずれかが使われていることが多いです。 色々試してみて自分が使いやすいフレームワークを選ぶのもよいでしょう。