メインコンテンツにスキップ
OpenAI

2022年6月28日

出版

DALL·E 2の事前学習の緩和策

帽子を被り旗を掲げる群衆が背を向けている空撮写真

DALL·E

読み込んでいます...

魔法のような DALL·E 2 を多くの観客と共有するためには、強力な画像生成モデルに伴うリスクを軽減する必要がありました。そのため、生成された画像がコンテンツポリシー(新しいウィンドウで開く)に違反しないよう様々な防止措置(新しいウィンドウで開く)を講じています。

本記事では、DALL·E 2 が学習素材とするデータを直接変更する防止措置のサブセットである、事前学習による軽減に焦点を当てます。特に、DALL·E 2 はインターネット上の何億ものキャプション付き画像で学習しており、モデルが学習する内容を変更するために、これらの画像の一部を削除したり、重みを変えたりしています。

本記事は3つのセクションで構成されており、それぞれが異なる事前学習による軽減を説明しています。

  • 最初のセクションでは、DALL·E 2 の学習データセットから暴力的で性的な画像を排除した方法を説明します。この緩和錯がなければ、モデルは、プロンプト次第で過激な画像を生成することを学習し、一見無害なプロンプトでも意図せずそのような画像を返してしまう可能性さえあります。
  • 次のセクションでは、学習データを仕分けることでバイアスが増幅されることを発見し、この影響を軽減する技術について説明します。例えば、この緩和策を行わなかった場合、仕分けられたデータで学習したモデルは、元のデータセットで学習したモデルと比較して、男性を描いた画像に比べ女性を描いた画像を生成する回数が少なくなることに気づきました。
  • 最後のセクションでは、記憶の課題に目を向け、DALL·E 2 のようなモデルは、新しい画像を作成するのではなく、学習した画像を再現することがあることを発見しました。実際には、この画像の吐き戻しは、データセット内で何度も複製されている画像によって引き起こされることが分かっており、データセット内の他の画像と視覚的に類似している画像を削除することで問題を軽減しています。

過激な学習データの削減

学習データは学習したモデルの能力を形成するので、データフィルタリングは望ましくないモデルの能力を制限するための強力なツールです。分類子を使用して、明らかな暴力を描写する画像と性的なコンテンツを描写した画像という2つのカテゴリにこのアプローチを適用し、DALL·E 2 の学習前に、これらのカテゴリの画像をデータセットから除外しました。社内でこれらの画像分類子に学習させ、当社ではデータセットフィルタリングが学習したモデルに与える影響について研究を続けています。

画像分類子に学習させるため、以前 GLIDE(新しいウィンドウで開く) の学習データを仕分けるために採用したアプローチを再利用しました。このアプローチの基本的なステップは以下のとおりです。まず、ラベル付けしたい画像カテゴリの仕様を作成します。第2に、各カテゴリについて数百の正負の例を収集します。第3に、より多くのデータを収集し、精度と再現率の妥協を改善するために能動学習手順を使用します。最後に、精度よりも再現率を優先するために保守的な分類しきい値でデータセット全体に対して得られた分類子を実行します。これらのしきい値を設定するために、全ての良質なデータを残すよりも、全ての低質なデータを排除することを優先しました。モデルにはいつでも後からデータを追加してファインチューニングを行い、新しいことを教えることができる一方、既に学習したことをモデルに忘れさせるほうが遥かに難しいからです。

読み込み中...

能動学習の段階では、分類が難しいか誤分類される可能性のある画像に対して人間のラベルを収集することで分類子を繰り返し改善しました。注目すべきは、2つの能動学習手法を使用して、ラベル付けのために人間に見せる画像をデータセット(数億のラベル付けされていない画像を含む)から選択したことです。まず、分類子の偽陽性率(良性の画像を暴力的または性的と誤分類する頻度)を下げるために、現行のモデルが陽性と分類した画像に人間のラベルを割り当てました。この手順を成功させるために、ほぼ100%の再現率ながら偽陽性率が高くなるように分類しきい値を調整しました。この方法により、ラベリング担当者はほとんどの場合において真陰性のケースにラベルを付けることができました。この手法は偽陽性を減らし、ラベリング担当者が潜在的に有害な画像を見る必要性を減らすのに役立つ一方で、モデルが現在見逃している陽性例の発見を増やす助けになりません。

