4
3

More than 5 years have passed since last update.

[RNN] RNNとは何ですか?

Posted at

1. 言語モデル

私はRNNに基づく言語モデルを提示します。2つの形式を持つ言語モデルの応用。 1つは、実際の類似性に基づいて文の正確性を評価することです。この評価は文法の正確さと文の意味を評価するのに役立ちます。これらのモデルは、機械翻訳システム(Machine Translation)でよく使用されます。2つ目は自動テキスト生成です(私はこのアプリがより魅力的だと思います)。たとえば、シェイクスピアの作品を使ったモデルトレーニングによって、シェイクスピアが書いたような文章を作成することができます。さらに、時間があれば、Andrej Karpathyによるこの興味深い記事(英語)を参照して、語彙レベルの言語モデルの機能について調べることができます。

この記事は、ニューラルネットワークの基本を知っておくためのものです。ニューラルネットワークについてよく知らない場合は、記事基本的なニューラルネットワークのインストールをお読みください 。その記事はあなたがそのアイデアの基本的なアイデアとどのように基本的なニューラルネットワーク - 非回帰ニューラルネットワークを構築するかを得るのを助けるでしょう。

2. RNN回帰ネットワークとは何ですか?

RNN(Recurrent Neural Network)の主な目的は、一連の情報を使用することです。従来のニューラルネットワークでは、すべての入力と出力は互いに独立しています。つまり、それらは互いにリンクしていません。しかし、これらのモデルは多くの問題には適していません。たとえば、文中に現れる可能性のある次の単語を推測したい場合、前の単語がどのようにして手配されるかがわかるのが大事です。RNNは、以前の計算に応じて出力が文字列のすべての要素に対して同じタスクを実行するため、Recurrentと呼ばれます。言い換えれば、RNNは以前に計算された情報を記憶することができます。理論的には、RNNは非常に長い文書の情報を使用することができますが、実際には、それは数ステップ前にしか覚えていません。基本的に、RNNネットワークは次のようになります。
rnn.jpg
RNN (Recurrent Neural Network)とそのフォワード計算に関わる計算の時間的展開。ソース:Nature

上記のモデルはRNNのコンテンツ展開について説明しています。ここで展開することは、単純にシリアルシーケンスニューラルネットワークを描くことによって理解することができます。たとえば、「私は学生です」という4語の文章がある場合、展開されたニューラルネットワークは各文字に対応する4つのニューロンで構成されます。そのとき、RNN内の計算は次のように行われます。

  • x(t)はステップにおける入力である。 たとえば、x(1)は文の2番目の単語(は)に対応するワンホットベクトル(one-hot vector)です。
  • s(t)はステップにおける隠れ状態である。 それはネットワークの記憶です。 s(t)は、前の非表示状態とそのステップでの入力の両方に基づいて計算されます:Screenshot from 2019-04-21 22-27-34.png。 関数fは通常双曲線tanhReLuのような非線形関数です。 最初の隠し要素を計算するためには、s(0)を初期化する必要があります。通常、初期値は0に設定されています。
  • o(t)はステップにおける出力である。 たとえば、文中に出現する可能性がある次の単語を予測する場合、o(t)はボキャブラリリスト内の単語を識別するベクトルです:Screenshot from 2019-04-21 22-37-00.png

3. RNNの能力

自然言語処理(NLP - Natural Language Processing)の分野では、さまざまな問題についてRNNの多くの成功が記録されています。 この時点で、最も一般的に使用されているRNNのモデルの1つにLSTMがあります。 LSTM(Long Short-Term Memory)は、従来のRNNモデルよりも多くのステップを思い出すことができるという点で優位性を示しています。 LSTMは基本的に従来のRNNの構造と同じなので、あまり心配する必要はありません。隠れノードの計算が異なるだけです。 次の記事でLSTMについての詳細を見ます。

4. RNNのトレーニング

RNNネットワークのトレーニングは、従来のニューラルネットワークと似ていますが、バックプロパゲーション(backpropagation)は少し変更する必要があります。 RNNネットワーク内のパラメータはネットワーク内のすべてのステップで共通に使用されるため、各出力での導関数はそのステップでの計算だけでなく前のステップにも依存します。たとえば、t = 4で導関数を計算するには、3つのステップすべてを前方に展開し、それらの導関数を合計する必要があります。このタイプの導関数の計算は、バックワードプロパゲーション(BPTT - Back Propagation Through Time)と呼ばれます。ステップの依存度が高ければ高いほど、導関数の問題(消失/爆発)が発生するため、学習が困難になることを忘れないでください。この問題を解決するために提案されたいくつかの方法があり、現在のRNNネットワークタイプはLSTMのようにそれらを排除するように設計されています。

5. 結論

RNNの基本とその能力を説明しました。私の記事を読んでくれてありがとうございます。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3