和積の変換公式とその導出|三角関数の公式を完全に理解する #3

f:id:lib-arts:20210213195311p:plain

三角関数の公式は数が多く大変なので、まとめて抑えるにあたってなるべくシンプルな導出について取り扱っていくシリーズです。
#1では加法定理とその導出について、#2では倍角の公式・半角の公式について取り扱いました。

#3では和積の変換公式とその導出について取り扱います。
主に下記を参考に進めます。

大学受験数学 三角関数/公式集 - Wikibooks

以下当記事の目次になります。
1. \sin{a} \pm \sin{b}の変換について
2. \cos{a} \pm \cos{b}の変換について
3. まとめ


1. \sin{a} \pm \sin{b}の変換について
1節では\sin{a} \pm \sin{b}の変換について取り扱います。まず、変換公式は下記のように表すことができます。

\displaystyle \sin{a} + \sin{b} = 2\sin{\frac{a+b}{2}}\cos{\frac{a-b}{2}}
\displaystyle \sin{a} - \sin{b} = 2\cos{\frac{a+b}{2}}\sin{\frac{a-b}{2}}

以下上記の導出を行います。

\displaystyle \sin{a} + \sin{b} = 2\sin{\frac{a+b}{2}}\cos{\frac{a-b}{2}}の導出について
a+b=xa-b=yとおくと、\displaystyle a=\frac{x+y}{2}\displaystyle b=\frac{x-y}{2}と表すことができる。
このとき加法定理により下記のように計算できる。
\displaystyle \sin{a} + \sin{b} = \sin{\frac{x+y}{2}} + \sin{\frac{x-y}{2}}
  \displaystyle = \left( \sin{\frac{x}{2}}\cos{\frac{y}{2}}+\cos{\frac{x}{2}}\sin{\frac{y}{2}} \right) + \left( \sin{\frac{x}{2}}\cos{\frac{y}{2}}-\cos{\frac{x}{2}}\sin{\frac{y}{2}} \right)
  \displaystyle = 2\sin{\frac{x}{2}}\cos{\frac{y}{2}}
  \displaystyle = 2\sin{\frac{a+b}{2}}\cos{\frac{a-b}{2}}

\displaystyle \sin{a} - \sin{b} = 2\cos{\frac{a+b}{2}}\sin{\frac{a-b}{2}}の導出について
a+b=xa-b=yとおくと、\displaystyle a=\frac{x+y}{2}\displaystyle b=\frac{x-y}{2}と表すことができる。
このとき加法定理により下記のように計算できる。
\displaystyle \sin{a} - \sin{b} = \sin{\frac{x+y}{2}} - \sin{\frac{x-y}{2}}
  \displaystyle = \left( \sin{\frac{x}{2}}\cos{\frac{y}{2}}+\cos{\frac{x}{2}}\sin{\frac{y}{2}} \right) - \left( \sin{\frac{x}{2}}\cos{\frac{y}{2}}-\cos{\frac{x}{2}}\sin{\frac{y}{2}} \right)
  \displaystyle = 2\cos{\frac{x}{2}}\sin{\frac{y}{2}}
  \displaystyle = 2\cos{\frac{a+b}{2}}\sin{\frac{a-b}{2}}

\sin{a} \pm \sin{b}の変換について取り扱えたので1節はここまでとします。


2. \cos{a} \pm \cos{b}の変換について

2節では\cos{a} \pm \cos{b}の変換について取り扱います。変換公式は下記のように表すことができます。
```
\displaystyle \cos{a} + \cos{b} = 2\cos{\frac{a+b}{2}}\cos{\frac{a-b}{2}}
\displaystyle \cos{a} - \cos{b} = -2\sin{\frac{a+b}{2}}\sin{\frac{a-b}{2}}
```
以下上記の導出を行います。

\displaystyle \cos{a} + \cos{b} = 2\cos{\frac{a+b}{2}}\cos{\frac{a-b}{2}}の導出について
a+b=xa-b=yとおくと、\displaystyle a=\frac{x+y}{2}\displaystyle b=\frac{x-y}{2}と表すことができる。
このとき加法定理により下記のように計算できる。
\displaystyle \cos{a} + \cos{b} = \cos{\frac{x+y}{2}} + \cos{\frac{x-y}{2}}
  \displaystyle = \left( \cos{\frac{x}{2}}\cos{\frac{y}{2}}-\sin{\frac{x}{2}}\sin{\frac{y}{2}} \right) + \left( \cos{\frac{x}{2}}\cos{\frac{y}{2}}+\sin{\frac{x}{2}}\sin{\frac{y}{2}} \right)
  \displaystyle = 2\cos{\frac{x}{2}}\cos{\frac{y}{2}}
  \displaystyle = 2\cos{\frac{a+b}{2}}\cos{\frac{a-b}{2}}

