トランスフォーマーに基づいて、テキスト生成結果を改善する方法は?
BARTのようなテキスト生成モデルを事前トレーニングしない場合、tensor2tensorのようなトランスフォーマーに基づいて結果を改善するにはどうすればよいですか?
テキスト生成タスクにおけるトランスフォーマーの改善のアイデアは何ですか?
回答
トレーニングに利用できるデータがたくさんある場合は、GPT-2などの大規模なトランスモデルで使用される手法を適用する必要があります:非常に深いモデル(1.5Bパラメーターの場合は48レイヤー)、変更された初期化、事前正規化、および可逆トークン化。また、GPT-3のローカルにバンド化されたスパースアテンションパターンを適用することもできます。
トレーニングデータが非常に少ない場合は、このツイートで説明されている「書き込まれていない」積極的な手法、つまりデータ拡張、離散埋め込みドロップアウト、通常のドロップアウトと体重減少、および多くの患者トレーニング時間を適用できます。
更新:私が参照したツイートスレッドは重要だと思うので、ここに最も関連性のあるツイートがあります:
PTBやWikiText-2などの小さなデータセットでトランスフォーマーを正常にトレーニングするにはどうすればよいですか?LSTMは小さなデータセットに適していますか?私は568GPU時間に相当する339の実験を実行し、いくつかの答えを思いつきました。ブログ記事を書く時間がないので、代わりにツイッタースレッドをご覧ください。
少し背景を説明すると、これはすべて、PTBでTransformer-XLの結果を複製し、WikiText-2(WT2)で結果が非常に悪いという私の過去の欲求不満によって生じました。WT2では、200回以上の実験後の私の最良のモデルは90ish pplであり、標準のLSTMベースライン(65.8 ppl)からはほど遠いものでした。
..。
重要な洞察は次のとおりです。小規模なデータセット体制では、データセットの拡張がすべてです。コンピュータビジョンの類似点は、特定のデータセット拡張を実行すると、特に小さなデータセットではるかに優れた結果が得られることです。これにより、モデルも正規化されます。
最も劇的なパフォーマンスの向上は、離散埋め込みドロップアウトからもたらされます。通常どおり埋め込みますが、確率pで、単語ベクトル全体をゼロにします。これはマスクされた言語モデリングに似ていますが、目標はマスクを予測することではなく、コンテキストが不確実な通常のLMだけです。
2番目に重要な要素は、通常の入力ドロップアウトです。埋め込み要素とドロップアウト要素を確率pで取得します。これには、画像のランダムピクセルをドロップアウトするのと非常によく似たデータ拡張効果もあります。これについて考える良い方法は何ですか?1/2
King-man + woman = Queenを実行できることを覚えていますか?ここで、入力ドロップアウトが「King」の「man」コンポーネントを削除すると想像してください。これにより、モデルは特定の情報(この場合は性別)を複数の次元に分散して一般化を改善し、モデルをより堅牢にします。2/2
そうでなければ、それはさらなる正則化(より多くのドロップアウト+体重減少)と忍耐のゲームです。私は15分でこれらのトリックなしで良いモデルを訓練することができて、97pplを得ることができます。これらすべてのドロップアウトを適用すると、7時間のトレーニング後にモデルが63.4 ppl(LSTMよりも優れている)に適合しなくなります。
これらのデータ拡張レシピを大規模なデータセットに適用することもできますが、WT-103で数か月間トレーニングして2、3ポイントのトレーニングを行うことは誰も望んでいません。私の意見では、非常に多くの追加の計算を必要とする手法は、有用というよりもコミュニティにとって有害です。1/2
ここで、コードは、私の結果が基づいているパブリックTransformer-XLリポジトリに変更されます。 https://github.com/TimDettmers/transformer-xl/tree/wikitext2
パブリックTransformer-XLリポジトリへの変更により、このスクリプトを実行して、WT2で63.4pplまで下げることができます。 https://github.com/TimDettmers/transformer-xl/blob/wikitext2/pytorch/replicate_wt2.sh