SGPT: 意味検索のためのGPTによる文章埋め込み

SGPT: GPT Sentence Embeddings for Semantic Search

f:id:e4exp:20220303152808p:plain
提案手法の構造図.左(a)がSGPTクロスエンコーダ,右(b)がSGPTバイエンコーダ.

f:id:e4exp:20220303153033p:plain
BEIRでのre-ranking 性能比較(クロスエンコーダ)


  • GPTをバイエンコーダやクロスエンコーダとして対称検索や非対称検索に適用するためのSGPT-BEとSGPT-CEを提案
    • GPTは利用可能な最大の言語モデルであるが、意味探索はこれまでBERTに支配されていた
    • SGPT-BEは、バイアステンソルだけを対照的に微調整し、新しいプーリング手法により、意味的に意味のある文埋め込みを生成.BEIRで最も優れた文埋め込みを6%上回り、新たな最先端を達成(OpenAI Embeddings of the 175B Davinci endpoint(25万倍のパラメータを微調整)を凌駕)
    • SGPT-CEは、GPTモデルからの対数確率を微調整なしで使用.BEIRにおいて教師無しで最先端.7つのデータセットで教師ありの最先端
  • バイエンコーダはdocumentとqueryそれぞれをGPTに通してposition-weighted mean pooling(後のトークンほど重みが大きい)を適用し,queryベクトルとそれぞれのdocument vectorとcos similarityを測りargmax
  • クロスエンコーダはqueryとdocumentを結合してGPTにいれ,query token上のlog probability sumをとりargmax

背景

クロスエンコーダー:

バイエンコーダー:

  • クエリとドキュメントを別々にエンコードする方法
  • 新しいクエリはクエリベクトルを生成するために、変換器を一回通過するだけでよい。このクエリベクトルは、キャッシュされた文書ベクトルに対して類似性関数でスコアリングされる。バイエンコーダの埋め込みは、クラスタリング機械学習モデルの入力特徴など、検索以外のタスクに利用可能
  • クロスエンコーダーはBi-Encoderよりも性能が高いが遅い

非対称検索:

  • クエリと文書が交換可能でない。ある質問から答えを見つけることは非対称検索問題

対称検索:

  • クエリと文書が交換可能である。クエリと文書がともに質問である場合、重複質問を見つけることは対称検索問題

WebGPT: web検索を操作して引用付きで質問に回答

WebGPT: Browser-assisted question-answering with human feedback

2021/12

f:id:e4exp:20220223193257p:plain
人間用web検索環境(左)とモデル用(右)

f:id:e4exp:20220223193441p:plain
ELI5で,人間のデモに対してWebGPTが好まれた割合(左)とELI5の正解データに対してWebGPTが好まれた割合(右)

  • 長文質問に答えるために,テキストベースのブラウザでweb検索できる環境でGPT-3をfine tuneした
    • 人間が同様のタスク行った結果との比較も使用して学習している
    • 最良のモデルは人間の検索回答(デモ)を使ってGPT-3を微調整し、人間の嗜好をスコア化する報酬モデルに対して拒絶サンプリング(n件の生成結果を与えて報酬が高いものを採用)を行ったモデル
    • ELI5を使った評価で,56%の確率で人間の検索回答(デモ)より好まれ、69%でRedditで最も投票された回答より好まれた
  • web検索環境はテキストベースで,質問が与えられ,それに対して検索,引用元として記録,ページスクロール,等のactionが可能
    • これを操作して質問に対する長文の回答を根拠付きで生成/作成する
    • 人間が操作して回答を作成した結果はデモと呼ぶ
    • モデルがこれを操作する際は言語生成を行ってactionと一致すれば操作できる
  • 学習方法は4つ
    • behavior cloning(BC) : 人間のデモ(コマンド)をラベルとして教師ありでfine tune
    • 報酬モデル(RM) : BCモデルから質問と回答を入力し,スカラー報酬を出力する
    • 強化学習(RL): PPO(schulman+2017)を使ってBCモデルをfine tune
    • 拒絶サンプリング(best-of-n): BCとRLからn個の回答をサンプルし,報酬モデルRMで最も良いものを採用
  • 評価はELI5, TruthfulQA, TriviaQAで行った
    • 学習方法間ではbest-of-n > RL > BCの順で評価が高い

