問題タブ [beam-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
deep-learning - seq2seq によるビーム検索の高速化
私はビーム検索を備えた完全に機能する seq2seq 注意モデルを持っており、改善された結果が得られます。しかし、並列化されていないため、k=5 (k は私の仮説) での推論 (バッチサイズ 1024) には 1 分以上かかります。一度に 1 つのサンプルですべてが発生します。
タスク(簡体字)
ゴールは文章の翻訳、15単語のLang Aから15単語のLang B。
- Encoder は、15 語の文を取り込み、その表現をエンコードし、[timestep, 512] 行列と最終的な隠れ状態を出力する RNN です。
- デコーダーは別の RNN であり、エンコーダーの隠れ状態を初期状態として取り、[timestep, 512] マトリックスを使用して注意を促し、翻訳された単語 [バッチ] を一度に 1 タイムステップずつ出力します。当然のことながら、この時点までは何らかの形式の並列化が行われています。
- 推論段階では、ビーム検索が使用されます。デコーダーの各タイムステップで、確率が最も高い予測単語を取得するのではなく、k 個の最良の単語を取得します。そして、文中の次の単語を予測できるように、k 個の単語を次のタイムステップへの入力として提供します (残りのアルゴリズムは以下に示します)。アルゴリズムは、後続のタイムステップでより高い合計確率で結果を予測する貪欲さを軽減します。
状態の変化を追跡して処理するための 6 つのテンソルと 2 つのリストがあります。ここに高速化または並列化の余地はありますか? おそらく、各 k は同時にエンコードとデコードを行うことができますか? どんな助けでも大歓迎です。