\displaystyle \cos{a} - \cos{b} = -2\sin{\frac{a+b}{2}}\sin{\frac{a-b}{2}}の導出について
a+b=xa-b=yとおくと、\displaystyle a=\frac{x+y}{2}\displaystyle b=\frac{x-y}{2}と表すことができる。
このとき加法定理により下記のように計算できる。
\displaystyle \cos{a} - \cos{b} = \cos{\frac{x+y}{2}} - \cos{\frac{x-y}{2}}
  \displaystyle = \left( \cos{\frac{x}{2}}\cos{\frac{y}{2}}-\sin{\frac{x}{2}}\sin{\frac{y}{2}} \right) - \left( \cos{\frac{x}{2}}\cos{\frac{y}{2}}+\sin{\frac{x}{2}}\sin{\frac{y}{2}} \right)
  \displaystyle = -2\sin{\frac{x}{2}}\sin{\frac{y}{2}}
  \displaystyle = -2\sin{\frac{a+b}{2}}\sin{\frac{a-b}{2}}

\cos{a} \pm \cos{b}の変換について取り扱えたので2節はここまでとします。


3. まとめ
#3では「和積の変換公式」に関して取り扱いました。
#4では「三倍角の公式」について取り扱います。

倍角の公式・半角の公式の式とその導出|三角関数の公式を完全に理解する #2

f:id:lib-arts:20210213195311p:plain

三角関数の公式は数が多く大変なので、まとめて抑えるにあたってなるべくシンプルな導出について取り扱っていくシリーズです。
#1では加法定理とその導出について取り扱いました。

#2では「倍角の公式」・「半角の公式」の式とその導出について取り扱います。基本的には#1で取り扱った加法定理の式から導出が行えるので、#1と比較しながら抑えるのが良いのではと思います。
主に下記を参考に進めます。

大学受験数学 三角関数/公式集 - Wikibooks

以下当記事の目次になります。
1. 倍角の公式の導出
2. 半角の公式の導出
3. まとめ


1. 倍角の公式の導出
1節では「倍角の公式」の導出について取り扱います。まず、倍角の公式は下記のように表すことができます。

\sin{2a} = 2\sin{a}\cos{a}
\cos{2a} = 1-2\sin^2{a}
\displaystyle \tan{2a} = \frac{2\tan{a}}{1-\tan^2{a}}

以下、加法定理などを元に上記の導出について確認を行います。

\sin{2a} = 2\sin{a}\cos{a}の導出

\sin{2a} = \sin{(a+a)}
   = \sin{a}\cos{a}+\sin{a}\cos{a}
   = 2\sin{a}\cos{a}

\cos{2a} = 1-\sin^2{a}の導出

\cos{2a} = \cos{(a+a)}
   = \cos{a}\cos{a}-\sin{a}\sin{a}
   = \cos^2{a}-\sin^2{a}
   = (\cos^2{a}+\sin^2{a})-2\sin^2{a}
   = 1-2\sin^2{a}

\displaystyle \tan{2a} = \frac{2\tan{a}}{1-\tan^2{a}}の導出

\displaystyle \tan{2a} = \frac{\sin{2a}}{\cos{2a}}
  \displaystyle = \frac{2\sin{a}\cos{a}}{1-2\sin^2{a}}
  \displaystyle = \frac{2\sin{a}\cos{a}/\cos^2{a}}{(1-2\sin^2{a})/\cos^2{a}}
  \displaystyle = \frac{2\sin{a}/\cos{a}}{(\cos^2{a}-\sin^2{a})/\cos^2{a}}
  \displaystyle = \frac{2\sin{a}/\cos{a}}{1-\sin^2{a}/\cos^2{a}}
  \displaystyle = \frac{2\tan{a}}{1-\tan^2{a}}

上記のように倍角の公式は加法定理などを用いて示すことができます。


2. 半角の公式の導出

2節で「半角の公式」の導出について取り扱います。まず、半角の公式は下記のように表すことができます。

\displaystyle \sin^2{\frac{a}{2}} = \frac{1}{2}(1-\cos{a})
\displaystyle \cos^2{\frac{a}{2}} = \frac{1}{2}(1+\cos{a})
\displaystyle \tan^2{\frac{a}{2}} = \frac{1-\cos{a}}{1+\cos{a}}

以下、倍角の公式を元に上記の導出について確認を行います。

\displaystyle \sin^2{\frac{a}{2}} = \frac{1}{2}(1-\cos{a})の導出

\displaystyle \cos{a} = \cos{\left( \frac{a}{2}+\frac{a}{2} \right)}
  \displaystyle = 1-2\sin^2{\frac{a}{2}}
上記を\displaystyle \sin^2{\frac{a}{2}}に関して整理すると、\displaystyle \sin^2{\frac{a}{2}} = \frac{1}{2}(1-\cos{a})となる。

\displaystyle \cos^2{\frac{a}{2}} = \frac{1}{2}(1+\cos{a})の導出

\displaystyle \cos{a} = \cos{\left( \frac{a}{2}+\frac{a}{2} \right)}
  \displaystyle = 1-2\sin^2{\frac{a}{2}}
  \displaystyle = 2\cos^2{\frac{a}{2}}-1
上記を\displaystyle \cos^2{\frac{a}{2}}に関して整理すると、\displaystyle \cos^2{\frac{a}{2}} = \frac{1}{2}(1+\cos{a})となる。

