5章リカレントニューラルネットワーク(RNN)

何でも薄暗いじめじめした所で

ニャーニャー泣いていた事だけは記憶している。

——夏目漱石『吾輩は猫である』

これまで私たちが見てきたニューラルネットワークは、フィードフォワードと呼ばれるタイプのネットワークです。フィードフォワードとは流れが一方向のネットワークのことです。これは具体的に言うと、入力信号が次の層(隠れ層)へ信号を伝達し、信号を受け取った層はその次の層へ伝達し、そしてまた次の層へ……といったように一方向だけの信号伝達を行います。

フィードフォワード・ネットワークは単純な構成で、仕組みも理解しやすく、それでいて多くの問題に応用できます。しかし、このタイプのネットワークには大きな問題があります。その問題とは、時系列データをうまく扱えないことです。これはより正確に言うと、単純なフィードフォワード・ネットワークでは、時系列データの性質(パターン)を十分に学習することができないのです。そこで、リカレントニューラルネットワーク(Recurrent Neural Network)、略してRNNの出番です。

本章では、フィードフォワード・ネットワークの問題点を指摘し、RNNがその問題を見事に解決できることを説明します。また、RNNの構造をじっくりと時間をかけて解説しながら、その処理をPythonで実装していきます。

5.1 確率と言語モデル

ここではRNNの話を始める前の準備として、前章のword2vecの復習から始めます。また、自然言語に関する現象を「確率」を使って記述し、最後に、言語を確率として扱う「言語モデル」について説明します。

5.1.1 word2vecを確率の視点から眺める

それでは、前章のword2vecのCBOWモデルの復習から始めましょう。ここでは、 ...

Get ゼロから作るDeep Learning ❷ ―自然言語処理編 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.