光のカナダ留学blog

30歳で会社を退職。現在カナダ留学中です。

【レビュー】詳解ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

スポンサーリンク

先日アマゾンで購入した書籍「詳解ディープラーニング~TensorFlow・Kerasによる時系列データ処理~」のレビューになります。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

 

始めに正直な感想を述べておくと、私にはまだかなり難しい内容でした。この本の前に何冊か本を読んではいたのですが、本書は数式を用いた理論的な話が中心で途中から頭が追いつかなくなりました・・・(第五章のリカレントニューラルネットワークの辺りが特に)。もう少し勉強し直してからまた読み返したいと思います。

ただ難しいながらもある程度までは読んでみたので、復習の意味も含めてまとめておきます。なお言語はPython3が使われています。

第1章 数学の準備

第1章は今後の話のもとになる、偏微分やベクトル、行列などの話が主になります。この辺りは大学数学で学んだ知識を思い起こしながら何とか理解できました。その後の議論で出てくる連鎖率や転置行列など、知識のおさらいができました。

 

第2章 Pythonの準備

pyenv(*)というバージョン管理ツールを用いたAnacondaのインストール方法が乗っており、コマンドを順番に打っていけばインストールできるようになっています。pythonを始め今後必要となるNumpyやscikit-learn、matplotlib等のライブラリをまだインストールしていない場合は、Anacondaを入れることで一括でインストールしてくれます。

章の中盤はPythonの基本的な説明と、Numpyの説明となっています。Numpy配列の生成やスライス、ブロードキャストなどの重要な概念がコードとともに乗っているので分かりやすいかと思います。

章の後半はTensorFlowおよびKerasの説明とインストール方法が乗っています。

*pyenvを用いると、一台のマシンに複数のバージョンのPythonをインストールできるようになります(python2.xと3.xなど)。

 

第3章 ニューラルネットワーク

ニューラルネットワークと論理回路(AND, OR, NOT)の説明、また

  • 単純パーセプトロン
  • ロジスティック回帰
  • 多クラスロジスティック回帰
  • 多層パーセプトロン

のモデル化(数式化)と実装(TensorflowとKerasの両方)を行います。

ロジスティック回帰の説明では、交差エントロピー誤差関数、勾配降下法、確率的勾配降下法等の概念が出てきますが、数式による説明が多く式の展開についてもあまり説明が無いため、数学やディープラーニングの事前知識が無いと少し辛いかもしれません。

多クラスロジスティック回帰ではソフトマックス関数を用いた、他クラス分類を行います。こちらも数式による説明が主となります。

多層パーセプトロンは、XORゲートを例にした非線形分類を行います。多層ネットワークに付随する連鎖率、誤差逆伝搬法などの説明が詳しく書かれています。

いずれのモデルについても(単純パーセプトロンを除く)TensorflowとKerasの実装コードが乗っています。一つ一つの行を丁寧に解説というわけではないですが割とストレートなので、コードをじっくり読み解けば初めて学ぶ方でもまだ何とか理解できる範囲かと思います。Github(https://github.com/yusugomori/deeplearning-tensorflow-keras)に全コードが置いてあるので確認しながら実装できます。

 

第4章 ディープニューラルネットワーク

第3章で学んだ内容をもとに、より深い層を持ったディープニューラルネットワークについて書かれています。データはMNIST(0-9の数字が書かれた70,000枚の画像データ)を用います。

層を深くした際に問題となる勾配消失問題、過学習で起きるオーバーフィッティング問題などを取り上げ、その原因と解決策について数式を交えながら解説しています。勾配消失問題への対策としてtanhやReluなどの主要な活性化関数を始め、Leaky ReLUやParametric ReLUといった発展形についても取り上げられています。またオーバーフィッティングへの対策としてはドロップアウトが説明されています。

この辺りから理論的な説明が多く数学も難しくなってきます。ただtensorflowやKerasを用いると数式を考えずに実装できるので、取り敢えず動かしてみることは可能です。

章の後半はデータの正規化や重みの初期化、学習率の設定についての話がされています。特に学習率の設定手法については多くのページが割かれており、モメンタム、Adagrad、Adam等合わせて6つの手法について数式による説明があります。章の最後にはEarly StoppingとBatch Normalizationについての話が載っています。

が、正直な所私はこの章の半分位しか理解できませんでした(特に学習率の部分)。数式による説明が多く、一から導出という形ではないためなかなか難解です。参考文献も乗っているので、今後必要に応じて見返したいと思っています。

 

第5,6章 リカレントニューラルネットワーク(6章は応用)

5〜6章は時系列データを扱うリカレントニューラルネットワーク(RNN)を扱っています。定性的には理解できるのですが、数式を交えた定量的な説明になるとほとんど理解ができず。。。漠然と続けるのも苦痛を感じてしまったので、取り敢えず一旦諦めて別の本なりインターネットで基礎知識をもう少し付けてから戻ってこようかと思っています。このあたりになると、偏微分、ベクトル、行列、テンソル積等があちこちに出てくるため、数学の理解がしっかりできていないとなかなか難しいかと思います。

実装のためのコードも載っていますがかなりの分量で、上記理論的な部分が(ある程度は)理解できていないとあまり意味をなさないのかなとも思い、こちらも一旦保留にしています。

 

まとめ

詳解ディープラーニング~TensorFlow・Kerasによる時系列データ処理~のレビューをしてみました。とはいっても第5,6章のリカレントニューラルネットワークについてはほとんど理解できていないので、あまりためになるレビューだったかは分かりませんが(泣) 結論としては、この本を1冊目にやるのはあまりお薦めしません。特に本の後半部分は、初学者の方には相当ハードルが高いことは確かです(数学に強い方は別かと思いますが・・)。機械学習の知識がある程度あり、数学の理論的な部分をもっと理解したいという方にはおすすめかと思います。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

 

初学者でどの本から始めたら良いか迷っているという方には、冒頭でも述べたゼロから作るDeep Learningをおすすめします(私もこの本から勉強を始めました)。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

名著として様々なところで紹介されていますが、例えば計算グラフによる誤差逆伝搬法の説明や上記でも述べた学習率の設定手法の説明など、初学者にも非常に分かりやすい言葉で書かれています。