\displaystyle \tan^2{\frac{a}{2}} = \frac{1-\cos{a}}{1+\cos{a}}の導出

\displaystyle \tan{\frac{a}{2}} = \frac{\sin^2{\frac{a}{2}}}{\cos^2{\frac{a}{2}}}
  \displaystyle = \frac{\frac{1}{2}(1-\cos{a})}{\frac{1}{2}(1+\cos{a})}
  \displaystyle = \frac{1-\cos{a}}{1+\cos{a}}

上記のように半角の公式は倍角の公式などを用いて示すことができます。

 

3. まとめ
#2では「倍角の公式」と「半角の公式」に関して取り扱いました。
#3では「和積の変換公式」について取り扱います。

固有値・固有ベクトル②(行列のn乗を理解する)|行列〜線形代数の基本を確認する #4

f:id:lib-arts:20210213195311p:plain

当シリーズでは高校〜大学教養レベルの行列〜線形代数のトピックを簡単に取り扱います。#1では外積の定義とその活用について、#2では逆行列の計算について、#3では固有値固有ベクトルの計算についてそれぞれ簡単に取り扱いました。

#4では行列のn乗について取り扱います。下記などを参考にします。

線型代数学/行列の対角化 - Wikibooks

以下、目次になります。
1. 行列のn乗の計算の流れ
2. 固有値固有ベクトルを用いた行列のn乗の計算の理解
3. まとめ


1. 行列のn乗の計算の流れ
1節では行列のn乗の計算の流れについて確認を行います。議論の簡易化のために#3と同様に\displaystyle A=\left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)n乗の計算について取り扱うこととします。このとき、固有値\lambdaとそれに対応する固有ベクトル\vec{x}は#3より下記のようになります。

\lambda=3のとき、\displaystyle \vec{x} = t\left(\begin{array}{c} 1 \\ 1 \\ \end{array} \right)tは任意の実数)
\lambda=1のとき、\displaystyle \vec{x} = t\left(\begin{array}{c} 1 \\ -1 \\ \end{array} \right)tは任意の実数)

上記のように固有値とそれに対応する固有ベクトルが計算できます。ここでは議論の簡略化のため、固有ベクトルt=1とおいて以下確認を行います(tをそのままにした上で議論も可能ですが、複雑なだけであまりリターンはないのでここではなるべくシンプルな議論を行うものとします)。
このとき、固有値固有ベクトルの大元の式より、下記が成立します。

\displaystyle \left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)\left(\begin{array}{c} 1 \\ 1 \\ \end{array} \right) = 3\left(\begin{array}{c} 1 \\ 1 \\ \end{array} \right)
\displaystyle \left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)\left(\begin{array}{c} 1 \\ -1 \\ \end{array} \right) = \left(\begin{array}{c} 1 \\ -1 \\ \end{array} \right)

上記までは#3の議論と同様ですが、行列のn乗を考えるにあたっては上記において固有値ベクトルを並べた\displaystyle X = \left(\begin{array}{rr} 1  1 \\ 1 -1 \\ \end{array} \right)を定義することでその後の計算を行います。このようにXを定義すると、①と②の関係式を元に下記のように書き直せます。

\displaystyle \left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)\left(\begin{array}{rr} 1  1 \\ 1 -1 \\ \end{array} \right) = \left(\begin{array}{rr} 3  1 \\ 3 -1 \\ \end{array} \right)
\displaystyle = \left(\begin{array}{rr} 1  1 \\ 1 -1 \\ \end{array} \right)\left(\begin{array}{rr} 3 0 \\ 0 1 \\ \end{array} \right)

上記の式において、\displaystyle \Lambda = \left(\begin{array}{rr} 3 0 \\ 0 1 \\ \end{array} \right)とおくと、AX=X\Lambdaが成立します。ここでdet(X) = 1\times(-1)-1\times1=-2\neq0より、X正則行列(逆行列X^{-1}が存在する行列)であり、A=X\Lambda X^{-1}が成立します。ここでA^nを考えると、A^n=(X\Lambda X^{-1})^nも成立し、ここでXX^{-1}=Eのように単位行列となることから、A^n=X\Lambda^nX^{-1}が成立します。
ここで\displaystyle \Lambda^n = \left(\begin{array}{rr} 3^n 0 \\ 0 1^n \\ \end{array} \right) = \left(\begin{array}{rr} 3^n 0 \\ 0  1 \\ \end{array} \right)\displaystyle X^{-1} = -\frac{1}{2} \left(\begin{array}{rr} -1 -1 \\ -1  1 \\ \end{array} \right)より、A^nは下記のようになります。

\displaystyle A^n = X\Lambda^nX^{-1}
  \displaystyle = -\frac{1}{2}\left(\begin{array}{rr} 1  1 \\ 1 -1 \\ \end{array} \right)\left(\begin{array}{rr} 3^n 0 \\ 0  1 \\ \end{array} \right)\left(\begin{array}{rr} -1 -1 \\ -1  1 \\ \end{array} \right)
  \displaystyle = \frac{1}{2} \left(\begin{array}{rr} 3^n+1 3^n-1 \\ 3^n-1 3^n+1 \\ \end{array} \right)

