ディープラーニングのための数学勉強結果「ベクトル」

本シリーズでは、以下の本に沿って数学を解説している。

https://amzn.to/3jFxhxs

前回は、数列、漸化式、シグマ記号について解説をしてきた。

特にシグマ記号は頻繁に出てくるし、慣れないと厄介なので、繰り返し使って感覚を身に付けていこう。

前回の記事は以下。

さて、今回はベクトルを扱う。

基本は高校で学習した内容だが、ちょっと発展させた内容も含まれる。

できるだけ感覚的に理解できるよう解説するつもりなので、気楽に取り組もう。

スポンサーリンク

ベクトル

まずは、このベクトルとは何者かを解説していこう。

これまで扱ってきた数学の内容は、基本的にについてのものだった。

関数は最終的に一つの数を表すし、数列も各項で見ればそれぞれ数だ。

しかし、ベクトルは扱う量が増える。

ベクトルは、大きさと向きを持った量、と定義される。

矢印をイメージしてもらうといいだろう。

矢印は、ある場所から、どこかに向かって、大きさを持って向いている

これを、数学的に表したものがベクトルだ。

なお、この矢印のことを有向線分という言い方をする。

向きを持つ(有向)線分、という意味だ。

その矢印の出ている点を始点、矢印の先を終点と呼ぶ。

つまり、属性としては始点の位置終点への向き矢印の大きさという3要素を持つことになる。

さて、数学的に定義して数式で使いたいので、記号も決めてしまおう。

幾つか表し方があり、2種類ほど紹介する。

まず、始点を\(A\)、終点を\(B\)としたベクトルは、\(\overrightarrow{AB}\)と表記する。

あるいは、その矢印を表す一文字だけ使って\(\overrightarrow{a}\)と表すこともある。

高校では、主にこの2種類を使っていたと思う。

本講座では、基本的に後者を使っていこう。

なお、本来はもう一つあり、一文字を太字にする書き方もある。

実は本でもその表記が使われているのだが、ちょっとここでの表記方法が分からなかったので、矢印を使っていこう。

ベクトルの成分表示

さて、ベクトルの記号自体は定義したが、その中身も決めていこう。

まず、前提として2次元ベクトルから考えていく。

平面座標上に矢印を置くイメージだ。

そして、その始点は座標\((0, 0)\)に置く。

このとき、矢印の先端が座標\((a_1, a_2)\)にあったとしよう。

この\(a_1\)、\(a_2\)はそれぞれ\(x\)座標、\(y\)座標なので、ただの数字だ。

このベクトルを\(\overrightarrow{a}\)とすると、数式では以下のように書ける。

$$\overrightarrow{a} = (a_1, a_2)$$

始点は原点固定なので、向いている先の座標だけで大きさと向きが一意に決まることになる。

このベクトルの大きさは、ピタゴラスの定理を使って以下の式で求めることができる。

$$|\overrightarrow{a}| = \sqrt{a_1^2 + a_2^2}$$

左辺の\(|\overrightarrow{a}|\)は、そのベクトルの大きさを表す記号だ。

大きさは必ず正の値になるので、平方根にマイナスがつかない点に注意しよう。

さて、ここまで平面座標上について考えていたが、3次元以上になっても考え方は同じだ。

\(n\)次元で考えるとき、座標の数は\(n\)個になるので、ベクトルを表す括弧の中身ももちろん\(n\)個になるし、大きさを考えるときはその\(n\)個を全て2乗してから足し合わせ、その正の平方根を求めればいい。

前回のシグマに慣れるという意味で、\(n\)次元の場合の式を書いておこう。

$$\overrightarrow{a} = (a_1, a_2, …, a_n)$$

$$|\overrightarrow{a}| = \sqrt{\sum_{k=1}^{n}a_k^2}$$

ベクトルの内積

さて、ベクトルを数式として使えるようになった。

ベクトル同士の加算、減算については各座標同士を足したり引いたりしてあげればいい。

では、掛け算を考えてみよう。

しかし、向きと向きの積…なんてなかなかイメージがつかない。

ということで、ベクトル専用の掛け算である内積というものが定義されている。

これで求められるのはベクトル…ではなく、一つの数になる。

二つのベクトル\(\overrightarrow{a}\)と\(\overrightarrow{b}\)の内積の定義は以下の通りだ。

$$\overrightarrow{a} \cdot \overrightarrow{b} = |\overrightarrow{a}||\overrightarrow{b}|\cos{\theta}$$

…いきなり三角関数も出てきてしまっているが、これは定義なので深く考えずにそういうもんなんだと覚えてしまおう。

なお、\(\theta\)は、二つのベクトルがなす角度のことだ。

もう一つ、ベクトルの内積の際は、二つのベクトルの間にある乗算記号(\(\cdot\))は省略できないので、そこも注意だ。

さて、定義を紹介したが、この解釈も一つ紹介しておこう。

このベクトルの内積は、これらのベクトルがどの程度同じ方向を向いているか、という指標と捉えることができる。

例えば、まったく同じ方向を向いているとき、\(\theta\)の値は\(0^\circ\)だ。

つまり、\(\cos{0^\circ} = 1\)となり、単純に大きさ同士の掛け算で値も大きくなる。

直角になっていると、\(\cos{90^\circ} = 0\)なので、内積も0。

逆に、反対方向を向いていると、\(\cos{180^\circ} = -1\)より、小さくなる。

このように、同じ方向を向いているほど大きく、逆を向いているほど小さくなる、という見方をすることができるのだ。

この見方は、畳み込みニューラルネットワークというもので重要になってくる。

内積の成分表示

上の内容で内積が定義されているが、もう一つの表し方がある。

恐らく、こちらの方が単純だろう。

二つの2次元ベクトル\(\overrightarrow{a} = (a_1, a_2)\)と\(\overrightarrow{b} = (b_1, b_2)\)の内積は、以下のようにも表せる。

$$\overrightarrow{a} \cdot \overrightarrow{b} = a_1b_1 + a_2b_2$$

要するに、各成分ごとにかけ合わせたものを足せばいい、ということになる。

これも、3次元以上になっても同じだ。

大きさと同じように、シグマを使って書き表してみよう。

二つの\(n\)次元ベクトル\(\overrightarrow{a} = (a_1, a_2, …, a_n)\)と\(\overrightarrow{b} = (b_1, b_2, …, b_n)\)の内積は以下の通りだ。

$$\overrightarrow{a} \cdot \overrightarrow{b} = \sum_{k = 1}^{n}a_kb_k$$

コーシー・シュワルツの不等式

本に紹介があったので、ここでも紹介しておこう。

コーシー・シュワルツの不等式とは、二つのベクトルの内積に関する性質だ。

式は以下の通り。

$$-|\overrightarrow{a}||\overrightarrow{b}| \leq \overrightarrow{a} \cdot \overrightarrow{b} \leq |\overrightarrow{a}||\overrightarrow{b}|$$

上の説明でほとんど解説してしまっているが、内積の絶対値は大きさの乗算したものの絶対値以下になる、というもの。

これも是非覚えておこう。

なお、証明は簡単。

まず、コサインの定義から、以下の式が成り立つ。

$$-1 \leq \cos{\theta} \leq 1$$

この各辺に\(|\overrightarrow{a}||\overrightarrow{b}|\)を掛ける。

この数字は大きさ同士を掛け合わせたもので必ず0以上なので、不等式の向きを考える必要はない。

$$-|\overrightarrow{a}||\overrightarrow{b}| \leq |\overrightarrow{a}||\overrightarrow{b}|\cos{\theta} \leq |\overrightarrow{a}||\overrightarrow{b}|$$

あとは、真ん中の部分を内積の定義で置き換えるだけ。

$$-|\overrightarrow{a}||\overrightarrow{b}| \leq \overrightarrow{a} \cdot \overrightarrow{b} \leq |\overrightarrow{a}||\overrightarrow{b}|$$

これで証明完了だ。

おわりに

今回はベクトルの解説を行った。

ニューラルネットワークにおいては、ベクトルは結構使われるので、これも是非慣れておくといいだろう。

次回は、行列の解説をしていこう。

私の高校生時代では数Cで軽く出てきただけなので、馴染みのない人も多いかもしれない。

考え方が複雑になってくるので、落ち着いて一つずつ身に付けていこう。

2020/11/02追記1

…行列の解説を書こうとしたのだが、本に行列の知識は前提としない、と記述があった。

そのため、本質的な理解には必要ないと思い、飛ばすことにした。

というわけで、予定を変更して、次回は微分を扱おうと思う。

行列については、必要になったらその時に補足する方針にしよう。

2020/11/02追記2

微分の解説が予想以上に長くなりそうだったので、複数に分割することにした。

ということで、微分の基本に関する記事を公開した。

以下リンクを貼っておくので、よかったら見てもらいたい。

コメント

タイトルとURLをコピーしました