【内積】ベクトル内積の意味をイメージで学ぶ。射影とは?なす角とは?


 ベクトルにおける内積は単なる成分計算ではない。そのことを絵を使って知ってもらいたい。なんとなくのイメージでいいので知っておくと良いだろう。また、大学数学を学ぼうとする方は、内積の話が線型空間やフーリエ解析などの多くの単元で現れていることに気づくだろう。

1. ベクトル内積

 平面ベクトル \vec{a}\vec{b} の内積を考えよう。ベクトルは向き大きさを持っていることに注意する。

1.1 定義

 2つのベクトルの内積は \vec{a}\cdot\vec{b} によって表すことができる。

ベクトル内積の定義

    \begin{eqnarray*}\vec{a}\cdot \vec{b}=|a||b| {\rm cos}\theta\end{eqnarray*}

ここで、|\vec{a}|,|\vec{b}| はそれぞれベクトルの大きさを表す。\theta\vec{a}\vec{b} のなす角度を表している。

IMG_572588C9709F-1

 なす角度 \theta は 0°から180°までで定義される。 図では90°より大きい \theta と90°より小さい\theta の場合を描いた。どちらの場合も使う式は同じである。

1.2 射影をみる

 よく内積では「射影」という言葉が使われる。図は、\vec{a} に垂直な方向から光を当てたときの様子を描いた。

IMG_B2CC24CBAD06-1

 \vec{b} の影になる部分が射影と呼ばれるものである。絵では射影は赤色の線に対応する。これを見れば「なぜ内積の定義に {\rm cos}\thetaが現れるか」がわかるだろう。つまり、下の絵を見て欲しい。

IMG_B730AE4D60AC-1

 赤い射影の部分は、\vec{b} の大きさのを {\rm cos} で表したものになる。つまり、赤線の長さは |\vec{b}|{\rm cos}\theta である。

1.3 それは何を意味する?

 こんな内積なんて定義して何がうれしいか。ベクトルからベクトルに影を作ってハッピーと言ってるわけではない。

 例えば、\vec{a}x 軸方向の単位ベクトル \vec{e} である場合を考えよう。ベクトル \vec{b}(x,y)=(2,3) として同じように x 軸に垂直方向( y 軸方向)から光を当ててみた図である。

IMG_834958F06D7D-1

 いま、影になる部分は青色の単位ベクトル2倍の長さになっていることを確認して欲しい。そして \vec{b}=(2,3) であった。2倍という値は、\vec{b}x 成分に対応している。つまりは、\vec{e} に垂直な光を当てて影になる長さは、\vec{b}x 成分と同じになるのである。

IMG_16EA2A69F0AB-1

 違う言い方をすれば、今の場合、射影の長さはもともとの \vec{e} の何倍かを表しているのである。ベクトルは方向もあるので、次のように捉えることができる。

射影の長さの意味

影を作るほうのベクトル(\vec{b})は、影を作られるほうのベクトル(\vec{e})の方向射影の長さ倍だけ伸びている。

 これは大きさが1の単位ベクトル \vec{e} に限らない。\vec{a} に垂直な方向から光を \vec{b} に当てたときにできる射影の長さ |\vec{b}|{\rm cos}\theta は、\vec{b}\vec{a} 方向に対して \vec{a}大きさの何倍伸びているかを表している。

IMG_5B84A1EBF607-1

 別の光の当て方もある。\vec{b} に垂直な方向から光を当ててみる。

IMG_CABC59FCA327-1

 この場合も同じく、赤い射影の長さ(この場合は、|\vec{a}|{\rm cos}\theta ) は、\vec{a}\vec{b} 方向\vec{b}射影の長さ倍であるということがわかる。

【補足】
 念の為、計算でチェックしておく。ややこしいので飛ばしてもらっても良い。\vec{b}\vec{a} のなす角を \theta とする。このとき、\vec{a} 方向の大きさ1の単位ベクトルは \frac{\vec{a}}{|\vec{a}|} である。射影の長さ |\vec{b}|{\rm cos}\theta\vec{a}n 倍だとすると以下の式が成り立つ。

    \begin{eqnarray*}|\vec{b}|{\rm cos}\theta\, \frac{\vec{a}}{|\vec{a}|}=n\vec{a}\end{eqnarray*}

両辺のベクトルの大きさを取れば、

    \begin{eqnarray*}n=\frac{|\vec{b}|{\rm cos}\theta}{|\vec{a}|}\end{eqnarray*}

となる。\quad \blacksquare

2. ベクトル内積の成分をみる

 内積の成分は以下で計算できる。

内積の定義

ベクトル \vec{a} の成分を (x,y)=(a_1,a_2)、ベクトルb\vec{b} の成分を (x,y)=(b_1,b_2)とすると内積の値は以下のように計算できる。

    \begin{eqnarray*}\vec{a}\cdot\vec{b}=a_1b_1 + a_2b_2\end{eqnarray*}

2.1 内積のおかげ

 射影の長さの何倍とか何の意味があるの?と思うかもしれない。では、\vec{b}=(x,y)=(2,3) のベクトルに対して、x 軸方向とy 軸方向の単位ベクトルとの内積を考えよう。

IMG_DFED4DE56F39-1

 この絵から内積の力がわかるだろうか。

 左の図は x 軸方向の単位ベクトルについての内積の絵である。射影の長さが、x 成分の値に対応するのである。同様に右の図は y 軸方向の単位ベクトルについての内積の絵である。射影の長さが、y 成分の値に対応するのである。

単位ベクトルとの内積

 

単位ベクトルとの内積の値は、内積をとった単位ベクトルの方向の成分である。

単位ベクトル方向の成分の値が分かれば、図のオレンジのようにベクトル \vec{b} を単位ベクトルで表すことができる。

2.2 繋げる(線型結合)

 (2,3) の場合でなくても、平面上のすべてのベクトルは、x 軸方向とy 軸方向の単位ベクトルで表すことができる。

    \begin{eqnarray*}(a,b)=a(1,0)+ b(0,1) = a\vec{e_x}+b\vec{e_y}\end{eqnarray*}

このように、2つのベクトルを足したり引いたりして組み合わせて、平面上のベクトルをつくることを線型結合という。単位ベクトル \vec{e_x},\vec{e_y} でなくても、

    \begin{eqnarray*}(a,b) = c_1\vec{p}+c_2\vec{q}\end{eqnarray*}

のように適当な係数 c_1,c_2 と 適当なベクトル \vec{p},\vec{q} で作っても良い。ただし、平行なベクトルを2つ用意した場合は、線型結合でつくれないベクトルがある。したがって、大きさが0でなくて平行でないベクトルを用意すれば、平面上のベクトルは線型結合で表すことができる。

 線型結合をつくるための2つのベクトルのことを「基底ベクトル」という。2次元の例で説明したが、3次元の場合は「基底ベクトル」は3つあるし、N次元であれば N個の独立な「基底ベクトル」が取れる。

 基底ベクトルは互いに直交している単位ベクトルであると非常に便利である。この基底ベクトルのことを「正規直交基底」という。「正規」は大きさが1になっていることを意味する。この便利さは、高校数学の内容ではなかなか伝わらないと思う。以下の応用になるとわかるのだが…。

2.3 なす角度がわかる

 内積の定義式を変形すれば、

    \begin{eqnarray*}{\rm cos}\theta=\frac{\vec{a}\cdot \vec{b}}{|\vec{a}|\,|\vec{b}|}\end{eqnarray*}

 となる。とくに、ベクトルの大きさが1(|\vec{a}|=|\vec{b}|=1) の場合は、内積 \vec{a}\cdot\vec{b} そのものが {\rm cos}\theta に対応する。

3 ベクトル内積の応用をみる

 内積を使って何ができるか、簡単に応用例を説明する。ここからは、高校では学習しない話になる。

3.1 フーリエ級数での例

 フーリエ級数はベクトル空間の拡張である、関数空間(矢印を関数に拡張した空間)における話になる。また、関数空間においては内積の定義が異なる。

 関数空間の基底は関数である。内積は関数同士をかけて積分するように決められることが多い。例として2次元の関数空間における2個の基底 \{{\rm sin}x, {\rm cos}x \} を考える。この基底の線型結合で作られる関数なんて限られているだろう。

    \begin{eqnarray*}f(x)=2{\rm sin}x + 2{\rm cos}x \\\end{eqnarray*}

おもしろみはない。しかし、関数空間のイメージを理解するにはちょうどいい。

IMG_8FCA47B1C2AF-1

この f(x) において、基底 {\rm sin}x の成分は3である。この3は 基底 {\rm sin}x の「大きさ」の3倍であることを意味するのであった(1.3で述べた射影の長さの意味に対応)。ベクトルの「大きさ」はイメージできるが、「関数の大きさ」とは。それには内積の定義が必要である。

ここでの内積を定義しておこう。f(x)g(x) の内積を、

    \begin{eqnarray*}\int_{-\pi}^{\pi} f(x)g(x) \,dx\end{eqnarray*}

とする。関数 f(x) の「大きさ」は自分自身との内積(ノルム)のルートで与えられる。

    \begin{eqnarray*}\sqrt{\int_{-\pi}^{\pi} f(x)\,f(x) \,dx}\end{eqnarray*}

この定義によれば、基底 {\rm sin}x のノルムは、

    \begin{eqnarray*}\sqrt{\int_{-\pi}^{\pi} {\rm sin}^2x \,dx} = \sqrt{2\pi}\end{eqnarray*}

であることがわかる。ということで {\rm sin}x\sqrt{2\pi} のノルムで割ったものは、ノルム1の関数になる。同様に {\rm cos}x のノルムも \sqrt{2\pi} であることが確認できる。ノルム1のものを基底にとりたいときは、\sqrt{2\pi} であらかじめ割っておけば良い。

    \begin{eqnarray*}\{ {\rm sin}x, \; {\rm cos}x \} \; \rightarrow\;\{ \frac{1}{\sqrt{2\pi}}{\rm sin}x, \; \frac{1}{\sqrt{2\pi}}{\rm cos}x \}\end{eqnarray*}


{\rm sin}x{\rm sin}x が直交するか確かめるために内積をとる。

    \begin{eqnarray*}\int_{-\pi}^{\pi} {\rm sin}x \,{\rm cos}x \, dx&=&\frac{1}{2}\int_{-\pi}^{\pi} {\rm sin}2x \, dx\\&=& \frac{1}{2} \left[ -\frac{1}{2}{\rm cos}2x \right]_{-\pi}^{\pi}\\&=& 0\end{eqnarray*}

確かに直交している。したがって、

    \begin{eqnarray*}\{ \frac{1}{\sqrt{2\pi}}{\rm sin}x, \; \frac{1}{\sqrt{2\pi}}{\rm cos}x \}\end{eqnarray*}

は正規直交基底である。

正規直交基底が分かれば、f(x)\frac{1}{\sqrt{2\pi}}{\rm sin}x の内積が、f(x)\frac{1}{\sqrt{2\pi}}{\rm sin}x における成分 a_1 であることがわかるだろう。つまり、

    \begin{eqnarray*}a_1 &\equiv & \int_{-\pi}^{\pi} f(x)\;\frac{1}{\sqrt{2\pi}}{\rm sin}x \,dx \\&=& \int_{-\pi}^{\pi} \left[ 2{\rm sin}x + 2{\rm cos}x \right] \;\frac{1}{\sqrt{2\pi}}{\rm sin}x&=& 2\sqrt{2\pi}\end{eqnarray*}

である。cosとsinの内積がゼロで直交するので、sinの積の部分のみ計算すればよい。次に、{\sqrt{2\pi}}{\rm cos}x との内積は

    \begin{eqnarray*}b_1 &\equiv & \int_{-\pi}^{\pi} f(x)\;\frac{1}{\sqrt{2\pi}}{\rm cos}x \,dx \\&=& \int_{-\pi}^{\pi} \left[ 2{\rm sin}x + 2{\rm cos}x \right] \;\frac{1}{\sqrt{2\pi}}{\rm cos}x&=& 3\sqrt{2\pi}\end{eqnarray*}

である。したがって、f(x) は2つの正規直交基底を用いて線型結合で表すことができる。

    \begin{eqnarray*}f(x)=a_1 \frac{1}{\sqrt{2\pi}}{\rm sin}x + b_1 \frac{1}{\sqrt{2\pi}}{\rm cos}x\end{eqnarray*}

 無限次元に拡張すれば、おなじみのフーリエ級数の式を得るだろう。ここで、a_1, b_1 などをフーリエ係数という。ベクトル空間でのベクトルの成分とおなじイメージである。フーリエ係数を求めることは、ざっくりいえば、f(x) がどのような波の重ね合わせで作られているか調べるのと同じである。
 cosとsinの直交性があるから、内積をとることでcosとsinの積は消えて、フーリエ係数が簡単に求められる。これ以上はここでは述べない。

3.2 状態が似ているか?(量子力学の例)

 量子力学では状態をベクトルにしてしまう(状態ベクトル)。関数空間より抽象的な概念であり、新たに内積の定義などを行う必要があるので詳細は立ち入らない。以下では状態ベクトルの直交性について簡単に説明しておく。

 平面ベクトルが直交しているとは、ベクトル同士が90°異なる方向を向いていることである。状態ベクトルのイメージも同じである。大きさが1の2つの状態ベクトルを考えよう。状態ベクトルが直交しているとは、2つの状態が全く違う状態を表しているということである。

 ベクトル同士が同じ方向を向いていたら、そのベクトルはよく似ているといえるだろう。2つの状態ベクトルが似ている状態ならば、当然状態ベクトルの内積も大きくなる。

 抽象的な話になるのでここまでで留めておきたい。

3.3 文章が似ているか?(cos類似度の例)

 量子力学の例で述べたように、ベクトルが似ているとはベクトル同士が同じ方向を向いていることだと考えられる。2つのベクトルの方向を調べるためには、なす角 \theta を調べればよかった。ベクトルの大きさが1(正規化したベクトル)の場合は、

    \begin{eqnarray*}{\rm cos}\theta=\frac{\vec{a}\cdot \vec{b}}{|\vec{a}|\,|\vec{b}|}=\vec{a}\cdot\vec{b}\end{eqnarray*}

であった。

 文章をベクトル化したときの、なす角度 {\rm cos}\theta を「コサイン類似度」とよぶ。コサイン類似度が大きければ文章は似ている(近い方向を向いている)し、コサイン類似度が小さければ文章は似ていない(違う方向を向いている)。

 ディストピア小説であるジョージ・オーウェルの『1984』とファニーなセルバンテスの『ドン・キホーテ』はコサイン類似度は小さいと言えそうである。一方で『1984』とレイ・ブラッドベリの『華氏451度』は同じディストピア小説としてコサイン類似度は高そうである。(『華氏451度』を読んでいないので推測である。)

 私は人間なのでだいたいのコサイン類似度しかわからない。しかし、文章をベクトル化して機械による判別を行えば、いろいろな文章が似てるか似ていないか見分けることができるだろう。文章を分類する上で、ベクトルの内積の重要性がわかったと思う。

4. まとめ

 ポップな絵を使ったベクトル内積の説明とうってかわって、後半の応用はやや複雑である。ともかく、内積がいろいろなところで使われていてめっちゃ便利だということを知ってもらえれば嬉しい。

 お読みいただきありがとうございました。


コメントを残す

メールアドレスが公開されることはありません。