このように行列A^nn乗を求めることができます。


2. 固有値固有ベクトルを用いた行列のn乗の計算の理解
1節では固有値固有ベクトルを用いたオーソドックスな行列のn乗の計算について取り扱いましたが、2節ではこの話をより直感的に理解ができるように確認を行います。もちろん固有値固有ベクトルを用いて行列のn乗を求めるプロセスは非常に有用なのですが、いまいち直感的なイメージがわかない導出でもあると思います。
この話を理解するにあたっては固有ベクトルを元にした行列は「元々の行列に対応して操作しやすいように基底(平面や空間を構成するベクトルくらいで理解しておけば十分だと思います。)の変換を行う」と理解すると良いです。だいたいの話においては\displaystyle \vec{e}_1=\left(\begin{array}{c} 1 \\ 0 \\ \end{array} \right)\displaystyle \vec{e}_2=\left(\begin{array}{c} 0 \\ 1 \\ \end{array} \right)が基底となりますが、1節で取り扱った固有ベクトル\vec{u}_1\vec{u}_2とし、こちらを基底に用いて計算を行うことを考えます。
このとき上記で設定した基底を元にベクトル\vec{a}を2通りの表し方で表すことを考えます。

\vec{a} = x_1\vec{e}_1 + y_1\vec{e}_2
 = x_2\vec{u}_1 + y_2\vec{u}_2   ③

上記では(x_1,y_1)\vec{e}_1\vec{e}_2に基づく座標、(x_2,y_2)\vec{u}_1\vec{u}_2に基づく座標のイメージをそれぞれ持つと良いと思います。また、1節の計算結果より、\vec{e}_1\vec{e}_2\vec{u}_1\vec{u}_2に下記のような関係が成り立ちます。

\displaystyle \vec{u}_1 = \left(\begin{array}{c} 1 \\ 1 \\ \end{array} \right) = \vec{e}_1+\vec{e}_2
\displaystyle \vec{u}_2 = \left(\begin{array}{c} 1 \\ -1 \\ \end{array} \right) = \vec{e}_1-\vec{e}_2

これを③に代入します。

\vec{a} = x_2\vec{u}_1 + y_2\vec{u}_2
  = x_2(\vec{e}_1+\vec{e}_2) + y_2(\vec{e}_1-\vec{e}_2)
  = (x_2+y_2)\vec{e}_1 + (x_2-y_2)\vec{e}_2

上記は\vec{a} = x_1\vec{e}_1 + y_2\vec{e}_2でもあるので、x_1=x_2+y_2y_1=x_2-y_2が成立します。この関係は下記のように表すことができます。

\displaystyle \left(\begin{array}{c} x_1 \\ y_1 \\ \end{array} \right) = \left(\begin{array}{c} x_2+y_2 \\ x_2-y_2 \\ \end{array} \right)
   \displaystyle = \left(\begin{array}{rr} 1  1 \\ 1 -1 \\ \end{array} \right)\left(\begin{array}{c} x_2 \\ y_2 \\ \end{array} \right)

このことにより、\displaystyle \left(\begin{array}{c} x_2 \\ y_2 \\ \end{array} \right)に1節で定義したXを左からかけることにより(x_2,y_2)から(x_1,y_1)を求めることができることがわかります。反対にX^{-1}を左からかけることで(x_1,y_1)から(x_2,y_2)を計算することも可能です。これらの処理を図式化すると下記のようになります。

f:id:lib-arts:20210612163756p:plain

このように\vec{e}_1\vec{e}_2に基づく座標系を固有ベクトル\vec{u}_1\vec{u}_2に基づく座標系に変換することについて確認してきたわけですが、固有ベクトルに基づいた座標系を用いることで元の行列による操作を単に固有値倍するだけで変換を求めることが可能になります。これによってA^nを作用させる際などに役に立ち、X^{-1}を元に固有ベクトルに基づいた\vec{u}_1\vec{u}_2を基底に変更し、固有値倍を繰り返し、計算後にXをかけて\vec{e}_1\vec{e}_2に基づいた基底に戻すということも可能になります。

このように固有ベクトルは基底を変換し、計算の簡易化を実現することができますが、これを分散共分散行列に用いるのが主成分分析です。難しく考え過ぎずに単に、固有ベクトルを元に空間を考えると行列演算が簡単になるくらいで抑えておけば十分だと思います。


3. まとめ
#4では行列のn乗の計算とそれに関連して固有ベクトルを用いた処理のイメージについて確認しました。
#5では分散共分散行列の固有値固有ベクトルについて考えます。

加法定理とその導出|三角関数の公式を完全に理解する #1

f:id:lib-arts:20210213195311p:plain

様々な利用シーンで役に立つ三角関数ですが、意味を抑えること自体はそれほど難しくない反面、加法定理、二倍角の定理などのような公式が多くなかなか大変です。ということで「三角関数の公式を完全に理解する(少々タイトルは盛りました)」をテーマに新規のシリーズを始めます。
#1では加法定理とその導出について取り扱います。主に下記を参考に進めます。

高等学校数学II/いろいろな関数 - Wikibooks

