R-Dropとは?同じ入力への予測のずれを抑え、推論を重くせずにモデルを改善する学習技術

R-Dropは、異なるDropoutで得た2つの予測分布を近づける正則化手法です。双方向KLと教師損失の仕組み、翻訳・文章分類・画像分類の実験結果から、専用モデル開発への応用と学習コスト、実装時の注意点を解説します。

参考文献

R-Drop: Regularized Dropout for Neural Networks

Xiaobo Liang, Lijun Wu, Juntao Li, Yue Wang, Qi Meng, Tao Qin, Wei Chen, Min Zhang, Tie-Yan Liu

論文を見る

今回の論文

今回取り上げるのは、Xiaobo Liang、Lijun Wu、Juntao Li、Yue Wang、Qi Meng、Tao Qin、Wei Chen、Min Zhang、Tie-Yan Liuによる「R-Drop: Regularized Dropout for Neural Networks」です。2021年6月28日にarXivで初公開され、NeurIPS 2021で発表されました。公開元はarXivとNeurIPS論文集、研究分野は正則化、一貫性学習、自然言語処理、画像分類です。arXivの書誌情報とNeurIPS版の本文を参照します。

選んだ理由は、大きなモデルを追加するのではなく、既存モデルの学習目標を変えるだけで改善を試せるからです。特に、追加費用を学習側で負担し、配備するモデルの構造を保てる点は、小さな専用AIを運用する際のヒントになります。

どんな技術か

R-Dropは、同じ入力を、異なるDropoutの状態で2回処理し、2つの予測分布が近くなるように学習する技術です。Dropoutは、学習中にネットワークの一部の働きをランダムに止め、特定の経路だけへの依存を抑える工夫です。

例えば、同じ問い合わせ文を入力しても、1回目は「返品0.7、配送0.2、その他0.1」、2回目は「返品0.5、配送0.4、その他0.1」と出ることがあります。これは説明用の例です。通常の教師あり学習がそれぞれを正解へ近づけるのに対し、R-Dropは、2つの分布の違いにも損失を与えます。

2つの独立したモデルを育てるわけではありません。同じ重みを共有し、学習時のランダムな無効化だけが異なります。学習後はDropoutを無効にした通常の1つのモデルで推論します。原論文2.1〜2.2節

課題

Dropoutは過学習を抑える一方、学習時と推論時で使うネットワークの状態が異なります。学習では一部を無効にしたネットワークを使い、通常の推論では無効化せずに使います。さらに、学習中に選ばれる経路同士も、同じ入力へ同じ確率分布を返すよう直接には制約されていません。

正解が「返品」だとして、片方が返品に0.9、もう片方が0.6を与えていても、どちらも正解クラスが最大になり得ます。しかし、正解クラス以外への確率の配り方も含めた予測のばらつきは残ります。通常の正解への損失だけでは、この違いを直接比較しません。

既存の研究には中間表現の距離を縮める方法もありますが、R-Dropは最終的な出力確率の空間で整合性を求めます。分類や生成で実際に最適化する予測へ、制約を直接置く発想です。

実際の開発では、学習データではよく当たるのに新しい文章で精度が伸びない分類器や、限られた対訳で調整する翻訳モデルが候補になります。ただし、これは学習時の課題です。推論時にDropoutを止めている決定的なモデルが、同じ入力に毎回違う結果を返すという意味ではありません。

用語解説

Dropoutとマスク
学習時に一部のユニットの出力をランダムに無効化する方法と、その選択を表すものです。R-Dropでは同じ無効化率でも異なるマスクを使い、同一入力から2つの予測を作ります。
サブモデルと重み共有
一部の経路を無効化した状態を、元のモデルのサブモデルと見なします。R-Dropの2経路は同じ重みを共有するため、別々のモデルを保存したり、学習後に統合したりする必要はありません。
負の対数尤度・交差エントロピー
正解へ高い確率を割り当てるほど小さくなる教師損失です。R-Dropでは両方の経路にこの損失を与え、単に同じ誤答へそろうことを避けながら一貫性を学びます。
KLダイバージェンス
ある確率分布から見た、別の分布との食い違いを測る量です。向きを逆にすると一般には値が変わるため、R-Dropは両方向の値を平均します。比較するのは正解クラスの確率だけでなく、出力先全体の分布です。
一貫性正則化
同じ意味を持つ入力や、同じ入力への異なる処理で、予測が変わりすぎないようにする制約です。R-Dropでは文章を加工する代わりに、モデル内部のDropoutで処理を変えます。

