回帰結合層:順番のあるデータを扱う
文章や音声のような、順番のあるデータを扱うしくみを学びます。基礎層では、前の状態を覚えて次に引き継ぐ回帰結合層と、リカレントニューラルネットワーク (RNN) のしくみをつかみます。深掘り層では、時系列データ、BPTT による学習、長い系列でつまずく理由、ゲート機構による LSTM と GRU、双方向 RNN、エルマンネットワークとジョルダンネットワーク、教師強制まで説明できるようになります。
ねらい
このレッスンでは、順番のあるデータを扱うしくみを学びます。
基礎
前の状態を覚えて次に引き継ぐという回帰結合の考え方と、リカレントニューラルネットワーク (RNN) のしくみをつかみます。
1. 順番が意味を持つデータがあります
世の中には、並ぶ順番そのものが意味を持つデータがあります。時間の順に並んだデータを時系列データ(じけいれつデータ)といいます。
たとえば、毎日の気温の記録は時系列データです。文章も、単語が前から順に並んだ、順番の意味を持つデータです。音声も、音が時間に沿って続くデータです。こうしたデータでは、ある時点の値だけを見ても足りません。それまでの流れを踏まえて、はじめて意味が分かります。
2. 回帰結合層は、前の状態を覚えて次に引き継ぎます
順番のあるデータを扱うために、前の状態を覚えて次に引き継ぐしくみが作られました。これが回帰結合層(かいきけつごうそう)です。
回帰結合層は、データを1つずつ順に受け取ります。そのとき、今の入力だけでなく、前の時点までに覚えておいた要約もいっしょに使って、次の状態を作ります。作った状態は、また次の時点へ引き継がれます。こうして、過去の流れを1本の記憶として持ち回りながら、順に処理していきます。
伝言ゲームを思いうかべてください。一人ひとりが、前の人から聞いた内容を覚え、自分の情報を加えて、次の人へ渡します。回帰結合層も同じで、前の時点の要約を受け取り、今の入力を加えて、次へ渡します。
回帰結合層を使ったネットワークをリカレントニューラルネットワーク (RNN) といいます。RNN は、アールエヌエヌと読み、英語では recurrent neural network(リカレント・ニューラルネットワーク)と表記します。recurrent は「くり返し起こる」という意味で、同じ層を時点ごとにくり返し使うようすを表しています。
ポイント
回帰結合層は、前の時点までの要約を覚えて次に引き継ぎ、順番のあるデータを流れとして扱います。この層を使ったネットワークがリカレントニューラルネットワーク (RNN) です。
ここまでの要点
- 時系列データは、並ぶ順番そのものが意味を持つデータです。文章や音声もその仲間です。
- 回帰結合層は、前の時点の要約を覚えて次に引き継ぎ、流れを踏まえて処理します。
- 回帰結合層を使ったネットワークが、リカレントニューラルネットワーク (RNN) です。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「前を覚えて次に引き継ぎ、順番のあるデータを扱う」と押さえられていれば、この先の深掘りに進む土台はできています。
発展
ここからは、RNN の学習方法、長い系列でつまずく理由、それを乗り越えるゲート機構まで、順に見ます。
3. RNN の学習:時間をさかのぼる BPTT
まず、引き継ぎの計算を式にしておきます。ニューラルネットワークの土台のレッスンで見た人工神経細胞は、入力に重みをかけて足し、活性化関数を通すものでした。回帰結合層は、そこに前の時点の状態を1つ足すだけです。
いまの状態 = 活性化関数( いまの入力 × 重み + 前の時点の状態 × 別の重み )
読み下すと、いまの入力と、前の時点までの要約の2つに、それぞれの重みをかけて足し、活性化関数を通したものが、いまの状態になる、という意味です。この状態が、次の時点では「前の時点の状態」として同じ式に入ります。伝言ゲームが式になった形です。
RNN は、同じ層を時点ごとにくり返し使います。学習のときは、この「くり返し」を時間の順にほどいて、長く連なった1つのネットワークとみなします。そのうえで、誤差を後ろから前へ伝えて重みを調整します。
このように、時間方向にさかのぼって誤差を伝える学習方法を BPTT といいます。BPTT は、ビーピーティーティーと読み、英語では backpropagation through time(バックプロパゲーション・スルー・タイム)と表記します。日本語では、通時的誤差逆伝播とも呼ばれます。ふつうの誤差逆伝播法を時間の向きにも広げたものだと考えてください。
理解の確認
RNN は同じ層を時点ごとにくり返し使います。学習では、そのくり返しを時間順にほどき、誤差を時間をさかのぼって伝えます。この学習方法を BPTT といいます。
4. 長い系列でつまずく:勾配消失と勾配爆発
BPTT には弱点があります。時間をさかのぼる距離が長くなると、学習の信号が伝わりにくくなることです。
さかのぼる途中で、信号が少しずつ小さくなり続けると、遠い過去まで届く前に消えてしまいます。逆に、少しずつ大きくなり続けると、ふくらみすぎて発散します。信号が消えていく現象を勾配消失問題、ふくらみすぎる現象を勾配爆発問題といいます。この2つの問題そのものは、誤差逆伝播法のレッスンでくわしく扱いました。ここでは、RNN では時間をさかのぼるほど、この問題が起きやすいという点を押さえてください。
この弱点のため、素朴な RNN は、遠く離れた言葉どうしの関係をとらえにくいという課題を抱えます。文の初めの主語が、ずっと後ろの述語に影響するような、長い依存関係を学びづらいのです。
理解の確認
BPTT は、時間をさかのぼる距離が長いと、学習の信号が消えたりふくらみすぎたりします。これが勾配消失問題や勾配爆発問題で、RNN では長い系列ほど起きやすくなります。そのため、素朴な RNN は遠く離れた言葉どうしの関係をとらえにくいという課題があります。
5. ゲート機構による LSTM と GRU
長い依存関係を学びづらいという課題を解くために、ゲート機構というしくみが考え出されました。ゲート機構とは、記憶に対して、どの情報を新しく取り入れ、どれを保ち、どれを忘れるかをその都度加減して調整するしくみです。ゲートは「門」の意味で、情報の出入りを門の開き具合で調節するようすを表しています。
このゲート機構を取り入れた代表が LSTM です。LSTM は、エルエスティーエムと読み、英語では long short-term memory(ロング・ショートターム・メモリー)と表記します。LSTM は、長く保つための記憶の通り道を別に持ち、複数のゲートで、覚える・忘れる・出力するを調整します。このしくみのおかげで、大事な情報を遠い先まで保ち、長い依存関係を学べるようになりました。
もう1つの代表が GRU です。GRU は、ジーアールユーと読み、英語では gated recurrent unit(ゲーテッド・リカレント・ユニット)と表記します。GRU は、LSTM の考え方を引き継ぎつつ、ゲートの数を減らして、しくみを簡単にしたものです。LSTM よりも部品が少なく、計算が軽いという利点があります。多くの場面で、LSTM と近い性能を出します。
ポイント
ゲート機構は、記憶に取り入れる・保つ・忘れるを加減するしくみです。これを使う LSTM と、それを簡単にした GRU が、長い依存関係を扱えるようにしました。
理解の確認
ゲート機構は、記憶に取り入れる・保つ・忘れるを加減するしくみです。LSTM はこれを使って長い依存関係を学べるようにし、GRU はゲートを減らして計算を軽くした簡略版です。
6. 双方向 RNN と、初期の RNN、教師強制
RNN には、目的に応じたいくつかの形や学習の工夫があります。
双方向 RNN (Bidirectional RNN) は、前から後ろへ読む RNN と、後ろから前へ読む RNN を組み合わせたものです。ふつうの RNN は前から順にしか読めず、ある時点で使えるのは、それより前の情報だけです。双方向 RNN は、後ろからも読むことで、前後両方の文脈を使えます。ある単語の意味を後ろに続く言葉まで見て判断したいときに役立ちます。ただし、文の全体がそろってから処理するので、逐次に入ってくるデータには使えません。
RNN の初期の形として、エルマンネットワークとジョルダンネットワークが知られています。どちらも、前の時点の情報を次に引き継ぐ、初期の回帰結合のかたちです。違いは、何を次に引き継ぐかにあります。エルマンネットワークは、隠れ層で作った途中の状態を次へ引き継ぎます。ジョルダンネットワークは、出力した結果を次へ引き継ぎます。今広く使われる RNN は、エルマンネットワークの流れをくむものです。
学習の工夫として、教師強制(きょうしきょうせい)があります。英語では teacher forcing(ティーチャー・フォーシング)と表記します。文章を1単語ずつ作り出すような学習では、前の時点の出力を次の入力に使います。しかし学習の初めは出力が不正確で、間違いを次々に引きずってしまいます。そこで教師強制では、学習中は、モデル自身の出力ではなく、正解のデータを次の入力に与えます。正しい流れをたどらせることで、学習が速く安定します。
理解の確認
双方向 RNN (Bidirectional RNN) は、前からと後ろからの両方向で読み、前後の文脈を使います。エルマンネットワークは隠れ層の状態を次に引き継ぎ、ジョルダンネットワークは出力を次に引き継ぐ初期の形です。教師強制は、学習中に正解のデータを次の入力へ与えて、学習を安定させる工夫です。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。