密林の図書室

人生は短く、経験からのみ得られることは限られます。読書から多くのことを学び、アウトプット化も本との対話の一部として大切なものだと考えてきたので、このブログを立ち上げて日々読んできた本の備忘録として活用しています。

ディープラーニングを勉強するなら、前著に続き、こちらもお勧め。「ゼロから作るDeep Learning ❷ ―自然言語処理編」

著:斎藤 康毅

 

 ベストセラーとなった「ゼロから作るDeep Learning」の続編である。前著はディープラーニングの基本を丁寧に説明したものだが、こちらは、最初の章でDeep Learningの基本的なおさらい解説を行った後、自然言語処理に特化した内容になっている。

 

 Python3でプログラムを試しながら学べるようになっている。基本をしっかりやる内容なので、主に出てくるのは以下のライブラリである。

 

・Numpy:Pythonにおいて並列処理や数値計算を効率的に行う

・Matplotlib:グラフ描画ライブラリ

・CuPy:GPUによる並列計算を行うライブラリ。完全互換ではないがNumpyと共通のAPIを多く持つのでNumyからの移植が容易。

 

 自然言語の技法としては、単語をベクトル化して表現する定量化の手法であるWord2Vecが大きく取り上げられている。Word2Vecには大きく分けて、以下の2つがあるが、本書では特にCBOWが丁寧に説明されている。ただ、skip-gramについても、きちんと説明されていて、両方の違いと特徴がよくわかる。

 

・CBOW(Continuous bag-of-words):コンテキストからターゲットを推測することを目的としたNN。CBOWでは複数のコンテキストから中央の単語(ターゲット)を推測。

・skip-gram:中央の単語(ターゲット)から周囲の複数の単語(コンテキスト)を推測する。

 

(例) 

・CBOWの場合

You ? goodbye and I say hello.

・skip-gramの場合

? say ? and I say hello.

 

 RNNによる文章生成、Attention Mechanismとその応用でRNNの外部に記憶空間を配置して利用するNeural Turning Machine(NTM)についての説明もある。

 

 自然言語処理用のコーパスについてもいくつか登場する。例えば、PTB(Penn Treebank)。word2vecの発明者であるTomas Mikolovによるコーパス。手ごろな大きなでベンチマークによく利用される。付録Bでは、自然言語処理用で有名なシソーラスであるWordNetと、品詞タグ付け・構造解析・意味解析などの自然言語処理用のLibraryであるNLTK(Natural Language Toolkit)の解説がある。

 

 付録Cでは、LSTMのゲートを利用しながらも、パラメータを削減して高速化を図ったゲート付きRNNの一種であるGRU(Gated Recurrent Unit)の説明が補足されている。

 

 専門書の中には、説明不足のものが少なくないのだが、この本は違う。ひとつひとつの原理が、学習者のことを考えて丁寧に説明されている。地味だが、カラー印刷である。サンプルプログラムはGithubからダウンロードできる。間違いなく、良い本だ。

 

単行本、432ページ、オライリージャパン、2018/7/21

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

  • 作者: 斎藤康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/07/21
  • メディア: 単行本(ソフトカバー)
 
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

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

  • 作者: 斎藤康毅
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)