🍦

NLP News #2

【1】AlphaCode (担当: @ELYZA_inc fujiki)

  • 概要・書誌情報
    • preprint: URL
      • 73ページある大作。
    • DeepMind の 競技プログラミングAI
    • 平均的な競技プログラミング競技者程度。

1. 問題

  • 競技プログラミング
    • 問題文が与えられて、その問題を解く解法としてのプログラムを提出する。
    • テストケースがある。
      • テストケースの一部は一般に公開されていない。
    • <> 自然言語をプログラムに翻訳。
      • = 仕様が与えられてプログラムを書く。
image

2. 提案・方法

  • モデル
    • 非対称な Encoder-Decoder モデル
      • Decoder 層 ~= 6x Encoder 層
      • Encoder: 入力は 1,526 tokens。MLM で訓練
      • Decoder: 入力は 768 tokens。CausalLM で訓練
    • モデルサイズ: 基本 1B オーダ。最大 41B
    • 効率の良いサンプリングための multi-query attention
      • Multi-head attention で key, value は共有し query のみ複数
      • 生成は高速化、性能低下は微量。

  • 全体像を端的に表した図
image
  • 図左: DATA - 事前学習・fine-tuning の学習パラダイム
    • 事前学習:
      • GitHub 上の code
      • 715.1 GB
    • fine-tuning:
      • 競プロ用に整備された CodeContests データセットを作成 (→ 公開)
        • = 既存のデータセット (e.g. Description2Code, CodeNet) + Codeforces
        • データ数: 10kオーダ → 比較的リーズナブル
        • image
      • 時系列 split
      • cleansing
      • Appendix. B.2 に詳細
        1. 重複する問題は削除。重複する問題に対する解法はマージ。
        2. 重複する解法は削除。
        3. 問題なくコンパイルするように機械的に修正・インポートをまとめる等して code を短くする・etc
        4. テストケースに通るものを残す。

  • 学習には、更なる工夫を追加。
    • Tempering - 正則化
      • (論文読む限り) 温度付き Softmax の温度 TT に同じ概念。
      • 学習時には T=0.2<1T = 0.2 < 1 とすることで分布を急峻にし、fine-tuning 用データセットへの過学習を防ぐことができた。
    • Value conditioning & prediction
      • 正解・不正解などの追加情報も得られているため、それらの情報で条件付ける。
      • また、その値の予測を補助タスクとして訓練。
      • image
    • GOLD - オフライン強化学習
      • “重み付き損失で学習” といったイメージ。
      • image
      • モチベーションとしては、”recall” よりも “precision” を高めたい。
        • 学習データの分布をまんべんなく捉えてほしいというよりかは、他のソリューションがハズレていても、1つは正解を確実に生成してほしい。よって importance weight を導入している、という感じ。

  • 全体像を端的に表した図 (再掲)
image
  • 図右: SAMPLING & EVALUATION - 推論時の工夫
    • 大規模なサンプリング
      • 多様さを確保
        • プログラミング言語 - Python, C++
        • 高い temperature
        • 問題タグ・レーティングをランダムに → 改善が見られた
    • Filtering
      • テストケースをフィルタとして使い、通ったものを採用
        • テストケースに通るプログラム生成自体難しく、10% 程度の問題に対しては解法を生成することができなかった。
    • Clustering
      • さらに、追加のテストケースで、その入力に対して同じ解答をするサンプルをクラスタリング
        • 擬似的なテストケースも使用
          • テスト入力を生成するモデル: 説明文 → テスト入力

3. 結果

  • 論文は Codeforces で Top 54% に入る程度と報告。ミドルレベル。
  • 公開後、CodeForces で実際のコンテストに参加する予定だったが、サブミットせず撤退。
    • 今後の成長が期待されるかもしれない。
image
  • 以上は実際のコンテストの話で、今回作成したデータセットでの評価は以下の通り。
    • 解答率はまだまだ高くはないので、やはり “今後に期待” か。
image

4. 関連

image

  • Podcast - 著者に聞いてみた。

  • オフィシャルツイート
  • 新たな GitHub code データセット
    • AlphaCode のものを拡張し、それより大きいデータセット。
    • misawa さんより紹介。

【2】SimCTG (担当: @ELYZA_inc fujiki)

  • 概要
    • Simple Contrastive Text Generation から命名。
    • ケンブリッジ大・テンセント AI Lab・DeepMind・香港大
    • 大規模言語モデルの自然言語生成の性能を上げる「学習方法」と「生成方法」を提案。