分類子の偽陰性率を下げるために、第2の能動学習手法である最近傍探索を採用しました。特に、現行のラベル付きデータセットから、モデルが負に誤分類する傾向のある正のサンプルを見つけるために、多分割交差検証を実施しました(これを行うために、異なる学習・検証分割で文字通り何百種類もの分類子に学習させました)。それからラベル付けされていない画像の大規模なコレクションをスキャンして、知覚特徴空間におけるこれらのサンプルの最近傍を求め、発見された画像に人間のラベルを割り当てました。当社の計算インフラストラクチャにより、分類子の学習と最近傍探索の両方を多数の GPU にスケールアップするのは簡単で、能動学習の手順は数時間や数日ではなく、数分の間に行うことができました。

データフィルターの有効性を検証するため、同じハイパーパラメーターで2つの GLIDE モデルに学習を行いました。1つはフィルターなしのデータで、もう1つはフィルター後のデータセットです。前者をフィルター前モデル、後者をフィルター後モデルとします。予想通り、フィルター後モデルでは、この種のコンテンツ要求に対して、過激なコンテンツを生成する頻度が全体的に減ることが明らかになりました。ただし、データフィルタリングの思わぬ副作用も発見しました。特定の人口統計に対するモデルのバイアスを発生あるいは増幅させるのです。

読み込み中...

データフィルターにより発生したバイアスの修正

生成モデルは、内在するバイアスも含め学習データの分布に一致させようとします。その結果、学習データを仕分けると、下流のモデルにバイアスを発生あるいは増幅させる可能性があります。一般的に、元のデータセットのバイアスを修正することは社会技術的に難しい作業であり、当社では研究を続けていますが、本記事では扱いません。ここで取り上げる問題は、特にデータフィルタリングそのものによって引き起こされるバイアスの増幅です。当社のアプローチでは、フィルター後モデルがフィルター前モデルよりもバイアスが大きくなることを防ぎ、本質的にデータフィルタリングによって引き起こされる分布シフトを軽減することを目指しています。

フィルタリングによるバイアスの増幅の具体例として、「CEO」というプロンプトを挙げます。フィルター前モデルがこのプロンプトの画像を生成すると、女性よりも男性の画像をより多く生成する傾向があり、このバイアスの大部分は現在の学習データを反映したものであると想定しています。同じプロンプトをフィルター後モデルに適用したところ、バイアスが増幅されたように見えました。生成された画像はほぼ男性だったのです。

このバイアス増幅の特殊なケースは、2つの要因によるものと仮説を立てています。まず、元のデータセットにおいて女性と男性がほぼ同数であったとしても、そのデータセットは女性を性的な文脈でより多く提示する傾向があること。2つ目は、データ収集と検証の段階で努めたにもかかわらず、分類子自体が実装やクラス定義によりバイアスがかかっている可能性があることです。これらの両方の影響により、フィルターは男性よりも女性の画像を多く除去する可能性があり、モデルが学習で観察する男女比が変化します。

フィルターに起因するバイアスをより徹底的に調査するため、データフィルターが様々な概念へのバイアスにどの程度影響しているかを測定する方法を求めました。注目すべきは、暴力および性的コンテンツのフィルターは純粋に画像ベースであるものの、データセットのマルチモーダルな性質により、これらのフィルターがテキストに及ぼす影響を直接測定できます。全ての画像にはテキストキャプションが添えられているため、フィルター後およびフィルター前データセットで、手作業で選択されたキーワードの相対的な頻度を調べ、フィルターが特定の概念にどの程度影響しているかを推定できました。

これを実践するために、Apache Spark を使って、フィルター後およびフィルター前データセットの両方における全てのキャプションについて、いくつかのキーワード(「親」、「女性」、「子供」)の頻度を計算しました。データセットには何億ものテキストと画像のペアが含まれているにもかかわらず、これらのキーワード頻度の計算には、当社の計算クラスターを使用してわずか数分しかかかりませんでした。

キーワード頻度を計算した結果、データセットのフィルターによって、特定のキーワードの頻度が他のキーワードよりも偏っていることが確認できました。例えば、フィルターによって「女性」という単語の頻度は14%減少した一方、「男性」の頻度は6%しか減少しませんでした。これは、両方のデータセットで学習した GLIDE モデルからサンプリングすることで、当社が既に観察していたことを大規模に確認するものでした。