以下当記事の目次になります。
1. \sin(a+b) = \sin{a}\cos{b} + \sin{b}\cos{a}の導出
2. \sin(a+b) = \cos{a}\cos{b} - \sin{a}\sin{b}の導出
3. まとめ


1. \sin(a+b) = \sin{a}\cos{b} + \sin{b}\cos{a}の導出
1節では\sin(a+b) = \sin{a}\cos{b} + \sin{b}\cos{a}の導出について取り扱います。
https://ja.wikibooks.org/wiki/高等学校数学II/いろいろな関数#加法定理の導出
基本的には上記の導出を確認します。
まず、単位円を考えた際に角aの表す点A(\cos{a},\sin{a})、角a+bの表す点M(\cos{(a+b)},\sin{(a+b)})とした際にベクトル\displaystyle \overrightarrow{AM}は下記のようになります。

\displaystyle \overrightarrow{AM} = \left(\begin{array}{c} \cos{(a+b)} \\ \sin{(a+b)} \\ \end{array} \right) - \left(\begin{array}{c} \cos{a} \\ \sin{a} \\ \end{array} \right)   ①

f:id:lib-arts:20210609161346p:plain

また、角aの表す点A(\cos{a},\sin{a})、角0の表す点X(\cos{a},\sin{a})としたとき、\displaystyle \overrightarrow{AM}\displaystyle \overrightarrow{XB}ベクトルを角aだけ時計回りに回転させたベクトルに等しくなります。少し話が複雑ですが、以下の図と見比べると理解しやすいと思います。

f:id:lib-arts:20210609154805p:plain

上記のようにそれぞれ点をおいた際に、ベクトル\displaystyle \overrightarrow{XB}は下記のように表すことができます。

\displaystyle \overrightarrow{XB} = \left(\begin{array}{c} \cos{b} \\ \sin{b} \\ \end{array} \right) - \left(\begin{array}{c} 1 \\ 0 \\ \end{array} \right)

また、回転行列をR(a)と置いた際に\displaystyle R(a) = \left(\begin{array}{rr} \cos{a} -\sin{a} \\ \sin{a}  \cos{a} \\ \end{array} \right)であるので、\displaystyle \overrightarrow{AM}は下記のように計算できます。

\displaystyle \overrightarrow{AM} = \left(\begin{array}{rr} \cos{a} -\sin{a} \\ \sin{a}  \cos{a} \\ \end{array} \right) \left(\begin{array}{c} \cos{b}-1 \\ \sin{b} \\ \end{array} \right)   ②

①と②より下記が成立します。

\displaystyle \left(\begin{array}{c} \cos{(a+b)} \\ \sin{(a+b)} \\ \end{array} \right) - \left(\begin{array}{c} \cos{a} \\ \sin{a} \\ \end{array} \right) = \left(\begin{array}{rr} \cos{a} -\sin{a} \\ \sin{a}  \cos{a} \\ \end{array} \right) \left(\begin{array}{c} \cos{b}-1 \\ \sin{b} \\ \end{array} \right)

上記のy成分に着目すると、下記が成立します。

\sin{(a+b)}-\sin{a} = \sin{a}(\cos{b}-1)+\cos{a}\sin{b}

上記を整理すると、\sin(a+b) = \sin{a}\cos{b} + \sin{b}\cos{a}を導出することができます。

 

2. \cos(a+b) = \cos{a}\cos{b} - \sin{a}\sin{b}の導出
2節では\sin(a+b) = \cos{a}\cos{b} - \sin{a}\sin{b}の導出について取り扱います。

\displaystyle \left(\begin{array}{c} \cos{(a+b)} \\ \sin{(a+b)} \\ \end{array} \right) - \left(\begin{array}{c} \cos{a} \\ \sin{a} \\ \end{array} \right) = \left(\begin{array}{rr} \cos{a} -\sin{a} \\ \sin{a}  \cos{a} \\ \end{array} \right) \left(\begin{array}{c} \cos{b}-1 \\ \sin{b} \\ \end{array} \right)

上記は1節で導出した式ですが、こちらのx成分に着目すると下記が成立します。

\displaystyle \cos{(a+b)} - \cos{a} = \cos{a}(\cos{b}-1)-\sin{a}\sin{b}

上記を整理すると、\cos(a+b) = \cos{a}\cos{b} - \sin{a}\sin{b}を導出することができます。


3. まとめ
#1では加法定理の導出について行いました。余弦定理を用いるよりも回転行列を用いる方が導出を抑えておきやすいのではと思われました。
#2では2倍角の定理について取り扱います。

MLP-Mixerの論文の概要を把握する

f:id:lib-arts:20210608191012p:plain

MLP-MixerなどのMLPを用いたとされる論文が話題のようなので、MLP-Mixer論文の概要を把握できればということで当記事にまとめます。

[2105.01601] MLP-Mixer: An all-MLP Architecture for Vision

以下、目次になります。
1. MLP-Mixerの概要(Abstract、Introductionの確認)
1-1 Abstractの確認
1-2 Introductionの確認(Section1)
2. 論文の重要なポイントの抜粋
2-1. Mixer Architecture(Section2)
2-2. Experiments(Section3)
2-3. Related Work(Section4)
2-4. Conclusions(Section5)
3. まとめ