data2vec: 画像,音声,言語を同じ手法で事前学習できる一般的フレームワーク

Data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language

f:id:e4exp:20220204175537p:plain f:id:e4exp:20220204175612p:plain

  • 音声、自然言語処理、コンピュータビジョンのいずれに対しても同じ学習手法を用いるフレームワーク、data2vecを提案
  • 同一モデルを教師/生徒モードで使用する自己蒸留で,教師モードでデータの復元を行い潜在表現を学習したあと,生徒モードで同じデータにマスクを適用して入力し,学習した潜在表現を復元するように学習
    • モデルはtransformerベース.教師の重みは、生徒の指数関数的に減衰する平均値.lossはsmooth L1
  • 評価実験では提案手法の事前学習を用いてImageNet-1Kでsota達成など

競技プログラミングのコード生成で上位54%以内を達成,AlphaCode

Competition-Level Code Generation with AlphaCode

f:id:e4exp:20220204130714p:plain

  • 自然言語からコード生成するシステムAlphaCodeを提案
  • モデルは巨大な(最大41B)transformer encode-decoder
    • GitHubオープンソースコード715.1GB分で事前学習
    • 学習サンプルをランダムに前後に分け前半をencoder, 後半をdecoderに使用しmasked言語lossで学習
    • マルチクエリ注意(注意ブロックごとにqueryは別,key,valueは共通にする)を利用してメモリコストを削減している
    • 競技プログラミングデータセットCodeContestsを作成し,これでfine-tuning.データセットは公開している
      • temparing(softmax前にlogitを温度Tで割る)を使用,学習目的はGOLD(Pang and He, 2020)
      • GOLDはオフラインRLアルゴリズムで、最尤目標の勾配にトークン尤度重みを掛けたもの.すでに高い尤度を割り当てたトークンを重視し,その分布担いトークンを無視させる
    • 学習した1個のモデルから大量のサンプルを生成し,フィルタリング,クラスタリングを経て数件を提出し非公開テストで評価
      • サンプルの半分はpython,残りはC++を生成.フィルタリングはテストケースに正解することを確認,クラスタリングは同じ入力に対して同じ出力を返すプログラムは同じクラスタに割当て,同じクラスタからは提出物を選ばない
  • 競技プログラミングCidefircesの最近10件のコンテストで評価を行い5000人以上の中で平均54.3%のランキング達成
    • 評価では「k件の生成結果の中からn件を提出し,解決された問題の割合」を意味するn@kという指標を使う

f:id:e4exp:20220204130800p:plain 問題の例
問題は次のようなもの.文字列sとtが与えられ,sを構成する文字を入力しながら何回かbackspaceで文字を削除する操作を混ぜることでtの文字列を作ることができるかを問う.作ることができるならYES, できないならNOを出力する.入力形式は最初の行に問題の数,次の行からsとtが1行ずつ記載される.問題数4ならs,tが4つずつなので合計9行の入力が来る(問題数の行も入れれば9行)

f:id:e4exp:20220204130810p:plain 提案手法が出力した回答
入力文字列を逆順にし,whileループ内で先頭から文字を消していく方法でsがtを一致するか確認するプログラムを生成できている

単語埋め込みによる分散表現の学習を提案した論文を読んだ

言語処理関係の深層学習モデルでは,単語埋め込みを言語モデルと同時に学習する手法をよく使用するが,それを最初に提案した論文だと思う.

wikipediaで単語埋め込みの項を見ていて,今日的な形の手法で最初のはこれのようだった.違っていたらご指摘ください. https://en.wikipedia.org/wiki/Word_embedding#Development_and_history_of_the_approach

