1. 概要

リカレントニューラルネットワーク(RNN)は、シーケンシャルデータを処理できるよく知られたネットワークです。 密接に関連しているのは、階層パターンを処理できる再帰型ニューラルネットワーク(RvNN)です。

このチュートリアルでは、RNN、RvNN、およびそれらの自然言語処理(NLP)でのアプリケーションを確認します。 また、NLPタスクに対するこれらのモデルの長所と短所のいくつかについても説明します。

2. リカレントニューラルネットワーク

RNNは、時間シーケンスを表すことができるニューラルネットワークのクラスです。文や段落などの言語データにはシーケンシャルな性質があるため、NLPタスクに役立ちます。

2.1. 意味

任意の長さのシーケンスを想像してみましょう。

RNNは、いわゆるタイムステップで、一度に1つの要素でシーケンスを処理します。ステップで、RNNは出力を生成し、サブシーケンスの表現として機能する非表示の状態を持ちます。

RNNは、とを組み合わせて非表示状態を計算します。 それらに行列を掛けて、合計に変換を適用します。

   

次に、出力は行列と:の積です。

   

マトリックスはステップ全体で同じであるため、ネットワークには次のような単純な図があります。

2.2. トレーニング

ネットワークのトレーニングは、変換行列の学習で構成されます。 それをうまく行う広く使用されているアルゴリズムは、勾配降下アルゴリズムです。

通常、重みと最初の非表示状態をランダムに初期化します。 関数には、いくつかの選択肢があります。 たとえば、次の関数を使用できます。

   

2.3. 例:機械翻訳

例として、機械翻訳用のエンコーダーデコーダーモデルを見てみましょう。 このシナリオでは、エンコーダーは元の言語で文を受け取り、デコーダーはターゲット言語で翻訳を生成します。 元の言語が英語で、ターゲット言語がスペイン語であると想像してみましょう。

機械翻訳システムのエンコーダー部分とデコーダー部分の両方にRNNを使用できます。  各文の単語数は異なる場合がありますが、RNNは、シーケンスの長さに関係なく、endトークンに到達するまでシーケンスを処理します。 したがって、RNNの利点が実際に機能していることがわかります。

2.4. 自然言語処理の利点

RNNの利点は主に3つあります。 1つ目は、任意の長さの入力を処理できることです。これは、固定長の入力のみを処理できるCNNなどの他のネットワークとは対照的です。 その結果、ネットワークのアーキテクチャを変更することなく、シーケンスが短いRNNと非常に長いRNNを使用できます。

2番目の利点は、隠された状態が何らかのタイプのメモリのように機能することです。 ネットワークがシーケンスの要素を1つずつ処理するとき、非表示の状態はシーケンス全体の情報を格納して結合します。

最後に、RNNの3番目の利点は、タイムステップ間で重みを共有することです。これにより、ネットワークは、さまざまな長さのシーケンスに対して同じサイズ(同じ数のパラメーター)を維持できます。

2.5. 自然言語処理のデメリット

RNNの3つの欠点も考慮することができます。 まず、シーケンシャルな性質のため、トレーニングが遅くなる可能性があります。つまり、ネットワークの1つのステップへの入力は前のステップからのものであるため、トレーニングを速くします。

第二に、RNNには、勾配の消失または爆発と呼ばれる問題があります。 前者の問題は、1未満の多くの勾配を乗算するときに発生します。 結果はほぼゼロの値になるため、重みの更新には寄与しません。 後者は、1より大きい多くの勾配を乗算するときに発生するため、結果が爆発します。 解決策は、非線形活性化関数を使用することです。これは、小さな導関数を生成しないReLUなどです。 さらに、 Long Short-Terms Memory(LSTM)などの他のRNNの変形は、この問題に対処します。

最後の問題は、バニラRNNがシーケンス内の長期的な依存関係を処理するのが難しい場合があることです。 シーケンスが長い場合、長期的な依存関係が発生する可能性があります。 シーケンス内の2つの補完的な要素が互いに離れている場合、ネットワークがそれらが接続されていることを認識しにくい場合があります。 たとえば、次のシーケンスについて考えてみましょう。