1. MLP-Mixerの概要(Abstract、Introductionの確認)
1-1 Abstractの確認
1-1節では論文のAbstractを確認します。

f:id:lib-arts:20210608191104p:plain

上記がMLP-Mixerの論文のAbstractです。以下、簡単に内容についてまとめます。

・コンピュータビジョンの分野においてCNNやViT(Vision Transformer)は様々な研究で用いられている
・この研究ではMLP(Multi-Layer Perceptron)に基づくMLP-Mixerを導入し、CNNやViTと同様のパフォーマンスを実現できることを示す
MLP-Mixerのモジュールは「1. パッチ(tokenと同義)毎の局所特徴量の計算」と「2. パッチ間の大域的な特徴量の計算」の二つのモジュールからなる
・大規模に学習した際にMLP-Mixerは画像分類(image classification)においてSotAと同様の成果を示した
・この結果がCNNやTransformerの更なる研究に対して指針になるかもしれない

Abstractについて概ね把握できたので1-1節はここまでとします。


1-2 Introductionの確認(Section1)
1-2節ではIntroductionの記載を確認します。

f:id:lib-arts:20210608192719p:plain

第一パラグラフでは、先行研究の紹介にあたってCNN(Convolutional Neural Network)やViT(Vision Transformer)が挙げられています。ViTについては下記の記事などで取り扱いましたのでここでは流します。

f:id:lib-arts:20210608193218p:plain
第二パラグラフではこの論文で提唱するMLP-Mixerの構成について簡単に記載されています。ここで"either spatial locations or feature channels"と表現されているのがこの論文での主題となります(CNNを元に考えるならMobile Netなどに発想は近いと思います)。

f:id:lib-arts:20210608193700p:plain

f:id:lib-arts:20210608193737p:plain

第三パラグラフでは第二パラグラフの内容が少し詳しく記載されています。基本的にpatchesとchannelsが元で、channel-mixing MLP(同じtoken内の計算)とtoken-mixing MLP(違うtokenとの計算)の二つのモジュールが紹介されています。何度か同様の内容を表現を変えて記載されているので、それに気づけばスムーズに把握できるのではないかと思います。また、Figure.1にMLP-Mixerの全体の構成を図示したとされているので、Figure.1も確認します。

f:id:lib-arts:20210608194322p:plain

上記のFigure.1の上の図ではMixer layersの詳細の確認にあたって、token-mixing MLP(左)とchannel-mixing MLP(右)の二つが主に図示されています。全体構成は左下ですが、基本的にMixer layer以外はViTとそれほど変わらない構成と理解しておけば概ね問題なさそうです。

f:id:lib-arts:20210608194811p:plain

第四パラグラフでは、depth-wise convolutionsに関する記載があり、Mobile Netなどを思い浮かべながら確認すると良いのではと思います。また、第五パラグラフではMLP-Mixerがシンプルな構成であるにも関わらずSotAと同等のパフォーマンスを示したことについて記載されています。

 

2. 論文の重要なポイントの抜粋
2-1. Mixer Architecture(Section2)

f:id:lib-arts:20210608200031p:plain

冒頭部の記載では「(i)特定の空間的位置(spatial location)における計算」と「(ⅱ)異なる空間的位置間での計算」の二つをどのように取り扱うかについて記載されています。CNNやViTでは処理における(i)と(ⅱ)の区別が曖昧になりがちな一方でMLPでは明確に区別した(clearly separate)と記載されています。

この話はなかなか興味深く、CNNではMobileNetの畳み込みの分解、TransformerではFFNの計算のところは確かに明確な役割があると思われますが、MLP-Mixerの計算ほど明確に切り分けていないので非常にシンプルな処理と見ることができると思います。


2-2. Experiments(Section3)
2-3. Related Work(Section4)
2-4. Conclusions(Section5)
この記事では省略します。


3. まとめ
当記事ではMLP-Mixerについて取り扱いました。確認した記載のようにCNNやTransformerと比較した際にさらにシンプルになったと考えて良いと思います。
一方で、Transformerにおいてはtoken間の類似度に基づいてtoken間の参照構造のInductive biasについて取り扱っていたのが、MLP-Mixerではパラメータによってtoken間の参照構造を取り扱っていることは抑えておくと良いと思います。どちらが良いかを判断するというよりはそれぞれの処理の前提に何が置かれているかを正確に把握することが重要なのではないかと思います。
Inductive biasについては下記にまとめましたので、詳しく確認したい方は下記も合わせてご確認いただけたらと思います。

固有値・固有ベクトル①(固有値・固有ベクトルの計算)|行列〜線形代数の基本を確認する #3

f:id:lib-arts:20210213195311p:plain

当シリーズでは高校〜大学教養レベルの行列〜線形代数のトピックを簡単に取り扱います。#1では外積の定義とその活用について、#2では逆行列の計算について簡単に取り扱いました。

#3から何度かに分けて固有値固有ベクトルについて取り扱います。#3では2行2列の行列Aに対して固有値固有ベクトルの導出について取り扱います。
当記事では下記を主に参考にして確認していくことにします。

