1

TL;DR: 双方向 RNN は単純なテキスト分類に役立ちますか? パディングは悪ですか?

最近の仕事では、同じタスク、つまりテキスト分類のために LSTM モデルと BLSTM モデルを作成しました。LSTM モデルはかなり良い仕事をしましたが、BLSTM を試してみて、精度をさらに押し上げることができるかどうかを確認することにしました。最終的に、BLSTM は収束が非常に遅く、驚くべきことに、50% の確率でドロップアウトを適用したにもかかわらず、過適合であることがわかりました。

実装では、より高速なトレーニングを期待して、LSTM と BLSTM の両方に unrolled RNN を使用しました。要件を満たすために、入力テキストを手動で固定長にパディングしました。

「私は朝遅く寝て、Nebuchadnezzar とのインタビューを逃した」という文があるとします。この文は、事前にトレーニングされた単語埋め込みのインデックスの配列に変換されるときに、末尾に 0 が埋め込まれます。[21, 43, 25, 64, 43, 25, 6, 234, 23, 0, 0, 29, 0, 0, 0, ..., 0] のようになります。「th」(「the」である必要があります) はタイプミスであり、「Nebuchadnezzar」という名前はあまりにもまれであるため、両方とも語彙に存在しないため、特別な完全に対応する 0 に置き換えます。ゼロ ワード ベクトル。

ここに私の反省があります:

  1. 一部の人々は、コーパスをGloVeまたはWord2Vecモデルに供給する前に、未知の単語を「< unk >」のような特別な単語に変更することを好みます。トレーニングの前に、最初に語彙を構築し、(最小カウント設定に従って) 低頻度の単語を「< unk >」に変更する必要があるということですか? RNN をトレーニングするときに、不明な単語を 0 に変更したり、単に削除したりするよりも優れていますか?

  2. 私の知る限り、LSTM または BLSTM ネットワークに供給される末尾の 0 は、出力を混乱させます。外部からの新しい情報はありませんが、セルの状態は後続のタイム ステップごとに更新されるため、最終的なセルの出力は、後続の長い 0 によって大きな影響を受けます。そして、私の考えでは、BLSTM は逆の順序でテキストを処理するため、さらに影響を受けるでしょう。つまり、[0, 0, 0, ..., 0, 321, 231] のようなものです。ゲートを 1.0 に忘れて、最初にメモリを育成します。多くの人がパディングを使用しているのを見ますが、BLSTM の場合、テキストが非常に長くパディングされると災害が発生しませんか?

これらの問題について何か考えはありますか?:-o

4

2 に答える 2

1

経験上、 と の埋め込みが異なるUNKNOWNPADDING便利です。あなたはテキスト分類を行っているので、それらが多すぎなければそれらを削除してもそれほど害はないと思いますが、私はテキスト分類に精通していないので、それを確実に言うことができません.

シーケンスのパディングに関しては、シーケンスのパディングを別の方法で試しましたか? たとえば、順方向 LSTM の場合はシーケンスの先頭をパディングし、逆方向 LSTM の場合はシーケンスの最後をパディングします。ゼロでパディングしているため、アクティベーションは(もしあれば)それほど強力ではなく、LSTMメモリを上書きする可能性のあるゼロではなく、シーケンスでLSTMが終了します。

もちろん、これらは頭の中で思いついた提案にすぎません (コメントするほどの評判はありません) ので、答えはありません。自分で試して、役立つかどうかを確認する必要があります。そうなることを願っています。

乾杯。

于 2017-02-06T23:27:05.653 に答える