Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPT( 生成 AI) の関連知識について

shingo morita
July 09, 2023
8.8k

ChatGPT( 生成 AI) の関連知識について

会社向け/勉強会用に作成した資料を折角なので公開

■概要
・自然言語処理の進化について (RNN~LSTM~GPT)
・ ChatGPT や Codex とは何か?
■詳細(要素技術について)
・ Transformer について
・ GPT モデルとその他モデルについて
・ GPT のバージョンアップとスケーリング則について
・ RLHF について 強化学習
■その他
・自然言語処理と画像処理の融合 (マルチモーダル ) CLIP モデルなど
・ Azure における OpenAI サービスについて

shingo morita

July 09, 2023
Tweet

Transcript

  1. 自然言語処理の進化 3 ▼Transformer@Google 2018 2019 2020 2021 2022 2017 2023

    2010 1990 SLM(統計的言語モデル) NLM(ニューラル言語モデル) PLM(事前学習済みモデル) LLM(大規模言語モデル) 孫悟空少年編 ~ピッコロ大魔王編 ドラゴンボールで例えてみると… A Survey of Large Language Models [Xin Zhao et al., arXiv:2303.18223] サイヤ人編~フリーザ編 Transformer=スーパーサイヤ人 重要な変革ポイント 人造人間・セル編 GLUEなどの自然言語ベンチマークで 人間のスコアを超え始める 魔人ブウ編 悪い回答/良い回答の分離が必要と なってくる(強化学習) スーパーサイヤ人 単語の発生頻度による 統計的なモデル ◆ベース 確率統計 ◆モデル N-Gram言語モデル 単語分散表現の導入 ◆ベース LSTM(RNN) ◆モデル Word2vec(2013) Context2vec ELMo 事前学習とファイン チューニングの流れへ ◆ベース Transformer ◆モデル GPT1,2@OpenAI BERT@Google ERNIE1,2@Baidu BigBird@Google Grover@UW PLMには無い創発的能力(Emergent)を獲得 ◆ベース Transformer + RLHF ◆モデル GPT3(175B)@OpenAI(Microsoft) PaLM(540B)@Google LLaMA(65B)@meta(Facebook) Megatron(540B)@Nvidia ChatGPT 11/30~ Bing AI 2/8~ Google Bard 5/11~ モデル名にセサミストリートの キャラ名を付けるのが流行 破壊神ビルス編 現在進行中
  2. 4 自然言語処理の進化 A Survey of Large Language Models [Xin Zhao

    et al., arXiv:2303.18223] 直近数年のモデル一覧 (パラメータ数が10億以上) ▪国内勢 23年5月17日に2社が同時リリース/公開 rinna(3.8B) サイバーエージェント:(6.8B) ▪海外勢(GAFA) Google Apple Facebook(meta) Amazon AppleのみLLM競争に不参加 ⇒プライバシー重視やfast followerの姿勢 やため静観している可能性* *アップルが「生成AI」に沈黙を続ける理由 どうする?Siri【日経トレンド】 https://xtrend.nikkei.com/atcl/contents/18/00079/00199/
  3. 5 ChatGPTやCodexとは何か? ▼ChatGPTとCodexとは? ChatGPT:OpenAI社がリリースしたLLMのサービス名 Codex:OpneAI社がリリースしたプログラムに特化したモデル/サービス名 とは? 2015年:AIの開発/研究を行う非営利法人として設立される* 2018年:ChatGPTの基本モデルであるGPT-1を開発* 2019年:Microsoft(MS)から10億ドル投資を受ける* “capped-profit”(利益上限付き)企業を設立*

    2020年:→MicrosoftがGPT3モデルの独占的なライセンスを取得* 2022年:11月30日にChatGPTをリリース* →2か月で月間ユーザ1億人到達*(instagram:2年半,TikTok:9か月) 2023年:再度MS社から100億ドルの出資を受ける* Azure OpenAI Service の提供開始* GPT(Generative Pre-trained Transformer)
  4. 6 ChatGPTやCodexとは何か? ▼生成AIの提供元/サービス/モデル GPT-3.5(無料) GPT-4(有料) GPT-4 ※ChatGPT版とは結構異なる 提供元 サービス名 モデル

    Codex PaLM 2 自然言語 特徴 非公開 プログラム言語に特化したGAI Python,Javascriptなどに対応 検索エンジンBingのチャット機能 Edgeで開かないと使えない APIを提供しており、 様々なサービスから利用可能 OpenAIの目下最大のライバル 最大10万トークンのモデルが存在 Google検索のチャット機能(β版) Edgeでも利用可能 出資 出資
  5. 7 ChatGPTやCodexとは何か? ▼生成AIの提供元/サービス/モデル 提供元 サービス名 モデル 自然言語以外 CLIP diffusion テキストから画像を生成

    領域 言語 +画像 Transformer 言語 +音声 音声からテキストを生成/翻訳 wav2vec2.0 言語 +音声 音声からテキストを生成 テキストから音声を生成 1000以上の言語で相互変換可能 Massively Multilingual Speech project テキストから画像を生成 画像生成AIの火付け役 CLIP diffusion 言語 +画像 テキストから画像を生成 言語 +画像 特徴 CLIP? diffusion? VAE?
  6. 9 ▼DALL-Eとは? 画像生成 ChatGPTやCodexとは何か? CLIPとdiffusion modelを用いた 文書から画像を生成するOpenAI社のサービス Bing Chat同様、Bing Image

    Creatorで無料で利用可能 (サイズは1024×1024 。なぜ1024なのかはマルチモーダル部分で後述) ピカソ風 ▪例:オフィスで請求書を食べるヤギ ゴッホ風 浮世絵風
  7. 10 画像生成 ChatGPTやCodexとは何か? ◆各社のブランドスローガンクイズ クイズ:何の商品/会社のキャッチフレーズで作った画像でしょうか? 答えは次のスライドに Q3:会社 Q1:商品 ファイト一発 パワーが必要そうですね…

    Q4:会社 毎年フレーズが変わる この雪には熱がある。 2018-2019 水と生きる社会を 作る飲料会社 コカ・コーラではないです ヒント 超難問 Q2:会社 ハート(ココロ)に関係があ ります
  8. 12 ChatGPTやCodexとは何か? 実際にChatGPTを触ってみる https://openai.com/blog/chatgpt 5/12 ChatGPT Plusでプラグインがリリース インターネットに接続可能になる 使えそうなプラグイン チャットの内容から勝手にweb検索を行い、

    その内容を踏まえて回答する フローチャートなどを文書から作成してくれる ③食べログ チャットの内容からお店を検索 条件設定済みの予約リンクを生成 ①webPilot ②Show Me
  9. ◆Transformer以前のモデルと課題 Transformer Attention Is All You Need [Vaswani@Google Brain et

    al., arxiv:1706.03762] ◆Transformerとは? 2017年にGoogleから発表されたモデル。 論文名も面白く、〇〇 is All You Needは今でもよく使われている Attention機構を最大限活用したモデル(詳しくは後述) LSTM (Long Short Term Memory) 入力/忘却/出力の3ゲートを活用し 長期依存性の問題を解決したモデル RNN (Recurrent Neural Network) 単語の処理結果えを次々と後続に回し ていく。長文になると前半の情報が失 われていく(長期依存性課題) LSTM+Attention Attention機構を組み入れさらに モデルを改善⇒並列計算が課題 Effective Approaches to Attention-based Neural Machine Translation [Minh-ThangLuong@Stanford et al., arXiv:1508.04025] 引用:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  10. Transformer ◆Attention(注意)とは? LSTM+Attention Attention機構を組み入れさらに モデルを改善 Effective Approaches to Attention-based Neural

    Machine Translation [Minh-ThangLuong@Stanford et al., arXiv:1508.04025] 認知機能として脳内では自然と行われていること ⇒代表例:カクテルパーティー効果 最近、何か新しい趣味 を始めましたか? 最近料理にハマっていま す。特にイタリアンが得 意で、週末はよく自宅で パスタを作っています。 国際的なNGOで働きたいと 思っています。社会問題に直 接関わり、解決に貢献できる 仕事がしたいんです 最近のバイトは結構忙しいで すね。新人のトレーニングを 担当しているので、その準備 やフォローアップに時間を取 られます 最近のバイトは どうですか? 駅には 何時に? 9時 集合ね 色々な雑音(情報)の中からどの音(情報)に“注意”すべきかを 判断している 自然言語のモデルに組み入れれば、 動詞や形容詞がどの単語を修飾するのか理解しやすくなる Attentionを最大限に利用したのがTransformer (並列計算も可能) どこに注意すれば よいのかを学習する
  11. Transformer ◆現代モデルにおけるTransformerの貢献度 GPTやBERTといった多くの自然言語モデルに転用される 自然言語処理だけでなく画像/音声など幅広く応用されている Transformer ◆画像 ViT@Google ◆音声 Wav2Vec2@Facebook ◆自然言語

    GPT@OpenAI ◆時系列 ETSformer@Salesforce https://ai.googleblog.com/2023/05/sparse-video-tubes-for-joint-video-and.html 2023/5/18 Google AI Blogより →最新モデルでも普通に使われます。 (効率的なビデオ分類モデルについて) ◆マルチモーダル CLIP@OpenAI
  12. Transformer(概要) ▼Encoder 入力データの特徴量(エッセンス)を凝縮させる Encoder Decoder ▼Decoder 凝縮された特徴量を復号する(元に戻す) ⇒出力結果を順次DeocderのInputに入れる ① トークン化(Input

    Embedding) ② 文字の場所情報を付与(Positional Encoding) ③ Attention機構(Multi Head Self Attention) ④ 多層パーセプトロン(MLP) 出 力 結 果 を 入 れ 直 す 17 エンコーダー/デコーダー型のモデル まずは具体的な翻訳データの流れを可視化した後で、 何を行っているのか詳細を説明していきます。 ◆Transformerモデルの詳細説明
  13. Transformer(概要) Encoder Decoder 18 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換
  14. Transformer(概要) Encoder Decoder 19 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 1 7 6 8 8 2 1 4 4 0 3 1 3 4 5 2 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3…
  15. Transformer(概要) Encoder Decoder 20 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. 2 8 4 1 7 4 0 2 6 3 3 4 9 4 1 2 2 8 4 1 7 4 0 2 2 8 4 1 7 4 0 2 6 3 3 4 9 4 1 2 6 3 3 4 9 4 1 2 ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3… ③ Attention機構(Multi Head Self Attention) →並列分散処理のためhead分割 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2
  16. Transformer(概要) Encoder Decoder 21 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. 2 8 4 1 7 4 0 2 ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3… ③ Attention機構(Multi Head Self Attention) →並列分散処理のためhead分割 →(Self)Attentionの実行 2 8 4 1 7 4 0 2 2 8 4 1 7 4 0 2 2 8 4 1 7 4 0 2 2 8 4 1 7 4 0 2
  17. Transformer(概要) Encoder Decoder 22 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3… ③ Attention機構(Multi Head Self Attention) →並列分散処理のためhead分割 →(Self)Attentionの実行 6 0 3 3 7 2 1 2 6 3 3 4 9 4 1 2 6 3 3 4 9 4 1 2 6 3 3 4 9 4 1 2 6 3 3 4 9 4 1 2 2 8 5 1 7 6 0 2
  18. Transformer(概要) Encoder Decoder 23 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3… ③ Attention機構(Multi Head Self Attention) →並列分散処理のためhead分割 →(Self)Attentionの実行 6 0 3 3 7 2 1 2 2 8 5 1 7 6 0 2 2 8 5 1 7 6 0 2 6 0 3 3 7 2 1 2 →分割していたheadを統合
  19. Transformer(概要) Encoder Decoder 24 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3… ③ Attention機構(Multi Head Self Attention) →並列分散処理のためhead分割 →(Self)Attentionの実行 2 8 5 1 7 6 0 2 6 0 3 3 7 2 1 2 →分割していたheadを統合 ④ 多層パーセプトロン(MLP) →隠れ層1つで数倍に拡張後、元に戻す 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 2 8 1 5 4 1 5 2 2 8 1 5 4 1 5 2 2 8 1 5 4 1 5 2
  20. Transformer(概要) Encoder Decoder 25 英語→日本語の翻訳を考える 英語 :Rome was not built

    in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 イメージRome=1,was=2,not=3… ③ Attention機構(Multi Head Self Attention) →並列分散処理のためhead分割 →(Self)Attentionの実行 →分割していたheadを統合 ④ 多層パーセプトロン(MLP) →隠れ層1つで数倍に拡張後、元に戻す ③④をN回繰り返す
  21. 0 1 2 8 8 2 1 5 3 0

    4 1 3 4 5 2 ▼Decoder Transformer(概要) Encoder Decoder 開始を意味するBOS(Begin Of Sentence)を投入 →途中まではEncoderと“ほとんど”同じ (学習時に未来の単語が見えないようmask処理) 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 英語→日本語の翻訳を考える 英語 :Rome was not built in a day. 日本語:ローマは一日にして成らず。 BOS 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 Rome was not built in a day. 類似処理の 図示は省略
  22. 0 1 2 8 8 2 1 5 3 0

    4 1 3 4 5 2 ▼Decoder Transformer(概要) Encoder Decoder 開始を意味するBOS(Begin Of Sentence)を投入 →途中まではEncoderと“ほとんど”同じ (学習時に未来の単語が見えないようmask処理) 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 英語→日本語の翻訳を考える 英語 :Rome was not built in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. Encoderと同様にhead分割を実施 (図示上省略) Encoderの特徴量と結合 英語の意味を凝縮した特徴量を用いて 日本語への変換を行う 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2
  23. ▼Decoder Transformer(概要) Encoder Decoder 開始を意味するBOS(Begin Of Sentence)を投入 →途中まではEncoderと“ほとんど”同じ (学習時に未来の単語が見えないようmask処理) 英語→日本語の翻訳を考える

    英語 :Rome was not built in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. Encoderの特徴量と結合 英語の意味を凝縮した特徴量を用いて 日本語への変換を行う 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 次の単語に何が来るかの確率を出力 ⇒確率が一番単語を選ぶ 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 BOS ローマ
  24. ▼Decoder Transformer(概要) Encoder Decoder 開始を意味するBOS(Begin Of Sentence)を投入 →途中まではEncoderと“ほとんど”同じ (学習時に未来の単語が見えないようmask処理) 英語→日本語の翻訳を考える

    英語 :Rome was not built in a day. 日本語:ローマは一日にして成らず。 Rome was not built in a day. Encoderの特徴量と結合 英語の意味を凝縮した特徴量を用いて 日本語への変換を行う 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 次の単語に何が来るかの確率を出力 ⇒確率が一番単語を選ぶ 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 0 1 2 8 8 2 1 5 3 0 4 1 3 4 5 2 8 5 1 2 BOS ローマ BOS ローマ 改めてDecoderに入力し、 更なる次単語を繰り返していく
  25. ・・・ Transformer(概要) 30 Attention機構で何をやっているのかのイメージ Rome was not built in a

    day . 私がnotと関係が強いで す。天下のローマぞ このwasが関係が強 いんです。場所的に も隣ですよ ここは一先ず Inの言う事を聞いてみて はいかがでしょうか? Notとaは関係な い気がしますな dayはnotと一番遠いし 関係ないような.. 各単語の声から傾聴すべき声を判断し、その単語の情報を重要視する →単語の関係性から言語を理解していく 自分の考えを 信じるべきか… Bulitの意見を尊重し 傾聴しよう いやいや。このbuilt こそが関係が強いん です。動詞ですよ! 英語→日本語の翻訳を考える 英語 :Rome was not built in a day. 日本語:ローマは一日にして成らず。
  26. Transformer(詳細) ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 “文章”をそのままプログラムに流すことはできない。 ⇒細かい単位に分割し一意の番号に変換する(トークン) 文字⇔追番の辞書が活用される ◆代表的な3つのEmbedding方法

    'R','o','m','e','w','a','s','n','o','t','b',… ①Character Embedding 文字(Character)単位で分割 1 2 3 4 'Rome','was','not','built','in','a','day','.' ②Word Embedding 単語単位で分割 'R’, 'ome','was','not','built','in','a','day','.' ③Sub-Word Embedding ①②の中間 ①を行いつつ高頻度単語を個別化 辞書サイズは減るが 言語構造の理解が難しくなる (常用なら3000文字ぐらい) 表現力は上がるが、 辞書サイズが膨大になる (広辞苑の単語数は24万) トークン数を制御可能 Rome was not built in a day. [4928,373,407,3170,287,257,1110,13] 厳密にはByte単位で出現頻度の評価を 行うため、漢字などは1文字で3トークンに なる場合もある。日本語はトークン数増加 GPT⇒
  27. Transformer(詳細) ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 32 Rome was not

    built in a day. [4928,373,407,3170,287,257,1110,13] ◆分散表現に変換するとは? 色々な観点で表現し直す事。表現力が上がりベクトルのサイズも縮小できる Rome:4928 トークン番号のみ [ 0, 0,…, 0, 1, 0, 0,… ,… ,… ,… 0] 4928番目のみ1 分散表現 (単語埋め込み) [ 2, 4,…, 46, 0, 26, 1,… 7] 46:イタリア 47:フランス 0:首都 1:それ以外 2:名詞 3:動詞 「王様」- 「男性」+ 「女性」= 「女王」 のような計算も可能になる 似たような単語が空間上で近い位置に配置される 猫 Roma Paris 吾輩 埋め込みの長さは モデルのパラメータ
  28. Roma was Not built in a day . 原論文 :512

    GPT1 :512 GPT2 :1024 GPT3 :2048 GPT3.5:4096 GPT4 :8192 Transformer(詳細) ▼Encoder ① トークン化(Input Embedding) →入力文字列をベクトル(分散表現)に変換 33 Encoder Decoder Rome was not built in a day. Rome was not built in a day. 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 [4928,373,407,3170,287,257,1110,13,PAD,PAD] 入力文字列 Embedding 分散表現 (T×H行列) 入力トークン数は一定。足りない分は追加(padding)する 16 17 8 11 19 22 16 5 3 16 10 11 7 18 3 1 5 13 6 12 19 10 10 3 3 6 17 21 0 22 8 1 20 13 23 20 2 12 18 1 22 3 22 0 8 12 14 9 16 20 2 1 20 15 18 2 17 18 2 6 23 14 20 1 0 0 0 0 0 0 0 0 PAD … … T:トークン長 H:分散表現次元
  29. Transformer(詳細) ▼Encoder ②文字の場所情報を付与(Positional Encoding) →入力文字中の位置情報を①のベクトルに加算 34 Encoder Decoder Rome was

    not built in a day. 2 7 6 9 8 4 3 4 4 0 3 1 1 2 4 2 1 7 6 8 8 2 1 4 4 0 3 1 3 4 5 2 1 1 6 8 8 2 1 2 4 0 3 1 4 4 5 2 Roma was Not built in a day . 16 17 8 11 19 22 16 5 3 16 10 11 7 18 3 1 5 13 6 12 19 10 10 3 3 6 17 21 0 22 8 1 20 13 23 20 2 12 18 1 22 3 22 0 8 12 14 9 16 20 2 1 20 15 18 2 17 18 2 6 23 14 20 1 0 0 0 0 0 0 0 0 PAD 文章方向/埋め込み方向で それぞれの位置情報を付与 分散表現(T×H) 17.001 18.002 9.003 12.004 20.005 … 17.511 6.512 5.001 18.002 12.003 13.004 9.005 … 5.111 3.512 8.001 16.002 9.003 15.004 22.005 … 13.511 6.512 7.001 10.002 21.003 25.004 4.005 … 12.511 5.512 25.001 18.002 28.003 25.004 7.005 … 23.511 6.512 28.001 9.002 28.003 6.004 14.005 … 20.511 15.512 23.001 27.002 9.003 8.004 27.005 … 25.511 9.512 25.001 26.002 10.003 14.004 31.005 … 28.511 9.512 1.001 1.002 1.003 1.004 1.005 … 1.511 1.512 2.001 2.002 2.003 2.004 2.005 … 2.111 2.512 3.001 3.002 3.003 3.004 3.005 … 3.511 3.512 4.001 4.002 4.003 4.004 4.005 … 4.511 4.512 5.001 5.002 5.003 5.004 5.005 … 5.511 5.512 6.001 6.002 6.003 6.004 6.005 … 6.511 6.512 7.001 7.002 7.003 7.004 7.005 … 7.511 7.512 8.001 8.002 8.003 8.004 8.005 … 8.511 8.512 512.001 512.002 512.003 512.004 512.005 … 512.511 512.512 位置情報(T×H) Roma was Not built in a day . PAD 512.001 512.002 512.003 512.004 512.005 … 512.511 512.512
  30. Transformer(詳細) ▼Encoder 35 ③ Attention機構(Multi Head Self Attention) Query ,Key

    , Valueの3つを用いる ⇒すべて同じ値を使うのでSelf Attentionとなる ※Decoderと合流する部分は3つ同じではないのでselfではない(後述) Attentionとは何だったか? →どこに注意を払えばよいのかを認識するもの →入力単語のそれぞれがどの単語に注意するのかを計算する Encoder 18 19 10 13 21 6 19 13 14 10 9 17 10 16 23 8 11 22 26 5 26 19 29 26 8 29 10 29 7 15 24 28 10 9 28 26 27 11 15 32 ▼インプット(T×H行列) 18 19 10 13 21 6 19 13 14 10 9 17 10 16 23 8 11 22 26 5 26 19 29 26 8 29 10 29 7 15 24 28 10 9 28 26 27 11 15 32 18 19 10 13 21 6 19 13 14 10 9 17 10 16 23 8 11 22 26 5 26 19 29 26 8 29 10 29 7 15 24 28 10 9 28 26 27 11 15 32 18 19 10 13 21 6 19 13 14 10 9 17 10 16 23 8 11 22 26 5 26 19 29 26 8 29 10 29 7 15 24 28 10 9 28 26 27 11 15 32 Query Key Value Roma was not built in a day . 転置 掛算 数Ⅲ(行列掛算)のおさらい (2行5列)×(5行4列) =(2行4列) 18 6 9 8 26 29 24 26 19 19 17 11 19 10 28 27 10 13 10 22 29 29 10 11 13 14 16 26 26 7 9 15 21 10 23 5 8 15 28 32 Roma was not built in a day . 0.8 0 0 0.1 0.1 0 0 0 0 0.7 0 0.3 0 0 0 0 0 0 0.7 0.3 0 0 0 0 0 0.3 0.2 0.5 0 0 0 0 0 0 0 0.2 0.6 0.1 0.1 0 0 0 0 0 0 0.9 0.1 0 0.1 0 0 0 0 0.1 0.8 0 0 0 0 0 0 0 0 1 (H×T行列) (T×H行列) (Token長×Token長の行列) 各単語がどこに注目すべきかの 度合を計算 掛算 (T×H行列) 18 19 10 13 21 6 19 13 14 10 9 17 10 16 23 8 11 22 26 5 26 19 29 26 8 29 10 29 7 15 24 28 10 9 28 26 27 11 15 32 度合に応じて Valueの値を出力 18 19 10 13 21 6 19 13 14 10 9 17 10 16 23 8 11 22 26 5 26 19 29 26 8 29 10 29 7 15 24 28 10 9 28 26 27 11 15 32 InputにAttention(注意)の 情報を加算する
  31. Transformer(詳細) ▼Encoder 36 ③ Attention機構(Multi Head Self Attention) 実際にはインプットを複数のheadに分割し並列計算を行う Encoder

    18 19 10 21 13 21 6 19 13 10 14 10 9 17 10 23 16 23 8 11 22 5 26 5 26 19 29 8 26 8 29 10 29 15 7 15 24 28 10 28 9 28 26 27 11 32 15 32 ▼インプット (T×H行列) Attention (T×H/head行列) 例:GPT3 2048×12288 head数:96 並列処理数 (2048×128)×96 並列計算後に合体させる 18 19 10 13 21 21 6 19 13 14 10 10 9 17 10 16 23 23 8 11 22 26 5 5 26 19 29 26 8 8 29 10 29 7 15 15 24 28 10 9 28 28 26 27 11 15 32 32 18 19 21 6 19 10 9 17 23 8 11 5 26 19 8 29 10 15 24 28 28 26 27 32 18 19 21 6 19 10 9 17 23 8 11 5 26 19 8 29 10 15 24 28 28 26 27 32 18 19 21 6 19 10 9 17 23 8 11 5 26 19 8 29 10 15 24 28 28 26 27 32 18 19 21 6 19 10 9 17 23 8 11 5 26 19 8 29 10 15 24 28 28 26 27 32 18 19 10 21 13 21 6 19 13 10 14 10 9 17 10 23 16 23 8 11 22 5 26 5 26 19 29 8 26 8 29 10 29 15 7 15 24 28 10 28 9 28 26 27 11 32 15 32 18 19 10 13 21 21 6 19 13 14 10 10 9 17 10 16 23 23 8 11 22 26 5 5 26 19 29 26 8 8 29 10 29 7 15 15 24 28 10 9 28 28 26 27 11 15 32 32 … … head:1 head:2 head:96
  32. Transformer(詳細) ▼Encoder 37 Encoder Decoder Rome was not built in

    a day. ④ 多層パーセプトロン(MLP) →隠れ層が1つあり、数倍に拡張後、元に戻す (GPTシリーズは基本4倍に拡張) 2048×12288 2048×49152 ③④をN回繰り返す 例:GPT3のMaxトークン長 が流れた際の内部行列の サイズ モデル ループ数 GPT1 12 GPT2 48 GPT3 96
  33. Transformer(詳細) 38 Encoder Decoder Rome was not built in a

    day. ▼Decoder(GPT) 最終層まではほとんどEncoderと同じ ローマ は 一日 に して なら ず 。 ローマ は 一日 に して なら ず 。 0.8 0 0 0.1 0.1 0 0 0 0 0.7 0 0.3 0 0 0 0 0 0 0.7 0.3 0 0 0 0 0 0.3 0.2 0.5 0 0 0 0 0 0 0 0.2 0.6 0.1 0.1 0 0 0 0 0 0 0.9 0.1 0 0.1 0 0 0 0 0.1 0.8 0 0 0 0 0 0 0 0 1 訓練時、次単語の情報を使えない ⇒右上の行列成分を使わせない ◆主な違い Masked Multi Attention Source Target Attention EncoderとDecoderの類似度を測り、その度合に応じて Encoderの値を取得し、Decoderの値に加算する Source Target Attention
  34. Transformer(詳細) Encoder Decoder Rome was not built in a day.

    ▼Decoder(GPT) 次の単語に何が来るかの確率を出力 ⇒確率が一番単語を選び、それを入力に入れるを繰り返す 分散表現からトークンに戻し、次単語の確率を出力 Rome was not built in a day. ローマ ローマ あ い に が は を だ へ で 行 出 完 日 一 0 0 5 10 70 10 0 0 5 0 0 0 0 0 文字 トークン番号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Encoder Decoder 確率(%) 一番確率の高い トークンを入力に投入
  35. Transformer(詳細) Encoder Decoder Rome was not built in a day.

    ▼Decoder(GPT) 次の単語に何が来るかの確率を出力 ⇒確率が一番単語を選び、それを入力に入れるを繰り返す Rome was not built in a day. ローマ は 一 日 してならず ローマ は あ い に が は を だ へ で 行 出 完 日 一 0 0 0 0 0 0 0 0 5 0 10 0 50 文字 トークン番号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Encoder Decoder 確率(%) 35 分散表現からトークンに戻し、次単語の確率を出力 一番確率の高いトークンを入力に投入 EoS(End Of Sentence)のトークンが 出力されるまで繰り返す
  36. Transformer(詳細) Encoder Decoder Rome was not built in a day.

    ▼Decoder(GPT) 次の単語に何が来るかの確率を出力 ⇒確率が一番単語を選び、それを入力に入れるを繰り返す Rome was not built in a day. ローマは一日にして成らず。 ローマ は一日して成らず。 あ い に が は を だ へ で 行 出 … EoS 0 0 0 0 0 0 0 0 0 0 0 90 文字 トークン番号 0 1 2 3 4 5 6 7 8 9 10 50000 Encoder Decoder 確率(%) EoS(End Of Sentence)のトークンが出力されるまで繰り返す …
  37. GPTのバージョンアップとスケーリング則について GPT(Generative Pre-trained Transformer) ⇒TransformerのDecoder部分のみを利用した次単語予測モデル ◆GPT-1 TransformerのDecoderモデルと同じ Position情報の付与も学習対象に追加 2段階の学習を行う ①pre-training:言語をまず理解させる

    ②fine-tuning :タスク毎に再学習 Improving Language Understanding by Generative Pre-Training [Radford et al., language_understanding_paper.pdf]@2018 学習用データ モデル 既存データセットを利用 ・BookCorpus ・1B(10億) Word Benchmark タスク Natural language inference Question Answering Senetence Similarity Classfication ①学習用データを 全部で100周する ②タスク毎のデータの 追加学習は約3周程度で十分 全4タスク/12データセットの内9タスクで最高記録を更新 12 周
  38. GPTのバージョンアップとスケーリング則について ◆GPT-1 <タスク> ・Natural language inference(6個中5個でSoTA) 2つの文書を入力し、(含意、矛盾、中立)かを判断するタスク ・Question Answering (4個中4個でSoTA)

    中学生および高校生向けに設計された中国の英語試験(RACE) 4文書1セットの話を与え、正しい結末を2つから選択(Story Cloze) Story Cloze (Hugging Faceより引用) SNLI (Hugging Faceより引用) 46
  39. GPT-1 GPT-2 GPTのバージョンアップとスケーリング則について ◆GPT-2 Language Models are Unsupervised Multitask Learners

    [Radford et al., language-models.pdf]@2019 学習用データ モデル ・GPT-1のモデルとほとんど同じ(Normalizationを移動) Transformerレイヤーのループを12回→48回に増加 入力トークン長を512→1024に拡張 ・入力を工夫しファインチューニングでのモデル変更無し 翻訳 :translate to french, english text, french text Q&A:answer the question, document,question, answer 独自データセットを作成 CommonCrawl:webスクレイピングのデータセット。 →データの品質に問題有り Reddit掲示板で3いいねを貰っている投稿の リンク先をスクレイピング(40GB) ※wikipediaは除外。他言語は除外 Layer Norm Layer Norm Masked Multi Self Attention Feed Forward Layer Norm Layer Norm Masked Multi Self Attention Feed Forward 12 周 48 周 Layer Norm サイズ別の4モデル
  40. GPTのバージョンアップとスケーリング則について ◆GPT-2 <タスク> ・Children’s Book Test (CBT) 単語の穴埋め問題(候補10個の中から選択)SoTA ・Winograd Schema

    Challenge 「They」や「IT」の代名詞が何を指しているのか選択。SoTAのAccuracyを7%改善(70.7) ・Reading Comprehension WikipediaやCNNニュースなどの文章に対して連続した質問に回答する。SoTA未達 ・Summarization CNNニュースなどを100トークンで要約。定量評価ではそこまでよくない。 SoTA未達 ・Translation 仏→英の翻訳テスト(11.5BLEU) 【SoTA:33.5】 40GB中に10MBのフランス語がわずかに混在SoTA未達 ・Q&A 純粋に知識を問うQAテスト 正答率は最大サイズで4%、最小サイズで1%弱。 SoTA未達
  41. GPTのバージョンアップとスケーリング則について 53 ◆Scaling law Scaling Laws for Neural Language Models

    [Kaplan et al., arXiv:2001.08361]@2020 計算時間/データセット/モデルを大きくしたらどうなるのかを検証 性能向上に頭打ちは見られず、べき乗則で推移 学習の計算量:C (コスト) 学習データ量:D モデルの大きさ:N (パラメータ数)
  42. GPTのバージョンアップとスケーリング則について 56 ◆GPT-3 Language Models are Few-Shot Learners [Brown et

    al., arXiv:2005.14165 ]@2020 巨大なモデルで大量のデータで学習を実施(モデルはGPT-2とほぼ同じ。後述) GPT-1 GPT-2 GPT-3 GPT-3.5 GPT-4 発表時期 2018年 2019年 2020年 2022年 2023年 パラメータ数 1.2億 15億 1750億 非公開 非公開 入力トークン長 512 1024 2048 4096 ~16384 8192 ~32768 Transformer Layer 12周 48周 96周 非公開 非公開 モデル次元 (分散表現の次元) 768 1600 12288 非公開 非公開 辞書サイズ 40000 50257 非公開 非公開 非公開 バッチサイズ 64(32*) 512 320万 非公開 非公開 Attentionヘッド 12 48 96 非公開 非公開 学習データ量 4.5GB 40GB 570GB 非公開 非公開 1個、数個の例を提 示した上で次単語を 予測させれば十分 Fine-Tuneは不要
  43. GPTのバージョンアップとスケーリング則について 57 ◆GPT-3 A Surveyof Transformers [Lin et al., arXiv:2106.04554

    ]@2021 GPT-2とは異なりSparse Transformerを利用 Generating LongSequenceswithSparseTransformers [Child et al., arXiv:1904.10509 ]@2019 Transformerの課題は計算量の多さ ⇒Attentionを間引くことで効率化 GPT-3では下記の(b)と通常が交互に組まれていると思われる we use alternating dense and locally banded sparse attention patterns in the layers of the transformer
  44. GPTのバージョンアップとスケーリング則について ◆GPT-3 <タスク> 1.Language Modeling, Cloze, and Completion Tasks ⇒LAMBADAでSoTA更新

    2.Closed Book Question Answering ⇒トリビアQA問題。記憶問題なのでモデルを大きくすれば上がるSoTA更新 3.Translation ⇒93%が英語。英語への翻訳はSoTA達成。英語からは未達(英⇔仏,英⇔独,英⇔ルーマニア) 4.Winograd-Style Tasks ⇒代名詞を問う問題。一部のデータセットでSoTA達成 5.Common Sense Reasoning ⇒(PIQA) 例:足の筋肉を付けるには? (a)上半身を鍛える (b)足を鍛える SoTA達成 ⇒(ARC) 例:14族元素(炭素)の共通点は?(a)原子番号 (b)原子量(c)価電子数 SoTA未達 6.Reading Comprehension ⇒5つのデータセットですべてSoTA未達 7.SuperGLUE ⇒SoTA:89.0 、GPT-3:71.8 SoTA未達 8. Natural Language Inference ⇒2つの文書を入力し、(含意、矛盾、中立)かを判断するタスク SoTA未達(ほぼランダム選択と同じ精度) 9.Synthetic and Qualitative Tasks ⇒2桁加算:100%、減算:98.9%。ニュース作成がAIか判定:最小モデル(76%) 最大モデル(52%)
  45. は回答として 不適なんだな RLHFについて(強化学習) 59 ◆Instruct-GPT Training language models to follow

    instructions with human feedback [Ouyang et al., arXiv:2203.02155 ]@2022 人間にとって好ましい回答をしない事への解決策 →人間の評価をまねるモデルを作成し、そのモデルがGPTモデルの出力を修正する GPT-3 ①人間が作成したデータでFine-Tuning GPT-3” ②学習モデルが出力結果をいくつか作成 その回答を人間がランク付け ③人間が付けたランキングの振分け型を学ぶ モデルをGPTとは別に作成 GPT-3” ④③で訓練したモデルがGPTを強化する その回答 はBad! その回答 はGood →会話に特化させたのがChatGPT 爆弾の作り方などの有害アドバイスを除去
  46. GPTのバージョンアップとスケーリング則について ◆Advanced Placement Physics2 College Boardが提供する高校生向けの大学レベルカリキュラムとその試験 ⇒試験で高得点を獲得した学生には単位を与える場合がある 試験範囲 範囲 試験比率

    熱力学 10%~12% 流体力学 12%~18% 静電気学 18%~22% 電気回路 10%~14% 磁場、電磁誘導 10%~12% 光学 12%~14% 量子物理 10%~12% 試験形式 多肢選択:50問(90分)配点50% 自由回答: 4問(90分)配点50% サンプル スコア比率 https://en.wikipedia.org/wiki/AP_Physics_2 GPT4=4 GPT3.5=3
  47. GPTのバージョンアップとスケーリング則について ◆GPT-4 GPT-4 Technical Report [OpenAI arXiv:2303.08774 ]@2023 英語以外の言語に関しても GPT-3.5のパフォーマンスを超える

    GoogleのPaLM2の方が後発だったがGPT-4を超えられず https://paperswithcode.com/sota/multi-task-language-understanding-on-mmlu
  48. 64 自然言語処理と画像処理の融合(マルチモーダル) An Image is Worth 16x16 Words: Transformers for

    Image Recognition at Scale [Dosovitskiy et al., arXiv:2010.11929 ] 画像をパッチに分割 →パッチ画像を自然言語でいう 単語に該当させEncoderに投入 Rome was not built in a day. 画像処理の代表例 ViT (Vision Transformer) →TransformerのEncoderを画像に応用したモデル ◆画像処理領域の取扱いについて 出力として、 画像のクラス分類などを行う
  49. 65 65 自然言語処理と画像処理の融合(マルチモーダル) ◆CLIPについて Learning Transferable Visual Models From Natural

    Language Supervision [Radford et al., arXiv:2103.00020] 画像とテキストを同じ特徴空間に変換することで、 画像⇔テキストを直接比較できるようになる 特徴量 (1枚目) 特徴量 (N枚目) 特徴量 (1文目) 特徴量 (N文目) 猫 犬 画像をCLIP変換し、 その特徴量を用いて 近しいクラス分類を実施 N個の説明 N枚の画像 画像⇔文書を逆にし、 テキスト→画像を生成させたのが DALL E2
  50. 66 自然言語処理と画像処理の融合(マルチモーダル) ◆Diffusionモデルについて Diffusion Models Beat GANs on Image Synthesis

    [Dhariwal et al., arXiv:2105.05233] 元画像にノイズを載せていき、その逆過程を学習 推論時はノイズを除去していき画像を生成させていく 入力: 人の画像 人の画像を 作っているだよ ノイズ除去時に、指定したテキスト になるようガイドしてあげる (classifier-free guidance) 学習時には元画像にノイズを載せていく CLIP特徴量から 画像を生成 64→256→1024 と3回繰り返し 高解像度画像を生成 GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models [Nichol et al., arXiv:2112.10741 ]
  51. 72 72 AzureにおけるOpenAIサービスについて Azure OpenAI Developers セミナー@youtube 投影資料 ◆ユースケース →社内チャットボット

    LangChainの技術を使うとGPTが事前に定義 して置いたツールを利用できるようになる 内容に応じて GPTがツールを選択 取得した内容を元に 回答を生成
  52. SQuAD 1.1*1 / 2.0*2 Stanford Question Answering Dataset Wikipediaの記事から下記3つを用意したデータセット テキスト

    / 質問 /正解 Wikipediaの記事 *1:https://arxiv.org/abs/1606.05250 *2:https://arxiv.org/abs/1806.03822 75 https://paperswithcode.com/sota/question-answering-on-squad20 SQuAD1.1 答えが記事の中にある SQuAD2.0 答えが記事の中にないものも含む 人のスコア https://rajpurkar.github.io/SQuAD-explorer/