読み込み中...

フィルターによるバイアスを測定するプロキシができたところで、それを軽減する方法が必要になりました。この問題に対処するため、フィルター後データセットの分布がフィルター前の画像の分布により一致するよう再重み付けすることを目指しました。この概念を説明する例として、データセットが50%の猫の写真と50%の犬の写真で構成されており、データフィルターが犬の75%を除去し、猫は50%しか除去しないとします。最終的なデータセットは猫が⅔、犬が⅓となり、このデータセットで学習した確率的生成モデルは、犬よりも猫の画像を多く生成する可能性が高くなります。この不均衡を修正するには、全ての犬の画像の学習ロスを2倍にすることで、全ての犬の画像を2回繰り返す効果をエミュレートします。このアプローチを実際のデータセットやモデルに適用する際には、大部分が自動的に拡張できることが判明しました。つまり、再重み付けしたい特徴を手作業で選択する必要がないのです。

Choi 氏らが用いたアプローチと類似する特殊な分類子からの確率を用いて、フィルター後データセットの画像の重みを計算します(Choi 氏他、2019)(新しいウィンドウで開く)。この分類子に学習させるために、両方のデータセットから一様に画像をサンプリングし、その画像がどちらのデータセットに由来するかを予測します。特に、このモデルは、事前に P(フィルター前)= 0.5 が与えられている場合、P(フィルター前|画像) を予測します。実際には、このモデルが強力になりすぎないようにしたいと考えています。最初に当社のフィルターが実装した正確な機能を学習してしまう可能性があるためです。その代わり、元のデータフィルターよりも滑らかなモデルを求めており、フィルターによって影響を受ける大まかなカテゴリを捉えつつも、特定の画像にフィルターがかけられているかどうかを分からないようにしたいのです。そのために、小さな CLIP モデルの上に直線的なプローブの学習を行いました。

ある画像がフィルター前データセットのものである確率を予測する分類子ができたら、この予測を画像の重みに変換する必要があります。例えば、P(フィルター前|画像)= 0.8 であるとします。これは、サンプルがフィルター前データではフィルター後データの4倍の確率で出現することを意味し、4の重みが不均衡を修正するはずです。より一般的には、P(フィルター前|画像)/P(フィルター後|画像)の重みを使うことができます。A

この再重み付けスキームは、増幅されたバイアスを実際にはどの程度緩和しているのか?フィルター後モデルを新しい重み付けスキームでファインチューニングしたところ、ファインチューニングしたモデルの挙動は、以前発見したバイアス例に対するフィルター前モデルに遥かに近いものになりました。これは弾みになった一方、キーワードベースのバイアスヒューリスティックを使って、この緩和策をより徹底的に評価したいと考えました。新しい重み付けスキームを考慮しながらキーワードの頻度を測定するには、フィルター後データセット内のキーワードの各インスタンスに、そのキーワードを含むサンプルの重みによって単純に重み付けできます。こうすることで、フィルター後データセットにおけるサンプルの重みを反映した、新しいキーワード頻度のセットが得られます。

当社がチェックしたほとんどのキーワードにおいて、再重み付けスキームはフィルタリングによって発生する頻度の変化を減少させました。先ほどの「男性」と「女性」の例では、以前の値はそれぞれ14%と6%だったのに対し、相対的な頻度減少は1%と-1%になります。この指標は実際のフィルタリングバイアスのプロキシに過ぎない一方、画像ベースの再重み付けスキームがテキストベースの指標をこれほど有意に改善したことは安心感をもたらすものです。

モデルの挙動をより詳細に評価し、フィルタリングがバイアスと機能性の開発に与えた影響を調査することで、DALL·E 2 に残っているバイアスを引き続き調査しています。

画像の吐き戻しを防止する

DALL·E 2 の前身は、学習画像をそのまま再現することがありました。DALL·E 2 に求めているのは、既存の画像の断片を繋ぎ合わせるのではなく、オリジナルのユニークな画像をデフォルトで作成することであるため、この挙動は望ましくありませんでした。また、学習画像をそのまま複製することは、著作権侵害、所有権、プライバシー(学習データに人の写真があった場合)に関わる法的な問題を引き起こす可能性があります。

