勾配降下党青年局

万国のグラーディエントよ、降下せよ!

Euler vs DDIM

ComfyUI上でDDIMの実装が見たくて探していたのですが、こんな感じでした。あれ・・・Eulerを呼び出してるだけ・・・?というわけで確認していきます。以下の記事を前提とする。 さんぷらーについて - 勾配降下党青年局 DDIMのデフォルト設定()のとき時刻の更…

LyCORISのアルゴリズムまとめ

なんか色々増えてきたのでまとめるよ。りこりこ LoRA LoRAは行列に対して、差分を学習します。このとき、という二つの行列でとすることで、学習対象のパラメータを大幅に削減します。1層目をdown層、2層目をup層と呼びます。学習時は入力に対して、出力をと…

時刻をスキップするときの拡散過程

拡散モデルで定義される、データからノイズを加えていく拡散過程は以下のように定義されています。 ここで時刻の状態を一気にサンプリングできて、 となります。この証明ですが、大抵の場合から始まる帰納法もしくはでごまかすやつを使って証明します。どっ…

さんぷらーについて

各サンプラーの意味とかがなんとなく分かりたくて書いたものです。SDEやODEの導出に関する話はでてきません(分からんし)。 拡散過程の定義 サンプラーによって使われている文字の意味が違うので、ここでは文字をあわせていいきたいと思います。そのため論…

LoRA学習の効率化法?

LoRA学習を効率化できるかもしれない方法を考えたので説明していきます。簡単に言うと従来はLoRAをdown層とup層に分けて二層を順次計算していましたが、down層とup層を合体して、さらに元の重みにマージしてから計算した方が効率が良くなるかもしれませんと…

LoHAでbackwardを定義する理由

LoHAとはアダマール積を使ったLoRAの応用手法です。琥珀青葉(KohakuBlueleaf)さんによってStable-diffusionで実装されました。LoHAの実装ではbackwardが定義されています。Pytorchでは特殊な関数を使わない限りbackwardを定義することはありません。しかしLo…

SD XLの損失関数について確認

SD XLの実装において、損失計算のアルゴリズムが異なり困惑したので、確認してみます。最終的には今までの損失と同値になることが分かりました。 時刻の潜在変数を、ノイズを、UNetをとします。diffusion modelでは、拡散過程tステップは以下のようにあらわ…

Adafactorについて

今回はなぞのおぷてぃまいざーであるAdafactorについて論文の内容を見ていきます。 arxiv.org 概要 AdafactorはAdamを元にした最適化アルゴリズムで、メモリ容量の削減とパラメータスケールに応じた学習率の調整を行う手法です。勾配の二乗指数平均をランク1…

DDSP-SVCについて

こんかいはー、DDSP-SVCがどんな感じか見てみたのでメモしておきます。RVCに対するメリットデメリットなども考察していきます。 実装は以下を参考にしました。 github.com 全体像 DDSP-SVCは拡散モデルベースの音声変換モデルです。HuBERT特徴量・基本周波数…

RVCについて

音声変換手法の一つであるRVC(Retrieval-based-Voice-Conversion)について、色々な情報と実装を流し見して何をやっているか想像してみました。想像なのであっているかどうかはわかりません。RVCの元になっているVITSの元になっているVAEから説明していきます…

LoRAのための特異値分解

特異値分解を解説する記事なんていくらでもありますが、LoRAに関連付けて話す記事なんてないと思うので、ここで書いてみます。まあ自分が特異値分解を理解するためでもあります。行列の右上カッコつき添え字に行数と列数を書きます。 参考記事: yutomiyatak…

noise_predictionモデルとv_predictionモデルの損失

Stable-Diffusionのv1系は画像に加わったノイズを予測するモデルですが、v2の一部はvelocityというものを予測しています。この2つは損失関数が違うのでlossで比べられません。経験的にv_predictionモデルの方が3倍くらいlossが大きくなるイメージですが、数…

ネガティブプロンプトの理論とPerp-Neg

ネガティブプロンプトに関する面白そうな論文を見つけたので、ちょっと読んでみますが、その前にネガティブプロンプトの理論的な背景について自分なりの解釈でまとめてみます。 arxiv.org いきなりですが、拡散モデルはスコアベースモデルと解釈できて、ノイ…

