こんにちは、すきにーです。
去年発表されたStableDiffusionに 使われている vae と U-Net について書きたいと思います。
①VAEとは
VAEは教師なし学習であるオートエンコーダーの一種です。
オートエンコーダーとは、入力されたデータを一度圧縮し、重要な特徴量だけを残した後、再度もとの次元に復元処理をするアルゴリズムのことを言います。
入力したデータの次元数をいったん下げ、再び戻して同じデータを出力するので、次元圧縮によく使われます。
オートエンコーダーとVAEの違いは、隠れ層の潜在変数に確率分布を使っているかどうかです。
オートエンコーダーの隠れ層には圧縮された特徴量が潜在変数として存在します。Xというデータを入力したら、隠れ層にはXの圧縮された特徴量が入っているということですね。
VAEの隠れ層では、潜在変数を取得するのに確率分布を使っています。
オートエンコーダーの出力層では、隠れ層の潜在変数を使って元のデータを作成しています。
この流れでVAEはオートエンコーダーのデコーダー部分を使って画像を生成しています。その時に使用する潜在変数を確率分布を使って取得しているという流れです。
②U-netとは
U-Netは、セマンティックセグメンテーション用のモデルです。
図を見るとわかるようにUの字の構造になっていることから、U-netと名付けられました。
U-netはエンコーダーとデコーダーから成るモデルです。
エンコーダー部分で畳み込み、特徴の抽出を行っています。
デコーダー部分では、エンコーダーによって抽出された特徴を受け取り、逆畳み込みを行います。
逆畳み込みでは通常の畳み込みの逆の処理を行います。
逆畳み込みによって特徴マップを大きくします。これをアップサンプリングといいます。
U-netはエンコーダーの特徴マップをデコーダーの特徴マップに連結させるのが特徴になります。
連結させることで、エンコーダーの情報をデコーダーに伝え、分類精度を高めることができます。
参考
オートエンコーダー_Auto Encoder (Vol.21)
https://products.sint.co.jp/aisia/blog/vol1-21
VAE
https://ai-kenkyujo.com/term/what-is-vae/
U-Netとは | スキルアップAI
https://www.skillupai.com/blog/tech/segmentation2/