AI完全初心者でも数式を使わずにStableDiffusionやChatGPTのの仕組がわかった気になれるプレゼンです。非専門家が「わかった気になれる」ことがゴールなので、ざっくりとした説明なのはご了承ください!
株式会社Polyscapeの社内勉強会用の資料です。
作成者:https://twitter.com/shimap_sampo
AI完全初⼼者でも最新の⽣成AIの仕組がわかった気になれるプレゼンChatGPT , Stable Diffusion編@shimap_sampo(株式会社Polyscape 代表取締役)
View Slide
最新⽣成AIの仕組を、 AI完全初⼼者に向けて 数式を使わずにざっくり解説する資料です。 株式会社Polyscapeの 社内勉強会向けに作られた資料です。この資料について
なぜやるか
ゲーム制作含め、 ⽣成AIはクリエイティブ⾯に侵⾷。あらゆる職業がAIに置き換わりそうな予感。
残る職業第⼀位は?
残る職業第⼀位は?AIを使える⼈ / 作る⼈(第⼀位かはわからないけど、そこそこ上位にいそう)
残る職業第⼀位は?AIを使える⼈ / 作る⼈(第⼀位かはわからないけど、そこそこ上位にいそう)喰われる側ではなく、喰う側になろう
使いこなすにはPromptをこねくり回すのも⼤事だけど、基礎・原理を知ることが重要
画像⽣成:Stable Diffusionやること(GPT / Transformer)(潜在拡散モデル)テキスト⽣成:CHAT GPT
発表者について⼀応海外院でAI修⼠の 学位があります・・※わかりやすさを重視して、⼀部正確でない表現もあります
CHAT GPT (Transformer)
GPT:Generative Pretrained Transformer TransformerXL + 事前学習 + (ファインチューニング)※GPT 2以降はファインチューニングはしていない
GPT:Generative Pretrained Transformer TransformerXL + 事前学習 + (ファインチューニング)でかいTransformerを⼤量に事前学習させたやつ。※GPT 2以降はファインチューニングはしていない
パラメータ数 前バージョンとの違い 作った⼈ 発表年Transformer - - Google 2017GPT11億1700万(12レイヤー)事前学習, ファインチューニング Open AI 2018GPT215億 (48レイヤー)語彙数増やした正規化レイヤーの位置変えたファンチューニングやめたOpen AI 2019GPT3 1750億特になし (でかくなっただけ)Open AI 2020/5GPT4 未公開画像が読めるようになった 強化学習(RLHF)Open AI 2023/3
パラメータ数 前バージョンとの違い 作った⼈ 発表年Transformer - - Google 2017GPT11億1700万(12レイヤー)事前学習, ファインチューニング Open AI 2018GPT215億 (48レイヤー)語彙数増やした正規化レイヤーの位置変えたファンチューニングやめたOpen AI 2019GPT3 1750億特になし (でかくなっただけ)Open AI 2020/5GPT4 未公開画像が読めるようになった 強化学習(RLHF)Open AI 2023/3基本モデルは、Transformerのまま。ただ(クソ)でかくなっただけ。
Attention のみに基づいたseq2seq伝達モデルTransformerってなに?並列化できて学習早い! 精度⾼い! 汎⽤的!
Attention のみに基づいたseq2seq伝達モデルTransformerってなに?⽂中のどの単語に注⽬すればいいのか を表すスコアを出すモデル。並列化できて学習早い! 精度⾼い! 汎⽤的!
Attention のみに基づいたseq2seq伝達モデルTransformerってなに?⽂中のどの単語に注⽬すればいいのか を表すスコアを出すモデル。並列化できて学習早い! 精度⾼い! 汎⽤的!⼊⼒seqから出⼒seqを予測する モデル。
seq2seqモデルなんか喋って Speak somethingはい、喜んでお話しします!なんか喋って翻訳を学習したモデルChatを学習したモデル
seq2seqモデルなんか喋って Speak somethingはい、喜んでお話しします!なんか喋って翻訳を学習したモデルChatを学習したモデルテキストToテキストならいろんなことに使えて汎⽤的!
Transformerは⾔語モデルになる!ポイントそしてGPTは⼤規模⾔語モデル(LLM)である
⾔語モデルって何?「むかしむかし」ときたら…?
⾔語モデル:単語の出現確率を答えるモデルP(あるところに | むかしむかし) > P(ウェイヨッシャ | むかしむかし)「むかしむかし」のあとに「あるところに」が出現する確率は、「むかしむかし」のあとに「ウェイヨッシャ」が出現する確率より⾼いP(おじいさん, が, いました) > P(が, いました, おじいさん)「おじいさんがいました」という⽂字列の出現確率は、「がいましたおじいさん」という⽂字列の出現確率より⾼い
⼀番単純な⾔語モデル (n-gram)P(あるところに | むかしむかし) =C(むかしむかし, あるところに)C(むかしむかし)は学習データにおける むかしむかし の出現回数C(むかしむかし)
ChatGPTは⾔語モデルで、 ⽣成したsequenceの最後の単語の次に来る確率の最も⾼い単語を次々に⽣成している
Transformerを解説していく論⽂:Attention is All You Need (Google, 2017)
Τϯίʔμ σίʔμʮࢲՈΛݐͯͨʯ)PVTF*CVJMUB࠷ऴembedding ༁લͷจষΛՃຯͨ͠දݱҐஔใΛͬͨදݱจதͰͷॏཁΛՃຯͨ͠දݱҐஔใΛͬͨදݱจதͰͷॏཁΛՃຯͨ͠දݱ༁લͷจষ࣍ʹདྷͦ͏ͳ୯ޠࠓ·Ͱͷग़ྗ1PTJUJPOBM&ODPEJOH.VMUJ)FBE"UUFOUJPO''//1PTJUJPOBM&ODPEJOH.VMUJ)FBE"UUFOUJPO''//.VMUJ)FBE"UUFOUJPO.VMUJ)FBE"UUFOUJPO࠷ऴembeddingº/ º/
Τϯίʔμ σίʔμʮࢲՈΛݐͯͨʯ)PVTF*CVJMUB༁લͷจষ࣍ʹདྷͦ͏ͳ୯ޠࠓ·Ͱͷग़ྗ
Τϯίʔμ σίʔμʮࢲՈΛݐͯͨʯ)PVTF*CVJMUB༁લͷจষ࣍ʹདྷͦ͏ͳ୯ޠࠓ·Ͱͷग़ྗ「いままで⽣成した⽂章を⼊れて次の⼀単語を出す」というデコーダの基本動作に、エンコーダがインプット⽂の情報を⾜すイメージ
Τϯίʔμ σίʔμʮࢲՈΛݐͯͨʯ)PVTF*CVJMUB࠷ऴembedding ༁લͷจষΛՃຯͨ͠දݱҐஔใΛͬͨදݱจதͰͷॏཁΛՃຯͨ͠දݱҐஔใΛͬͨදݱจதͰͷॏཁΛՃຯͨ͠දݱ༁લͷจষ࣍ʹདྷͦ͏ͳ୯ޠࠓ·Ͱͷग़ྗ1PTJUJPOBM&ODPEJOH.VMUJ)FBE"UUFOUJPO''//1PTJUJPOBM&ODPEJOH.VMUJ)FBE"UUFOUJPO''//.VMUJ)FBE"UUFOUJPO.VMUJ)FBE"UUFOUJPO࠷ऴembeddingº/ º/"UUFOUJPOϨΠϠʔΛט·ͤͯɺจதͷॏཁΛՃຯͨ͠දݱʹ͢Δ͜ͱͰਫ਼Λ্͛Δͷ͕ϙΠϯτ
This is a pen.This 0.17 0.2 0.03 0.6is 0.2 0.47 0.15 0.18a 0.03 0.15 0.75 0.07pen. 0.6 0.18 0.07 0.15Self Attention:各単語間での関連性のスコアを出す⽂中でどこが重要かわかる※値は例です
合算8つの異なる Attention Head で別々に計算し合算1個でやるよりも精度が⾼かった!
⽂法は教えてないけど、AttentionによりMaking…more difficult という⽂法構造が浮かび上がるわりと⻑い複雑な⽂章でも意味を汲み取った返事をしてくれるのはAttentionによる特徴抽出のおかげ?Ҿ༻ݩɿIUUQTEFFQMFBSOJOHIBUFOBCMPHDPNFOUSZUSBOTGPSNFS
Positional Encodingやトークナイズ(BPE)の話は⽬的から逸れるので割愛( )
学習データTransformer : English → German の翻訳を例として、450万のEnglish - German のセンテンスペアGPT2 : ⼈間によってフィルタリングされた 良質なWEBクロールデータ800万(40GB)
学習データTransformer : English → German の翻訳を例として、450万のEnglish - German のセンテンスペアGPT2 : ⼈間によってフィルタリングされた 良質なWEBクロールデータ800万(40GB)Reddit のレビュー★3以上の記事に貼られた外部リンク(4500万)のHTMLからTextを抽出
ChatGPTでのUpdate事項⽂脈保持:RLHF:前のプロンプトの内容を保持する仕組み 例)「続けて」で続きを書かせるGPT3が極端に⻑いインプットを受け付けられるので、前のプロンプトを結合したものをインプットとしている模様といったFBで強化学習するいろいろ⼯夫はしてそうだが、詳細は⾮公開。
まとめTransformerはインプットと今まで⽣成した⽂をもとに、次の単語を予測。Attentionの⼒+学習データの量がすさまじいので、 ⼈間みたいに⾒えるが、 知能をもっているわけではなく(今はね)、 あくまで確率的に⾼いものを出しているだけ。「だけ」ということはないけど・・
Stable Diffusion
Ҿ༻ݩɿIUUQTBSYJWPSHBCT
“ Unicorn Cat ”① 適当なノイズ を⽤意します②ノイズを特徴マップに エンコードします③ ⼊⼒テキストも エンコードします④テキストとノイズの 特徴を結合します⑤UNetを使って、 ノイズ除去を1Step⾏います×NImageDecoderUNetImage EncoderText EncoderUNet⑥ ⑤をN回繰り返します⑦ 最終的に得られた 特徴マップを画像にデコードしますUNetには毎回⼊⼒テキストを⼊れる※ 特徴マップを潜在表現ともいうので、Latent Diffusion Modelというconcat
Image DecoderImage Encoderいろいろいわば画像の圧縮表現VAEというやつでつくるVariational Auto Encoderこれは何?特徴マップ(潜在表現)これにより元画像が1/48くらいのサイズになり、計算量が削減
AutoEncoderҾ༻ݩɿIUUQTUJL[OFUBVUPFODPEFS圧縮(潜在)表現⼊⼒ 出⼒正解問⾃分⾃⾝を⼊⼒とし、⾃分⾃⾝を出⼒しようとするニューラルネットワーク からホクホクの中間層を抜き取ることにより、⾃分の圧縮表現を作る
“ Unicorn Cat ”Text Encoderテキストもまた違う⽅法で ベクトルにするテキストをベクトル化したものは、「埋め込み表現(embeddings)」と⾔われたりする(2.1, 0.3, 0.8, 1.2, 3.2)(⼀般に、⾼次元のものを低次元で表現したものを「埋め込み」という)
どうやってるの?:CLIPという⼿法テキストと画像のペアを⼤量に学習して、画像とテキストを同⼀の空間に埋め込むҾ༻ݩɿIUUQTBSYJWPSHBCT
Forward Process(かんたん)Reverse Process(むずかしい)学習⽤に、ノイズ画像と元画像のペアをたくさん作るForward Process で得られたデータをニューラルネットワークで学習ノイズ除去ってどうやってるの?正解問こういうデータセットを⼤量につくる正確には、ノイズを形成する正規分布のパラメータ(分散, 平均)を予測Diffusion Processともいう
UNetの詳細については時間がないので割愛。毎ステップごとにテキスト情報を⼊れて ノイズ除去を⾏う。( )
まとめノイズ画像からちょっとづつノイズを除くという処理を、エンコーディングした⼊⼒テキストの特徴を⼊れながらやる。画像とテキストのペアを⼤量に学習しているので、 正確にテキストの情報が画像の特徴に反映される。