クロネッカー積のランク

LyCORISのlokrで使われる、クロネッカー積とランクの関係が気になったので、検索してみたのですが、 日本語の記事は全く見つからずよく分からない英語の情報だけ見つかったので、その証明を確認してみます。 math.stackexchange.comクロネッカー積とは行列に…

VITS学習メモ

このメモは以下の記事をある程度読んだ上で、自分が戸惑ったところなどを補完するためのものです。私以外が読んで理解の助けになるのかよく分かりません。そもそも間違っているかもしれません。書いてみると理解できていないところがよく分かっていいですね…

ResNet vs Vision Transformer vs MLP-Mixer in おせろ

画像認識系ディープラーニング界隈を盛り上げる三英傑を、オセロで比較してみました。実装は一応貼っておくけど・・・Python3.8が必要です。 GitHub - laksjdjf/DeepReversi: 趣味で作った深層オセロAI モデル構造 全てのモデルがオセロの盤面(白黒の2チャ…

GPT2にアストルフォのdanbooruタグ付けをファインチューニングしてみた

text2imgによる画像生成について、textの方もAI任せにしてーと思っていたのでGPT2にプロンプトを自動生成させるのをやってみます。 以下をぱくっただけです。 github.comnote.com できたモデル furusu/astolfo_prompt_generater · Hugging Face 説明 私が個…

半年前に自分で作った機械学習によるオセロAIの復習をする4

前回はモンテカルロ木探索について適当に紹介しました。今回は学習編です。学習といっても難しいことはしません。単にAI同士で対局したデータを集める⇒ネットワークに学習させる⇒以下ループ、するだけです。ただAI同士の対局では同じ手ばっかり指し手も意味…

RTX3090買ったので、Stable diffusionの学習や画像生成の所要時間をNVIDIA GPUごとに比較してみた

今週のお題「買ってよかった2022」↑なんか書こうとしてた記事とぴったりだったのでいれておく^^いやでもこれって複数の商品を紹介するのかな?RTX3090を買ったので、Paperspace gradient(参考)のFree-GPU達と比較してみます。 元々Ryzen 5 5600X+RTX3070ti…

半年前に自分で作った機械学習によるオセロAIの復習をする3

前回はネットワークを紹介しました。このネットワークは指し手(方策)と評価値(価値)を返します。このネットワークを利用して、モンテカルロ木探索という手法により、実際の指し手を計算していきます。 モンテカルロ木探索というと、なんだかランダム性が…

半年前に自分で作った機械学習によるオセロAIの復習をする2

前回の続きです。今回はネットワーク編です。機械学習というか深層学習により、次の手を判断するAIを作ります。前回同様将棋AIで学ぶディープラーニング | マイナビブックスを参考にしています。 ニューラルネットワークを利用した将棋AIといわれて私が最初…

半年前に自分で作った機械学習によるオセロAIの復習をする1

半年前に下記の本を見て、将棋AIについて学んだものの、将棋だとあまりにも実装が難しく、学習時間もかかるのでオセロAIを作ってました。その後画像生成AIとかに興味が移ってしまったのですが、せっかくこんなのを立ち上げたので、忘れないうちに復習してお…

Stable diffusion 2.0で使われた漸進的蒸留をなんとなく理解したような気がする可能性があるかもしれない。

SD2.0では、512×512の画像で普通に学習した後、768×786の画像を下記の論文による手法で学習したそうです。ざっくりと説明すると、samplerのステップ数を半分にしても生成できるようにする方法です。それにもかかわらず、Stability AIがステップ数を減らして…

Stable diffusion関連のメモ

勢いで開設したものの、現段階で書くことがとくにないので、Stable diffusion関連で自分自身が把握しているものとか、気になってることいろいろまとめよー。 理解している自信があるものほど字を濃くしていく。 ネットワーク関連 Text Encoder 画像と文章を…

さいしょのきじ

noteにStable diffusion関連の記事を書いてきたけど、だんだんブログ化してきてしまったので、こっちにきてみた。しばらくは画像生成AI関連のメモを置いておくことになる気がする。 https://note.com/gcem156