技術の仕組み

同じ入力と正解を、2つの経路へ渡します

入力xと正解yを用意し、Dropoutを有効にした同じモデルへ2回通します。得られる分布をpとqとします。モデルの重みは共通で、マスクだけを別にサンプリングします。通常の設定ではDropout率を2種類にする必要はありません。

分類なら、同じ問い合わせ文に対して、同じカテゴリ集合上の2つの分布を得ます。生成の教師あり学習なら、同じ入力文と同じ正解の接頭辞に対する次トークン分布を対応付けます。自由生成した異なる長さの文章同士を、後から位置だけで比較する方式ではありません。

正解へ近づける損失と、分布をそろえる損失を足します

原論文の式2〜4を、1例の分類について書き直すと次の形です。p(y)とq(y)は、それぞれが正解クラスへ与える確率です。

teacher_loss = -log p(y) - log q(y)
consistency_loss = (KL(p || q) + KL(q || p)) / 2
loss = teacher_loss + alpha × consistency_loss

KL(p || q) = Σ_c p(c) × log(p(c) / q(c))

最初の項は、両方の経路で正解を当てる役割です。2つ目は、どのカテゴリへどの程度の確率を配るかをそろえます。alphaは一貫性をどれだけ重視するかを決める係数です。

一貫性の項だけでは、すべての入力へ同じ分布を返しても小さくできてしまいます。正解への教師損失と組み合わせることが重要です。また、固定した先生モデルは使わず、2つの経路を通じて共有重みを更新します。原論文2.1節

実装では、平均の取り方が学習強度を変えます

論文の教師損失は2回分の和ですが、著者の公開コード例は交差エントロピーを2回分で平均しています。同じKLの定義なら、教師損失だけを半分にしてalphaを据え置くと、教師損失に対するKLの相対的な強さは2倍になります。

さらに、バッチやトークンの合計と平均、語彙軸の和をどう取るかでもスケールが変わります。そのため、論文にあるalphaをコピーするだけでは同じ設定になりません。損失の定義と正規化を記録し、その実装上で検証します。

生成タスクでは、パディング位置を損失から除外します。実装上はlog-softmaxなどを使って数値を安定させ、2つの経路の対応位置を保つ必要があります。各呼び出しの直前に乱数を同じ状態へ戻し、同じマスクを作ってしまうと、一貫性を学ぶための違いがなくなります。

バッチを複製して処理し、配備時は1経路に戻します

論文のアルゴリズムは、入力バッチを複製してバッチ軸へ連結し、まとめて処理します。例えば元の入力が32例なら、延べ64例分を処理し、対応する2組の出力を比較します。これは異なる64例を集めることとは違います。

まとめることでGPUを使いやすくできますが、計算や学習中の中間データは増えます。推論では通常どおりDropoutを無効化し、1回の処理で出力を得ます。R-Dropのために推論時の2経路平均を追加する必要はありません。原論文2.2節

実験と結果

原論文は翻訳、言語理解、要約、言語モデル、画像分類の5種類、計18データセットで評価しています。ここでは条件を追いやすい比較を取り上げます。以下は2021年の報告値であり、現在の最高性能を表すものではありません。

翻訳では、同じTransformer構造でBLEUが改善しました

WMT14の英独約450万対、英仏約3,600万対を使い、Transformerのbig設定で学習しています。翻訳実験のalphaは5です。表2のBLEUは、参照訳との語句の一致を測る指標で、大きいほど良好です。

条件通常のTransformerR-Dropあり
WMT14 英語→ドイツ語29.1230.91
WMT14 英語→フランス語42.6943.95

英独では1.79、英仏では1.26ポイントの改善です。モデル構造を新しくするのではなく、学習目標の変更で差が出ています。ただし、この表を同一計算時間での比較と読むことはできません。後述の分析でも学習費用の増加を扱っています。原論文3.1節・表2

文章分類では、事前学習後の調整にも効果がありました