1. 問題

  • 自然言語生成には大きく2つ、1. 最尤的な生成方法、2. 確率的な生成方法がある。

  • 自然言語生成をする「言語モデル」とは?
    • 学習データにある単語列の出現確率を近似した「確率分布」
      • つまり、「言語を生成するでっかいサイコロ」!
      • 学習によって、出やすい目 = 言葉が決まる。

  • 最尤的な生成方法
    • “最も出やすい言葉を生成する方法”
    • 問題: 不要な繰り返しが発生。
      • 下の例について、
        • (3) では、「樹齢は...、樹高は...。樹高が...、」
        • (4) では、「岐阜県高山市一宮町一宮(いちのみやちょういちのみや)は、...。岐阜県高山市一宮町一宮(いちのみやちょういちのみや)は、岐阜県高山市一宮町一宮(いちのみやちょういちのみや)は、...」
      colorfulscoop/gpt2-small-ja を使用した生成例。以下同じ。
      colorfulscoop/gpt2-small-ja を使用した生成例。以下同じ。

  • 確率的な生成方法
    • “言語サイコロを振って、出た目を採用して生成する方法”
      • まれなものも生成される可能性がある。
        • good: 多様性は出てくる。
        • bad: 多様なのはいいが...。不思議な言葉も出てくる。
      • 上位の単語に限定したり、既出の単語の生成にペナルティを与えるなど、いろいろな調整が可能だが、それでも一貫性に欠けうる。
    • 問題: 一貫性に欠ける
      • 下の例 (2) について、
        • 「雪見の藩お抱え家臣、... が祭っている「月輪寺」には手水鉢が2つあり、長久氏の勢力が強まると同時に関連する寺もあり、山を挟むように ... 樹齢250年を越してきたが、...」
          • 途中で主語が迷子...?
      image

2. 提案

  • (先出し) 提案手法 SimCTG を使うと、
    1. image
    2. 「樹齢400年を越す日本さくら名所100選に選定されている。...。岐阜県飛騨地方 ... に生育し、...。「花の本」とも称され、開花期は5月上旬から下旬までで、桜の枝張りは濃緑色である。花は ... 八重咲きで、花弁の色は ...、雄しべは4本、...」

  • 問題 の原因
    • 各トークンの (潜在) 表現が不適切な類似関係にある。
      • 図左: どのトークンも似通った表現になってしまっている。
      • 図右: こちらのように、「自身とは近く、他とは遠く」なってほしい。
      image
    • 仮説: 高次元の潜在表現空間での分布が「異方性」を持っていることが原因ではないか?
      • あるいは、表現の「コントラスト」が効いていないということ。
  • ⇒ ならば、コントラストを効かせればいい!
    • ⇒ Contrastive Learning (対照学習) の出番

  • 提案は、
    1. 自然言語生成での 「Contrastive Learning」
    2. 生成時にもコントラストを効かせる 「Contrastive Search」

  1. Contrastive Learning
    • (文字通り) 対照的な学習方法
      • 同じトークン xix_{i} の表現の類似度は高くし、異なるトークンどうし xi,xjx_{i}, x_{j} の表現の類似度は低くする。
      image

  2. Contrastive Search
    • 対照的な生成方法
      • こちらも素直なやり方。
      • 「今生成したいトークンの確率値」から「すでに生成したトークンとの類似度」を差し引く。
      image

3. 結果

  • 文書生成と対話生成で好成績と報告。
    • 特に、自動評価だけではなく、人手評価も高い。

  • 文書生成
    • 人手評価結果 (Table 2) を抜粋。
    • 「SimCTG? 強いよね。一貫性・流暢性・情報性、隙がないと思うよ」
    • image

  • 対話生成
    • LCCC: 中国語での対話
    • DailyDialog: 英語での対話
    • LCCC については、Contrastive Search (対照的な生成方法) だけでも効果あり。
      • 言語によっては、従来の最尤法 (MLE) でも「等方」的な表現空間が獲得されているのかもしれない。
      image
    • 中国語での対話の生成例
    • image

【3】chiTra (担当: @ELYZA_inc fujiki)

概要

関連