NeurIPS(2000)版もある(未読) https://papers.nips.cc/paper/2000/hash/728f206c2a01bf572b5940d7d9a8fa4c-Abstract.html

A Neural Probabilistic Language Model

f:id:e4exp:20220117224229p:plain

  • 単語の分散表現を埋め込み行列とし,言語モデル(単語の結合確率)と同時に学習する方法を提案,当時sotaの平滑化trigramモデルより10%~20%優れたperplexity を達成
  • この手法は以下のようにまとめられる
    • 語彙の各単語に実数の特徴ベクトルを割り当て
    • 語彙列の結合確率を上記の特徴ベクトルで表現する
    • 上記語彙特徴ベクトルと,確率関数のパラメタを同時に学習
      • 語彙の特徴ベクトルはV行m列の行列で表現され,Vは語彙数, mは次元数.
  • 学習は正則化つき対数尤度最大化で,出力はsoftmaxで単語確率を出力しておりそこは分散ベクトルではない.分散ベクトルを出力する場合は語彙にない単語を表現できることにも言及
  • MPIを使ったCPU上での並列計算(forward, backward)を実装している(データ並列, パラメタ並列)
  • 単語を意味空間の1点に割り当てるため多義語ではうまく動作しないと予想している

畳み込みベースの翻訳モデル ConvS2S

Convolutional sequence to sequence learning

f:id:e4exp:20220117121732p:plain f:id:e4exp:20220117121750p:plain

  • 畳み込みとattnを使って翻訳モデルを提案
    • RNNを使わないenc-decで,入力系列を畳み込みでencode,decoderは過去の正解系列の畳み込みとencodeされた文脈の内積attnを適用,次の単語を出力するよう学習.attentionはdecoderの各レイヤで個別に実施する
    • enc, decそれぞれの入力系列で埋め込み位置を入力系列に加算するpositional embeddingを使用.改善幅は小さいがperplexity, bleuにおいてenc, decどちらでも効果が見られる
    • decoder側の入力は未来時刻の入力を使用しないようにゼロpaddingでmaskする
  • WMT16 英語ルーマニア語でsota.LSTMベースの先行手法より高いbleuを達成し一桁速い推論速度
  • decoderよりもencoderの層数を増加すると性能向上することを報告している

21,000クラスを検出可能な物体検出手法 Detic

Detecting Twenty-thousand Classes using Image-level Supervision

f:id:e4exp:20220113124347p:plain f:id:e4exp:20220113124411p:plain

  • faster RCNN ベースの2段階モデルで候補領域提案後に分類部分を訓練する方法で,imagenetの21,000クラスの物体検出が可能なDetector with image classes (Detic)を提案
    • 従来の弱教師検出手法では領域提案技術で出力されるboxとクラスラベルのみを持つ画像分類データセットのラベルをマッチさせる戦略を取っていたが,本論文は領域提案だけで未知の物体の提案は学習できているとしている
    • boxラベルのない画像分類データに対しては,モデル出力候補のうちエリアが最大の出力に対してクラスラベルを使って分類を学習.lossは全クラスに対してBCE.ここではlocalization損失は計算しない
    • boxラベルがあるデータについては通常の物体検出学習
      • 分類部分はCLIPを使用しており,open vocabularyな分類が可能
  • 実験ではfrequent, common, rareの3グループを持つ物体検出データセットのLVISと,画像分類用データセットとして21Kクラスのimagenet,conceptual captionsを使用.conceptual captionはimage captionデータセットなのでキャプションからクラスラベルを抽出してLVISクラスに言及しているものを使用

    • open vocabulary設定のLVISベンチマークで全クラスで,先行手法より2.4mAP,新規クラスで8.3mAPの改善.提案手法は標準LVISベンチマークで全クラスで41.7mAP,希少クラスで41.7mAPなど
  • https://huggingface.co/spaces/akhaliq/Detic

    • デモ