プログラミングは、特にマシンに何をすべきかを教えることに興味がある場合、とても楽しくエキサイティングです。 5歳から90歳まで多くの人がそれを学んでいるのを見てきました 。

ここで、文末の it は、最初の単語であるプログラミングを指します。 その間に、RNNが接続を失う原因となる可能性のある他の多くの単語があります。 これは、RNNに何らかの種類のメモリがある場合でも発生します。 ただし、LSTMはこの問題を解決できます

3. 再帰型ニューラルネットワーク(RvNN)

RvNNはRNNを一般化します。ツリー構造のため、シーケンシャルデータのみを処理できるRNNとは対照的に、階層モデルを学習できます。 ツリー内の各ノードの子の数は固定されているため、再帰的な操作を実行し、ステップ全体で同じ重みを使用できます。

3.1. 意味

RvNNのツリー構造は、子ノードを組み合わせてその親を生成するために、各子-親接続に重み行列があることを意味します。 同様の子供たちは同じ体重を共有します。 言い換えると、二分木を考えると、すべての右の子が1つの重み行列を共有し、すべての左の子が別の重み行列を共有します。 さらに、各生の入力の非表示状態を計算するための初期重み行列()が必要です。

したがって、重み行列の数は、ノードが持つことができる子の数に等しくなります。 重み行列()と子の表現()の積を合計し、変換を適用することで、親ノードの表現を計算できます。

   

子供の数はどこですか。

3.2. トレーニング

RvNNのトレーニングは、同じ最適化アルゴリズムを使用したRNNに似ています。 モデルが学習する必要のある各子の重み行列があります()。 これらの重み行列は、同じ位置にある後続の子のさまざまな再帰で共有されます。

3.3. 例:構文解析

NLPでのRvNNの主なアプリケーションの1つは、自然言語文の構文解析です。

文を解析するときは、名詞や動詞句などの小さなコンポーネントを識別し、それらを構文階層に編成します。

RNNはシーケンシャルリレーションのみを考慮するため、RvNNとは対照的に、階層データの処理にはあまり適していません。フレーズの表現をキャプチャしたい場合は、この文章:

プログラミングはとても楽しいです。

RNNはこのフレーズにどのような表現をしますか? 各状態は前の単語の表現に依存するため、文の先頭から始まらないサブシーケンスを表現することはできません。 したがって、RNNが単語 fun を処理するとき、そのタイムステップでの非表示状態は文全体を表します。

対照的に、RvNNの階層アーキテクチャでは、正確なフレーズの表現を格納できます。

ノードの非表示状態にあります。

3.4. 自然言語処理の利点

NLPタスクに対するRvNNの2つの主な利点は、その構造とネットワークの深さの削減です。

これまで見てきたように、 RvNNのツリー構造は、解析の問題などで階層データを処理できます。

別のRvNNの利点は、ツリーが対数の高さを持つことができることです。より具体的には、入力ワードがある場合、RvNNは高さのある二分木を返すことができます。 これにより、最初の入力要素と最後の入力要素の間の距離が短くなるため、長期的な依存関係が短くなり、キャッチしやすくなります。

3.5. 自然言語処理のデメリット

RvNNのツリー構造も不利になる可能性があります。 それらを使用するということは、モデルに特別な誘導バイアスを導入することを意味します。 ここで、誘導バイアスは、データがツリー階層に従うという仮定です。 ただし、そうでない場合、ネットワークは既存のパターンを学習できない可能性があります。

RvNNのもう1つの問題は、解析が遅く、あいまいになる可能性があることです。 特に、1つの文に対して複数の解析ツリーが存在する可能性があります。

さらに、 RvNNのトレーニングデータのラベル付けは、RNNの構築よりも時間と労力がかかります。シーケンスを手動で小さなコンポーネントに解析するには、シーケンスにラベルを割り当てるよりもかなり多くの時間と労力がかかります。

4. RNNと RvNN:まとめ


5. 結論

この記事では、自然言語処理のためのリカレント(RNN)と再帰型ニューラルネットワーク(RvNN)の長所と短所について説明しました。

主な違いは、データでキャッチできるパターンのタイプです。 RNNはシーケンシャルデータを処理できますが、RvNNは階層パターンを見つけることができます。