GLUEの開発セットで、BERT-baseとRoBERTa-largeのファインチューニングを比較しています。表3から、正解率で評価する2タスクを抜き出します。

モデル・条件RTESST-2
BERT-base68.2%92.4%
BERT-base+R-Drop71.1%93.0%
RoBERTa-large86.6%96.4%
RoBERTa-large+R-Drop88.4%96.9%

RTEは文同士の含意関係、SST-2は感情分類です。改善幅はタスクやモデルによって異なります。alphaは設定ごとに0.1、0.5、1.0から調整しており、全タスクに翻訳のalpha=5を使った結果ではありません。

また、これらはテストセットではなく開発セットの数値です。GLUEには回帰のSTS-Bも含まれ、その場合はKLではなく出力間の平均二乗誤差を使っています。分類の確率分布に対する式を、任意の回帰値へそのまま適用したわけではありません。原論文3.2節・表3

画像でも改善しましたが、設定と費用の確認が必要です

事前学習済みViT-B/16の微調整では、CIFAR-100の正解率が92.64%から93.29%、ImageNetでは83.97%から84.38%へ改善しました。alphaは0.6で、ゼロから画像モデルを学習した比較ではありません。原論文3.5節・表6

IWSLT14の独英翻訳を使う分析では、alpha=1、5、10でBLEUがそれぞれ36.05、37.25、36.95でした。強く制約するほどよいわけではありません。また、2経路を3経路へ増やしても37.25から37.30という小さな差でした。この一例から、経路数を増やす費用に常に見合うとは言えません。

学習時間の分析では、通常学習より収束に時間がかかる一方、より良い検証性能へ到達しています。主要な結果表には誤差範囲が併記されていないため、小さな差の再現性は手元での複数試行で確かめる必要があります。原論文4.1〜4.5節

何に使える?

以下は仕組みと実験から考えられる応用案です。原論文が各業務の日本語データや運用費用を検証したものではありません。

問い合わせを振り分ける専用分類器

自社で学習する文章分類器に、R-Dropを追加する使い方が考えられます。入力文を無理に削除・置換せず、モデル内部の揺らぎで一貫性を学べるため、短文の重要語を壊すデータ拡張を避けたい場面で比較候補になります。

ただし、同じ内容を言い換えた文章や、未知の商品名への強さを直接保証する方式ではありません。業務の言い換え、クラス間の取り違え、少数クラスの再現率を別に測ります。

専門分野の翻訳・要約モデルの調整

対訳や参照要約があり、モデルの重みを更新できる環境で利用を検討できます。正解の各位置について、異なるDropoutでも出力分布をそろえるため、教師あり生成の学習ループへ組み込めます。

ただし、ニュース要約や翻訳の指標が上がっても、業務文書の事実誤りや数字の取り違えが解消するとは限りません。原文との整合性や専門用語の保持は、用途に合わせて評価します。

推論の予算を増やしにくい画像分類

商品カテゴリや設備写真を分類するモデルを定期更新する場面も候補です。学習時の計算費用を負担して改善できれば、1件ごとの推論経路を維持したまま配備できます。

ただし、ViTの微調整で有効だったことと、小さなCNNや異常検知でも有効なことは別です。元のモデルに適切なDropoutがあるか、既存の正則化と合わせて強すぎないかを確認します。

開発や事業へのヒント

「何を同じにするか」を、製品の目的から選びます

同じ文を異なるDropoutで処理する発想は、SimCSEの文埋め込み学習にもあります。ただしSimCSEは、同じ文のベクトルを近づけ、別文との対照で表現空間を学びます。R-Dropは、正解を学ぶ過程で同じ入力の出力分布をそろえます。

検索用ベクトルが欲しいのか、分類カテゴリの予測を改善したいのかで、比較すべき損失が変わります。「同じ入力を2回」という見た目だけで手法を交換しないことが重要です。

未ラベルデータを増やす前に、手元の教師あり学習を比較します

標準のR-Dropは、手元の入力と正解を2経路で使えます。別途大きな未ラベル集合を整備せずに、既存の教師ありモデルへ追加できる点が、小規模な開発では試しやすいところです。