線型代数学/固有値と固有ベクトル - Wikibooks

以下、目次になります。
1. 固有値(eigenvalue)の計算
2. 固有ベクトル(eigenvector)の計算
3. まとめ


1. 固有値(eigenvalue)の計算

1節では2行2列の行列\displaystyle A=\left(\begin{array}{rr} a_{11} a_{12} \\ a_{21} a_{22} \\ \end{array} \right)固有値(eigenvalue)の計算について取り扱います。固有値\displaystyle Ax = \lambda xを満たすスカラー\lambdaのことです。

計算にあたって、Aの具体的な値がわかっている方がイメージがつきやすいと思いますので、\displaystyle A=\left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)固有値を求めるとします。固有値は下記の方程式の解と一致します。

\displaystyle det(A-\lambda E) = 0

上記において、det行列式E単位行列E=\displaystyle A=\left(\begin{array}{rr} 1 0 \\ 0 1 \\ \end{array} \right)を表すものとします。よって、\displaystyle A-\lambda E=\left(\begin{array}{rr} 2-\lambda 1 \\ 1 2-\lambda \\ \end{array} \right)行列式0となるときの\lambdaを求めれば良いということになります。

det(A-\lambda E) = (2-\lambda)^2 - 1^2 = 0
(2-\lambda+1)(2-\lambda-1) = 0
(3-\lambda)(1-\lambda) = 0

上記より、\lambda=1,3が成立し、これが行列\displaystyle A=\left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)固有値となります。

また、固有値の導出の際の計算でa^2-b^2=(a+b)(a-b)を用いましたが、Aが対称行列である際は基本的にこの因数分解の式が使えるので抑えておくと良いかと思います。

固有値の計算について簡単に認できたので1節はここまでとします。


2. 固有ベクトル(eigenvector)の計算

2節では固有ベクトル(eigenvector)の計算について取り扱います。1節と同様に\displaystyle A=\left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)固有ベクトルを求めることとします。

固有ベクトルの計算にあたっては、\displaystyle Ax = \lambda xに求めた固有値\lambdaを代入することでxを求めます。1節で\lambda=1,3を求めたので、以下それぞれについて固有ベクトルを求めます。
\lambda=1のとき

\displaystyle \left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)\left(\begin{array}{c} x \\ y \\ \end{array} \right) = \left(\begin{array}{c} x \\ y \\ \end{array} \right)
より、y=-xが得られます。これによって固有ベクトル\displaystyle t\left(\begin{array}{c} 1 \\ -1 \\ \end{array} \right)tは任意の実数)が得られます。

\lambda=3のとき

\displaystyle \left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)\left(\begin{array}{c} x \\ y \\ \end{array} \right) = 3\left(\begin{array}{c} x \\ y \\ \end{array} \right)
より、y=xが得られます。これによって固有ベクトル\displaystyle t\left(\begin{array}{c} 1 \\ 1 \\ \end{array} \right)tは任意の実数)が得られます。

ここまでの導出により、\displaystyle A=\left(\begin{array}{rr} 2 1 \\ 1 2 \\ \end{array} \right)固有値\lambda=1に対応する固有ベクトル\displaystyle t\left(\begin{array}{c} 1 \\ -1 \\ \end{array} \right)tは任意の実数)、固有値\lambda=3に対応する固有ベクトル\displaystyle t\left(\begin{array}{c} 1 \\ 1 \\ \end{array} \right)tは任意の実数)であることがわかります。


3. まとめ
#3では固有値固有ベクトルの計算について取り扱いました。
#4では固有値固有ベクトルを用いた行列のn乗について取り扱います。

二次形式の微分|ベクトル解析を確認する #2

f:id:lib-arts:20210213195311p:plain

ベクトル解析(vector calculus)の基本的なトピックを確認するシリーズです。
#1では簡単に概要の把握について確認しました。

#2では二次形式(quadratic form)の微分について取り扱います。(二次形式の微分をベクトル解析で取り扱うのが良いのかについては明示的な記載がすぐに見つかりませんでしたが、二次形式の微分については把握しておく方が様々なところで役に立つのでこちらで取り扱うこととしました。)

以下が目次となります。
1. 二次形式(quadratic form)とは
2. 二次形式の微分
3. まとめ


1. 二次形式(quadratic form)とは
1節では二次形式(quadratic form)について簡単に確認します。下記の記載を主に参考にします。

線型代数学/二次形式 - Wikibooks

上記によると、「二次形式とはすべての項の次数が2である多項式のこと」であり、一般に下記の数式で表されるとされています。

\displaystyle \sum_{i,j=1}^{n} a_{ij}x_ix_j = \sum_{i=1}^{n}\sum_{j=1}^{n} a_{ij}x_ix_j

少々上記の式だけだとわかりにくいため、n=2とした上で具体的に考えてみようと思います。まず、n=2の状況では、ij12の値を取るため、x_1x_2a_{11}a_{21}a_{12}a_{22}がここで存在することになります。

