『ゼロから作るDeep Learning 2』自然言語処理編を読んで
自然言語処理を学ぶために、『ゼロから作るDeep Learning 2』を一周しました。その学習の進捗や感想をまとめた中間報告です。
|
第1章 ニューラルネットワークの復習
本書の冒頭では、ニューラルネットワークの基礎的な復習が行われます。スキップしてしまったのですが、後々の自然言語モデルのコードを理解する際に後悔することになりました。しっかりと理解しておくべき章だったと痛感。
第2章 シソーラス
この章では、古典的な手法を用いてカウントベースの単語分散表現を取得します。コードレベルでの実装も理解できました。シソーラスの仕組みを学ぶことで、単語間の関係を定量化する方法を知ることができました。
第3章 word2vec
word2vecの基礎として、シンプルなニューラルネットワークを用いた単語分散表現の学習が紹介されます。ただし、ここからスキップしたニューラルネットワークのクラスが登場し始めます。ニューラルネットワーク関連のコードは難しく、スキップしながらその他のコードは理解を進める形になりました。
第4章 word2vecの高速化
この章では、ソフトマックスとネガティブサンプリングによるword2vecの高速化が扱われます。仕組みは理解できましたが、コードレベルでの理解はスキップしました。word2vecの計算コストを削減するための工夫を知ることができたのは収穫でした。
第5章 RNN(リカレントニューラルネットワーク)
時系列データを処理するニューラルネットワークであるRNNについて学びます。word2vecの問題点を指摘しながら、RNNの仕組みが紹介されており、理論としては理解できました。図も多く、概念の把握には役立ちました。ただし、コードベースでの理解はもはや困難な領域に突入。
第6章 ゲート付きRNN(LSTM)
LSTM(Long Short-Term Memory)の仕組みが紹介されます。RNNの問題点を改善する手法として登場します。仕組みは理解できましたが、コードの実装を理解するのはハードルが高いと感じました。
第7章 RNNによる文章生成
seq2seq(エンコーダ・デコーダモデル)を使った文章生成がテーマ。seq2seqの概念はエンコーダとデコーダの構造と理解しましたが、本当に合っているかは不明。もう少し掘り下げる必要がありそうです。
第8章 Attentionの仕組み
自然言語処理において重要な概念であるAttentionの仕組みについて学びます。ただし、コードレベルで語られると理解が追いつかず…。他の資料で得た事前知識はあるものの、実装を見せられると厳しいと感じました。
1周目の収穫
一通り学習した結果、以下のような印象を持ちました。
- 自然言語モデル初学者 → 途中までは理解できるはず。
- Python初学者 → かなり厳しい。普通にクラスが出てくるレベルなので、オブジェクト指向の理解が必須。
感想
コードレベルで完全に理解するには相当な労力が必要だと痛感しました。特にニューラルネットワークの基礎知識が不足していると感じたため、『ゼロから作るDeep Learning 1』をしっかり学び直すことが重要だと考えました。
次のステップとして、
- シーズン1(ゼロつく1)を復習
- 本書の第1章をもう一度しっかり読む
- その上で再チャレンジ
という流れで取り組もうと思います。
次回の報告では、もう少しコードレベルでの理解を深められるようにしたいです。
コメント