この記事の著者である Sebastian Ruder は、自然言語処理にディープラーニングを使用するためのベストプラクティスの詳細なリストを提供しています。このリストには、ほとんどの NLP タスクに関連するベストプラクティスだけでなく、特に分類、シーケンスのラベル付け、自然言語生成、ニューラル機械翻訳などの最も一般的なタスクのベストプラクティスも含まれています。著者らはベスト プラクティスの選択に非常に厳格でした。少なくとも 2 つの独立したグループで有益であることが証明されているプラクティスのみが選択され、各ベスト プラクティスの著者は少なくとも 2 つの参考文献を提供しました。著者は、このリストが包括的なものではないことを認めています。たとえば、著者が詳しくない解析や情報抽出はカバーされていません。
導入 この記事は、自然言語処理 (NLP) にニューラル ネットワークを使用する方法に関するベスト プラクティス シリーズの一部です。NLP のディープラーニングに関する理解を継続的に向上させるために、新しい知見が生まれるたびに定期的に更新されます。 NLP コミュニティには、「注意力のある LSTM は、すべてのタスクで現在最高のパフォーマンスを達成できる」という格言があります。これは過去 2 年間に当てはまっていましたが、NLP コミュニティは徐々に LSTM から離れ、より興味深いモデルに注目するようになりました。 しかし、NLP コミュニティは、次の LSTM を独自に (再) 発見するためにさらに 2 年間を費やすことを望んでいません。私たちは、すでに効果があった技術や方法を再発明するつもりはありません。既存のディープラーニング ライブラリには、初期化スキームなど、ニューラル ネットワーク全般に関するベスト プラクティスがエンコードされていますが、特に特定のタスクやドメインに関するその他の多くの詳細は、まだ実践者によって解決されていない状態です。 この記事は、現在のベスト プラクティスの一覧を示すものではなく、幅広いタスクに関連するベスト プラクティスのコレクションを目的としています。つまり、この記事では特定のアーキテクチャについて説明するのではなく、成功するフレームワークを構成する特性を収集することを目的としています。これらの機能の多くは、現在の最先端技術を推進するのに非常に役立つため、これらの機能に対する認識が広まることで、より強力な評価、より有意義なベースライン比較、そして効果的なアプローチに対するより多くのインスピレーションが得られることを期待しています。 この記事は、読者がニューラル ネットワークの NLP への応用に精通しており (そうでない場合は、Yoav Goldberg 著の「A Primer on Neural Network Models for Natural Language Processing」を参照することをお勧めします: https://www.jair.org/media/4992/live-4992-9623-jair.pdf)、NLP 全般または特定のタスクに興味があることを前提としています。この記事の主な目的は、関連するベストプラクティスを理解して、できるだけ早く有意義な貢献を行えるようにすることです。まず、大多数のタスクに関連するベスト プラクティスの概要を説明し、次に最も一般的なタスク、特に分類、シーケンスのラベル付け、自然言語生成、ニューラル マシン翻訳に関連するベスト プラクティスについて簡単に説明します。 免責事項: 何かをベスト プラクティスとして定義するのは非常に困難です。ベスト プラクティスの標準とは何でしょうか。より良いプラクティスが出現したらどうなるでしょうか。この記事は、私の個人的な理解と経験に基づいています (決して包括的なものではありません)。以下では、少なくとも 2 つの独立したグループで有益であることが示された実践についてのみ説明します。それぞれのベストプラクティスについて、少なくとも 2 つの参考資料を紹介します。 ベストプラクティス 1. 単語埋め込み 最近のNLPの発展において、単語埋め込みは、事前学習済みの埋め込みの使用により、間違いなく最も広く知られているベストプラクティスです(Kim、2014)[12]。単語埋め込みの最適な次元は主にタスクに依存します。より小さい次元は、名前付きエンティティ認識(Melamud et al., 2016)[44]や品詞タグ付け(POS)(Plank et al., 2016)[32]などのより統語的なタスクに適していますが、より大きな次元は、感情分析(Ruder et al., 2016)[45]などのより意味的なタスクに適しています。 2. 深さ 短期的にはコンピュータービジョンの深みに到達することはできませんが、NLP のニューラル ネットワークはすでにさらに深く進化しています。現在の最先端のアプローチでは、通常、品詞タグ付け(Plank et al., 2016)や意味役割タグ付け(He et al., 2017)[33]など、3~4層を含む深層Bi-LSTMが使用されています。一部のタスクのモデルはさらに深くなります。 GoogleのNMTモデルには8つのエンコーダー層と8つのデコーダー層がある(Wu et al., 2016)[20]。しかし、ほとんどの場合、2層以上のモデルによってもたらされるパフォーマンスの向上は最小限です(Reimers&Gurevych、2017)[46]。 これらの観察結果は、シーケンスのラベル付けと構造化予測の問題の大部分に当てはまります。分類に関しては、深いモデルや非常に深いモデルは文字レベルの入力に対してのみ優れたパフォーマンスを発揮し、浅い単語レベルのモデルが依然として最先端の技術です(Zhang et al., 2015; Conneau et al., 2016; Le et al., 2017)[28, 29, 30]。 3. レイヤー接続 ディープ ニューラル ネットワークをトレーニングする場合、勾配消失問題を回避するために使用できるコア テクニックがいくつかあります。したがって、さまざまなレイヤーと接続が提案されており、ここでは、i) 高速道路レイヤー、ii) 残余接続、iii) 密な残余接続の 3 つのポイントについて説明します。 ハイウェイレイヤー:LSTMのゲーティングメカニズム(Srivastava et al., 2015)[1]に触発されています。まず、入力xに非線形性gのアフィン変換を適用する単層MLPを想定します。 次に、Highway レイヤーは次の関数を計算します。 ここでt=σ(WTx+bT)は変換ゲートと呼ばれ、(1−t)はキャリーゲートと呼ばれます。 Highway レイヤーは、入力のいくつかの次元を適応的に出力に直接渡すという点で、LSTM ゲートと非常によく似ていることがわかります。 Highwayレイヤーは主に言語モデリングに使用され、最先端の結果が得られています(Kim et al., 2016; Jozefowicz et al., 2016; Zilly et al., 2017)[2, 3, 4]が、音声認識などの他のタスクにも使用されています(Zhang et al., 2016)[5]。詳しい情報とコードについては、Sristavaのホームページをご覧ください。 (http://people.idsia.ch/~rupesh/very_deep_learning/)。 残差接続:残差接続(He et al., 2016)[6]は、コンピュータービジョンへの応用が初めて提案され、ImageNet 2016コンペティションでのコンピュータービジョンの優勝に最も大きく貢献しました。残余接続は、Highway レイヤーよりもさらに直接的です。前のレイヤーの出力 h を、現在のレイヤーを表すインデックス L だけ増分します。次に、残余接続は次の機能を学習します。 残差接続は、1 つのショートカット接続のみを介して、前のレイヤーの入力を現在のレイヤーに追加します。この単純な変更により、レイヤーが改善されず、モデルがデフォルトで恒等関数を使用するようになるため、勾配消失の問題が軽減されます。 高密度残差接続:高密度残差接続(Huang et al., 2017)[7](CVPR 2017 Best Paper Award)は、各レイヤーから次のレイヤーにレイヤーを追加するのではなく、各レイヤーから後続のすべてのレイヤーへの接続を追加します。 高密度残差接続はコンピュータビジョンにうまく適用されており、ニューラル機械翻訳においても一貫して残差接続を上回る性能を示すことが示されています(Britz et al.、2017)[27]。 4. ドロップアウト バッチ正規化により、コンピュータビジョンのほとんどのアプリケーションで他の正規化器が廃止されましたが、ドロップアウト(Srivasta et al.、2014)[8]は、NLPのディープニューラルネットワークで依然として人気のある正規化器です。ドロップアウト率が 0.5 であることは、ほとんどのシナリオで依然として効果的であることを示しています (Kim、2014)。近年、適応型ドロップアウト(Ba & Frey、2013)[9]や進化型ドロップアウト(Li et al.、2016)[10]などのドロップアウトの変種が提案されていますが、いずれもNLPコミュニティで広く使用されていません。この問題の主な原因は、ドロップアウト マスクを集約すると埋め込みがゼロになるため、再帰接続には使用できないことです。 巡回ドロップアウト:巡回ドロップアウト(Gal & Ghahramani, 2016)[11]は、レイヤーIIのすべてのタイムステップで同じドロップアウトマスクを適用することでこの問題を解決します。これにより、シーケンス内のドロップアウト ノイズの増幅が回避され、シーケンス モデルに効果的な正規化がもたらされます。リカレントドロップアウトは、意味役割ラベル付け(He et al., 2017)と言語モデリング(Melis et al., 2017)[34]において最先端の結果を達成しました。 5. マルチタスク学習 追加データが利用可能な場合は、多くの場合、マルチタスク学習 (MTL) を使用して、対象タスクのパフォーマンスを向上させることができます。 補助目的:私たちは、自分が関心を持っているタスクに役立つ補助目的を見つけることがよくあります(Ruder、2017)[13]。単語埋め込みを事前学習するために周囲の単語を予測した場合(Mikolov et al., 2013)、学習中に補助目的としてそれらを使用することもできます(Rei, 2017)[35]。シーケンスツーシーケンスモデルでも同様の目的がよく使用されます(Ramachandran et al.、2016)[36]。 タスク固有のレイヤー: NLP に MTL を使用する標準的なアプローチはハード パラメータの共有ですが、モデルがタスク固有のレイヤーを学習できるようにすることは理にかなっています。これは、タスクの出力層をより低いレベルに配置することによって実現できます(Søgaard&Goldberg、2016)[47]。もう一つのアプローチは、プライベートなサブスペースと共有のサブスペースを誘導することです(Liu et al., 2017; Ruder et al., 2017)[48, 49]。 6. 注意メカニズム 注意メカニズムは、シーケンス間モデルでエンコーダーの状態に注意を払うための最も一般的な方法であり、シーケンス モデルの過去の状態を振り返るためにも使用できます。注意メカニズムを使用すると、システムは隠れ状態 s_1、...、s_m に基づいてコンテキスト ベクトル c_i を取得でき、これを現在の隠れ状態 h_i と組み合わせて予測を行うことができます。環境ベクトル c_i は、以前の状態の加重平均によって取得できます。ここで、状態に追加される重みは、注意重み a_i です。 注意関数 f_att(h_i,s_j) は、現在の隠れ状態 h_i と前の隠れ状態 s_j 間の正規化されていない分布を計算します。以下では、加法的な注意、乗法的な注意、自己注意、キー値注意の 4 つの注意のバリエーションについて説明します。 加法的な注意は最も古典的な注意メカニズム(Bahdanau et al., 2015)[15]であり、1つの隠れ層を持つフィードフォワードネットワークを使用して注意の割り当てを計算します。 ここで、v_a と W_a は学習した注意パラメータであり、[* ; *] はカスケードを表します。同様に、行列 W_1 と W_2 を使用して、それぞれ h_i と s_j の個別の変換を学習することもできます。このプロセスは次のように表現できます。 乗法的注意(Luong et al., 2015)[16]は、次の関数を計算することで注意操作を簡素化します。 加法アテンションと乗法アテンションは複雑さの点で似ていますが、乗法アテンションは行列演算を使用してより効率的に実装できるため、実際にはより高速でメモリ効率が高い傾向があります。どちらのバリアントも低次元の d_h デコーダー状態では同様に動作しますが、高次元では加法的なアテンションの方が優れたパフォーマンスを発揮します。この現象を緩和する一つの方法は、f_att(h_i,s_j)をd_h^(-1/2)倍にスケールすることである(Vaswani et al., 2017)[17]。 注意メカニズムは、エンコーダーや前の隠れ層を処理するためだけでなく、読解課題におけるテキストとしての単語埋め込みなどの他の特徴の分布を取得するためにも使用できます(Kadlec et al.、2017)[37]。ただし、分類タスクでは感情分析などの追加情報は必要ないため、注意メカニズムは分類タスクに直接適用できません。これらのモデルでは、通常、LSTM の最終的な隠し状態、または最大プーリングや平均プーリングなどの集約関数を使用して文を表します。 自己注意は通常、追加情報を使用しませんが、自己注意自体を使用して文から関連情報を抽出することができます(Lin et al.、2017)[18]。自己注意は内部注意とも呼ばれ、読解(Cheng et al., 2016)[38]、テキスト含意(Parikh et al., 2016)[39]、自動テキスト要約(Paulus et al., 2017)[40]など、多くのタスクで非常に優れたパフォーマンスを発揮しています。 各隠れ状態 h_i の非正規化分布を計算することで、加法的な注意を簡素化できます。 行列形式では、隠れ状態 H=h_1,…,h_n に対して、注目ベクトル a と最終的な文の表現 c を次のように計算できます。 ベクトルを抽出できるだけでなく、v_a を V_a 行列に置き換えることで他の注意機能も実行でき、注意行列 A を抽出できます。 実際には、次の直交性制約を適用して、計算の冗長性をペナルティし、2乗フロベニウスノルムの形式で注意ベクトルの多様性を促進することができます。 Vaswani et al. (2017)も同様のマルチヘッドアテンションを使用しました。 最後に、キー値アテンション(Daniluk et al., 2017)[19]は、形式と機能を分離し、それによってアテンション計算のための別々のベクトルを維持する最近のアテンションの変種です。また、さまざまなテキストモデリングタスクでも大きな役割を果たしています(Liu&Lapata、2017)[41]。具体的には、キー値アテンションは各隠しベクトル h_i をキー値 k_i とベクトル vi_i に分離します: [k_i;v_i]=h_i。キー値は加法的な注意を使用して注意分布 a_i を計算します。 ここで、L はアテンション ウィンドウの長さであり、I は単位がすべて 1 のベクトルです。次に、注意分布値を使用して環境表現 c_i を取得します。 環境ベクトル c_i は予測のために現在の状態値 v_i と組み合わせられます。 7. 最適化 最適化アルゴリズムとスキームは通常モデルの一部であり、ブラック ボックス操作と見なされることが多いです。 Adamアルゴリズム(Dozat&Manning、2017)[50]のハイパーパラメータβ2の値を減らすなど、アルゴリズムにわずかな変更を加えるだけで、最適化の動作に大きな変化が生じることがあります。 アダム法(Kingma & Ba、2015)[21]は最も広く使用されている一般的な最適化アルゴリズムであり、NLP研究者によって最適化ツールとしてもよく使用されています。 Adam 法は、通常の確率的勾配降下法よりもはるかに優れており、非常に速く収束します。しかし、最近の研究では、微調整と運動量を用いた勾配降下法がアダム法よりも優れていることが示されています(Zhang et al.、2017)[42]。 最適化の観点から見ると、アダム法は各パラメータの学習率を適応的に調整するため(Ruder、2016)[22]、アダム法を使用してSGDスタイルのアニーリングを正確に実行できます。特に、学習率のアニーリングは、再起動によって実行できます。つまり、学習率を設定し、収束するまでモデルをトレーニングします。その後、学習率を半分にし、以前の最適なモデルを読み込んで最適化プロセスを再開できます。 Adam では、これによりオプティマイザーは事前トレーニング済みパラメータの学習率を忘れて、最初からやり直します。 Denkowski & Neubig (2017) [23]は、2回の再起動と学習率アニーリングを備えたAdamアルゴリズムが、アニーリングを備えたSGDアルゴリズムよりも優れていることを示しました。 8. アンサンブル法 複数のモデルの予測値を平均化してアンサンブル モデルに組み合わせることは、モデルのパフォーマンスを向上させる効果的な戦略であることが示されています。テスト時にアンサンブルを使用して予測を行うのはコストがかかりますが、抽出可能性の最近の進歩により、高価なアンサンブルをより小さなモデルに圧縮できるようになりました(Hinton et al., 2015; Kuncoro et al., 2016; Kim & Rush, 2016)[24, 25, 26]。 評価モデルの多様性が増す場合 (Denkowski & Neubig、2017)、アンサンブルは結果の信頼性を保証する重要な方法です。モデルの異なるチェックポイントをアンサンブルすることは効果的であることが示されているが(Jean et al., 2015; Sennrich et al., 2016)[51, 52]、このアプローチはモデルの多様性を犠牲にする。循環学習率はこの効果を軽減するのに役立ちます(Huang et al., 2017)[53]。ただし、リソースが利用できる場合は、モデルの多様性を最大化するために、独立してトレーニングされた複数のモデルをアンサンブルすることをお勧めします。 9. ハイパーパラメータの最適化 事前定義されたハイパーパラメータや既存のハイパーパラメータを使用してモデルをトレーニングする代わりに、モデルのハイパーパラメータを調整するだけで、ベースラインよりも大幅な改善を実現できます。ベイズ最適化の最近の進歩は、ニューラルネットワークのブラックボックストレーニングにおけるハイパーパラメータの最適化に使用でき(Snoek et al., 2012)[56]、これは広く使用されているグリッド検索法よりもはるかに効率的です。 LSTM の自動ハイパーパラメータ調整により、言語モデリングにおいて最先端のパフォーマンスが実現し、他のより複雑なモデルを大幅に上回るパフォーマンスを実現しました (Melis ら、2017)。 10. LSTMテクニック 初期状態の学習: 通常、LSTM 状態をゼロベクトルに初期化します。しかし、パフォーマンスを向上させるために初期状態を人為的に調整するのではなく、初期状態を最適化するためのパラメータとして扱うことができます。この方法はヒントン氏によって強く推奨されています。この手法の TensorFlow 実装については、以下を参照してください。 https://r2rt.com/non-zero-initial-states-for-recurrent-neural-networks.html 入力と出力の埋め込みを試す: これは、入力と出力の埋め込みが LSTM モデル内のパラメータ数の大部分を占める状況に適しています。 LSTMを言語モデリングにおける語彙予測に使用する場合、入力パラメータと出力パラメータを共有することができる(Inan et al., 2016; Press & Wolf, 2017)[54, 55]。この手法は、大きなパラメータを学習できない小さなデータセットで役立ちます。 勾配ノルムクリッピング:勾配消失のリスクを減らす1つの方法は、勾配を最大値にクリップすることです(Mikolov、2012)[57]。しかし、これはパフォーマンスの持続的な改善にはつながりませんでした (Reimers & Gurevych、2017)。各勾配を個別にクリッピングする代わりに、勾配のグローバル ノルムをクリッピングすると (Pascanu 他、2013)、より大きな改善が期待できます (Tensorflow の実装はこちら: https://stackoverflow.com/questions/36498127/how-to-effectively-apply-gradient-clipping-in-tensor-flow)。 ダウンプロジェクション: 出力パラメータの数をさらに減らすために、LSTM の隠し状態をより小さなサイズに投影することができます。これは、言語モデリング (Melis et al.、2017) など、出力数が多いタスクに特に役立ちます。 特定のタスクのベストプラクティス 次に、特定のタスクに関するベスト プラクティスについて説明します。ほとんどのモデルは、特定のタイプの単一のタスクを実行するときに優れたパフォーマンスを発揮し、一部のモデルは他のタスクにも適用できますが、適用する前にそのパフォーマンスを検証する必要があります。また、分類、シーケンスのラベル付け、自然言語生成 (NLG)、および NLG の特殊なケースであるニューラル機械翻訳などのタスクについても説明します。 1. 分類 より効率的な畳み込み演算により、CNN の適用範囲は最近拡大しており、NLP における分類タスクを処理するための一般的な方法となっています。次のベスト プラクティスは CNN に関連しており、複数の最適なハイパーパラメータを選択できるようになります。
2. 配列のラベリング シーケンス注釈は NLP では非常に一般的です。モデル アーキテクチャには多くのベスト プラクティスが存在しますが、次のガイドラインはモデル出力と予測フェーズに重点を置いています。 タグ付けスキーム: テキスト セグメントにタグを割り当てるタスクでは、さまざまなタグ付け戦略を使用できます。たとえば、BIO では、セパレータの最初のシンボルは B タグでマークされ、他のシンボルは I タグでマークされ、セパレータの外側のシンボルは O タグでマークされます。IOB は BIO に似ていますが、違いは、前のシンボルが同じカテゴリに属しているが同じセパレータに属していない場合は、B タグでマークされることです。IOBES では、単一シンボル エンティティに S タグをマークし、各セパレータの最後のシンボルに E タグをマークする必要があります。 IOBES と BIO のパフォーマンスは似ています。 CRF 出力層: 名前付きエンティティの認識など、出力間に依存関係がある場合、最終的なソフトマックス層を線形連鎖条件付きランダム フィールドに置き換えることができます。このアプローチは、モデリング制約を必要とするタスクに対して一貫して改善された結果を生み出すことが示されています(Huang et al., 2015; Max & Hovy, 2016; Lample et al., 2016)[60, 61, 62]。 制約付きデコード: CRF 出力層に加えて、制約付きデコードを使用して、誤った順序付け、つまり有効な BIO 遷移を生成しないことを除外することもできます (He et al.、2017)。制約デコードの利点は、タスク固有の制約や構文上の制約など、任意の制約を適用できることです。 3. 自然言語生成 既存のベストプラクティスのほとんどは、自然言語生成 (NLG) に使用できます。実際、現在の技術の多くは、最も一般的な NLP タスクである言語モデルの進歩に根ざしています。 モデリング範囲: 現在のモデルでは生成された出力結果を適切に記憶できないため、繰り返しは NLG タスクにおける大きな課題です。モデル内でモデリング カバレッジを直接設定することが、この問題を解決する良い方法です。出力にどのエンティティが表示されるべきか事前にわかっている場合は(レシピの材料など)、チェックリストを使用する必要があります(Kiddon et al.、2016)[63]。注意メカニズムを使用すると、過去の時間ステップにおける注意分布a_tの合計であるカバレッジベクトルc_iを追跡することができます(Tu et al., 2016; See et al., 2017)[64, 65]: このベクトルは、ソース言語のすべての単語に使用される注意をキャプチャします。ここで、カバレッジ ベクトルに追加の注意を設定して、モデルが同じ単語に繰り返し焦点を当てないようにすることができます。 さらに、焦点を当てたい特定のタスクの注意動作を捉える補助損失を追加できます。ニューラル機械翻訳には 1 対 1 のアライメントが必要です。最終的なカバレッジ ベクトルにすべてのインデックスでより多いまたはより少ないカバレッジ ベクトルがある場合、モデルはペナルティを受けます (Tu ら、2016)。一般的に、モデルが同じ位置を繰り返し処理する場合はペナルティを課します(et al.、2017を参照)。 4. ニューラル機械翻訳
IV. 結論 このリストには含まれていないベストプラクティスもあると思います。同様に、解析や情報抽出など、私が詳しくないタスクも多く、推奨することはできません。この記事が、新しい NLP タスクの学習を始める際に役立つことを願っています。ここに挙げた内容のほとんどをすでにご存知の場合でも、何か新しいことを学んだり、便利なテクニックを磨いたりできたことを願っています。 原文: http://ruder.io/deep-learning-nlp-best-practices/index.html#introduction [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
>>: AISpeechの趙恒毅氏:国内のスマート音声産業は幅広い発展の見通しがある
ChatGPTの立ち上げから1年以上が経った今、2023年のAIに関する最大の話題は、技術そのもので...
[51CTO.com クイック翻訳] 機械学習には多くの利点があるのに、なぜ誰もが導入しないのでしょ...
[[185985]]ニューラル ネットワークが無限のトリックを実行するのを見ると、最近ではディープラ...
2011 年には、子供のような iCub ヒューマノイド ロボットについて耳にしていました。これは次...
半月も経たないうちに、第6波がまたやってきました!現地時間5月4日、米証券取引委員会は再び「上場廃止...
システム統合は、ソフトウェア システム、情報システム、エンタープライズ システム、モノのインターネッ...
世界中の科学者の中には、ロボットの歩行能力を強化するために取り組んでいる者もいれば、異なる視点からロ...
Google は検索の問題を解決したと多くの人が考えていますが、Google の観点から見ると、検索...
編集者注: 日々の仕事や研究において、データ サイエンティストが遭遇する最も一般的な問題の 1 つは...
Llama、Llama 2 から Mixtral 8x7B まで、オープンソース モデルのパフォーマ...
ChatGPTは世界中で人気を博しています。今日の質問は、SQL で ChatGPT を実行できる...