ディープラーニングG検定の勉強中 その19(成分表示による内積)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、成分表示による内積について見ていきます。


前回は、2つのベクトルが作る角の角度θが分かっている状態で、各ベクトルの量が判明している場合の内積について見ましたが、
今回は、角度が分からず、各ベクトルの成分…2次元の場合は、ベクトル r (r1, r2)、ベクトル x (x1, x2)が判明している場合の内積の算出方法です。

ベクトル r とベクトル x の成分表示が式1のとき、

式1
3-5-2-1.png

式2で成分表示による内積を算出できます。

式2
3-5-2-2.png


それでは、実際に内積を計算してみます。

図1
3-5-2-3.png

図1のベクトル r とベクトル x の成分が式3のとき、

式3
3-5-2-4.png

式4の内積となります。

式4
3-5-2-5.png


今度は、ベクトルが直角三角形になっていない場合の内積です。

図2
3-5-2-6.png

図2の目盛りが「1」の場合、式5の内積が算出されます。

式5
3-5-2-7.png


なお、式2は、多次元にも拡張できるため、式6が成り立ちます。

式6
3-5-2-8.png

式6を簡略化して総和∑で表すと、式7となります。

式7
3-5-2-9.png


成分表示による内積をPythonで確認してみます。

参考サイト
DeepAge(ベクトルの内積や行列の積を求めるnumpy.dot関数の使い方)

--------------------
import numpy as np

r = np.array([-1, 3]) # ベクトル r の成分(r1, r2)
x = np.array([4, 2]) # ベクトル x の成分(x1, x2)

rx = np.dot(r, x)  # 1次元内積の計算(r1・x1 + r2・x2)

print("rx = " + str(rx))

--------------------
出力結果
rx = 2


内積を算出するAPIがあるとは本当に便利なものですね。

ディープラーニングG検定の勉強中 その18(内積)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、内積について見ていきます。


内積は、ベクトル間の積を求めるものです。

参考サイト
Studyplus(【内積とは】ベクトルの内積の意味や公式・計算方法を知って大学合格へ!)

図1
3-5-1-1.png

図1のように、ベクトル r とベクトル x があるとき、
ベクトル x と、ベクトル r の向きと大きさをベクトル x と同じ向きの大きさに換算したもの(ここでは ベクトル x' とする)を掛けることでこの2つのベクトルの内積を算出することができます。

上記の太字は、つまりはベクトル r とベクトル x の比を求めようとしているわけで、要するに、この式は、cosに相当します。

式1 直角三角形で、θ = 30°のときのx / r
3-5-1-2.png

式1によって比が算出されたら、後はベクトル r の式1の比を掛け合わせることで、ベクトル x と同じ向きの大きさベクトル x' が算出されるので、

式2 ベクトル r = 2、ベクトル x = √3 のとき
3-5-1-3.png

図2
3-5-1-4.png

あとは、ベクトル x と、ベクトル x' をかけると、内積が算出されます。

式3
3-5-1-5.png

ベクトル x' は、ベクトル r のことなので、式4となります。

式4
3-5-1-6.png


なお、2つのベクトルは、それぞれが直角三角形の2辺を構成している必要はなく、要は、ベクトル r からのベクトル x と直角になる垂線で新たな直角三角形を作って計算するイメージなので、例えば、
ベクトル r = 3、ベクトル x = 4の場合でも、式5のように内積を算出することができます。

式5 θ = 30°の場合
3-5-1-7.png

この式を一般化すると式6になります。

式6
3-5-1-8.png


なお、ベクトル r とベクトル x の角度θについて、

角度0°のときが最も内積の値が大きくなり(比が1となるため)、
角度180°のときに内積が最小となります(比が-1となるため)。
角度90°のときは、内積は0となります。