前回は、とりあえず可視化をまとめたけど

今回は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は高速に次元圧縮できることが強み.
今回の場合は特徴量ベクトルを与えた時に密具合が非常に高い…