ディープラーニングについてディープにラーニング。

思いっきり、自分が学んだことのアウトプットしていきますが、何分初心者。もし何かアドバイス等頂けましたら幸いです!

内積とノルム

今日もUDEMYの数学のお勉強。
最近、めっぽう数字にまみれてるなぁ。
でもわかるってやっぱり楽しい。
仕事でも、なんでも、わかると楽しくなってくる。

ではアウトプット。

内積

内積とは、ベクトル同士の各要素の掛け算を行って、最終的に総和を求める事。

例えば、ベクトルaとベクトルbがあって、それぞれ
a = (1,2,3)
b = (2,3,4)

って値を持っていたとする。
そうすると、
1 * 2 + 2 * 3 + 3 * 4 = 20
になる。
これをもう少し数式チックに書くと、
A = (A1,A2,....,An)
B = (B1,B2,.....Bn)

A・B = (A1B1 + A2B2 + A3B3 + ..... + AnBn)になる。
ここでわかるように、内積を求める場合、必ずAとBは同じ要素の数でなければならない。
ちなみに、もちろん総和の話だからΣを使って表現できる。
f:id:kawam0t0:20191218215903p:plain

言語化すると、
Kが1からNまで続く数字で、それぞれのベクトルのa , bにKが掛け算としてくっついていって、
最終各要素を総和するからシグマで表現する。

ノルム


またもや、わからん単語やった。
ノルムとは、ベクトルの大きさを表す量になる。
人工知能でよく使われるのはL2ノルムとL1ノルムらしい。それぞれを解説。

f:id:kawam0t0:20191218220444p:plain


L2ノルム

L2ノルムとは、||x||2と表現して、ベクトルの各要素を2乗して更に各要素を足し合わせる(総和)。
最後に平方根を取って値を計算。

え笑ちょっと待ってって初めはなったけど、計算してみると、
なるほど~となった。

例えば、a = (1,2,3)というベクトルの値があったとする。これをL2ノルムで計算すると、
a =( 1**2 + 2**2 + 3**2 ) * 2分の1

この時の2が注目。
L2の2のことで、
それぞれを2乗して、最後に2分の1を掛け合わせる。
もちろん総和なんで、シグマでもかける。

f:id:kawam0t0:20191218220924p:plain
√を忘れたらあかんでー

L1

次にL1ノルムの話。
L1ノルムは||x||1として表現されて、ベクトルの各要素の絶対値を足し合わせる。

え?絶対値?笑

f:id:kawam0t0:20191218221310p:plain

なるほど。
絶対値とは、0からの距離のことで、マイナスになることはないって話。

数式で表現すると|5| = 5になるらしい。

L1ノルムを表現すると、
a = (1,2,3) → |1|+|2|+|3| → 6になる。
OKOK


んでもって今回もシグマを使って表現すると、
f:id:kawam0t0:20191218221557p:plain

一般化されたノルム

一般化といってもつまりはL2、L1の共通の部分をアルファベットで表現して、どの値でも当てはまるようにってだけ。

x p = (x1 ** p + x2 ** p + x3 ** p + ........... + xn ** p)p/1


になる。
テキストで書くと、各ベクトルの一つ一つの要素にp乗をして、総和する。
最後にp分の1をして表現する。


ノルムは、ディープラーニングにおいて、正規化に使われることが多い。
正規化…必要以上に学習させないようにパラメータを調整して過学習を防ぐこと。