アドバンストビジョン

第7回: Transformerの応用

千葉工業大学 上田 隆一


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

アドバンストビジョン第7回

今日やること

  • 前回の補足
  • BERT
  • GPT
アドバンストビジョン第7回

層正規化(前回の補足)

  • あるレイヤーの出力を正規化して出力
  • 方法: 渡された各ベクトルに対し
    • ベクトルの要素の平均値、分散になるように正規化
    • 番目の要素を倍してだけシフト
      • は学習対象のパラメータ
  • 役割
    • 値が極端にならないようにする
    • ベクトルのある番目の要素を強調したり弱くしたり(注目度を操作)
      • あとでを別の情報から学習する仕組みが出てきます
アドバンストビジョン第7回

BERT(Bidirectional Encoder Representations from Transformers)[Devlin2019]

  • Transformerのエンコーダを用いたモデル
    • 応用: Google検索
  • BERTBASE、BERTLARGEがある
    • エンコーダの数: 前者が12、後者が24
    • パラメータの数: 前者が110M、後者が340M
  • 訓練方法(ANNの構成: 原著のFig.1
    • 事前学習: 文章の穴埋め(masked LM、MLM)タスクと次文予測タスクを同時に
      • Wikipedia + 7000冊の書籍
    • ファインチューニング: 各用途に応じたタスク
アドバンストビジョン第7回

入力の形式

  • 通常の位置埋め込みの他に、何文目かを表すセグメント埋め込みを各トークンに付与
    • 後発のRoBERTaではセグメント埋め込みは使われない
      (次文予測もしない)
  • 特殊トークン
    • [CLS]: クラストークン(先頭につける)
    • [SEP]: 文の区切り
    • [MASK]: 訓練のときにトークンを隠すマスク
アドバンストビジョン第7回

事前学習

  • masked LM(双方向タスクとも): Transformerのエンコーダに文章の穴埋め問題を解かせる
    • 例: [CLS] I went to Doutonbori [MASK] bus. [SEP]
    • エンコーダが出力する埋め込みの先に各単語の確率を出力する全結合層がくっついていてそれが学習
    • たまにマスクせずにそのまま存在する単語を答えさせたり、トークンを入れ替えて正しいものを答えさせたりする
  • 次文予測: 2つの文を[sep]でつなぎ、続きの文かそうでないかを当てさせる
    • 訓練データの50%を続きの文、50%を別の文にして学習
    • 出力のクラストークンの先に連続/不連続を確率で出す全結合層がくっついていてそれが学習
アドバンストビジョン第7回

BERTの使い方

様々で、用途にあわせてファインチューニングされる(参考

  • 分類、感情分析
    • クラストークンの出力を分類器へ
  • 質問応答
    • 最初に答えの含まれる文を読み込ませ、その後1単語でこたえられるクイズを出して答えさせる
      • クイズの続きになる単語を予測する問題に
  • 固有表現抽出(named entity recognition)
    • 未知の単語を「人名」、「地名」、「組織名」・・・などに分類
    • 文をラベルに変換(雑な説明ですが)
アドバンストビジョン第7回

BERTの使い方(続き)

  • 抽出型要約
    • 文から重要な部分を抜き出して要約
    • 構成例[Liu2019]: BERTの上にさらにエンコーダを乗っけて、各文の頭のクラストークンの部分に、その文を出力するかどうかのバイナリを出力
  • 抽象型要約
    • ちゃんと書き直して要約
    • できるっぽいが調査中
アドバンストビジョン第7回

GPT(Generative Pre-trained Transformer)

  • GPT-1
  • GPT-2
  • GPT-3
    • ChatGPT
  • GPT-4
アドバンストビジョン第7回

GPT-1 [Radford2018]

  • TransformerのデコーダにBERTのように仕事をさせる
    • (BERTはエンコーダ)
    • この場合のデコーダ: 交差注意機構は用いず、マスクつきの自己注意機構を持つTransformerデコーダ
      • マスク: つまり次の単語の予測で事前学習

画像: CC0 (public domain)

アドバンストビジョン第7回

GPT-1の学習方法(事前学習その1)

  • 事前学習のデータ: 様々なジャンルの7000冊の未発表書籍からの4.5GBのテキスト(BookCorpus
  • マスクのかかっていない部分から次の単語を予測
    • 前ページで書いたとおり
    • 損失関数:
      • : 予測したいトークン
      • : 予測に使うトークン
      • : 過去のトークンを読ませる範囲(打ち切りの閾値)
アドバンストビジョン第7回

GPT-1の学習方法(事前学習その2)

  • 特殊トークンの付加: 文章の始まりに<s>、終わりに<e>
  • <e>に対応する出力に全結合層をつないで、
    全単語に対して出現確率を算出
    • softmax
    • クラストークンのように<e>の部分に読み込んだ文章の意味が集約されているという考え
アドバンストビジョン第7回

GPT-1の学習方法(ファインチューニング)

  • 事前学習後のデコーダの<e>に対応する部分にヘッドをつけて特定の仕事に特化
    • BERTで扱うような問題(GPT-1のほうが先だけど)
    • 高い性能を発揮(割愛)
      • 高い性能は重要だが次のページの成果がもっと大きい
アドバンストビジョン第7回

ゼロショットでの使用の検討

  • ファインチューニングなしでGPTを利用
  • GPT-1の論文での方法(選択肢のあるクイズに答えさせる例)
    • なにかを質問して答えが最後のトークンにくるようにする
    • 答えのトークンの出現確率を比較して一番高いものを答えに
  • 1つのトークンだけでなく、質問を入力して出力を促せば文章で答えを出してくれるのではないか?
    • GPTは本質的に言葉を出し続けるモデル
      GPT-2に続く
アドバンストビジョン第7回

GPT-2 [Radford2019]

  • GPT-1をスケールアップ
    • パラメータ数、学習の量を10倍に
    • インターネットから4500万件のリンクを収集し、80GB のテキストを取得
  • 論文ではゼロショット学習を追求
    • タスクに応じてモデルを変えるのではなく、タスクも入力してしまう
      • 答えタスク入力
      • 例: 「日本語に翻訳: This is a pen. 」、「要約: (長い文章)」
  • できるのか?パラメータと学習量を増やしてみる(GPT-1のときに学習量で性能が上がっていったので)
アドバンストビジョン第7回

GPT-2の能力

  • 先述のように、「◯◯:」とタスクの指示を入力として受け取って応答
    • ファインチューニングなしでタスクをこなす汎用性を獲得
    • ただし、タスクによっては依然ファインチューニングが必要
  • 架空の記事を書く[Radford2019]のTable 13
  • 論文ではまだ学習の余地があることを示唆
アドバンストビジョン第7回

GPT-3 [Brown 2020]

  • モデルを大きく、学習量をさらに増やす
    • 1750億パラメータ、2048トークンまで予測に利用、3000億トークンを学習に使用
  • 計算量の対策
    • 疎な注意機構[Child2019]
      • 通常の注意機構に挟んで(交互に)使用
      • 計算量を削減
        • 特定の位置関係にあるトークンだけを計算の対象に
          • つまり手動アテンション
    • GPUに合わせた構造に
アドバンストビジョン第7回

質問の方法の考案

  • 論文ではGPT-3へ質問を次のように分けて入力
    • タスク説明: (例)「Translate English to French」
    • 例示: (例)「sea otter => loutre de mer」
      • 例示がひとつ: ワンショット
      • 例示が数個: 少数(few)ショット
    • プロンプト:(例)「答えて =>」(論文だと「cheese =>」)
  • 文脈内学習
    • 上記のような例示で出力を調整
    • ファインチューニングの代わり
    • 重みの更新はしない(問題を解き終わったら忘れる)
アドバンストビジョン第7回

GPT-3の成果

  • 少数ショットで4則演算ができるように
  • 出力した架空の記事が、人間の書いたものと区別がつかない
  • ChatGPT
    • GPTを使ってプロンプト(人のテキスト入力)に答えるサービス
      • 「プロンプト」:タスク説明、例示、プロンプトをまとめた呼称
      • ファインチューニングが不要になって
        様々な質問に答えるサービスが可能に
  • 学習量をさらに増やしても性能が上がりそうという見通し
アドバンストビジョン第7回

GPT-4 [OpenAI]

  • 社会的な影響から構造が非公開に
    • パラメータ: GPT-3の数倍〜数十倍?(単位が兆の可能性)
  • 画像も入力可能に
    • 画像+テキストについては次回
アドバンストビジョン第7回

Reinforcement Learning from Human Feedback (RLHF) [Christiano 2017]

  • GPT-4で導入された([Ouyang 2022]?)仕組み
    • 人間からのフィードバックで強化学習
  • RLHF: ロボットの複雑な動き(料理や片付け)を生成するときに報酬関数が分からないので、人に様々な動きを提示して比較してもらい、人に状態遷移の点数をつけてもらうことで報酬を設計
    • 絶対評価でなく比較だと人は点数がつけやすいらしい
  • LLMへの応用
    • 目的: 人間からのフィードバックで嘘や偏見、有害な文章の出力を防止
      • 方法は次のページ
アドバンストビジョン第7回

GPTへのRLHFの適用

論文にあるものはGPT-3で実験

  • 3ステップ(1と2で報酬関数を作成)
    • ステップ1: プロンプトを選んで、人(精鋭部隊)が回答を作成して入出力の例を作り、事前学習で作ったモデルが入出力を再現するようにファインチューニング
    • ステップ2: ステップ1のモデルがひとつのプロンプトに対して出力する数種類の文を人間が点数づけ。さらにステップ1のモデルのヘッドをかえて報酬値を出力するようにして、文に対する好ましさを報酬として出力するモデルを作成。人間の点数付けを教師にして学習
    • ステップ3: ステップ2で作った報酬モデル(報酬関数として機能)を使い、報酬が高い出力ができるようにモデルを強化学習
アドバンストビジョン第7回

「ハルシネーション(幻覚)」

  • 突然変なことを言い始める
  • 1つずつ単語を出力しているわけなので、
    直前の単語の並びによっては話が逸れていく
    • みなさんも面接とかでテンパって変なことを口走ったことはありませんか?
  • 単なる確率モデルを擬人化する表現で、誤解を生むので論文でも注意喚起
アドバンストビジョン第7回

まとめ

  • Transformerの応用をみてきた
    • 社会に大きな影響(混乱?)を与えている
    • データとパラメータが増えるほど賢く
      • 地球上で生み出された文章を全部読み込むと一段落???
  • 言語以外の応用はさらにある
アドバンストビジョン第7回
  • 参考文献
    • 山田他: 大規模言語モデル入門, 技術評論社, 2023.
    • 菊田 遥平: 原論文から解き明かす生成AI, 技術評論社, 2025.
アドバンストビジョン第7回