未ラベル画像を学習へ取り込むこと自体が目的なら、FixMatchの疑似ラベルと弱い・強い画像変換のように、別の教師信号の作り方も比較対象になります。R-Dropを導入しただけで、未ラベルデータの正解が新たに得られるわけではありません。

精度と学習費用を、同じ表で判断します

最初はモデルとデータ分割を固定し、通常学習とR-Dropを比較する設計が考えられます。教師損失とKLを別々に記録し、alphaは検証集合で選びます。必要なら延べ処理例数や学習時間を増やした通常学習も比較し、単なる追加計算の効果を切り分けます。

自社SaaSへ同じモデルを長く配備するなら、学習費用の増加を多くの推論へ分散できる可能性があります。一方、顧客ごとに頻繁に再学習する設計では、その追加費用が積み重なります。採用判断には正解率だけでなく、GPU時間、最大メモリ、更新頻度を入れるべきです。

限界

第一に、学習費用が増えます。同じ例を2経路で処理し、両方の中間データと出力分布を扱うためです。バッチ連結は実行を効率化できますが、処理量を半分へ戻すものではありません。大きな語彙の生成モデルでは、2組のトークン分布とKL計算も負担になります。実際の時間やメモリの倍率は装置と実装で変わります。

第二に、Dropoutのない決定的なモデルを同じ入力で2回処理しても、通常は同じ分布になり、KLから追加の学習信号を得られません。適用には、どこでランダム性が生じるかの確認が必要です。既存モデルへDropoutを新設するなら、その変更自体の影響も分けて検証します。

第三に、一貫して間違えることは可能です。R-Dropは誤ラベルを修正したり、未知クラスを発見したりする手法ではありません。分類の確信度が実際の正解率と一致する保証もないため、自動処理のしきい値は独立した評価データで決めます。

第四に、理論的な説明の適用範囲に注意が必要です。原論文2.3節の命題は、正規化を含む線形モデルについて、サブモデルの平均損失と全体モデルの損失の差を扱います。任意の深いTransformerや未知の入力分布に対する精度保証と読むことはできません。

最後に、原論文の主な事前学習モデル実験は微調整です。現在の大規模LLMをゼロから事前学習する場合や、日本語の業務モデルへの改善幅を同じ数値で保証しません。外部の生成APIへ文章を2回送るだけでは、重み更新を伴うR-Dropにはなりません。

よくある質問

Q. 推論時にも同じ入力を2回処理しますか?

A. 必要ありません。2経路は学習時に一貫性を与えるためのものです。配備時はDropoutを無効にした通常の1経路を使います。推論時にもDropoutを有効にして何度も評価する方法とは目的が異なります。

Q. 2回の予測が一致すれば、正解になったと判断できますか?

A. 判断できません。両方が同じ誤答へ高い確率を与えることもあります。R-Dropでは正解への教師損失も必要です。運用の採否は、一致率ではなく未使用の評価データでのクラス別性能などで決めます。

Q. Dropout率を2種類に変える必要がありますか?

A. 標準の方式では不要です。同じ率でもランダムに無効化される位置が変われば、2つの経路を作れます。逆に、毎回乱数をリセットして同じマスクにすると、比較したい違いが失われます。

Q. 論文のalpha=5をそのまま使えばよいですか?

A. 5は翻訳実験での設定です。文章分類では別の値を選び、公開コード例と論文では教師損失の平均・和にも違いがあります。バッチやトークンの正規化をそろえた上で、検証データで選ぶ必要があります。

Q. 回帰モデルにもKLをそのまま使えますか?

A. 通常の回帰値は、合計1の確率分布ではありません。原論文はSTS-Bの回帰で、2つの出力の平均二乗誤差を使っています。予測対象に応じて一貫性を測る量を変える必要があります。

今日の学び

この論文は、Dropoutで作られる学習時のサブモデル同士や、学習時と推論時の状態に違いがある課題を扱いました。同じ入力から得る2つの出力分布を、正解への損失と双方向KLで学習するのがR-Dropです。

得られるヒントは、モデルを大型化する以外にも、既存モデルの予測へ一貫性を求める改善方法があることです。配備時の経路を保てる利点と引き換えに学習費用が増えるため、損失の尺度、Dropoutの働き、用途別の評価をそろえて比較することが大切です。