Stable DiffusionとLLMの基本のき/2
前回の続きです。
SDとLLMのカスタマイズ
共通点
SDとLLMはカスタマイズしたものを使用するのが一般的です。カスタマイズすることを専門用語でファインチューニングと言いますが、単にカスタマイズしたんだなと言う意味です。一般人向けの説明なのでここでは技術的な話はあまりしません。
ファインチューニングとはもともとのモデルからの派生物のことで、手法がたくさんあって覚える必要は無いのでここでは書きませんが、その目的は自分の使いやすいように個人個人にローカライズしているという感じです。または、一つのサービスとして企業が扱いやすいようにカスタマイズして提供してくれています。
違い
SDとLLMでのファインチューニングというのの意味は少し異なります。どちらも元モデルから派生しているという意味では同じだけど、目的がちょっと違ってます。なので、SDとLLMではファインチューニングの性質が違うので混乱しますので分けて説明します。
SDのカスタマイズ
SDの場合には、自分の性癖に合った画像が出てほしいからそれが出せる可能性が高まるようにカスタマイズ(ファインチューニング)をします。自分で直接してはいないけど、そうとは知らずにカスタマイズ(ファインチューニング)しています。というのは、誰かがファインチューニングして公開してくれたマージモデルとかローラをピックアップして使用しているということです。(創作的なファインチューニングのことです。)
基本的にSDの場合はファインチューニングありきで、すでに誰でもファインチューンしています。みんなファインチューナーです。ファインチューニングされたものを使ってAI画像生成していると思ってください。このことはSDの核心をついています。
創作的なファインチューニングの話ではなく、技術的にファインチューニングを0から自分でやるのはどうやるの?っていうのはかなりマニアックなところに行くので、その時初めてファインチューニングについてちゃんと学べばいいと思います。その時にはマージのほかにも自分でデータセットを用意して追加学習させる方法もあります。
触り程度に分類を書くと、(通常は何と呼ばれているかわからないのでぼくの呼び方では、)元モデル、追加学習モデル、マージモデルというのがあってそれら3種類は別物です。
1 . 元モデル (SD1.5、SD2.1等)
元モデルは追加学習をするときの元になるモデルで通常はSD1.5かSD2.1だと思われます。それ以外は知りません。汎用性が高いので単品性能はほぼほぼ使い物になりにくくて、でも学習はたくさんのお金と時間をかけてされているパワフルなもののことです。これはどちらかと言うと教師無し学習に近いと思います。深淵能力を発揮できる根幹はこのモデル由来だと思います。深淵能力については後で書きます。
2 . 追加学習モデル (カフェインスタ、WDシリーズ、BRA、Dreamlike等)
追加学習モデルとは、元モデルに追加学習させたものの事です。自分で写真を撮りためるか、Webスクレイピングをするか、権利を得るかしてデータセット(タグと画像のペア)を制作し、それを元モデルに追加学習させたもののことです。元モデルのトークンを上書きしたりすることで追加学習させた要素を出していると思います。ベースモデルに無い画風を学習して出力できるようにします。この段階でダンボールタグで学習させるからそのタグが使えるようになります。
3 . マージモデル (ChilloutMix、basil mix、MUSE_v1等)
マージモデルとは、それ以外全部のことです。単にマージ(差分合体)しています。追加学習モデルには実写系やアニメ系など複数あるので、リアル系とアニメ系を足すことにより、特徴量をマージでき、幅広さが生まれます。例えば学生服をトークンとして考えれば、アニメ絵の学生服のピクセル単位の特徴と実写のピクセル単位の特徴は全然違うので見栄えが違うのですが、特徴量は数値なのでマージして出力を比較して好きな比率にして出力結果をコントロールします。
モデルの中身は「重み」で、重みは「数値」なので足し算なりができるというわけですね。沼地らしいのでこだわりを持って創作したい場合と、自分でオリジナルモデルを創出したい場合、単に学習したい場合を除いて学ぶ必要はないです。階層マージとかさらに深い領域もあります。
それから、LoRAというのは、もともとのモデル(例SD1.5)に含まれないキーワードを後から付け足して使えるようにする機能です。(プロンプト拡張)。特別何か新しいことをしているわけではないです。LORAを制作するときにもここまでの説明と同じようにタグと画像のペアを作ってそれで学習していきます。モデルの備え付けトークンだけだとうまく表現できないから後付けプロンプト(トークン)で上書き又は付け足します。
LLMのカスタマイズ
LLMでは結果をコントロールするというよりは、使い道にふさわしい形にチューニングします。対話形式で受け答えしてほしいならチャット形式にカスタマイズ(ファインチューニング)したりしていますし、NSFWとか害になることは答えないようにもカスタマイズ(ファインチューニング)されています。
GPT3.5のファインチューニングが ChatGPT ※1で
GPT4のファインチューニングが BingAIチャット ※2 です。
(※1 OpenAIのサービスとしてリリース)
(※2 マイクロソフトの検索サービスとしてリリース)
BingAIチャットとかChatGPTを使ったならすでに対話形式(つまりチャット)になるようにファインチューニングされています。会話の最後にキャッチボールが続くような小さな質問をAIが聞いてきたりします。このカスタマイズはサービス提供者がこんなサービスを提供したいというポリシーにのっとって行うのでユーザーはノータッチです。
LLMはLLMでもオープンソース(OSS)のLLMはファインチューニングを各自でする必要があって技術者界隈でその話題で盛り上がっています。が、一般人はOSSのLLMのファインチューニングは知る必要はないです。
そうです、LLMの場合には一般人はファインチューニングについて知る意味も必要もないです。それはサービスの形態の話なので、どういうサービスを提供したいかを考えた時にサービスに合う形にカスタマイズ(チューン)するよ、っていうことだと思います。提供者なら必要で、利用者なら不要な話だと思います。
まとめると、
SDの場合のファインチューニングは、とっても身近ですでに知らないうちに選択しています。SD界隈には新規にファインチューニングしてくれる製作者がたくさんいますので、モデルとLoRAを変えればそれで別のファインチューニングを試していることと同じです(創作的なファインチューニング)。一般人はいろいろ考えて楽しめます。
SDの技術的なファインチューニングの話はぼくは知りませんのでもっと詳しいところで探してください。
LLMの場合のファインチューニングは、LLMをサービスとして提供する会社(プロバイダー)のお約束事に従わせる技術です。一般人は考えなくていいです。
SDとLLMの未知の部分
ここまではニューラルネットワーク(NN)の教師あり学習由来の基本事項みたいなことなので、教師あり学習の成果物の特徴をつかんだよという内容でした。
次に教師無し学習のことも少し触れます。なぜかというと、教師あり学習の成果物の特徴では説明しきれない部分があり、それは教師無し学習由来のセレンディピティ(深淵能力)ではないか?と思えるからです。
深淵能力は整合性が無いです。見たことが無い組み合わせ、気が付かなかったパターンを提示してくれるかもしれませんが、物理的な整合性は無いと思います。でもそれがAIらしくて面白いところともいえます。
なお、未熟な教師あり学習由来なのか、教師無し学習由来の深淵能力なのかは混ざり合って融合しているので生成物から判断するのは難しいと思います。
それをここでは未知の部分だと言ってしまいます。
LLMの未知の部分
LLMの場合には、たくさんたくさん学習させると何かわからないけど未知の能力(深淵能力)が発揮されたかのようななんかうまく説明できないけどすごい賢いと感じる瞬間があります。ぼくは全く詳しくないのでそういうもんだと思っていますが、仕組み的には教師無し学習由来なのでは?と思っています。これはプロたちも報告は出来てもうまく説明できていない現象だと思います。
例を上げるとぼくが前書いた記事になります。こちら(内容回と考察回でワンセット)です。長いので別に読まなくていいです。
この回では一瞬集合意識と話しているのでは?と感じるようなすごく賢い中の人と話している感じがあってすごく楽しかったです。
BingAIはGPT4の派生です。GPT3.5よりも賢いAIです。
GPT3.5派生のChatGPTではこういう感覚を味わったことは無いと思いますので、学習量?(学習力?)依存なのかなとは思います。そういう経験ありますか?
GPTはまず教師無し学習をしていて、その次にファインチューニングとして教師あり学習をしているみたいです。以下のリンク参考。
なので、そういうことなのでしょう。教師あり学習は仕組み上なんか予測が付きますけど、教師無し学習は特徴の数値化が完全にAIに一存されているので人間ではよく理解できないのかなと感じます。そのデータを使って人間の質問に答えると、人間が予想していなかった部分に突っ込まれて「おお!すげ!」と感じたのだろうと思います。人は大体が知らないうちに自分ルールに凝り固まってしまっているからだと思います。
そういった、なんだかよくわからない未知の現象をここでは深淵能力と呼ばせてもらっていますが、解明されれば名前を付けます。それはおそらく、教師無し学習由来だよ、それかシナジーだよってことです。
SDの未知の部分
SDの場合には、成果物が画像なのと対話的ではなくて単純アウトプットなのでAIの深淵を垣間見るかのような未知のパターンはあまり感じません。
ライオンデータセットという巨大なデータセットを使っているので何かしらの深淵があってもいいとは思います。ですが、出力が数枚ポッと出して好きなのを選んでねというスタイルなので、完結しすぎていてカスタマイズ性に乏しくて、話が膨らみにくいので気づきにくいと思います。
NN(ニューラルネット)の仕組みでは、入力画像の特徴を完全再現できるような感じの出力が生まれるような学習をしています。学習時には512x512pxの画像を入力しても64x64pxみたいな小さな画像に小さくしてそこからまた拡大するときに詳細を復元するみたいなことをしています。それで理屈的に512px以降の拡大例えば4倍の2048x2048pxにしたとしても詳細の復元ができるからシャープな詳細が良く書き込まれた画像に仕上がるのです。ここの部分がみそで、つまりここが深淵だと思います。
単純に教師あり学習(タグと画像のペア)だけだと解像度が高い教師あり学習までのポテンシャルしか出無さそうだけど、教師無し学習はそもそもAIが特徴の量子化を担っていてAIに丸投げしていますので
AI君「解像度の高い画像の特徴ってこれこれこういうことだよね」
と勝手に保持しておいてくれていてその情報が生成する画像すべてに適用できるからすごいぞということかなと思います。
あと一つ言えるのはコントロールネットです。
教師あり学習では教師データへの完全一致を目指すのですが、教師データに無いパターンを出力できるコントロールネット(例えば棒人間によるポーズ制御)ではすごく小さな画像の段階でそのポーズ(姿勢)をとらせておいて画像を拡大復元するときに詳細を追加していくスタイルかなと思うので、つまりそういうことになります。上記の深淵能力である、解像感をゲットしつつも姿勢の制御が可能になるということでコントロールネットも深淵能力を放出するやり方の一つと言えると思います。これまでのプロンプトだけで姿勢を制御するのとは違って、明らかに強制力を持って構図の固定を生み、そこに他の要素を補っていくからだと思います。だから意味的に整合性のある結果物になります。
こういう内容について考察された記事を見たことが無いので全体的に謎ですが、ぼくは仕組みの観察からこういう持論を持っていますということでした。
つまり、教師あり学習と教師無し学習では、画像解析時の受け持つ文脈(レイヤー)が違うということです。それにより、シナジーも合わさり、意味の通る整合性のある部分とAIっぽい見た目になってる部分がある画像が出てくるということだと思います。
それと、大事なことですが巨大データはそもそも大きすぎて人の目で確認できないので、機械的にスコアリングしていますがそのスコアリングが人の認知力を超えていないので不備があります。また、機械的なスコアリングと人間の美的感覚も違います。なのでデータセットが大きければいいということではないのですが、とりあえずはビッグデータの民主化としてスタート地点としていいのではないでしょうか?いろいろ試せるしということです。
まとめと感想
技術的な話を技術的なことを省いて説明するのは単にわかりやすくしたかったからで、結構いい線言ってるのではと自分では満足します。時間がたてばたつほど様々な切り口からいろいろな方が説明してくれて、いつかコンプリートすると思いますね。
話は進んで、サムアルトマン氏がLLMをさらに巨大化することの限界を言い、そうではない方向で考えていると言っています。LLMはLLMとして進化の余地がまだありそうな一方で、最先端にいる人はAGIに向けて既存のLLMの方向性以外を考えているそうでとても楽しみですね。
ということで次に進みましょう。次はAGIがいいかな