前回は、とりあえず可視化をまとめたけど
今回はmetric learningした結果とかも見てみたい.(そもそもそれをするための準備)
l2 constrain softmax lossを当てた場合の、各手法(PCA, t-SNE, UMAP)での可視化をしてみる
複雑になるのでkerasで書いた場合を書いておくが、末尾に純TensorFlowも載せておく. どちらもgoogle colaboratoryでやっているので、その上で動かすことが前提
学習部分
ここは以前も書いているところだが、再度掲載しておく.
この後は、この中間層の特徴量を使って、可視化を行う. 上記は学習まで
特徴量をFC2の手前で抽出
これを次に行い、途中の値を出力. 以下の図でいうところのat test時.

表示部分は、一番上に貼った記事にそれぞれ書いているのでご参照ください.
下記では1000点を抽出してtrainより表示.
可視化結果
左側が生のMNISTデータを次元圧縮して可視化したもの.
右側がL2 Constrain Softmax Lossを導入したmetric learning用CNNで計算した中間層の特徴量ベクトルを可視化したもの
もちろん、次元圧縮した場合、2Dは2次元に3Dは3次元に基本的に圧縮している.PCAは8次元にして、主要なTOP2つ/3つを採用.
PCAの2D表示
PCAの3D表示
比較的わかりやすいが、右側の特徴量でも分離できていないように見える.
これは2Dでも3Dでも同様…
t-SNEの2D表示
t-SNEの3D表示
UMAPの2D表示
UMAPの3D表示
UMAPは高速に次元圧縮できることが強み.
今回の場合は特徴量ベクトルを与えた時に密具合が非常に高い…