ここで\displaystyle A=\left(\begin{array}{rr} a_{11} a_{12} \\ a_{21} a_{22} \\ \end{array} \right)\displaystyle x=\left(\begin{array}{c} x_{1} \\ x_{2} \\ \end{array} \right)とすると下記が成立します。

\displaystyle \sum_{i,j=1}^{2} a_{ij}x_ix_j = \sum_{i=1}^{2}\sum_{j=1}^{2} a_{ij}x_ix_j
   \displaystyle = a_{11}x_1x_1 + a_{12}x_1x_2 + a_{21}x_2x_1 + a_{22}x_2x_2
   \displaystyle = a_{11}x_1^2 + a_{12}x_1x_2 + a_{21}x_2x_1 + a_{22}x_2^2
   \displaystyle = \left(\begin{array}{r} a_{11}x_1+a_{21}x_2 a_{12}x_1+a_{22}x_2 \\ \end{array} \right)\left(\begin{array}{c} x_{1} \\ x_{2} \\ \end{array} \right)
   \displaystyle = \left(\begin{array}{r} x_1 x_2 \\ \end{array} \right)\left(\begin{array}{rr} a_{11} a_{12} \\ a_{21} a_{22} \\ \end{array} \right)\left(\begin{array}{c} x_{1} \\ x_{2} \\ \end{array} \right)
   \displaystyle = x^{T}Ax

上記のように二次形式を\displaystyle x^{T}Axの式で導出することができます。ここで注意が必要なのが式が与えられた際にx_1x_2=x_2x_1が成立するため、a_{12}+a_{21}は和が一定であれば良いということです。そのため、x_1x_2=x_2x_1が成立する状況では二次形式の対角成分はそれぞれ和が一定であれば一意とはならないことは把握しておく方が良いかと思います。これはnが3以上でも同様です。
逆に値を一意に設定したい場合は行列の対称性を設定すればa_{ij}+a_{ji}=Consta_{ij}=a_{ji}より、\displaystyle a_{ij} = a_{ji} = \frac{Const}{2}が成立します。この辺は分散・共分散行列のように二次形式を考える際の行列は対称な行列を取り扱うことが多いので、一意に定まることが多いと把握しておくのが良さそうです。

二次形式の概要について取り扱えたので1節はここまでとします。


2. 二次形式の微分
2節では対称行列Aの二次形式 \displaystyle = x^{T}Ax微分について取り扱います。

\displaystyle f(x_1, x_2) = \sum_{i,j=1}^{2} a_{ij}x_ix_j = \sum_{i=1}^{2}\sum_{j=1}^{2} a_{ij}x_ix_j
   \displaystyle = a_{11}x_1^2 + a_{12}x_1x_2 + a_{21}x_2x_1 + a_{22}x_2^2

上記に対し、\displaystyle \nabla=\left(\begin{array}{c} \frac{\delta}{\delta x_{1}} \\ \frac{\delta}{\delta x_{2}} \\ \end{array} \right)とした際に、二次形式の微分(勾配)をgrad f(x_1,x_2) = \nabla f(x_1, x_2)のように定義します。この際に\nabla f(x_1, x_2)は下記のようになります。

\displaystyle \nabla f(x_1, x_2) = \left(\begin{array}{c} \frac{\delta f(x_1, x_2)}{\delta x_{1}} \\ \frac{\delta f(x_1, x_2)}{\delta x_{2}} \\ \end{array} \right)
  \displaystyle = \left(\begin{array}{c} 2a_{11}x_1+(a_{12}+a_{21})x_2 \\ (a_{12}+a_{21})x_1+2a_{22}x_2 \\ \end{array} \right)
  \displaystyle = \left(\begin{array}{rr} 2a_{11} a_{12}+a_{21} \\ a_{21}+a_{12} 2a_{22} \\ \end{array} \right) \left(\begin{array}{c} x_1 \\ x_2 \\ \end{array} \right)

上記において、a_{12}=a_{21}より、下記が成立します。

\displaystyle = \left(\begin{array}{rr} 2a_{11} a_{12}+a_{21} \\ a_{21}+a_{12} 2a_{22} \\ \end{array} \right) \left(\begin{array}{c} x_1 \\ x_2 \\ \end{array} \right)
  \displaystyle = \left(\begin{array}{rr} 2a_{11} 2a_{12} \\ 2a_{21} 2a_{22} \\ \end{array} \right) \left(\begin{array}{c} x_1 \\ x_2 \\ \end{array} \right)
  \displaystyle = 2\left(\begin{array}{rr} a_{11} a_{12} \\ a_{21} a_{22} \\ \end{array} \right) \left(\begin{array}{c} x_1 \\ x_2 \\ \end{array} \right)
  \displaystyle = 2Ax

ここまでの計算により、対称行列Aの二次形式 \displaystyle x^{T}Ax2Axとできることがわかります。

2次形式の微分は行列表記だけ見てはわからなくなる際もあるため、本来の式と行列表記の対応を常に考えながら取り扱うのが良いのではと思います。


3. まとめ
#2では二次形式の微分について概要の把握と表記の確認を行いました。
#3では回帰分析によく用いられるデザイン行列における二次形式の微分について取り扱います。