線形変換
いよいよきました線形変換。
なんか人工知能感が増してきたなぁ…
ではアウトプット。
線形変換
ベクトルを行列と掛け算することで、違うベクトルに変換すること。
線形変換はニューラルネットワークで情報を伝播させる際によく使うみたい。
例えば、こんな行列があったとしよう。
A = [2,-1]
[2,-2]
次にこんなベクトルがあったとしよう。
→a = [2 , 3]
このベクトルと、Aの行列を使って、ベクトルの変換(線形変換)を行う。
積自体はもちろん行列積で計算。
一応パイソンで書いた時のコードも載せておく
import numpy as np import matplotlib.pyplot as plt %matplotlib inline a = np.array([2,3]) #行列 b = np.array([[2,-1], [2,-2]]) #線形変換 c = np.dot(b,a) print("a:",a) print("b:",b) def arrow(start , size , color): plt.quiver(start[0],start[1],size[0],size[1],angles="xy",scale_units="xy",scale=1,color=color) #始点 s = np.array([0,0]) arrow(s , a , "red") arrow(s , c , "blue") plt.xlim([-3,3]) plt.ylim([-3,3]) plt.grid()
本来の赤線が線形変換により、青のベクトルに変わった。
標準基底
言葉は難しいが、要はベースになる、超入門ベクトルを標準基底っていう。
↑標準基底
例えば、こんなベクトルがあったとしよう。
→a = [2 , 3]
これを標準基底で分解すると、こんな風になる。
ここで言いたいのは、
ベクトルは標準基底と定数の積の和として表現することができる
import numpy as np import matplotlib.pyplot as plt %matplotlib inline #ベクトル a = np.array([1,3]) #行列 A = np.array([[1,-1],[2,-1]]) #線形変換→線形変換させるときは、行列×ベクトル b = np.dot(A,a) def arrow(start , size , color): #始点のx座標,始点のy座標,ベクトルのx座標,ベクトルのy座標 plt.quiver(start[0],start[1],size[0],size[1],angles="xy",scale_units="xy",scale=1,color=color) s = np.array([0,0]) arrow(s,a,"red") arrow(s,b,"blue") plt.ylim([-3,3]) plt.xlim([-3,3]) plt.grid()