データサイエンスのための線形代数 第13回 線形関数と行列関数

:::note info
本記事は数学講座[4.1 線形関数と行列関数](https://www.matongxue.com/lessons/522/parts/601)を勉強して投稿したメモです。詳細は元の素晴らしい講座のページをチェックしてください。
:::

# 行列関数

[行列の左乗](https://qiita.com/Junlee/items/91f70f1d5210c7dd016a#%E8%A1%8C%E5%88%97%E3%81%AE%E5%B7%A6%E4%B9%97)では、$Aa=b$、$A$が行列で、$a,b$が既知のベクトル、$a,b$を未知な$x,y$に変われば、行列関数になります。

```math
\boldsymbol{A}\boldsymbol{a}=\boldsymbol{b}\longrightarrow \boldsymbol{A}\boldsymbol{x}=\boldsymbol{y}
  ```

## 関数の定義

二つの変数$x、y$があって、$x$の値が決まれば、それに伴って$y$の値が**ただ一つ**決まるとき、$y$は$x$の関数であるという。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/e82830e8-b224-7a74-ba16-9f55966c0fa0.png)

## 行列関数

```math
\underbrace{A\boldsymbol{x}=\boldsymbol{y}}_{\large 行列乗法形式}\iff \underbrace{A(\boldsymbol{x})=\boldsymbol{y}}_{\large 行列関数形式}
  ```
前述の色の例、$RGB$から$YP_rP_b$への変換が、行列関数を使ってできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/8ea195dc-372b-2473-d45c-4d491396ba50.png)

行列の左乗法：
```math
\underbrace{\begin{pmatrix}0.299&0.587&0.114\\0.5&-0.418688&-0.081312\\-0.168736&-0.331264&0.5\end{pmatrix}}_{\large \boldsymbol{A}}\ \underbrace{\begin{pmatrix}10\\5\\33\end{pmatrix}}_{\large \boldsymbol{a}}\ =\ \underbrace{\begin{pmatrix}9.687\\0.223264\\13.1563\end{pmatrix}}_{\large \boldsymbol{b}}
  ```
行列関数：
```math
\underbrace{\begin{pmatrix}0.299&0.587&0.114\\0.5&-0.418688&-0.081312\\-0.168736&-0.331264&0.5\end{pmatrix}}_{\large \boldsymbol{A}}\ \underbrace{\begin{pmatrix}R\\G\\B\end{pmatrix}}_{\large \boldsymbol{x}}\ =\ \underbrace{\begin{pmatrix}Y\\P_r\\P_b\end{pmatrix}}_{\large \boldsymbol{y}}
```
[行列の乗法](https://qiita.com/Junlee/items/91f70f1d5210c7dd016a#%E8%A1%8C%E5%88%97%E3%81%AE%E4%B9%97%E6%B3%95)でも説明したように、$YP_rP_b$が新しい基底$A$でのベクトルです。

# 線形関数

数学において、$\mathcal{L}$ が線型であるとは、$\mathcal{L}$  について以下の2つの性質
- 加法性：任意の $x, y$ に対して 、$\mathcal{L}(x+y)=\mathcal{L}(x)+\mathcal{L}(y)$
- 斉次性: 任意の $x, α$ に対して 、$\mathcal{L}(a\boldsymbol{x})=a\mathcal{L}(\boldsymbol{x})$

直線関数$f(x)=ax$が線形関数：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/986b5cb8-fc1d-432e-ed4a-ed778bf5ea6b.png)
以下の二つが満たされたので、線形関数です。
- 加法性：$f(x_1+x_2)=f(x_1)+f(x_2)=ax_1+ax_2$
- 斉次性: $f(bx)=bf(x)=abx$

# 行列関数が線形関数

行列関数$Ax=y$が：
- 加法性：$A(\boldsymbol{x}+\boldsymbol{y}) = A(\boldsymbol{x})+A(\boldsymbol{y})$
- 斉次性: $A(m\boldsymbol{x})=m(A\boldsymbol{x})$

詳細な証明は[こちら](https://www.matongxue.com/lessons/522/parts/609)を参照。行列の[加法](https://qiita.com/Junlee/items/1a1655f7de15d509e258#%E8%A1%8C%E5%88%97%E3%81%AE%E5%8A%A0%E6%B3%95)とも[乗法](https://qiita.com/Junlee/items/1a1655f7de15d509e258#%E8%A1%8C%E5%88%97%E3%81%AE%E3%82%B9%E3%82%AB%E3%83%A9%E3%83%BC%E5%80%8D)と関連しています。

直線関係が一番分かりやすい線形関数です。インプットが$x$軸での点、アウトプットが$y$軸での点です。
![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/26d131c6-3d24-e6c1-f1c2-2932873f7110.gif)

これも行列関数です。$x,y,a$が全てベクトル空間$R^1$でのベクトルです。
行列関数の形へ変換すると、以下のような形になります。

```math
\underbrace{\begin{pmatrix}a\end{pmatrix}}_{A}\quad\underbrace{\begin{pmatrix}x\end{pmatrix}}_{\boldsymbol{x_{}}}\quad=\quad\underbrace{\begin{pmatrix}y\end{pmatrix}}_{\boldsymbol{y_{}}}\implies A\boldsymbol{x_{}}=\boldsymbol{y_{}}
```

インプットがベクトル空間$R^1$でのベクトル、アウトプットもベクトル空間$R^1$でのベクトルです。
![2 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/fdcce2ec-4690-b892-baed-e5a22846b341.gif)
インプットとアウトプット所在のベクトル空間は同じですが、ベクトル空間の基底が違います。
インプットが自然基底のベクトル空間で、アウトプットが$a$を基底にしたベクトル空間のものです。

行列関数が必ず線形関数ですが、線形関数が必ず行列関数には限らないです。
以下のは二つの例です：
- $f(x)=0$
- 微分積分：$\mathrm{d}f(x)=f'(x)\mathrm{d}x,\quad \int f'(x)\mathrm{d}x=f(x)$

# 補足

- 行列の転置演算

https://qiita.com/Junlee/items/04365c5bf10afd089d4c#%E8%A1%8C%E5%88%97%E3%81%AE%E8%BB%A2%E7%BD%AE%E6%BC%94%E7%AE%97

# 参考情報