【4】GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models (担当: ELYZA Ryo Misawa

URL

  • paper: https://arxiv.org/abs/2112.10741
  • code:
    • colab で安全性に考慮したデータセットで学習した small モデル(3億パラメーター)を使って遊べます

概要

  • 35 億パラメーターの classifier-free guidance 付き拡散モデルを使って,高品質なテキストからの画像生成と画像編集を実現
    • 反復的に prompt を与えて編集することで複雑な prompt に対応したいというモチベーション
  • 人手評価において,パラメーター数が3倍以上大きい DALL-E(120億パラメーター)よりも高い性能を達成
image
image

拡散モデル

  • データにノイズを加え,それを復元するように学習する
image

Guidance

  • 拡散モデルがクラス・テキストに基づいて画像生成させるための手法
  • classifier guidance
    • ノイズを加えた入力からクラスを予測する分類モデルを使う
    • Dhariwal & Nichol (2021) から引用
      Dhariwal & Nichol (2021) から引用
  • classifier-free guidance
    • 分類モデルを使わずに,クラス・テキストあり・なしで学習したモデルを使う
    • 分類モデルを使う場合,ノイズ入りのデータで学習する必要があり,事前学習モデルが使えなかったり,訓練が複雑になる

提案手法

  • guided diffusion model をテキストからの画像生成と画像編集に適用
    • 先行研究は class-conditional image synthesis,本研究は text-conditional

結果

  • 定性評価
    • SOTA の XMC-GAN や DALL-E よりも高品質な画像を生成できていることが分かる
    • CLIP guided よりも classifier-free guided の方が良い
    • (cherry-picking はしていないらしい)
    • image
    • 影や反射も追加したり,周囲とスタイルの合うように編集できている
image

定量評価

  • CLIP による reranking なしの場合・DALL-E の結果のみに reranking をする場合・DALL-E の結果のみに reranking かつ discrete-VAE で GLIDE の結果をぼかした場合を比較
image

その他

  • DeepFake など悪用されないように,データセットをフィルタリングし,small モデルのみを公開
    • フィルタリング: 人が現れるデータは使わないなど

【5】JaQuAD: Japanese Question Answering Dataset for Machine Reading Comprehension(担当: ELYZA Ryo Misawa

URL

概要

  • 日本語版の SQuAD 1.1

詳細

  • データ規模
    • 901 本の日本語 Wikipedia 記事
    • 39,696 データ
  • 作成方法
  • 解答,質問のタイプ
    • SQuAD 1.1 形式なので,答えのないデータは作らられていない
    • image
      image
      image

他の QA データセットとの比較

【6】ライティング支援のための文法誤り訂正(担当: ELYZA Ryo Misawa

URL

概要

  • 文法誤り訂正ついて,歴史的な流れや評価指標などについて簡単にまとめた概要と最新動向についてのまとめ
  • image

特に興味深かった話

  • Sakaguchi et al.(2016) の提唱がきっかけで文法誤り訂正のゴールにシフトがあった
image
  • 機械翻訳の手法を援用するのが主流だが,入出力がほとんど同じという点で異なる
    • 系列編集タスクとして解くことで効率化
image
image

その他

【7】WRIME: 主観と客観の感情分析データセット (担当: ELYZA Akira Sasaki (hikomimo))

日本語の感情分析の研究のために、以下の特徴を持つデータセットを構築しました。 ・主観(テキストの筆者1人)と客観(クラウドワーカ3人)の両方の立場から感情ラベルを付与しました。 ・Plutchikの基本8感情(喜び、悲しみ、期待、驚き、怒り、恐れ、嫌悪、信頼)を扱いました。 ・各感情の強度を4段階(0:無、1:弱、2:中、3:強)でラベル付けしました。 ・Ver.2では、感情極性(-2:強いネガティブ、-1:ネガティブ、0:ニュートラル、1:ポジティブ、2:強いポジティブ)も追加しました。
image
  • 上記のようなデータが train/dev/test = 30000/2500/2500 件含まれています

【8】Generating Training Data with Language Models (担当: ELYZA Akira Sasaki (hikomimo))

  • 大規模言語モデルを使えば訓練データ自動生成できるよね!という論文
    • ※ 言語モデルのパラメータはアップデートせず、あくまで事前学習済みのものをそのまま使う
    • image

  • タスクごとに、ラベルごとのプロンプトを準備
    • xgx^g が言語モデルで生成される部分
    • MNLIなどは文対に対してラベル付与するタスクなので、 xgx^g でないほうの文を xsx^s として事前学習コーパスからランダムサンプルしている
    • image

  • たとえば各タスクで以下のような生成がされる
  • image

  • zero-shotにおいてはpromptベースの既存手法を大きく上回り、かつ32事例程度を使ったfew-shot手法とどっこいどっこいの性能
  • image

【9】テキストデータのaugmentation (daaja, augmenty) (担当: ELYZA Akira Sasaki (hikomimo))

daaja

以下ブログ記事から引用
image
image
image
image
image
  • その他、固有名詞の置き換えなどにも対応しているようです

augmenty

  • 日本語でも一部augmenterを使えたので試してみました
    • word_embedding.v1 は結構じゃじゃ馬な感じ。名詞だけに絞って置換などできれば...
    • image
    • wordnet_synonym.v1 はWordNetに含まれる単語のみが対象になりそうなので、 word_embedding.v1 よりはまとも (古風というか荘厳というか... な結果になってますが...)
    • image
    • その他のトークン並び替え、文字置換なども日本語で動作するようです