公開されている生成AIプログラム Stable Diffusion

Stability AI社(もとはミュンヘン大学)のプログラム Stable Diffusionを見てみましょう。ソースコードと基礎訓練データを公開しているのが大学らしいと言えます。我々が勉強するのに助けになります。
https://github.com/Stability-AI/generative-models
展開したファイルの大きさは2022年の段階では最初は5-6GBで、訓練でだんだん大きくなるそうです。パラメータは最初は10億個で、20億の画像とテキストのペアを学習して得られているそうです。
もともとは、ノイズが入ったりピンボケしたりした画像を修復するためのソフトを開発していました。こういうのは拡散方程式(diffusion equation)の逆問題に似ていて、数学的には計算が難しいことが知られていました。そこにニューラルネットワークを使った学習で、「こういうぼけた画像なら元はこうだろう」という推測をさせる方法を研究していて、ヒントとして言葉を与える方向に進んで、実は言葉を好きなように組み合わせれば絵を組み合わせられるということがわかった、というのがごく簡単な説明です。
使ってみると、昔のテレビで電波が弱い時に出た「砂嵐」のような画像からだんだんはっきりしてくる様子が見えます。例えば下記画像です。
https://en.wikipedia.org/wiki/Stable_Diffusion#/media/File:X-Y_plot_of_algorithmically-generated_AI_art_of_European-style_castle_in_Japan_demonstrating_DDIM_diffusion_steps.png
原理については下記がわかりやすいです。
https://qiita.com/omiita/items/ecf8d60466c50ae8295b
学習(AIの訓練=10億個のパラメータの決定)をどうするかというと、言葉と画像を与えて、画像に1000段階で少しずつノイズを加えて「砂嵐」にしながらその除去の仕方をAIに覚えさせます。具体的には、加えたノイズはわかっているので、1000段階でそれを求めさせ、正解と比較して正解が得られるように調整します。その過程で10億個のパラメータの中に画像と言葉の情報が埋め込まれる(「潜在空間」と名付けられている)ため、応用が効くようになるそうです。これは人間の脳が人の顔などの画像を覚えるときも同じようなことをやっているのでしょうね。人の名前と特徴を潜在的に覚えているわけです。たしかに、大発明だと思います。
講義の動画も紹介されていました。

当然、思っているのと違うものを「復元」することもあるはずなので、イラストの場合ならば、いくつも候補を作らせて人間がいいのを選ぶという方法をとります。

英語は、 https://en.wikipedia.org/wiki/Stable_Diffusion から。
”Introduced in 2015, diffusion models are trained with the objective of removing successive applications of Gaussian noise on training images, which can be thought of as a sequence of denoising autoencoders.”
objective of … ~を目的として
successive applications of ~ を順繰りに適用する
Gauusian noise ガウシアンノイズ 正規分布に従うノイズ
denoising ノイズ除去
autoencoder オートエンコーダー これは機械学習を習うと最初に出てきて何のためにやるのか最初は全くわかりませんが、簡単に言うと情報量を正しく圧縮するための仕組みです。
“Stable Diffusion consists of 3 parts: the variational autoencoder (VAE), U-Net, and an optional text encoder.
The VAE encoder compresses the image from pixel space to a smaller dimensional latent space, capturing a more fundamental semantic meaning of the image.”
variational 変分(へんぶん) 数学用語です。
latent space 潜在空間  cf. latent heat 潜熱
semantic 意味論的な
“Gaussian noise is iteratively applied to the compressed latent representation during forward diffusion.”
iteratively 「イ」テラティヴり 繰り返し  iterate 「イ」テレイト 繰り返す
“The U-Net block, composed of a ResNet backbone, denoises the output from forward diffusion backwards to obtain a latent representation.” “Finally, the VAE decoder generates the final image by converting the representation back into pixel space.”
representation 表現

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA