機械学習で用いる尺度を整理した① (Abs、Norm、Coding)

# 0. 概要
機械学習では活性化関数や損失関数で計算処理を行う際に、1次処理として変数を様々な尺度(絶対値など)へ変換することが多い。今回はその変換方法の一部を整理した。

他の記事:
[機械学習で用いる行列の単語を整理した①(固有値、直行行列、正規直交基底等)](https://qiita.com/harmegiddo/items/669e5ce8200fb3d3dd50)
[機械学習で用いる行列の単語を整理した② (分散共分散行列、相関行列)](https://qiita.com/harmegiddo/items/09e5ec2dc1f0bdb7e1e9)

# 1. Absolute
### definition
実数`x`の絶対値は、その符号を無視して得られる非負の値を言う。`ABS`とも略される。

``` math
|x|
```

### example

``` math
+x = |x| = -x \\
|3| = 3 \\
|-3| = 3 \\
|0| = 0 \\
```

# 2. Norm
### definition
平面あるいは空間における幾何学的ベクトルの長さを一般化したもの。約まるところ、長さ。
場合によっては絶対値や賦値（附値、付値）と呼ばれることもある。

``` math
||v||
```

### 総和ノルム (L1 Norm)
各次元/変数の値の絶対値の和である。すなわち、マンハッタン距離。


``` math
||x||_{1} := \left| x_{1}\right|+\ldots +\left| x_{n}\right|
```


### ユークリッドノルム (L2 Norm)
ユークリッド距離のことであり、ピタゴラスの定理によって与えられる。ピタゴラス軽量ともいう。

``` math
||x||_{2} := \sqrt {\left| x_{1}\right| ^{2}+\ldots +\left| x_{n}\right| ^{2}}
```

### ユークリッドノルム (直積空間)
距離空間、すなわちノルム空間 $(X, |\bullet|\_x)$ 及び $(Y, |\bullet|\_y)$が与えられたとき、直積集合$X \times Y$は以下となる。

``` math
||(x, y)|| := \sqrt {||x||_{X}^{2}+\ldots +||y||_{Y}^{2}} \quad \quad (x\in X, y\in Y)
```

### 最大値ノルム (L∞ Norm)
``` math
\left\| x\right\| _{\infty } := {\rm max}({\left| x_{1}\right|, \ldots ,\left| x_{n}\right|})
```

### p次平均ノルム
``` math
\left\| x\right\| _{p} :=
\left( \sum ^{n}_{i=1}\left| x_{i}\right| ^{p}\right) ^{\dfrac {1}{p}}
= \sqrt [p]{\left| x_{1}\right| ^{p}+\ldots +\left| x_{n}\right| ^{p}}
\quad \quad \{p, \quad {\rm if}(1 \leq p < \inf)
```

### Super scriptとSubscript
上付き文字、下付き文字の違いは以下である。

- Subscript

``` math
\left\| x\right\| _{p} :=
\left( \sum ^{n}_{i=1}\left| x_{i}\right| ^{p}\right) ^{\dfrac {1}{p}}
```

- Super scriptとSubscript

```math
\left\| x\right\|^{p}_{p} := \sum ^{n}_{i=1}\left| x_{i}\right|^{p}
```

ようは、$p=2$の場合はルートを取る必要がなくなる。

# 3. Coding
### definition
符号化、量子化等を用い局所特徴量を抽出して、少ない特徴から元の入力を再構築するコーディングについて説明する。
こちらも、重要な特徴と重要ではない特徴をある尺度に置きなおしていると考えられる。

### Sparse coding
スパースコーディングは観測信号$x$を、辞書と呼ばれる$m$個の基底ベクトル$\bf{D}=\left[ d_{1}, d_{2}, \ldots, d_{m}\right]$及びスパースな重み$\bf{W}$を用いて線形結合することにより復元する符号化手法である。

``` math
y \simeq \bf{DW} 
```

辞書$D$はデータから最適化計算を通して構築する。学習データの個数を$n$、学習データを$\bf{X}=\left[ x_{1}, x_{2}, \ldots, x_{n}\right]$、スパースな重みを$\bf{W}=\left[ w_{1}, w_{2}, \ldots, w_{n}\right]$とした時、損失関数は以下のようになる。

``` math
\bf{W}_{t} = {\rm arg} \min_{\bf{W}} \dfrac{1}{2} ||\bf{x}-\bf{D_{t-1}W}||^{2}_{2} + \lambda||W||_{1}
```

これは$\bf{W}$の更新式であり、通常、この後に$\bf{D}_{t}$の最適化も行われる。右項がスパースの制約項である。
制約項なので、オッカムの剃刀的な働きをしている。すなわち、より少ない加工($\bf{W}$)で最適化を行えという制約である。

### Hard-assignment coding
ハードのため、重み係数はOne-hot vectorとなる。
変数はSparse codingの説明に同じ。

```math
w_{ij} = 
\begin{cases}
1 \quad {\rm if} \quad j = {\rm arg} \min_{j=1, \ldots, n} || x_i - d_j ||^{2}_{2} {\rm ,}\\
0 \quad {\rm otherwise}.
\end{cases}
```

### Soft-assignment coding
ハードだとOne-hotになってしまうため、特徴が鮮明になるものの、曖昧な特徴を見逃してしまう。そこで、Soft-assignmentの出番である。

変数はSparse codingの説明に同じ。


```math
w_{ij} = 
\dfrac
{{\rm exp}(-\beta ||x_i - d_j||^2_2)}
{\sum^{n}_{k=1} {\rm exp}(-\beta ||x_i - d_k||^2_2)}
```

$\beta$は平滑化の度合いである。
ようは、ある誤差を誤差の総和で割ることで、誤差の比率を求めているだけである。
転じて、ある$x_i$に対して、どの$d_k$が最も関連度が強いかの計算となる。

#### example
$x_1 = 6$、$\bf{D}=\left[5, 10, 15\right]$、$\beta=0.01$の条件で計算すると以下のようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95636/f9725966-627d-0364-8710-5bcb1f4a1bc2.png)

なお、$w_{11}$は以下のように計算する。

```math
w_{11} = 
\dfrac
{{\rm exp}(-\beta ||x_i - d_j||^2_2)}
{\sum^{n}_{k=1} {\rm exp}(-\beta ||x_i - d_k||^2_2)}
=
\dfrac
{{\rm exp}(-0.01 ||6 - 5||^2_2)}
{{\rm exp}(-0.01 ||6 - 5||^2_2) + {\rm exp}(-0.01 ||6 - 10||^2_2) + {\rm exp}(-0.01 ||6 - 15||^2_2)}
```
$\beta=0.1$にすると、平滑化が弱まり以下のようになる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95636/f5cce010-3693-f23a-fc05-1db44968a9b9.png)
$x_1 = 6$は$w_{11}$から$d_1$が最も関連度が高いということである。