巡回セールスマン問題でニューラルネットの可視化
これは多層パーセプトロンの8次元の入力層から32次元の中間層に対する投射の重みを可視化したもの。なんか構造がありそうに見える。しかしわかりにくい。そもそも横軸は中間層のIDで、中間層のIDは順番に意味がないので、シャッフルされたものを見ているからだ。これを「似たものが隣接するように並び替え」て観察したい。それは巡回セールスマン問題に帰着できる。 https://gyazo.com/25d2a25ab29333331cc6e1e9d021cac4
というわけで並び替えたものがこちら。中間層が半分ずつに分担して、入力の半分だけに注目してることがわかる。
https://gyazo.com/34f4742106426e7ad3fdaf0684bfb5d7
code:python
from matplotlib import pyplot as plt
from ortoolpy import tsp
dist = {(i, j): np.linalg.norm(M:, i - M:, j) for i in range(N)
for j in range(N)
if i != j}
_, result = tsp(range(N), dist)
plt.show()