理乃美

ソフトとハードと論理の覚え書き

RealNVP を試す

2024-05-05 01:34:48 | AI
引き続いて、Generative Deep Learning [1] の 6章 Normalizing Flow Models のサンプル (realnvp.ipynb)[2]を実行。

6GBしか載っていないRTX A2000でも実行できて、fitに掛かった時間は1分55秒。
得られた変換と逆変換がこちら。


RealNVPは、データ空間のうち興味のある部分は拡大し興味の無い部分は縮小する可逆な変換を学習することで、latent空間の任意の点を選ぶことが興味のある部分の中の任意の点を選ぶことになるような手段を得ることだと理解した。
Variational autocodersのところでKL divergenceを使ってlatent空間がスカスカにならないよう工夫したが、それに近いところがあるのだろうか。だが私には今のところ使い所がピンと来ない。

[1] Generative Deep Learning, 2nd Edition by David Foster, Released May 2023, Publisher: O'Reilly Media, Inc. ISBN: 9781098134181
[2] https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

LSTMを使った文書生成や画像生成を試す

2024-05-01 23:38:41 | AI
引き続いて、Generative Deep Learning [1] の 5章 Autoregressive Modelsのサンプル (lstm.ipynb,pixelcnn.ipynb, pixelcnn_md.ipynb)[2]を実行。

まずは、long short-term memoryを使った文章生成(lstm.ipynb)。
実行自体は簡単。6GBしか載っていないRTX A2000でも実行できた。
fitに掛かった時間は10分。
もともとのサンプルでは"recipe for roasted vegetables | chop 1 /" の次の1単語を生成させていたが、それもつまらないので4単語先まで生成させてみた。
temperature = 0.2での生成例
recipe for roasted vegetables | chop 1 / 4 cup of the
recipe for roasted vegetables | chop 1 / 2 cup of the
temperature = 1.0での生成例
recipe for roasted vegetables | chop 1 / 4 cup of chard
recipe for roasted vegetables | chop 1 / 2 cup tometoes and


tempertureが 0.2でも1.0でも、chop 1 / の次は 2 か 4 が来るのが同じくらいにもっともらしく、その次には cup が来るのが最もありそうというところまでは変わらない。
で、temperature が低いと cup の先が高い確度のもと of the と続く一方で、temperatureが高いと cup の先に続く単語がばらけてくる。

なお、上記の例では4単語先まで生成させているが、さらに長く生成させることもできる。だが、長い文章を生成させるとだんだんと可笑しくなってしまう。
また、temperatureは低ければ元のレシピ文章のなぞりに近くなるはずだが、temperatureが高いほうが同じパターンを繰り返すような場合もあった。このサンプルでは学習に使ったレシピの数が25と少ないので、その影響かなと推測する。つまり、temperatureが高いことで出現頻度の低い単語が一度選ばれてしまうとその単語に続く文言がワンパターンしか学習していないので他のパターンを選びようがない、という事が起きたのではなかろうか。


次にPixelCNNによる画像生成
このようなトレーニング画像をPixelCNNで学習するサンプル。


これも、6GBしか載っていないRTX A2000でも実行できたが、fitに 48分31秒も掛かった。
temperature=1.0で生成した画像がこちら。まあ、なんとなく微妙だなぁ。


じゃあ、temperatureを下げたらどうなるかと試したのがこちら。0.5にするとまともな画像にならないのはなぜだろう。

PixelCNNは左上から順に画像を作る。学習するどの画像も中央に画像があって周囲は白。という事は「上や右が白ならこのpixelも白」と強く学習されていると思われる。temperatureが低いとその学習にひっぱられていつまでも白以外のpixelが現れず仕舞いとなったのだろう。


最後に、Tensorflow distributionsを使ったPixelCNNのサンプル. (pixelcnn_md.ipynb)
6GBしか載っていないRTX A2000で実行し、fitに20分11秒掛かった。
で生成した画像の例がこちら。生成に1分49秒も掛かっているところからワッパが悪いなと感じる。


[1] Generative Deep Learning, 2nd Edition by David Foster, Released May 2023, Publisher: O'Reilly Media, Inc. ISBN: 9781098134181
[2] https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする