からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

1.4:内積の性質と計算例【『スタンフォード線形代数入門』のノート】

はじめに

 『スタンフォード ベクトル・行列からはじめる最適化数学』の学習ノートです。
 「数式の行間埋め」や「Pythonを使っての再現」によって理解を目指します。本と一緒に読んでください。

 この記事は1.4節「内積」の内容です。
 内積の定義式を確認して、性質を導出し、内積を使った計算を確認します。

【前の内容】

www.anarchive-beta.com

【他の内容】

www.anarchive-beta.com

【今回の内容】

内積の定義

 まずは、内積(inner product)の定義を確認します。

 ベクトルの内積は、2つのベクトルの積和で定義されます。

 \displaystyle
\begin{aligned}
\mathbf{a}^{\top} \mathbf{b}
   &= \begin{bmatrix}
          a_1 & a_2 & \cdots & a_n
      \end{bmatrix}
      \begin{bmatrix}
          b_1 \\ b_2 \\ \vdots \\ b_n
      \end{bmatrix}
\\
   &= a_1 b_1
      + a_2 b_2
      + \cdots
      + a_n b_n
\\
   &= \sum_{i=1}^n
          a_i b_i
\end{aligned}

 2つのベクトルは同じサイズ(要素数)である必要があります。

内積の性質

 次は、内積の性質を導出します。

交換法則

 交換法則として、次の式が成り立ちます。

 \displaystyle
\mathbf{a}^{\top} \mathbf{b}
    = \mathbf{b}^{\top} \mathbf{a}

 左辺は、「定義の確認」と同じ式です。

 \displaystyle
\mathbf{a}^{\top} \mathbf{b}
    = \sum_{i=1}^n
          a_i b_i

 右辺を展開すると、次の式になります。

 \displaystyle
\begin{aligned}
\mathbf{b}^{\top} \mathbf{a}
   &= \begin{bmatrix}
          b_1 & b_2 & \cdots & b_n
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ a_2 \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= b_1 a_1
      + b_2 a_2
      + \cdots
      + b_n a_n
\\
   &= \sum_{i=1}^n
          b_i a_i
\\
   &= \sum_{i=1}^n
          a_i b_i
\end{aligned}

 両辺が一致しました。

結合法則

 スカラー積の結合法則として、次の式が成り立ちます。

 \displaystyle
(\gamma \mathbf{a}^{\top}) \mathbf{b}
    = \gamma (\mathbf{a}^{\top} \mathbf{b})

 左辺を展開すると、次の式になります。

 \displaystyle
\begin{aligned}
(\gamma \mathbf{a}^{\top}) \mathbf{b}
   &= \left(
          \gamma
          \begin{bmatrix}
              a_1 & a_2 & \cdots & a_n
          \end{bmatrix}
      \right)
      \begin{bmatrix}
          b_1 \\ b_2 \\ \vdots \\ b_n
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          \gamma a_1 & \gamma a_2 & \cdots & \gamma a_n
      \end{bmatrix}
      \begin{bmatrix}
          b_1 \\ b_2 \\ \vdots \\ b_n
      \end{bmatrix}
\\
   &= \gamma a_1 b_1
      + \gamma a_2 b_2
      + \cdots
      + \gamma a_n b_n
\\
   &= \gamma \Bigl(
          a_1 b_1
          + a_2 b_2
          + \cdots
          + a_n b_n
      \Bigr)
\\
   &= \gamma
      \sum_{i=1}^n
          a_i b_i
\end{aligned}

 右辺について、括弧を「定義の確認」の式に置き換えます。

 \displaystyle
\gamma (\mathbf{a}^{\top} \mathbf{b})
    = \gamma
      \sum_{i=1}^n
          a_i b_i

 両辺が一致しました。

分配法則

 ベクトル和の分配法則として、次の式が成り立ちます。

 \displaystyle
(\mathbf{a} + \mathbf{b})^{\top} \mathbf{c}
    = \mathbf{a}^{\top} \mathbf{c}
      + \mathbf{b}^{\top} \mathbf{c}

 左辺を展開すると、次の式になります。

 \displaystyle
\begin{aligned}
(\mathbf{a} + \mathbf{b})^{\top} \mathbf{c}
   &= \left(
          \begin{bmatrix}
              a_1 & a_2 & \cdots & a_n
          \end{bmatrix}
          + \begin{bmatrix}
              b_1 & b_2 & \cdots & b_n
            \end{bmatrix}
      \right)
      \begin{bmatrix}
          c_1 \\ c_2 \\ \vdots \\ c_n
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          a_1 + b_1 & a_2 + b_2 & \cdots & a_n + b_n
      \end{bmatrix}
      \begin{bmatrix}
          c_1 \\ c_2 \\ \vdots \\ c_n
      \end{bmatrix}
\\
   &= (a_1 + b_1) c_1
      + (a_2 + b_2) c_2
      + \cdots
      + (a_n + b_n) c_n
\\
   &= \sum_{i=1}^n
          (a_i + b_i) c_i
\end{aligned}

 右辺を展開すると、次の式になります。

 \displaystyle
\begin{aligned}
\mathbf{a}^{\top} \mathbf{c}
+ \mathbf{b}^{\top} \mathbf{c}
   &= \begin{bmatrix}
          a_1 & a_2 & \cdots & a_n
      \end{bmatrix}
      \begin{bmatrix}
          c_1 \\ c_2 \\ \vdots \\ c_n
      \end{bmatrix}
      + \begin{bmatrix}
          b_1 & b_2 & \cdots & b_n
        \end{bmatrix}
        \begin{bmatrix}
          c_1 \\ c_2 \\ \vdots \\ c_n
        \end{bmatrix}
\\
   &= a_1 c_1 + a_2 c_2 + \cdots + a_n c_n
      + b_1 c_1 + b_2 c_2 + \cdots + b_n c_n
\\
   &= \sum_{i=1}^n
          a_i c_i + b_i c_i
\\
   &= \sum_{i=1}^n
          (a_i + b_i) c_i
\end{aligned}

 両辺が一致しました。

内積の計算例

 続いて、内積を用いた計算式を導出します。

標準単位ベクトル

 標準単位ベクトルは、1つの要素(成分)が1でそれ以外の要素が0のベクトルです。

 \displaystyle
\mathbf{e}_i
    = \begin{bmatrix}
          e_1 \\ \vdots \\ e_{i-1} \\ e_i \\ e_{i+1} \\ \vdots \\ e_n
      \end{bmatrix}
    = \begin{bmatrix}
          0 \\ \vdots \\ 0 \\ 1 \\ 0 \\ \vdots \\ 0
      \end{bmatrix}

  i番目の要素 e_iが1の単位ベクトルを \mathbf{e}_iとします。

  \mathbf{e}_iとの内積は、 i番目の要素になります。

 \displaystyle
\begin{aligned}
\mathbf{e}_i^{\top} \mathbf{a}
   &= \begin{bmatrix}
          e_1 & \cdots & e_i & \cdots & e_n
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ \vdots \\ a_i \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= e_1 a_1
      + \cdots
      + e_i a_i
      + \cdots
      + e_n a_n
\\
   &= 0 a_1
      + \cdots
      + 1 a_i
      + \cdots
      + 0 a_n
\\
   &= a_i
\end{aligned}

  e_j = 0\ (j \neq i)に対応する要素 a_jは0で消え、 e_j = 1に対応する要素 a_iのみが残ります。

 1ベクトルは、全ての要素が1のベクトルです。

 \displaystyle
\mathbf{1}
    = \begin{bmatrix}
          1 \\ 1 \\ \vdots \\ 1
      \end{bmatrix}

 ベクトルのサイズは文脈に依存します。ここでは n個とします。

  \mathbf{1}との内積は、 n個の要素の和になります。

 \displaystyle
\begin{aligned}
\mathbf{1}^{\top} \mathbf{a}
   &= \begin{bmatrix}
          1 & 1 & \cdots & 1
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ a_2 \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= 1 a_1
      + 1 a_2
      + \cdots
      + 1 a_n
\\
   &= \sum_{i=1}^n a_i
\end{aligned}

 1との積和なので、 \mathbf{a}の総和になります。

平均

  n個の標本平均は、次の式で定義されます。

 \displaystyle
