SGPT: 意味検索のためのGPTによる文章埋め込み
SGPT: GPT Sentence Embeddings for Semantic Search
- 2022/02
- https://arxiv.org/abs/2202.08904
- モデル・コード https://github.com/Muennighoff/sgpt
- GPTをバイエンコーダやクロスエンコーダとして対称検索や非対称検索に適用するためのSGPT-BEとSGPT-CEを提案
- バイエンコーダは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
- 長文質問に答えるために,テキストベースのブラウザでweb検索できる環境でGPT-3をfine tuneした
- 人間が同様のタスク行った結果との比較も使用して学習している
- 最良のモデルは人間の検索回答(デモ)を使ってGPT-3を微調整し、人間の嗜好をスコア化する報酬モデルに対して拒絶サンプリング(n件の生成結果を与えて報酬が高いものを採用)を行ったモデル
- ELI5を使った評価で,56%の確率で人間の検索回答(デモ)より好まれ、69%でRedditで最も投票された回答より好まれた
- web検索環境はテキストベースで,質問が与えられ,それに対して検索,引用元として記録,ページスクロール,等のactionが可能
- これを操作して質問に対する長文の回答を根拠付きで生成/作成する
- 人間が操作して回答を作成した結果はデモと呼ぶ
- モデルがこれを操作する際は言語生成を行ってactionと一致すれば操作できる
- 学習方法は4つ
- 評価はELI5, TruthfulQA, TriviaQAで行った
- 学習方法間ではbest-of-n > RL > BCの順で評価が高い
data2vec: 画像,音声,言語を同じ手法で事前学習できる一般的フレームワーク
Data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language
競技プログラミングのコード生成で上位54%以内を達成,AlphaCode
Competition-Level Code Generation with AlphaCode
- 自然言語からコード生成するシステムAlphaCodeを提案
- モデルは巨大な(最大41B)transformer encode-decoder
- 競技プログラミングCidefircesの最近10件のコンテストで評価を行い5000人以上の中で平均54.3%のランキング達成
- 評価では「k件の生成結果の中からn件を提出し,解決された問題の割合」を意味するn@kという指標を使う
問題の例
問題は次のようなもの.文字列sとtが与えられ,sを構成する文字を入力しながら何回かbackspaceで文字を削除する操作を混ぜることでtの文字列を作ることができるかを問う.作ることができるならYES, できないならNOを出力する.入力形式は最初の行に問題の数,次の行からsとtが1行ずつ記載される.問題数4ならs,tが4つずつなので合計9行の入力が来る(問題数の行も入れれば9行)
提案手法が出力した回答
入力文字列を逆順にし,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
- 単語の分散表現を埋め込み行列とし,言語モデル(単語の結合確率)と同時に学習する方法を提案,当時sotaの平滑化trigramモデルより10%~20%優れたperplexity を達成
- この手法は以下のようにまとめられる
- 語彙の各単語に実数の特徴ベクトルを割り当て
- 語彙列の結合確率を上記の特徴ベクトルで表現する
- 上記語彙特徴ベクトルと,確率関数のパラメタを同時に学習
- 語彙の特徴ベクトルはV行m列の行列で表現され,Vは語彙数, mは次元数.
- 学習は正則化つき対数尤度最大化で,出力はsoftmaxで単語確率を出力しておりそこは分散ベクトルではない.分散ベクトルを出力する場合は語彙にない単語を表現できることにも言及
- MPIを使ったCPU上での並列計算(forward, backward)を実装している(データ並列, パラメタ並列)
- 単語を意味空間の1点に割り当てるため多義語ではうまく動作しないと予想している
畳み込みベースの翻訳モデル ConvS2S
Convolutional sequence to sequence learning
- https://arxiv.org/abs/1705.03122
- 2017 ICML
- 畳み込みと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
- https://arxiv.org/abs/2201.02605
- 2022/01
- 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クラスに言及しているものを使用
https://huggingface.co/spaces/akhaliq/Detic
- デモ