「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る([[ニューラルネットワーク]]、[[画像処理とコンピュータビジョン(AI)]]) --一般的なフツーの[[ニューラルネットワーク]] ---[[順伝播型ニューラルネットワーク(FNN)>ニューラルネットワーク#mcd402f7]] ---[[ディープニューラルネットワーク(DNN)>ニューラルネットワーク#ge448516]] ---[[畳み込みニューラルネットワーク(CNN)]] --[[再帰型ニューラルネットワーク(RNN)]] ---[[長短期記憶ニューラルネットワーク(LSTM)]] ---[[RNN Encoder-Decoder(Sequence-to-Sequence)]] --[[生成モデル>生成系AI(Generative AI)]]系の[[ニューラルネットワーク]] ---[[自己符号化器(AE:オートエンコーダ)]] ---[[言語処理(AI)]] -> テキスト生成系(Transformer系) ---[[敵対的生成ネットワーク(GAN)]] *目次 [#r9bf8f41] #contents *概要 [#peeb9f3e] テキスト生成系(Transformer系)の言語モデル(言語処理(AI))。 *詳細 [#jbeb97e4] **[[Transformer>言語処理(AI)#a5995dbe]] [#vfdc9368] -その情報に注目スべきか判断して情報を処理するAttentionの導入。 -Self-Attention機構の重要性を示し、他の分野にも影響を与えた。 -汎用性が高くコレを画像処理に応用したのが、Vision Transformer。 ※ [[RNN Encoder-DecoderのAttention機構>RNN Encoder-Decoder(Sequence-to-Sequence)#oc99a385]]と同じ目的を達成するが機構は異なる。 ***アーキテクチャ [#n9209714] -オートエンコーダ、Attention、[[全結合層>ニューラルネットワーク#i29bfc40]] -[[RNN Encoder-Decoder(Sequence-to-Sequence)]]を用いないオートエンコーダ・モデル --[[RNN>再帰型ニューラルネットワーク(RNN)]]も[[CNN>畳み込みニューラルネットワーク(CNN)]]も使わず(再帰も畳込も行わず)に~ --入力と出力の文章同士の広範囲な依存関係を捉えられる、 --[[Attention機構>RNN Encoder-Decoder(Sequence-to-Sequence)#oc99a385]]の概念を導入したオートエンコーダ・モデル -[[RNN Encoder-Decoder(Sequence-to-Sequence)]]の逐次処理を~ オートエンコーダの並列処理に変更して従来モデルの問題を解決。 --[[Attention機構>RNN Encoder-Decoder(Sequence-to-Sequence)#oc99a385]]を[[Multi-head Attention>#f57890c2]]に置き換えた、 --「並列化できない」「長期記憶ができない(大域的な特徴・ニュアンスを捉え難い)」問題を解決。 ---並列計算で高速な学習が可能になった。 ---後半に行けばいくほど昔の記憶を維持するのが難しくなる問題を解決。 ---Positional Encoding(位置エンコーディング)でベクトルに語順情報を付加。 ***パフォーマンス [#nf643b19] [[RNN Encoder-Decoder(Sequence-to-Sequence)]]系よりも早くて精度が高い -処理が速い:並列化によって学習時間を大幅に短縮。 --データを逐次処理する必要がなく、 --並列化で訓練時間が圧倒的に削減でき --ビッグデータで効率的に学習できる。 -精度が高い:英独翻訳タスクで従来モデルの最良結果を超える。 -汎用性が高い:汎用的で、大規模なモデルも構築可能 ***タスクの概要と構造 [#a2df39c2] -翻訳タスク~ スペイン語 → 英語 --Yo tengo gatos → I have cats --...と、catsを予測するTransformer. -入力と出力~ 翻訳タスク(Yo tengo gatos → I have cats) --入力 ---Self-Attention:「Yo tengo gatos」 ---Masked Self-Attention:「I have [cats]」※ []はMask --出力 ---次単語予測(BEAM search):「cats」を予想する。 ---Decoderが通常のSeq2seqのように逐次的に単語を出力していく。 --以下の前処理が処理前に行われる。 ---ストップワード削除済み原文 ---Embeding:[[単語の分散表現>言語処理(AI)#md350799]]で512次元のベクトルに圧縮 ---Positional Encoding:単語の順番情報を埋込。 --Encoderの出力を一気にDecoderに入れる。 -構造 |#ref(Transformer0.png,left,nowrap,イメージ,25%)|#ref(Transformer1.png,left,nowrap,イメージ,25%)| |>|https://qiita.com/omiita/items/07e69aef6c156d23c538| --Encoder~ 文章を意味に変換する。 ---Self-Attention([[Multi-head Attention>#f57890c2]])~ 1文の単語だけを使って計算された単語間の照応関係を付加 ||I|have|cats| |I|0.88|0.10|0.02| |have|0.08|0.80|0.12| |cats|0.03|0.14|0.83| ---Position-Wise Feed-Forward Networks(PFFN)~ 2層のDNN:FFN(x) = [[ReLU>ニューラルネットワーク#x80775f2]](xW1+b1)W2+b2 --Decoder~ 意味を文章に変換する。~ ---Masked Self-Attention([[Multi-head Attention>#f57890c2]])~ 予想する単語の部分をマスクした文の単語だけを使って計算された単語間の照応関係を付加 ---Source-Target Attention([[Multi-head Attention>#f57890c2]])~ ここまでの出力をQueryに、Encoderの出力をKeyとValueにして~ Multi-Head AttentionでAttentionを計算し異なる時系列データの照応関係情報を獲得 ---Position-Wise Feed-Forward Networks(PFFN)~ 2層のDNN:FFN(x) = [[ReLU>ニューラルネットワーク#x80775f2]](xW1+b1)W2+b2 ---[[全結合層>ニューラルネットワーク#i29bfc40]](元の次元に戻す)・[[Softmax関数>ニューラルネットワーク(推論)#b77bdfd7]](確率分布(p(yi))) ***オートエンコーダ [#q4b04302] -左半分がEncoder --N=6層の[[Transformer Block>#r55ff880]]で構成されていて、6層とも同じ構造。 --各[[Transformer Block>#r55ff880]]層は2つのサブ層で構成される。 ---Self-Attention([[Multi-head Attention>#f57890c2]])層は文脈を埋込。~ 文脈の理解力が高いAttentionの進化版で複数箇所の重要な部分に注目することができる。 ---Position-Wise Feed-Forward Networks層は...~ ・入力はQと同サイズのトークン・ベクトルが並んだ文章で~ ・Position-Wiseは各トークン毎(位置単位)に計算をすると言う意味 --それぞれのサブ層の後にはAdd&Normがある。 ---Add:[[残差接続>畳み込みニューラルネットワーク(CNN)#z4eca8cf]] ---Norm:Layer Normalization(学習高速化の正規化) -右半分がDecoder --N=6層の[[Transformer Block>#r55ff880]]で構成されていて、6層とも同じ構造。 --各[[Transformer Block>#r55ff880]]層は2つのサブ層で構成される。 --2つのサブ層の間にEncoderの出力を受け取る~ Source-Target Attention([[Multi-head Attention>#f57890c2]])層が追加されている。 |#ref(Transformer2.jpg,left,nowrap,イメージ,30%)|#ref(Transformer3.jpg,left,nowrap,イメージ,30%)|#ref(Transformer4.jpg,left,nowrap,イメージ,30%)| |>|>|https://nlpillustration.tech/?p=2171| ***Transformer Block [#r55ff880] Transformer ≒ Transformer Block -[[RNNのAttention機構と同様に、Q、K、VからAttentionを計算するが、>RNN Encoder-Decoder(Sequence-to-Sequence)#oc99a385]]~ コチラでは、後述の[[Multi-head Attention>#f57890c2]]と言う機構を使用する。 -計算結果(Qと同サイズ)をQの[[Add&Norm(前述)>#q4b04302]]をする。 -計算結果をPosition-Wise Feed-Forward Networksに適用。 -さらに計算結果(入力と同サイズ)を[[Add&Norm(前述)>#q4b04302]]をする。 -最終的なTransformer Blockの出力とする。 |>|Transformer ≒ Transformer Block|h |#ref(Transformer5.png,left,nowrap,イメージ,30%)|#ref(Transformer51.png,left,nowrap,イメージ,50%)| |>|https://agirobots.com/multi-head-attention/| ***Multi-head Attention [#f57890c2] -Multi-head Attention --Single-Head Attention(Scaled Dot-Product AttentionとLinear層からなる)を並列化したもの。 --獲得された学習パラメタを可視化すると並列に並んでいる各Single-Headが異なる注意表現を獲得している(後述の①)。 --これは、後述のScaled Dot-Product AttentionのK、Vの値を決める重み、出力を調整する重みの学習になる。 |Single-Head Attention|Multi-head Attention|h |#ref(Transformer6.png,left,nowrap,イメージ,30%)|#ref(Transformer7.png,left,nowrap,イメージ,30%)| |>|Multi-head Attention内部で行われる計算| |>|#ref(Transformer8.png,left,nowrap,イメージ,50%)| |>|#ref(Transformer9.png,left,nowrap,イメージ,100%)| |>|① 行列をかける。Q = K = V = Xなのでそれぞれを変形させる。&br;・QWiqはh=8なのでXの次元を1/8にする。= Xのどの部分を処理するか?を変える。&br;・KWikは内積を取る前にXの角度を変える。= どの部分に注目するか?注目の仕方を変える。&br;・VWivは出力する前にXの角度を変える。= 出力の様子を調整する。| |>|② Scaled Dot-Product Attentionを行う(後述)。| |>|③ Concatで横に繋げる(1/hにしたものをh倍にする)。| |>|④ 行列Woをかける。| |>|https://agirobots.com/multi-head-attention/| -Single-Head Attention~ HeadとはLinear層*3とScaled Dot-Product Attention層*1の4つの組合せ --Linear層~ Scaled Dot-Product Attention層の直前に学習パラメタを持つLinear層を設け、~ 多種多様な特徴部分空間における注意表現を学習可能にする柔軟性を獲得させている。 --Scaled Dot-Product Attention層 ---内積に基づく注意計算を行うだけとなっていて内部に学習パラメタを持たない。 ---スケール化内積注意と訳せるだけに、内積を利用したベクトル間の類似性に基づく変換を行う注意機構 |#ref(Transformer10.png,left,nowrap,イメージ,30%)|#ref(Transformer11.png,left,nowrap,イメージ)| |~|・Qは横ベクトルqの縦ベクトル&br;・Kは横ベクトルkの縦ベクトル&br;・Vは横ベクトルvの縦ベクトル(KV(kv)はペアになっている)| |~|QをqにしてSingle-Head Attentionで考えると、qtKは、[[同様>RNN Encoder-Decoder(Sequence-to-Sequence)#oc99a385]]に、qkの内積(類似度)の横ベクトルになる。また、√dkは、次元が大きくなると長くなるので補正する。コレを同様に[[Softmax>ニューラルネットワーク(推論)#b77bdfd7]]で重み(Attention_Weight)に変換し、この重み(Attention_Weight)とVのdot積=加重和がCi(文脈を加味した単語ベクトル)になる。| |~|Attention(q, K, V)では、qとkiが似ていて場合 Pi≒1 他≒0となる場合、kiとの類似度に応じたVの加重和はほぼviになる。Attention(Q, K, V)はバッチで処理。| |>|https://agirobots.com/multi-head-attention/| -Concat+Linear層(前述の③、④) --Concat --Linear:活性化関数が恒等関数(なのでPosition-Wise Feed-Forward Networksがある) ***数式のポイントとベクトルの内容 [#t0872509] -数式のポイント --Xは縦ベクトルではなく横ベクトル、WXではなくXW(= tWtX) --詰まる所、以下の様な事をやっているらしい。 |Attention(Scaled Dot-Product Attention)|K、Vの値を決める重み、出力を調整する重みの学習|h |#ref(Transformer19.png,left,nowrap,イメージ)|#ref(Transformer20.png,left,nowrap,イメージ)| |>|https://www.youtube.com/@AIcia_Solid| -ベクトルの内容~ |文のベクトル|#ref(Transformer12.png,left,nowrap,イメージ,50%)|>|#ref(Transformer14.png,left,nowrap,イメージ,50%)| |QKVのベクトル|#ref(Transformer13.png,left,nowrap,イメージ,30%)|>|~| |>|>|>|QKVから計算して得たCi(文脈を加味した単語ベクトル)| |>|#ref(Transformer15.png,left,nowrap,イメージ,30%)|#ref(Transformer16.png,left,nowrap,イメージ,30%)|#ref(Transformer17.png,left,nowrap,イメージ,30%)| |>|>|>|並列に並んでいる各Single-Headが異なる注意表現を獲得している| |>|>|>|#ref(Transformer18.png,left,nowrap,イメージ,70%)| |>|>|>|https://agirobots.com/multi-head-attention/| **[[GPT-n>言語処理(AI)#a1d46512]] [#k3df315f] ***アーキテクチャ [#f2949f1f] -Encoderを持たず、[[Transformer>#vfdc9368]]のDecoderと似た構造を持つネットワーク -[[Transformer>#vfdc9368]]のDecoder側、Masked Multi-Head AttentionとFFNを抽出したブロックを用いる。 #ref(GPT1.png,left,nowrap,イメージ) https://www.youtube.com/@AIcia_Solid -Token Embedding、Positional Embedding、Decoder型のTransformer Blockを12層、出力層で構成 --Et + Ei ---Token Embedding(Et) ---Positional Embedding(%%Encoding%%)(Ei) --Decoder型のTransformer Blockを12層 --出力層 ---[[事前学習>#h85eed3a]]用の出力層 ---[[ファイン・チューニング>#h85eed3a]]用の出力層 -入出力 --入力 ---分類:Start - 文 - Extract ---NLI:Start - 文1 - Delimiter - 文2 - Extract ---Q&A:~ ・Start - 文Q - Delimiter -文A1(選択肢)- Extract~ ・...~ ・Start - 文Q - Delimiter - 文An(選択肢)- Extract --出力 ---[[事前学習>#h85eed3a]]では次単語予測 ---[[ファイン・チューニング>#h85eed3a]]ではタスク毎に異なる ***パフォーマンス [#i980de60] -[[Transformer>#vfdc9368]]は凄い~ 研究を除く実務では、なんでも[[Transformer>#vfdc9368]]を使っておけはOK。 --[[パラメタ、コーパスを増やして精度アップ>#e7163443]] --[[多様なタスク>#g7bfeb60]]を1つのモデルで解いた。 --12 DataSet中、9つでSOTA~ ((State-of-the-Art)現時点での最高/最良の性能) -[[事前学習とファイン・チューニング>#h85eed3a]]は凄い~ 学習コストが高い中で、コレが適切に機能した。 --GPT-3は、1回の学習に数億円の費用が掛かる。 --[[教師あり学習>機械学習(machine learning)#y3a9ef2a]]の場合、教師データの作成が大変 ***タスクの概要と構造 [#g7bfeb60] -得意なタスク~ --次単語予測、文章穴埋 --自然言語推論 (NLI) :2テキスト間の推論的関係の同定 --分類、意味、文章生成(翻訳、要約、対話生成、Q&A) --計算(足し算・引き算)もできる。 --ソースコード生成、デザイン支援もできる。 -苦手なタスク~ 文の意味を人間のように理解していない --比較が苦手 --人間社会、物理現象の慣習や常識を認識、推論できない。 ***[[事前学習>深層学習のテクニック#ebe9edcc]]と[[ファイン・チューニング>深層学習のテクニック#ea94272b]] [#h85eed3a] -[[事前学習>深層学習のテクニック#ebe9edcc]] --[[サブタスクで言語を理解>言語処理(AI)#x5b7e667]]。 ---過去の単語列から次の単語を予測([[教師なし学習>機械学習(machine learning)#p3ab14a7]]) ---使用するDataSetは、BookCorpus、1B Word Benchmark ---この大規模なDataSetで100[[エポック>ニューラルネットワーク(学習)#t183c375]]もの学習を行う。 --その後、僅かな[[教師あり学習>機械学習(machine learning)#y3a9ef2a]]([[ファイン・チューニング>深層学習のテクニック#ea94272b]])で本タスクを学習する。 -[[ファイン・チューニング>深層学習のテクニック#ea94272b]]~ 少データ、少資源でOKのため、多くの応用が可能。 --最終層のみ取り替えて[[教師あり学習>機械学習(machine learning)#y3a9ef2a]] --数例のデータしか必要としないので教師データの作成が楽 --学習も3[[エポック>ニューラルネットワーク(学習)#t183c375]]程度の学習で済む。 --代替手段となるfew-shot学習は、学習を行っているわけではなく、~ 巨大な汎用事前学習モデルの中の学習結果から求められている学習結果を引き出しているだけ。 **[[BERT>言語処理(AI)#l0841a18]] [#q79e0d9a] [[GPT-n>#k3df315f]]を少し改変しているので、高性能で汎用性が高く応用し易い。 -[[Google検索>AIの活用例#c22f6006]] -Regal BERT(特定ドメイン=法律領域向けのBERTモデル ***アーキテクチャ [#v2f35742] -[[Transformer>#vfdc9368]]のEncoderを双方向多層に積み重ねたアーキテクチャ --双方向(文頭と文末)から学習することによって「文脈を読むこと」が実現された。 --膨大な量のテキストデータからテキストの単語の連なりの「言語らしさ」を学習 --長く複雑な文章を読み取ることができ文脈を読むことが可能になった~ #ref(BERT.png,left,nowrap,イメージ) https://www.youtube.com/@AIcia_Solid -Token / Segment / Positional Embedding、型のTransformer Blockを24層 --Et + (Ea or Eb) + Ei ---Token Embedding(Et) ---Segment Embedding(Ea or Eb) ---Positional Embedding(%%Encoding%%)(Ei) --型のTransformer Blockを24層 --出力層~ [[事前学習>#paa9ee22]]と[[ファイン・チューニング>#paa9ee22]]で変更無し。 -入出力 --入力~ 1つ2つの文章を入力 ---文1 : t1...tn ---文2 : t'1...t'm ---一文 : CLS 文1 SEP 文2 SEP ---二文 : CLS 文1 SEP SEP --出力~ 基本的には一文、C T1...TN TSEP T'SEP ---文単位のタスク(分類問題など)ではC(文章の意味ベクトル)を使用 ---単語単位のタスク(固有表現抽出(NER)など)ではT1...TN(単語の意味ベクトル)を使用 ***パフォーマンス [#iad2890f] 高性能で汎用性が高く応用し易い。 -[[Transformer>#vfdc9368]]ベースの[[GPT-n>#k3df315f]]ベース --[[Transformer>#vfdc9368]]は凄い --[[事前学習とファイン・チューニング>#paa9ee22]]は凄い -上記に加えて双方向が凄い~ 上位の層では意味・文脈に関する抽象化された情報を獲得 ***タスクの概要と構造 [#g49727f0] マスクされた単語の前後のテキストを使って単語を予測する。 -元々は機械翻訳で利用されていた。 -今は自然言語処理なら大概できる。 --質問応答(質問に対する回答を文書中から見つけてくる) --文の比較(片方の文がもう一方の文の内容を含んでいるか) ***[[事前学習>深層学習のテクニック#ebe9edcc]]と[[ファイン・チューニング>深層学習のテクニック#ea94272b]] [#paa9ee22] 基本的に[[GPTと事前学習とファイン・チューニング>#h85eed3a]]と同じ。 -[[事前学習>深層学習のテクニック#ebe9edcc]]に工夫をしている。 --単語・文法を学習:15%マスクされた単語の予測を学習(MLM) --文意・文脈を学習:連続する2文であるかないか(5:5)判断を学習(NSP) -チューニング~ 実現したいタスクに応じた数百レベルの学習データを用意して[[ファイン・チューニング>深層学習のテクニック#ea94272b]] --[[事前学習>深層学習のテクニック#ebe9edcc]]結果を実際に使う場合。 --BERTの上にタスク依存の層を重ねる。 --数百件レベルの学習データで実施可能 リソースと時間が必要なので学習済みモデル(汎用[[事前学習>深層学習のテクニック#ebe9edcc]]モデル)をGoogleが無償で公開 **GPTのバージョン [#e7163443] 2019年に[[GPT-2>#qd20bada]]、2020年に[[GPT-3>#s981eea4]]、202n年に[[GPT-3.5>#ceb96c7e]]、202n年に[[GPT-4>#d867c49d]]が発表 ***GPT-2 [#qd20bada] -概要 --【論文】Language models are unsupervised multitask learners.~ 特定のタスクに特化するのではなく、色々なタスクに応用できる、~ できるだけ汎用的なモデルを構築する事を目指す。 --[[事前学習とファイン・チューニング>#h85eed3a]]が面倒なので、~ なんかすっごいの1つ作って、ソレで全部なんか出来ない? --言語モデル(次単語予測)の可能性~ Commonsense reasoning(常識的な推論)を解ける。 --大モデル、大データならもっと凄いのではないか?~ 結果、半分凄い、半分まだまだ。この方向性に大きな可能性(GPT-3へ)。 -モデル #ref(GPT2.png,left,nowrap,イメージ) https://www.youtube.com/@AIcia_Solid --ほとんどGPT-1と同じ。 --タスクは翻訳ではなく次単語予測 --一番大きいもので[[Transformer Block>#r55ff880]]ブロックが12 → 48 --Add&Normの位置が少々異なる。 ---Add:残差接続の位置の変更 ---Norm:Layer Normalizationの位置の変更 -データ --WebTextコーパスを新規に開発 --量と質と幅(様々な話題と文脈) --約800万のウェブページから抽出された高品質自然言語テキストコーパス --3つ以上のカルマを持つRedditの発信リンクからのWebページ(8Mリンク、40GB) -性能~ 8タスク --言語モデル(次単語予測) ---8つ中、7データセットでSoTA ---Perplexity予測性能:10-40 --Children's Book Test (CBT)~ 10選択単語穴埋めタスクでSoTA --LAMBADA Benchmark~ 最後の単語を予測するタスクでSoTA --Winograd Schema Challenge ---Commonsense reasoning(常識的な推論)でSoTA ---ポイントは教師データを使用していない点 --CoQA ---会話型質問応答システムを構築するための大規模なデータセット~ ---TOEICのようなテストの質問と回答を最高性能に匹敵~ ---同様に、ポイントは教師データを使用していない点 --Summary ---長文の要約を作る。 ---長文+TL;DRを入力。 --Translate ---WMT-14の仏→英がBLEU:11.5(当時の最高は40ぐらい) ---ただしデータは英語のみで仏データが僅か10M程度しか混じって無かったのにも関わらず。 --QA~ 1問1答はまったくSoTAに届いていないが、 一番小さなモデルで1%、一番大きなモデルで4%と、~ 大モデル、大データならもっと凄いのではないか?と言う可能性。~ (実は、WebTextに対して[[未学習>機械学習(machine learning)#db9e0993]](もっとモデルを複雑にしたら...)) ***GPT-3 [#s981eea4] -概要 --【論文】Language Models are Few-Shot Learners --[[BERT>#q79e0d9a]]に比べてあまりにも巨大 --時代背景 ---Scaling Law:大きなTransformerは強い。 ---NLP & DL:~ ・DL:数十万件のデータが必要~ ・[[PT & FT>#h85eed3a]]:1,000件程度のデータで済む。~ ・FS(Few-Shot):10件程度のデータで済む。~ -モデル~ [[GPT-2>#qd20bada]] + Sparse Transformer --Sparse Transformer(Sparse Multi-Headed Attention)~ チェック・ポイント以前はチェック・ポイントのみ参照する。 #ref(SparseTransformer.png,left,nowrap,イメージ) https://www.youtube.com/@AIcia_Solid --1750億(175B)のパラメタ([[GPT-2>#qd20bada]]:1.5B、T5:11B) --ベクトルの次元:12288([[GPT-2>#qd20bada]]:1600) --Transformer Block層:96([[GPT-2>#qd20bada]]:48) --Multi-head Attentionのヘッド数(nhead):96([[GPT-2>#qd20bada]]:...) --Single-Head Attentionの次元?(dhead):128([[GPT-2>#qd20bada]]:...) --トークン数:2048 --バッチサイズ:3.2M --学習率:6e^-1 -データ --約45TBの大規模データセットを前処理した~ 約570GBテキストデータ([[GPT-2>#qd20bada]]:40GB) ---Common Crawl(をCleaningしたもの) ---Wikipedia ---Books1, Books2 ---WebText([[GPT-2>#qd20bada]]) --上記中の300Bトークンで事前学習 -特性~ 大規模言語モデル(LLM)の創発的な特性 --コンテキスト内学習 ---手法はGPT-3の登場にともない一般に普及した大規模言語モデルの創発的な特性で、 ---与えられたコンテキスト内で情報を学習し、その学習を元に出力を生成する。 ---何故かはよく解っていないので下の様な絵で説明されてたりする。 #ref(In-context-Learning.png,left,nowrap,イメージ) https://www.youtube.com/@AIcia_Solid --GPT-3におけるFew / One / Zero-Shotの説明~ ・≒ コンテキスト内学習でファインチューニングと異なりパラメタ更新は不要。~ ・Attention機構を変形して見方を変えると勾配降下法をシミュレーションしている。~ ・モデルがタスクを試みる前に例を処理できるようにするプロンプトとしてコンテキストを与える。 ---Few-Shot(FS)~ ・推論時にタスクに関する説明と少量のデモンストレーションを与える方式~ ・パラメタを更新しない=デモを学習しない=デモを過学習しない。 ---One-Shot(1S)~ ・Few-shotのデモンストレーションの数が1つであるケース~ ・人が例示を見てタスクに取り組むという状況に近い ---Zero-Shot(0S)~ ・推論時にはタスクに関する説明のみが与えられる。~ ・デモンストレーションは全く与えられないケース ||[[一般的な扱い>E資格:試験対策#oa0d4921]]|GPT-3での扱い|h |Few / One-Shot|少量の教師ありデータに基づく学習方法|タスク説明と少量のデモンストレーションを入力とした予測| |Zero-Shot|学習時に存在しないクラスのデータを扱う枠組み|タスク説明のみを入力とした予測| -性能~ 9タスク、得意と苦手がある。 --Language Model, Cloze, Continuation Tasks SOTA有り~ --Closed Book Question Answering SOTA有り ---関連文書から正解の可能性が高い文字列を抜き出すことによって解答する(Open-book)のではなく、~ [[関連文書を用いないで与えられる質問について何を知っているかを直接問う(Closed-book)>https://www.jstage.jst.go.jp/article/jnlp/28/1/28_3/_pdf]] ---TriviaQA:T5 < 0S < 旧SOTA < 1S < FS --Translation En SOTA有り~ ---FS ≒ 教師なし SOTA < 教師あり SOTA ---非英語データは7%、英語に翻訳する方が精度が高い。 --Winggrad-Style Tasks SOTA有り~ --Common Sense Reasoning △~ --Reading Comprehension ◯☓~ --Super GLUE ◯☓~ 単語は2つの文書で同じ使われ方をしているか? --Natural Language Inference ☓~ 2番目の文書は1番目の文章の賛成 / 反対 / 中立のどれか? --Synthetic and Qualitative Tasks ◯☓~ ---2桁の±が99-100% ---3-5桁の±、2桁の*、1桁の±, *, ()が20% --News Article Response~ タイトル・サブタイトルから人間と区別できない文書を生成 -課題 --何故か2文間の比較を要するタスクが苦手 --文書生成で~ ・単語単位の繰り返しは無いが。~ ・文単位の繰り返しがある。~ ・長文の一貫性に欠ける。 --双方向性~ 双方向性は無いので文の後ろを考慮しない(コンテキストが読めない)。 --Pre-Training dejective~ 次単語予測の事前学習の精度はScaling Lawで上がるが~ Scaling Lawの頭打ちや実問題での性能(次単語予測以外の事前学習) ---人間から学ぶ ---強化学習でチューニング ---マルチ・モーダルでやる --学習の効率化~ GPT-3は300Bトークンで学習するが、~ 人間は生涯で0.3Bトークンの入力程度(1000倍の差) --Few-Shotで何が起きる?~ ・学習済みの内容を思い出している。~ ・新しい能力を獲得している。 --解釈・制御~ DLと同じ(人間も直感では同じ)。 --バイアス~ データのバイアスを受け継いでいる。 ***GPT-3.5 [#ceb96c7e] -概要 -モデル -データ -性能 ***GPT-4 [#d867c49d] -概要 --... --大規模化は頭打ち -モデル -データ -性能 ***[[OpenAI ChatGPT>#je04ed2e]] [#qd730547] **サービス・ブランド [#s21cf33c] ***[[OpenAI]] [[ChatGPT]] [#je04ed2e] -2022年11月に公開されたサービス・ブランド。当初は、GPT-3.5。 -GPT-3.5/GPT-4(GPT-4o)を用いた代表的なSaaS ***[[Microsoft Copilot>https://techinfoofmicrosofttech.osscons.jp/index.php?Copilot]] [#wd38e0bb] GPT-4系(OpenAI)ベースのAI。Office統合も進む。 ***Google Gemini [#d5f51d4b] GPTとは別系列で、PaLM → Geminiモデル。Workspace統合も進む。 ***Grok / X [#y412990b] GPTとは別系列で、X(旧Twitter)上で動作する、xAI独自モデル(Grok) ***Claude [#vc1e3d4c] GPTとは別系列で、Claude 3系モデル。 ***DeepSeek [#rfd6437b] GPTとは別系列で、中国発。GPTに類似した構造だが独自開発。 **チューニング、拡張 [#j2f01d54] ***[[LLMのPE]] [#m3e13532] PE(Prompt Engineering) ***[[LLMのRAG]] [#wf34bd1e] RAG(Retrieval-Augmented Generation) ***[[LLMのFT]](ファインチューニング) [#s893da22] Fine-tuning(FT) ***[[LLMエージェント]] [#u680eeaa] **開発系 [#cf2e3279] ***[[OpenAI]] [#e7805c20] -[[ChatGPT]] -[[OpenAI API]] -[[Library>OpenAI#w24acc85]] ***[[Azure OpenAI>https://techinfoofmicrosofttech.osscons.jp/index.php?Azure%20OpenAI%20Service]] [#i2a38cc4] -WebUIは無し -Azure OpenAI API -Azure AI サービス SDK ***[[OSSのLLM]] [#wb92f6a0] ***[[LLM系ツール]] [#qd8dd044] **チューニング、拡張 [#j2f01d54] ***[[LLMのPE]] [#m3e13532] PE(Prompt Engineering) ***[[LLMのRAG]] [#wf34bd1e] RAG(Retrieval-Augmented Generation) ***[[LLMのFT]](ファインチューニング) [#s893da22] Fine-tuning(FT) ***[[LLMエージェント]] [#u680eeaa] *参考 [#m905c9a4] -深層学習についてのレポート(LLM編)~ https://www.osscons.jp/joho108j0-537/#_537 -【図解】誰でもわかるTransformer入門!~ 凄さ・仕組みをわかりやすく解説 - すえつぐのNLP&LLM~ https://nlpillustration.tech/?p=2171 -30分で完全理解するTransformerの世界~ https://zenn.dev/zenkigen_tech/articles/2023-01-shimizu -【論文解説】Transformerを理解する | 楽しみながら理解するAI・機械学習入門~ https://data-analytics.fun/2020/04/01/understanding-transformer/ -自然言語処理 | DeepSquare~ https://deepsquare.jp/tag/language/ --自然言語処理の必須知識 Transformer を徹底解説!~ https://deepsquare.jp/2020/07/transformer/ --自然言語処理の必須知識 BERT を徹底解説!~ https://deepsquare.jp/2020/09/bert/ **[[ゼロつく2>言語処理(AI)#s380107d]] [#sb50cda5] **Qiita [#z2720665] -ざっくり理解する分散表現, Attention, Self Attention, Transformer #機械学習~ https://qiita.com/norihitoishida/items/2fead107792b504eaccf -自然言語処理を理解しよう Seq2SeqからTransFormer(Attention)まで #Python~ https://qiita.com/DeepTama/items/20b93ff8b8547428f662 -【深層学習】図で理解するAttention機構~ https://qiita.com/ps010/items/0bb2931b666fa602d0fc -作って理解する Transformer / Attention #DeepLearning~ https://qiita.com/halhorn/items/c91497522be27bde17ce -深層学習界の大前提Transformerの論文解説!~ https://qiita.com/omiita/items/07e69aef6c156d23c538 -ta2bonn~ https://qiita.com/ta2bonn/ --Self-Attention(+MultiHead)を図・ベクトル(行列)の両方で整理してみた。~ https://qiita.com/ta2bonn/items/60601d18db57bd98d142 --Attention Is All You Need = Transformerをざっくり理解してみる。~ https://qiita.com/ta2bonn/items/4ec687bc136a41c364ae **YouTube [#r580a4a0] ***[[AIcia Solid Project>言語処理(AI)#x1ea3efe]] [#kd2d3eb9] ***[[AI教室 AIRS-Lab>深層学習(deep learning)#o49c1a2e]] [#jbb19592] ***[[AGIRobots>深層学習(deep learning)#s1b4e09f]] [#ec78aacf] 以下はブログ側 -Transformers --[Transformers入門]日本語のセンチメント分析~ https://agirobots.com/transformers-sentiment-analysis/ --【Transformerの基礎】Multi-Head Attentionの仕組み~ https://agirobots.com/multi-head-attention/ --【詳説】Attention機構の起源から学ぶTransformer~ https://agirobots.com/attention-mechanism-transformer/ --Transformerについて本質を分かりやすく解説!~ https://agirobots.com/essence-transformer/ --Scaled Dot-Product Attentionの本当の凄さを考える~ https://agirobots.com/essence-of-scaled-dot-product-attention/ --強化学習のパラダイムシフト!Decision Transformerとは?~ https://agirobots.com/decision-transformer/ -GPT --GPT-1の仕組みを解説!~ https://agirobots.com/gpt-1/ --【遂にGPT-4が発表】何が凄いのか解説!~ https://agirobots.com/gpt-4/ --ChatGPTの仕組みと課題について解説!~ https://agirobots.com/chatgpt-mechanism-and-problem/