B-1.PythonとKerasによるディープラーニング

カバーイラストのペルシャ人女性が誘う、Keras解説本の原点にして最高傑作。

このカバーイラストには「1586年のペルシャ人女性の服装」という題名がつけられているそうだが、沢山ある技術書の中で、存在感のある異色の表紙だ。
著者はKeras開発者のフランソワ・ショレ。
Kerasのシンプルさと理解しやすさは、他の機械学習フレームワークの追随を許さないが、それは著者の卓越した思考力と抽象化能力の証だろう。

本書は二つのパートに分かれている。

前半のパートはディープラーニングの解説だが、数式の代わりにPythonとKerasが多用されている。例えばテンソルの説明では、数学的な定義の代わりに、PythonのNumPy(注1)における、0から3次元のテンソルの定義が示されている。
2次元テンソルを記号で定義するよりも、以下(注2)のように記載した方がイメージしやすいという配慮だろう。

ar = np.array([[1, 5, 4, 3], [3, 8, 4, 2], [11, 2, 5, 9]])

こういった配慮は最適化法や誤差逆伝搬法の解説でも共通している。
また、ディープラーニングの幾何学的解釈など、短いが機械学習の本質に迫るセクションも散りばめられている。

後半のパートはKerasを使った例題の解説が集められている。

内容は画像処理、テキストなどのシーケンス処理、及びLSTMを使ったテキスト生成などオーソドックスな内容から始まり、DeepDreamや、変分オートエンコ―ダと敵対的生成ネットワークのような応用へと進む。すべての実装例はKerasで記載されているため、短く簡潔で、各技術を理解する助けとなるだろう。

Kerasを使ったソースコードの読みやすさは、この本の価値を高めていると言える。このライブラリーは抽象化レベルは高い段階にあり、まるで自然言語のように読み進む事ができる。
例えば次の例(注2)は、512次元のデータを受け取り、64個の出力ユニットを持つ全結合層(Dense)を2つ繋いだ時の実装例。

#512次元のデーター>64個の出力ユニットを持つ全結合層(Dense)×2
model = Sequential()
model.add(Dense(64, input_shape(512, )))
model.add(Dense(64))

Sequential()の呼び出しはKeras特有の決まり事だが、Denseの2行は非常にシンプルで分かりやすい。この例のように、読者がPythonとKerasに慣れていなくても、あまり躓かずに読み進む事ができるだろう。

ディープラーニングの入門書、学習書、詳細な参考書などは無数にあるが、良書を見つけるのは難しい。もしあなたが先に進めないでいるのなら、ぜひこの本を手に取って欲しい。
Kerasに導かれて、きっと次の段階に進むことができるだろう。

(注1)NumPy:高水準の数学関数のライブラリが利用できる。
(注2)著書の引用ではないため、同様の記述はこの本には含まれない。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です