\mathrm{avg}(\mathbf{x})
    = \frac{x_1 + x_2 + \cdots + x_n}{n}
    = \frac{1}{n}
      \sum_{i=1}^n
          x_i

  \mathbf{x}の平均を \mathrm{avg}(\mathbf{x})で表します。

 平均は、 \frac{1}{n} \mathbf{1}^{\top}との内積で計算できます。

 \displaystyle
\begin{aligned}
\mathrm{avg}(\mathbf{a})
   &= \frac{1}{n} \mathbf{1}^{\top} \mathbf{a}
\\
   &= \frac{1}{n}
      \begin{bmatrix}
          1 & 1 & \cdots & 1
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ a_2 \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= \begin{bmatrix}
          \frac{1}{n} & \frac{1}{n} & \cdots & \frac{1}{n}
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ a_2 \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= \frac{1}{n} a_1
      + \frac{1}{n} a_2
      + \cdots
      + \frac{1}{n} a_n
\\
   &= \frac{a_1 + a_2 + \cdots + a_n}{n}
\end{aligned}

 または、「和」の式に置き換えます。

 \displaystyle
\begin{aligned}
\mathrm{avg}(\mathbf{a})
   &= \frac{1}{n} \sum_{i=1}^n a_i
    = \frac{1}{n} \mathbf{1}^{\top} \mathbf{a}
\end{aligned}

 総和を要素数で割るので、 \mathbf{a}の平均になります。

二乗和

 同じベクトルの内積は、2乗和になります。

 \displaystyle
\begin{aligned}
\mathbf{a}^{\top} \mathbf{a}
   &= \begin{bmatrix}
          a_1 & a_2 & \cdots & a_n
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ a_2 \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= a_1 a_1
      + a_2 a_2
      + \cdots
      + a_n a_n
\\
   &= \sum_{i=1}^n
          a_i^2
\end{aligned}

 同じ要素の積和なので、 \mathbf{a}の2乗和になります。

二乗平均

  n個の要素の二乗平均は、次の式で定義されます。

 \displaystyle
\mathrm{ms}(\mathbf{x})
    = \frac{
          x_1^2 + x_2^2 + \cdots + x_n^2
      }{
          n
      }
    = \frac{1}{n}
      \sum_{i=1}^n
          x_i^2

  \mathbf{x}の二乗平均を \mathrm{ms}(\mathbf{x})で表します。

 二乗平均は、内積を用いて、次の式でも計算できます。

 \displaystyle
\mathrm{ms}(\mathbf{x})
    = \frac{
          \mathbf{x}^{\top} \mathbf{x}
      }{
          n
      }


選択的総和

  b_1, b_3, b_4が1でそれ以外の要素が0のベクトルを \mathbf{b} = (1, 0, 1, 1, 0, \cdots, b_n)^{\top}とすると、 \mathbf{b}との内積は、次の式になります。

 \displaystyle
\begin{aligned}
\mathbf{b}^{\top} \mathbf{a}
   &= \begin{bmatrix}
          b_1 & b_2 & \cdots & b_n
      \end{bmatrix}
      \begin{bmatrix}
          a_1 \\ a_2 \\ \vdots \\ a_n
      \end{bmatrix}
\\
   &= b_1 a_1
      + b_2 a_2
      + b_3 a_3
      + b_4 a_4
      + b_5 a_5
      + \cdots
      + b_n a_n
\\
   &= 1 a_1
      + 0 a_2
      + 1 a_3
      + 1 a_4
      + 0 a_5
      + \cdots
      + 0 a_n
\\
   &= a_1 + a_3 + a_4
\end{aligned}

 「標準単位ベクトル」との内積と同様に、値が1の要素に対応する要素のみが取り出されるので、それらの和になります。

 この記事では、内積の性質を確認しました。次の記事では、ノルムの性質を確認します。

参考書籍

  • Stephen Boyd・Lieven Vandenberghe(著),玉木 徹(訳)『スタンフォード ベクトル・行列からはじめる最適化数学』講談社サイエンティク,2021年.

おわりに

 1章の数式の行間埋めは飛ばしてもいいかなと思っててたのですが、 \mathrm{avg}(\mathbf{x})が今後も登場するようなので引用しやすいように書いておきました。

 3月10日はさとうの日ということで佐藤優樹さんの新曲を聴きましょう。

 デビューまで1か月を切ってワクワクソワソワする。

【次の内容】

www.anarchive-beta.com