画像の吐き戻しの問題をより理解するため、画像の重複が頻繁に生じるプロンプトのデータセットを収集しました。そのために、学習データセットから5万件のプロンプトの画像をサンプリングするために学習したモデルを使用し、対応する学習画像との知覚的類似性によってサンプルを分類しました。最後に、上位のマッチを手作業で検査したところ、合計5万件のプロンプトのうち、真の重複ペアは数百件しか見られませんでした。吐き戻し率が1%未満に見えたとしても、上記の理由から吐き戻し率を0に下げる必要があると考えました。

吐き戻された画像のデータセットを調査したところ、2つのパターンに気づきました。まず、画像はほぼ全てが単純なベクター画像で、情報量が少ないため記憶しやすいと思われました。第二に、さらに重要な点として、学習データセットに含まれる画像はすべて多くの準重複がありました。例えば、1時を示す時計のようなベクター画像があるとすると、同じ時計が2時や3時を示している学習サンプルを発見します。このことに気づいたら、分散最近傍探索を使って、全ての吐き戻された画像がデータセット内で知覚的に類似した重複を持つことを検証しました。 他の(新しいウィンドウで開く)研究でも(新しいウィンドウで開く)、大規模言語モデルで同様の現象が観察されており、データの重複が記憶と強く結び付いていることが明らかになっています。

上記の発見から、データセットの重複を排除すれば、吐き戻しの問題を解決できる可能性があることが示唆されています。これを実現するために、ニューラルネットワークを使って、類似画像のグループを特定し、それぞれのグループから1枚を除く全ての画像を取り除くことを計画しました。B

ただし、各画像について、データセット内の他の全ての画像と重複しているかどうかをチェックする必要があります。データセット全体には何億枚もの画像が含まれているため、全ての重複を見つけるには、天文学的な数の画像の組み合わせを地道にチェックすることになります。これは大規模なコンピュートクラスターを使えば技術的には可能ですが、わずかなコストでほぼ同等の効果を維持しつつ、遥かに効率的な代替手段を発見しました。重複排除を実行する前にデータセットをクラスター化するとどうなるでしょうか。近くのサンプルは同じクラスターに属することが多いため、重複するペアのほとんどはクラスターの決定境界を跨ぎません。こうすることで、クラスター外の重複をチェックすることなく各クラスター内のサンプルから重複を排除しつつ、見落とす重複ペアはごくわずかとなります。画像の組み合わせを逐一チェックする必要がなくなるため、これは地道なアプローチよりも遥かに高速です。C

このアプローチをデータの小さなサブセットで経験的にテストしたところ、K=1024 クラスターを使用した場合、全ての重複ペアのうち85%が見つかりました。上記のアルゴリズムの成功率を向上させるために、一つの重要な発見を活用しました。データセットの異なる無作為なサブセットをクラスター化すると、結果として得られるクラスターの決定境界は大きく異なることが多くなるというものです。したがって、あるデータのクラスタリングで重複ペアがクラスターの境界を越えた場合、同じペアは異なるクラスタリングでは1つのクラスターに収まる可能性があります。試すクラスタリングの数が多くなるほど、重複ペアを発見できる可能性が高くなります。実際には、5つのクラスタリングを使用することにしました。つまり、5つの異なるクラスターの集まりで各画像の重複を探すことになります。データのサブセットにおいて、全重複ペアのうち97%が見つかりました。

驚くべきことに、データセットのほぼ4分の1が重複排除によって除去されました。見つかった準重複ペアを見ると、その多くに有意義な変更が含まれていました。先ほどの時計の例を思い返してください。データセットには、異なる時間を指す同じ時計の画像が多数含まれているとします。これらの画像は、モデルにこの特定の時計の外観を記憶させる可能性が高いものの、モデルが時計の時刻を区別することを学習するための助けにもなるかもしれません。排除されたデータの量を考えると、このような画像を排除することでモデルの性能が低下するのではないかという懸念がありました。

重複排除がモデルに与える影響をテストするために、同一のハイパーパラメーターで2つのモデルに学習させました。1つは完全なデータセットで、もう1つは重複排除したデータセットでです。モデルを比較するために、元の GLIDE モデルの評価に使ったときと同じ人間による評価を用いました。驚くべきことに、人間の評価者は、重複排除されたデータで学習したモデルをやや好むことが判明し、これはデータセットに含まれる大量の冗長な画像が性能を損ねていたことを示唆しています。

