Hi there👋 I am 楊 之介 (よう のすけ)

I am 1st year master student at HamadaLab@Waseda University supervised by Prof.Hamada Michiaki . My major is computational biology and machine learning which includes single cell biology, optimal transport, generative modeling like LLM, Diffusion Models, and Causal Inferences.

拡散モデルの前日譚

この記事とは 拡散モデルの初歩的なモチベについてまとめてみた 特にScoreとは何か, 拡散モデルではDenoisingをすると言われるが, ScoreとDenoisingはどういう関係性にあるのかに注目して記述した この記事の執筆にあたってはこのAyan DasさんのICLR 2024 BlogpostsであるBuilding Diffusion Model’s theory from ground upを多いに参考させて頂きました. もし英語が読めるならこちらを読んでください… “Score"とは? 真の確率分布$p(x)$を考えたとき, そのScore $s(x)$は以下のように, $$\nabla_x \log p(x) := s(x), $$ 真の確率分布の対数を取ったもの(=対数尤度)の勾配として定義される. これは対数尤度の勾配, つまり対数尤度が増加する方向を指す. つまり言ってしまえば「データ空間上で今の点からどの方向に動けば良いデータが手に入るか」をScoreは教えてくれるのだ. 下記の画像は簡単な二次元正規分布とそのScore(矢印)を可視化したものである. Scoreは便利 確率分布とは簡単に言ってしまえば全空間で積分したら$1$になる非負の関数1である. 空間の部分で積分したらその部分の確率が現れる. さて突然だがなんかいい感じな確率分布を自作してみよう. $y=\exp(\tan(\sin(\cos(x))))$みたいにとても複雑な分布を素朴に作って遊んでみよう. 確率分布も関数なので好き勝手に複雑にして良い. 非負はまあ守れるだろう. 積分したら$1$という条件があるが, これも好き勝手に複雑にした後に全体を正規化(=用意した関数を全空間で積分したもので割る)すればどうにでもなる. なので, $$p_\text{ExtremeComplex}(x)=\frac{\text{NonNegativeExtremeComplexFunction(x)}}{\displaystyle \int_x \text{NonNegativeExtremeComplexFunction(x)} dx}, $$ というノリでいくらでも複雑な分布が用意できるのだ!!!…本当か? $\displaystyle \int_x \text{NonNegativeExtremeComplexFunction(x)} dx$は本当に計算できるのだろうか. いやそんなことはないだろう. 積分計算は難しく, 解析解が得られることはほとんどなく, 近似計算も非積分関数が複雑, もしくは積分空間が高次元になれば極めて難しくなる. そのため適当にデザインした複雑な確率分布では正規化係数(分配関数とも呼ばれる)が計算できず, 結果として各点の確率分布の値が計算できなくなる. Scoreはこの問題を解決してくれる. 例えば上の$p_\text{ExtremeComplex}(x)$のスコアを求めてみる. $$ \begin{aligned} s_{\text{ExtremeComplex}}(x)&=\nabla_x \log p_\text{ExtremeComplex}(x)\\ &= \nabla_x \text{NonNegativeExtremeComplexFunction(x)} \\ &\quad \quad - \underbrace{\nabla_x \int_x \text{NonNegativeExtremeComplexFunction(x)} dx}_{=0(\text{定数なので})} \\ &= \nabla_x \text{NonNegativeExtremeComplexFunction(x)} \end{aligned}$$ そう, 積分計算は定数なので微分されて消えるのだ. ...

November 9, 2024