Autoencoder
ニューラルネットワークは画像を認識させる際に、元情報よりも低次元で表現するようにネットワークを構成することが出来ます。
そのような低次元で表現された空間には、学習に使用した情報の要素が詰まっているとも言えます。
要素が詰まっているのですから、その情報を抜き出して再び画像にすれば、ニューラルネットワークが思っている物の片鱗を見ることが出来る…かもしれません。
技法的にはオートエンコーダと呼ばれるものなのですが、画像認識に使用しているヴィヴィオ達の画像を使用して計算させてみました。
Autoencoderを通したヴィヴィオ達
結果は以下のような感じです。
多分、リリカルなのはVividをよく知っている人であれば、誰か答えられるのではないかと思います。
今回は100次元で表現してみましたが、多分もっと少ない要素で表現出来そうで、ヴィヴィオ達は見た目だけでもかなり分類しやすそうに感じます。(…ってプロの方がそうなる様にデザインされているわけですから、そりゃそうなりますね。)
次元数を下げるほどぼやけた画像になっていき、極端に下げると「黄色っぽい」「みどりっぽい」だけの画像になります。
学習結果の応用
この学習は、
- 「ヴィヴィオの絵」 + 「ヴィヴィオ」
- 「アインハルトの絵」 + 「アインハルト」
- 「リオの絵」 + 「リオ」
- 「コロナの絵」 + 「コロナ」
という入力で学習させましたので、以下の様な入力を受け付けます。
- 「ヴィヴィオの絵」 + 「アインハルト」
- 「写真」 + 「ヴィヴィオ」
これを使えば、入力された画像をヴィヴィオっぽくしたり、アインハルトっぽくしたりする事が出来そうです。
試しに自分の絵を使って実行してみたものがこちら。
…心の目で見ればなっているような、なっていないような。
今回やったことを図にすると、以下の様になります。