DifyでつくったAIが壊れた専門家になってしまったときの対処法 - Qiita

🧠 はじめにDify学習のため、「IPA(情報処理推進機構)」の発信情報に詳しいAIチャットをDifyで構築してみました。"ITの知識と絡めてIPAの情報も教えてくれる優しい先輩"を作り上げよう…

Qiita
まだ外注してるの?LP・HPを一瞬で作成できる神AIツールをGoogleJapanのAIアドバイザーが紹介します! - エミリーと学ぶ生成AIの世界

「まだ外注してるの?LP・HPを一瞬で作成できる神AIツールをGoogleJapanのAIアドバイザ…

エミリーと学ぶ生成AIの世界
WSL2でGitのブランチ名をプロンプトに表示する方法 - Qiita

はじめにWSL2を用いて開発を行っていると、コマンドライン操作を行うことが多くなります。その際にGitを使用することも頻繁なはずで、Git Bashのように現在のブランチ名がプロンプトに表示され…

Qiita
【Claude vs ChatGPT vs Gemini】最新生成AIを比較! - エミリーと学ぶ生成AIの世界

「【Claude vs ChatGPT vs Gemini】最新生成AIを比較!」 のご紹介です。 …

エミリーと学ぶ生成AIの世界
ChatGPTでホームページ作成!超簡単に作れた。。。 - エミリーと学ぶ生成AIの世界

「ChatGPTでホームページ作成!超簡単に作れた。。。」 のご紹介です。 このホームページ作成に関…

エミリーと学ぶ生成AIの世界

#ChatGPT#予測能力 を爆上げする #プロンプト が判明、「 #物語プロンプト 」とはいったい何か?
Yahoo!ニュース - Yahoo! JAPAN

ChatGPTに「○○は将来どうなりますか?」と直接的に尋ねても、大抵は「確かなことは言えません」といった控えめな返答しか得られない。その背景には、未来の ...

https://news.yahoo.co.jp/articles/0c87cc3d98b4a2b0d8c21ea3d9668b856d062068

ごめんね、ChatGPT o1 pro - Qiita

こんばんは。座禅いぬです。最近は有志で集まってLT会を開いて、アウトプット量を増やして学びを加速させよう!というチャレンジをみんなでやっています。さて、プレゼンを読みやすく直感的に理解し易くする…

Qiita

テキストエンコーダーとベクトル演算が引き起こすプロンプト混在の謎

スタジオ真榊のAIイラスト術解説になぜ、複数キャラクターのプロンプトが混じってしまうのかというのがあるので、私なりに解説を試みてみましょう。

まず、画像生成AIのプロセスについて考える必要があります。代表的な、画像生成AIであるStable DiffusionについてはDeep Learning 論文 Advent Calendar 2022に参加された、omiitaさんの表した、「世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説!」があるのでこれを下敷きにします。

Stable DiffusionはText Encoder、拡散モデル、VAEというパーツで成り立っています。基本的にはプロンプトを解析する、Text Encoder、画像生成に重要な役割を担う拡散モデル(U-Net)を考えます。VAEは拡散モデルのはらんでいる問題点の解決には重要ですが、あとで考えても構わないと思います。

まず、「複数キャラクターのプロンプトが混じってしまう」要因には、Text Encoderが大いに関わっています。Stable DiffusionではText EncoderにCLIPという手法を使っていますが、これの役目はテキストをベクトルに変換することです。まず、試みに、”(1 girl, blue hair color), (1 boy, red hair color)”というプロンプトを考えます。

“()”は通常、Stable Diffusionでは、重みづけ以上の意味を持ちえません。故に、見た目ではグループ化のように見えますが、Stable Diffusionでは重みづけ以上の意味はありません。さて、ベクトル表現とはなんでしょうか? これは分散表現と大いに関係があります。

例えば、Kingという言葉を分散表現でとらえるとき、このような考え方ができます。King→男性の統治者、そうすると男性という概念と統治者という概念で表現できます。簡単に表そうとすれば(1,1)というベクトルでしょうか。この場合、最初の次元が例えば男性という概念、統治者というのが2次元目とします。

さて、女王と言うものを考えるためにベクトルの次元を増やしましょう。2次元目として女性という概念を加えます。この場合、先ほどの例は(1,0,1)というベクトルで表現できるかもしれません。昔、Word2vecが大流行りしたときに、王-男性+女性=女王というサンプルが多く見られました。これは以下の計算で、この例に当てはめられます。

(1,0,1)-(1,0,0)+(0,1,0)=(0,1,1)

ここまで、考えると、なぜプロンプトが混じるのかに答えが見えてきます。理由はベクトルの計算において、混じってしまうからです。先ほど、述べたように、()はStable Diffusionにおいて、重み以上の意味はありません。従って、書いたつもりになっていても単にベクトル演算の押し合いへし合いでかき回されているだけになります。

では解決策はどうするのか、何とかして計算を分離すればいいとなります。例えば、Latent Coupleなどでは、領域を分割して、そこに独立してText EncodingやU-Netを構築します。この辺は「複数キャラクターを分けて生成するLatent coupleの改良版!(Attention Couple)」あたりの解説を読むのが適切です。

以上、なぜ、プロンプトが混じるのかを解説してきました。

なぜ、VAEは特に説明しなかったのか? それは、基本的には拡散モデルの計算量を削減するための仕組みであり、実際上、VAEは画像の仕上がり具合には大きな影響がありますが、特に、最近では、VAEはモデルに組み込まれているものをそのまま使うことが多く、SD 1.5時代のように色味とかを考えてVAEを案じることがほぼ見られなくなっているため説明を省略しました。

#StableDiffusion #プロンプト #拡散モデル

世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説! - Qiita

追記: U-Netの中間層は常にSelf-Attentionとなります。ご指摘いただきました。ありがとうございます。(コード)オミータです。ツイッターで人工知能のことや他媒体の記事など を紹介して…

Qiita
生成AI初心者がDifyを使って占い&性格診断botを作ってみた - Qiita

生成AI初心者がDifyを使って占い&性格診断botを作ってみたタイトルにもある通り、Difyを使って占い&性格診断botを作ってみたので、その過程と感想を書きたいと思います。なんで「占い&性…

Qiita