重複排除されたデータで学習したモデルができたところで、学習データセットから5万件のプロンプトに対して以前に行った吐き戻しの検索を再度実行しました。新しいモデルは、学習データセットから画像に対する正確なプロンプトが与えられた場合、学習画像を吐き戻さないことが分かりました。このテストをさらに一歩進めるために、生成された5万枚の画像それぞれについて、学習データセット全体に対する最近傍探索も行いました。こうすることで、あるプロンプトに関連づけられたものとは異なる画像の吐き戻しを検出できるかもしれないと考えました。このような徹底的なチェックを行っても、画像の吐き戻しは見つかりませんでした。

次のステップ

上述した全ての緩和策は、DALL·E 2 に関連するリスクを低減するという目標に向けた大きな前進を示すものですが、それぞれの緩和策にはまだ改善の余地があります。

  • より優れた事前学習フィルターを使えば、より多くのデータで DALL·E 2 に学習させることができ、モデルのバイアスをさらに軽減できる可能性があります。現在のフィルターは、看過率を低くするように調整されており、その代償に偽陽性が多くなっています。その結果、データセット全体の約5%が除外されたものの、そのほとんどはコンテンツポリシーに違反していません。フィルターを改善することで、この学習データの一部を取り戻すことができる可能性があります。
  • システムの開発と展開の多くの段階でバイアスが生まれ、これが増幅される可能性があります。DALL·E 2 のようなシステムでのバイアスや、このバイアスによる弊害を評価し緩和することは、他分野に跨る重要な問題で、OpenAI の大きなミッションの一環として研究を続けています。この問題に対する当社の取り組みとして、問題をより理解するための評価の構築、新しいデータセットのキュレーション、よりロバストで代表的なテクノロジーを構築するための人間によるフィードバックやファインチューニングといった方法の適用などがあります。
  • また、ディープラーニングシステムにおける記憶と汎化の研究を続けることも極めて重要です。重複排除は記憶を防ぐために効果的な第一歩ではありますが、DALL·E 2 のようなモデルがなぜ、どのように学習データを記憶するのかについて、全てを解き明かすものではありません。

脚注

  1. P(フィルター前|画像)sigmoid(f(x)) としてパラメーター化すると、重みは exp(f(x)) となります。これはシグモイドの定義を使って導き出すことができます。

1/(1+ef(x))/(11/(1+ef(x))) 1/(1+e^−f(x))/(1−1/(1+e^−f(x))) =1/(1+ef(x))/((1+ef(x)1)/(1+ef(x))) = 1/(1+e^{-f(x)}) / ((1+e^{-f(x)} - 1)/(1+e^{-f(x)})) =1/(1+ef(x))/((ef(x))/(1+ef(x))) = 1/(1+e^{-f(x)}) / ((e^{-f(x)})/(1+e^{-f(x)})) =(1+ef(x))/(1+ef(x))/(ef(x)) = (1+e^-f(x))/(1+e^-f(x)) / (e^-f(x)) =1/(ef(x))=ef(x) = 1 / (e^{-f(x)}) = e^{f(x)}

  1. B

    これを実現するには、全ての学習画像 ii に対して特徴ベクトル $v_iを計算し、 を計算し、i < jが存在する画像( が存在する画像(||v_i - v_j||<しきい値) < しきい値)jをすべて削除します。この問題を地道に解決するには、全てのペア距離 をすべて削除します。この問題を地道に解決するには、全てのペア距離 ||v_i - v_j||$$ を計算する必要がありますが、この作業はデータセットが大きくなるにつれて二次関数的に拡大します。

  2. C

    K K でクラスター数、N N でデータセットサイズを表すと、この手法では完全な O(N2) O(N^2) ではなく、O(K(N/K)2)=O(N2/K) O(K*(N/K)^2) = O(N^2/K) のペア距離の計算で済みます。一方、最悪の場合でもどの画像も K K を超える重複がないことが保証されます。

貢献者

Alex Nichol、Aditya Ramesh、Pamela Mishkin、Prafulla Dariwal、Joanne Jang、Mark Chen

執筆協力

Greg Brockman、Aditya Ramesh、Pamela Mishkin、Mark Chen、Pranav Shyam、Casey Chu、Che Chang、Miles Brundage