5-5-1 回帰結合層とは何か

これまで見てきたニューラルネットワークは、基本的には、その瞬間に入ってきた情報をもとに判断するしくみでした。

たとえば、1枚の画像を見て「これは猫です」と判断する。
そこでは、今見えている情報が中心になります。

でも、世の中には今この瞬間だけでは意味が決まらないデータ もたくさんあります。
たとえば文章です。

「今日はとても___。」

このあとに入る言葉は、前にどんな言葉が来ていたかによって変わりますよね。

・今日はとても 暑い
・今日はとても 楽しい
・今日はとても 静かだ

今見ている単語だけではなく、それまでの流れ が意味を決めています。
こうした「前の情報が大事な世界」を扱うために生まれたのが、回帰結合層です。

物語を読んでいる場面を想像してみてください。
たとえば、こんな一文があります。

少女は鍵を見つけた。
そのあと、彼女は扉の前に立った。

このとき、「彼女」が誰かは、前の文を読んでいれば自然にわかります。
でも、もし2文目だけ突然読んだら、「彼女って誰だろう?」と思ってしまうかもしれません。

私たちは文章を読むとき、一文ごとに全部忘れているわけではありません。少し前に読んだことを頭の中に残しながら、次の言葉を理解しています。
回帰結合層も、これと似ています。
入力が来るたびに、その場の情報だけを見るのではなく、ひとつ前までに見ていた情報を、少し持ったまま次を考えるのです。

ふつうのネットワークでは、情報は前から後ろへ一方向に流れていきます。

入力

隠れ層

出力

という形です。

でも回帰結合層では、ある時刻の出力や状態が、次の時刻の自分自身へ戻ってくるようなつながりを持ちます。
これが「回帰結合」です。
言い換えると、今の自分が、少し前の自分から情報を受け取る仕組みです。
だから回帰結合層は、ただ今だけを見ているのではなく、過去を引きずりながら考える層 とも言えます。

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

この回帰結合層を使ったネットワークが、リカレントニューラルネットワークRNN: Recurrent Neural Network)です。
“recurrent” には「くり返す」「戻ってくる」といった意味があります。
つまりRNNとは、情報をくり返し引き継ぎながら処理するネットワークのことです。

文章、音声、株価、気温の変化など、時間の流れや順番が大切なデータでは、前の情報を持っていることがとても重要になります。
RNNは、そのための基本的な仕組みです。

RNNでは、ある時刻で受け取った入力を処理するとき、その入力だけを見るのではなく、

・今入ってきた情報
・一つ前までに持っていた状態

を合わせて考えます。

たとえば物語なら、

・今読んでいる文
・その前までのストーリーの流れ

を一緒に使って意味を理解する感じです。

だからRNNは、一語ずつ、一音ずつ、一時刻ずつデータを受け取りながら、流れの中で意味を組み立てるのが得意です。

エルマンネットワークとジョルダンネットワーク

回帰結合を持つネットワークには、代表的な形として

・エルマンネットワーク
・ジョルダンネットワーク

があります。

どちらも、「過去の情報を次へ渡す」という考え方を持っていますが、何を引き継ぐかが少し違います。

エルマンネットワークは、前の時刻の隠れ層の状態を次へ引き継ぎます
つまり、「自分の中で考えていた途中経過」を覚えておくような形です。

一方、ジョルダンネットワークは、前の時刻の出力を次へ引き継ぎます
つまり、「前に自分が出した答え」を覚えておくような形です。

どちらも、その場かぎりで忘れてしまうのではなく、少し前の情報を持ちながら次へ進むという点では共通しています。

回帰結合層が必要になる理由

なぜこんな仕組みが必要なのでしょうか。
それは、時間の流れを持つデータでは、意味が「今この瞬間」だけでは決まらないからです。

たとえば、

・文章では前の単語
・音声では直前の音
・時系列データでは少し前の値

が、今の意味に影響します。
もし毎回すべてを忘れてしまったら、ネットワークは一つひとつをバラバラにしか見られません。
でも回帰結合層があれば、前の情報を少し覚えたまま次を読める。
つまり、流れを流れとして理解できるようになるのです。

もちろん、RNNの記憶は人間の記憶のように豊かなものではありません。
でも少なくとも、今だけではなく、少し前を引きずるという性質を持っています。
だから回帰結合層は、ディープラーニングにおける、記憶の入り口のような存在だと言えます。
画像のように一枚で意味がわかるものではなく、文章や音声のように連続の中で意味が生まれるもの。
そうした世界では、この「少し覚えている」という仕組みがとても大事になります。

まとめ

回帰結合層→ 前の時刻の情報を、次の時刻へ引き継ぐ層

RNN→ 回帰結合層を持ち、過去の情報を使いながら処理するネットワーク

エルマンネットワーク→ 前の隠れ層の状態を引き継ぐ

ジョルダンネットワーク→ 前の出力を引き継ぐ

next ▶ RNNが得意なデータ