めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

「JAX/Flaxで学ぶディープラーニングの仕組み 〜 新しいライブラリーと畳み込みニューラルネットワークを徹底理解」が発売されます。

book.mynavi.jp

すでにお気づきの方もいるかも知れませんが・・・2019年に発売された「TensorFlowとKerasで動かしながら学ぶディープラーニングの仕組み」の物理本が売り切れ・絶版になっており、現在、電子版しか手に入らない状態です。そんな中、「JAXを使って全面的に書き直しませんか」というオファーをいただいて完成したのが本書になります。モデルを構築して終わり、ではなくて、モデルを構成する各パーツの役割を徹底的に解説するというコンセプトは以前と変わりませんが、JAX/Flaxを使うことにって、「モデルを分析するためのコード」をよりわかりやすく書けたと感じています。ディープラーニングの入門書、あるいは、JAX/Flaxの入門書として活用していただければ幸いです。

以下、本書の「まえがき」を掲載させていただきます。

「まえがき」

 「ニューラルネットワークを用いてコンピューターが猫を認識することに成功した!」― こんなニュースがネットで話題になったことを覚えているでしょうか? 2012年にGoogleの研究者が、YouTubeの画像データからさまざまな物体を認識するニューラルネットワークの開発に成功したことを公表したところ、そこに掲載されていた印象的な猫の画像から、このようなニュースが発信されたようです。これ以降、Googleをはじめとするさまざまな企業で、「階層の深いニューラルネットワークを利用した機械学習」、すなわち、ディープラーニングの活用が急速に広がりました。そして、この広がりを支えたのが、オープンソースソフトウェアとして提供される、さまざまなディープラーニング専用の機械学習ライブラリーです。その中でも、Googleの研究者を中心に利用が広がっている最新のライブラリーが「JAX」です。

 Googleの研究者がJAXを好む理由を想像すると、新しいアイデアを盛り込んだ独自の機械学習モデルを実装して、さまざまなチューニングを試してみる、あるいは、学習後のモデルを分析して、意図通りに学習できているかを検証する、このようなディープラーニングに関わる研究・開発作業が容易に行えるという点にありそうです。研究者が使用するツールというと、高度な機能が利用できる反面、使い方を学ぶのにも時間がかかるというイメージがありますが、JAXは違います。本書を読めばわかるように、基本的な使い方を理解すれば、その後は、Pythonプログラミングの知識を利用して、さまざまな応用が可能になります。

 このようなJAXの特徴は、ディープラーニングの学習にも最適と言えます。本書のゴールは、ディープラーニングの代表とも言える「畳み込みニューラルネットワーク(CNN)」を例として、その仕組みを根本から理解することですが、そのためには、ただモデルを作るだけではなく、モデルの動作をさまざまな角度から分析して理解する必要があります。本書では、JAX、および、それを補完するライブラリーであるFlax/Optaxを用いて、CNNのモデルを構築しながら、数式を用いた数学的な仕組みの説明と実際のコードの実行結果を組み合わせることで、モデルを構成する各パーツの役割を徹底的に分析・理解していきます。さらには、転移学習、オートエンコーダによるアノマリー検知、DCGANによる画像生成など、CNNの応用となる少し高度な話題についても、実際に動作するモデルを構築しながら、その動作原理を学びます。そしてまた、「ディープラーニングは知っているけれど、JAXはまだ使ったことがない」― そんな方には、JAX/Flaxの入門書としても活用していただける内容です。

 ディープラーニングの奥深さ、そして、その面白さを味わうことは、決して専門家だけの特権ではありません。本書によって、知的探究心にあふれる皆さんが、ディープラーニングの世界へと足を踏み入れるきっかけを提供できたとすれば、筆者にとってこの上ない喜びです。