ディープラーニングを実装から学ぶ（索引）


「ディープラーニングを実装から学ぶ」をテーマに掲載してきましたが、記事が多くなり、どこに記載したか分からなくなってきたため、索引としてまとめを作成しました。

![network.png](https://qiita-image-store.s3.amazonaws.com/0/212365/12d686e2-c643-4bab-d274-1ff1215a2950.png)

# 1. 活性化関数
## 1.1 中間層
### 1.1.1 ReLU
(関数)

```math
f(x) =  \left\{
\begin{array}{ll}
x & (x \gt 0) \\
0 & (x \leq 0)
\end{array}
\right.
```

(グラフ)
![relu.png](https://qiita-image-store.s3.amazonaws.com/0/212365/b7a1b9de-ca30-61fa-ad8f-36d6c8a72ba9.png)

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク ReLU](https://qiita.com/Nezura/items/0a9a04476be084738a82#relu)
[ディープラーニングを実装から学ぶ（4-2）学習（誤差逆伝播法２） 活性化関数](https://qiita.com/Nezura/items/4802f8abcd1733300561#%E6%B4%BB%E6%80%A7%E5%8C%96%E9%96%A2%E6%95%B0)

### 1.1.2 Sigmoid
(関数) 

```math
f(x) = \frac{1}{1+e^{-x}}
```

(グラフ)
![sigmoid.png](https://qiita-image-store.s3.amazonaws.com/0/212365/28731734-6f41-1077-1456-72730a48f20a.png)

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク シグモイド関数](https://qiita.com/Nezura/items/0a9a04476be084738a82#%E3%82%B7%E3%82%B0%E3%83%A2%E3%82%A4%E3%83%89%E9%96%A2%E6%95%B0)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） sigmoid](https://qiita.com/Nezura/items/e729705be1a167902a44#sigmoid)

### 1.1.3 Tanh
(関数)

```math
f(x) = \tanh(x)
```

(グラフ)
![tanh.png](https://qiita-image-store.s3.amazonaws.com/0/212365/292737a6-87a4-b1b0-f329-af22e63934be.png)

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク 双曲線正接関数](https://qiita.com/Nezura/items/0a9a04476be084738a82#%E5%8F%8C%E6%9B%B2%E7%B7%9A%E6%AD%A3%E6%8E%A5%E9%96%A2%E6%95%B0)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） tanh](https://qiita.com/Nezura/items/e729705be1a167902a44#tanh)

### 1.1.4 identity(恒等関数)
(関数)

```math
f(x) = x
```

(参考)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） identity](https://qiita.com/Nezura/items/e729705be1a167902a44#identity)

### 1.1.5 softplus
(関数)

```math
f(x) = \log(1 + e^x)
```

(グラフ)
![softplus_relu.png](https://qiita-image-store.s3.amazonaws.com/0/212365/d52be428-e635-359e-b576-422bc109754c.png)
青がsoftplus、オレンジがReLU

(参考)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） softplus](https://qiita.com/Nezura/items/e729705be1a167902a44#softplus)

### 1.1.6 softsign
(関数)

```math
f(x) = \frac{x}{1 + |x|}
```

(グラフ)
![softsign_tanh.png](https://qiita-image-store.s3.amazonaws.com/0/212365/41203dd7-cb55-dded-c443-3821b51618f4.png)
青がsoftsign、オレンジがtanh

(参考)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） softsign](https://qiita.com/Nezura/items/e729705be1a167902a44#softsign)

### 1.1.7 step
(関数)

```math
f(x) = \left\{
\begin{array}{ll}
1 & (x \gt 0)\\
0 & (x \leq 0)
\end{array}
\right.
```

(参考)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） step](https://qiita.com/Nezura/items/e729705be1a167902a44#step)

### 1.1.8 Leaky ReLU
(関数)

```math
f(x) =  \left\{
\begin{array}{ll}
x & (x \gt 0) \\
\alpha x & (x \leq 0)
\end{array}
\right.
```

(グラフ)
![leaky_relu.png](https://qiita-image-store.s3.amazonaws.com/0/212365/0d21a738-4d53-b402-0dc0-f2c161a37f4c.png)
($ \alpha = 0.1 $)

(参考)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） Leaky ReLU](https://qiita.com/Nezura/items/e729705be1a167902a44#leaky-relu)

### 1.1.9 PReLU(Parametrized ReLU)
(関数)

```math
f(x_i) =  \left\{
\begin{array}{ll}
x_i & (x_i \gt 0) \\
\alpha_i x_i & (x_i \leq 0)
\end{array}
\right.
```

($ \alpha_i $は、学習パラメータ)

(参考)
[ディープラーニングを実装から学ぶ（7-1）その他（活性化関数～MaxOut、ReLU関連） PReLU(Parametrized ReLU)](https://qiita.com/Nezura/items/f52fdc483e5e7eceb6b9#preluparametrized-relu)

### 1.1.10 RReLU(Randomized Leaky ReLU)
(関数)

```math
f(x_i) =  \left\{
\begin{array}{ll}
x_i & (x_i \gt 0) \\
\alpha_i x_i & (x_i \leq 0)
\end{array}
\right.
```

($ \alpha_i $は、乱数で決定)

(参考)
[ディープラーニングを実装から学ぶ（7-1）その他（活性化関数～MaxOut、ReLU関連） RReLU(Randomized Leaky ReLU)](https://qiita.com/Nezura/items/f52fdc483e5e7eceb6b9#rrelurandomized-leaky-relu)

### 1.1.11 一定の値以上を定数とするReLU(ReLU6など)
(関数)

```math
f(x) =  \left\{
\begin{array}{ll}
n & (x \gt n) \\
x & (n \ge x \gt 0) \\
0 & (x \leq 0)
\end{array}
\right.
```

(グラフ)
![relun.png](https://qiita-image-store.s3.amazonaws.com/0/212365/5b69cd62-b235-598c-1411-2db1fa0bccdf.png)
($n=5$)

(参考)
[ディープラーニングを実装から学ぶ（7-1）その他（活性化関数～MaxOut、ReLU関連） 一定の値以上を定数とするReLU](https://qiita.com/Nezura/items/f52fdc483e5e7eceb6b9#%E4%B8%80%E5%AE%9A%E3%81%AE%E5%80%A4%E4%BB%A5%E4%B8%8A%E3%82%92%E5%AE%9A%E6%95%B0%E3%81%A8%E3%81%99%E3%82%8Brelu)

### 1.1.12 SReLU(Shifted ReLU)
(関数)

```math
f(x) =  \left\{
\begin{array}{ll}
x & (x \gt \alpha) \\
\alpha & (x \leq \alpha)
\end{array}
\right.
```

(グラフ)
![srelu.png](https://qiita-image-store.s3.amazonaws.com/0/212365/faeba0d7-6ec6-13b7-320c-d5d1ff5ab330.png)
($\alpha=-1$)

(参考)
[ディープラーニングを実装から学ぶ（7-1）その他（活性化関数～MaxOut、ReLU関連） SReLU(Shifted ReLU)](https://qiita.com/Nezura/items/f52fdc483e5e7eceb6b9#srelushifted-relu)

### 1.1.13 ELU
(関数)

```math
{f(x) =  \left\{
\begin{array}{ll}
x & (x \gt 0) \\
\alpha(e^x-1) & (x \leq 0)
\end{array}
\right.
}
```

(グラフ)
![elu.png](https://qiita-image-store.s3.amazonaws.com/0/212365/763b888f-275d-ac98-fadc-cb8d73e6d803.png)

(参考)
[ディープラーニングを実装から学ぶ（7-1）その他（活性化関数～MaxOut、ReLU関連） ELU](https://qiita.com/Nezura/items/f52fdc483e5e7eceb6b9#elu)

### 1.1.14 Swish
(関数)

```math
f(x) = x\cdot\mathrm{sigmoid}(x)
```

(グラフ)
![swish.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/27b0a7f1-c409-985a-686e-817f6259488c.png)

(参考)
[ディープラーニングを実装から学ぶ（8-2）活性化関数(Swish,Mish) Swish](https://qiita.com/Nezura/items/4ab968026366d7715426#swish)

### 1.1.15 Mish
(関数)

```math
f(x) = x\cdot\mathrm{tanh}(\mathrm{softplus}(x))
```

(グラフ)
![mish.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/0b159490-2d60-f0fd-8385-3533fde3e804.png)

(参考)
[ディープラーニングを実装から学ぶ（8-2）活性化関数(Swish,Mish) Mish](https://qiita.com/Nezura/items/4ab968026366d7715426#mish)

### 1.1.16 h-swish
(関数)

```math
f(x) = x\cdot\frac{\mathrm{ReLU6}(x+3)}{6}
```

(グラフ)
![h-swish.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/8b95d60e-11eb-fe68-03dc-f3c59a346f8e.png)

(参考)
[ディープラーニングを実装から学ぶ（8-3）h-swish,TanhExp,Flooding,Nesterov h-swish](https://qiita.com/Nezura/items/741e766d14f43c0afb4f#h-swish)

### 1.1.17 TanhExp
(関数)

```math
f(x) = x\cdot\mathrm{tanh}(e^x)
```

(グラフ)
![tanhexp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/8ec36927-dc0b-dd69-a339-addbb839c5c0.png)

(参考)
[ディープラーニングを実装から学ぶ（8-3）h-swish,TanhExp,Flooding,Nesterov TanhExp](https://qiita.com/Nezura/items/741e766d14f43c0afb4f#tanhexp)

## 1.2 出力層
### 1.2.1 identity(恒等関数)
回帰分析時の出力層の活性化関数
(関数)

```math
f(x) = x
```

(参考)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） 恒等関数＋二乗和誤差](https://qiita.com/Nezura/items/e729705be1a167902a44#%E6%81%92%E7%AD%89%E9%96%A2%E6%95%B0%E4%BA%8C%E4%B9%97%E5%92%8C%E8%AA%A4%E5%B7%AE)

### 1.2.2 Sigmoid
２値分類時の出力層の活性化関数
(関数) 

```math
f(x) = \frac{1}{1+e^{-x}}
```

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク シグモイド関数](https://qiita.com/Nezura/items/0a9a04476be084738a82#%E3%82%B7%E3%82%B0%E3%83%A2%E3%82%A4%E3%83%89%E9%96%A2%E6%95%B0)
[ディープラーニングを実装から学ぶ（5）学習（パラメータ調整） sigmoid](https://qiita.com/Nezura/items/e729705be1a167902a44#sigmoid)

### 1.2.3 Softmax
多値分類時の出力層の活性化関数
(関数) 

```math
f(x_i) = \frac{e^{x_i}}{\sum_{k=1}^{n}e^{x_k}}
```

(参考)
[ディープラーニングを実装から学ぶ（4-2）学習（誤差逆伝播法２） 出力層＋損失関数](https://qiita.com/Nezura/items/4802f8abcd1733300561#%E5%87%BA%E5%8A%9B%E5%B1%A4%E6%90%8D%E5%A4%B1%E9%96%A2%E6%95%B0)

# 2. 結合
## 2.1 全結合
### 2.1.1 affine


```math
\begin{pmatrix}
w_{11} & w_{12}\\
w_{21} & w_{22}\\
w_{31} & w_{32}
\end{pmatrix}
\begin{pmatrix}
x_1\\
x_2
\end{pmatrix}
+
\begin{pmatrix}
b_1\\
b_2\\
b_3
\end{pmatrix}
=
\begin{pmatrix}
w_{11}x_1+w_{12}x_2+b_1\\
w_{21}x_1+w_{22}x_2+b_2\\
w_{31}x_1+w_{32}x_2+b_3
\end{pmatrix}
```

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク アフィン変換](https://qiita.com/Nezura/items/0a9a04476be084738a82#%E3%82%A2%E3%83%95%E3%82%A3%E3%83%B3%E5%A4%89%E6%8F%9B)

### 2.1.2 MaxOut
affine変換をn個用意し、そのうち最大の値を採用

(参考)
[ディープラーニングを実装から学ぶ（7-1）その他（活性化関数～MaxOut、ReLU関連） MaxOut](https://qiita.com/Nezura/items/f52fdc483e5e7eceb6b9#maxout)

## 2.2 CNN
### 2.2.1 convolution2d
畳み込み

![cnn_basic2.png](https://qiita-image-store.s3.amazonaws.com/0/212365/1401658a-436e-cde4-497d-7d6bbbf8883f.png)

(参考)
[ディープラーニングを実装から学ぶ（9-1）CNNの実装 畳み込み](https://qiita.com/Nezura/items/ac0ef5a50e1c5375d6f1#%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF)

### 2.2.2 max_pooling2d
マックスプーリング

![max_pooling.png](https://qiita-image-store.s3.amazonaws.com/0/212365/2f51c166-a405-100a-fe3b-a7526eb5aa10.png)

(参考)
[ディープラーニングを実装から学ぶ（9-1）CNNの実装 マックスプーリングの実装](https://qiita.com/Nezura/items/ac0ef5a50e1c5375d6f1#%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%AE%9F%E8%A3%85)

### 2.2.3 average_pooling2d
平均プーリング

![average_pooling.png](https://qiita-image-store.s3.amazonaws.com/0/212365/7dff9753-7bf0-7df6-49f8-773ce38fe1e5.png)

(参考)
[ディープラーニングを実装から学ぶ（9-1）CNNの実装 平均プーリングの実装](https://qiita.com/Nezura/items/ac0ef5a50e1c5375d6f1#%E5%B9%B3%E5%9D%87%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%AE%9F%E8%A3%85)

### 2.2.4 flatten2d
flatten

(参考)
[ディープラーニングを実装から学ぶ（9-1）CNNの実装 flatten](https://qiita.com/Nezura/items/ac0ef5a50e1c5375d6f1#flatten)

## 2.3 RNN
### 2.3.1 RNN
シンプルRNN
![smpleRNN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/0c75f276-0092-f387-facd-38f730652d51.png)

(参考)
[ディープラーニングを実装から学ぶ（10-1）RNNの実装(RNN,LSTM,GRU) シンプルRNN](https://qiita.com/Nezura/items/6197753c663180361adb#%E3%82%B7%E3%83%B3%E3%83%97%E3%83%ABrnn)

### 2.3.2 LSTM
LSTM(Long short-term memory)
![LSTM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/e503e11e-ccbb-ead4-1d44-89062b8dbe60.png)

(参考)
[ディープラーニングを実装から学ぶ（10-1）RNNの実装(RNN,LSTM,GRU) LSTM(Long short-term memory)](https://qiita.com/Nezura/items/6197753c663180361adb#lstmlong-short-term-memory)

### 2.3.3 GRU
GRU
![GRU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/f48db32b-9380-7a44-5b02-938c70054a48.png)

(参考)
[ディープラーニングを実装から学ぶ（10-1）RNNの実装(RNN,LSTM,GRU) GRU](https://qiita.com/Nezura/items/6197753c663180361adb#gru)

### 2.3.4 双方向RNN
双方向シンプルRNN、双方向LSTM、双方向GRU

![双方向RNN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/023ab88f-dde6-3a6a-d796-26a92f9d6742.png)

(参考)
[ディープラーニングを実装から学ぶ（10-2）RNNの実装(双方向RNN・orthogonal(重みの初期値)) 双方向RNN](https://qiita.com/Nezura/items/40c47a178f7e865d2cad#%E5%8F%8C%E6%96%B9%E5%90%91rnn)

### 2.3.5 Self-Attention
注意機構を用いたRNN

![Self-Attention.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/2bbaa341-e9c0-5257-e65f-41bd75b4a129.png)
（本来は、Attentionの値は、RNNの各時刻からの出力で決定されますが、簡略化して図示しています。）

(参考)
[ディープラーニングを実装から学ぶ（10-3）RNNの実装(Self-Attention(可視化)) Self-Attention](https://qiita.com/Nezura/items/4f58253623f46f430ab3#self-attention)


# 3. 損失関数
## 3.1 mean_squared_error
回帰分析時の損失関数

```math
E = \frac{1}{2}\sum_k(y_k-t_k)^2
```

(参考)
[ディープラーニングを実装から学ぶ（3）学習（勾配降下法） 二乗和誤差](https://qiita.com/Nezura/items/8635d6764e166aa9f87d#%E4%BA%8C%E4%B9%97%E5%92%8C%E8%AA%A4%E5%B7%AE)

## 3.2 cross_entropy_error
２値分類、多値分類時の損失関数

(２値分類)

```math
E= -t\log{y} + (1-t)\log{(1-y)}
```

(多値分類)

```math
E= -\sum_kt_k\log{y_k}
```

(参考)
[ディープラーニングを実装から学ぶ（3）学習（勾配降下法） 交差エントロピー誤差](https://qiita.com/Nezura/items/8635d6764e166aa9f87d#%E4%BA%A4%E5%B7%AE%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E8%AA%A4%E5%B7%AE)

# 4. 正則化
## 4.1 早期終了
早期終了

(参考)
[ディープラーニングを実装から学ぶ（6-1）学習手法（正則化） 早期終了](https://qiita.com/Nezura/items/f7416ad17d79ccd1eab6#%E6%97%A9%E6%9C%9F%E7%B5%82%E4%BA%86)

## 4.2 重み減衰
### 4.2.1 L1ノルム

```math
\tilde{E} = E + \lambda\sum_{k}\sum_{i}\sum_{j}|w_{ij}^{(k)}|
```

(参考)
[ディープラーニングを実装から学ぶ（6-1）学習手法（正則化） L1ノルム](https://qiita.com/Nezura/items/f7416ad17d79ccd1eab6#l1%E3%83%8E%E3%83%AB%E3%83%A0)

### 4.2.2 L2ノルム

```math
\tilde{E} = E + \frac{\lambda}{2}\sum_{k}\sum_{i}\sum_{j}(w_{ij}^{(k)})^2
```

(参考)
[ディープラーニングを実装から学ぶ（6-1）学習手法（正則化） L2ノルム](https://qiita.com/Nezura/items/f7416ad17d79ccd1eab6#l2%E3%83%8E%E3%83%AB%E3%83%A0)

## 4.3 ドロップアウト
ドロップアウト

![dropout.png](https://qiita-image-store.s3.amazonaws.com/0/212365/debe9a7a-5a4d-f280-c105-8243d10d67f8.png)

(参考)
[ディープラーニングを実装から学ぶ（6-1）学習手法（正則化） ドロップアウト](https://qiita.com/Nezura/items/f7416ad17d79ccd1eab6#%E3%83%89%E3%83%AD%E3%83%83%E3%83%97%E3%82%A2%E3%82%A6%E3%83%88)

## 4.4 バッチ正規化
バッチ正規化

![batch_normalization.png](https://qiita-image-store.s3.amazonaws.com/0/212365/d00479a5-91a2-6432-e71e-f491c4c99a7f.png)

(参考)
[ディープラーニングを実装から学ぶ（6-1）学習手法（正則化） バッチ正規化](https://qiita.com/Nezura/items/f7416ad17d79ccd1eab6#%E3%83%90%E3%83%83%E3%83%81%E6%AD%A3%E8%A6%8F%E5%8C%96)

## 4.5 ドロップコネクト
ドロップコネクト

![drop_connect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212365/5f28dab7-76e3-c144-b8f2-66dc59ea7fb9.png)

(参考)
[ディープラーニングを実装から学ぶ（7-3）ドロップコネクト・宝くじ仮説 ドロップコネクト](https://qiita.com/Nezura/items/79a8cf55feeb9926e847#%E3%83%89%E3%83%AD%E3%83%83%E3%83%97%E3%82%B3%E3%83%8D%E3%82%AF%E3%83%88)

# 5. 正則化
## 5.1 SGD

```math
w_{k+1} = w_k - \eta E^{'}(w_k)
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） SGD](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#sgd)

## 5.2 Momentum

```math
\begin{align}
v_{k+1} &= \mu v_k - \eta E^{'}(w_k), v_0 = 0\\
w_{k+1} &= w_k + v_{k+1}
\end{align}
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） Momentum](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#momentum)

## 5.3 Nesterovの加速勾配法

```math
\begin{align}
v_{k+1} &= \mu v_k - \eta E^{'}(w_k + \mu v_k), v_0 = 0\\
w_{k+1} &= w_k + v_{k+1}
\end{align}
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） Nesterovの加速勾配法](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#nesterov%E3%81%AE%E5%8A%A0%E9%80%9F%E5%8B%BE%E9%85%8D%E6%B3%95)
[ディープラーニングを実装から学ぶ（8-3）h-swish,TanhExp,Flooding,Nesterov Nesterovの加速勾配法](https://qiita.com/Nezura/items/741e766d14f43c0afb4f#nesterov%E3%81%AE%E5%8A%A0%E9%80%9F%E5%8B%BE%E9%85%8D%E6%B3%95)

## 5.4 AdaGrad

```math
\begin{align}
g_{k+1} &= g_k + (E^{'}(w_k))^2, g_0 = 0\\
w_{k+1} &= w_k - \frac{\eta}{\sqrt{g_{k+1}}} E^{'}(w_k)
\end{align}
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） AdaGrad](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#adagrad)

## 5.5 RMSProp

```math
\begin{align}
g_{k+1} &= \gamma g_k + (1 - \gamma)(E^{'}(w_k))^2, g_0 = 0\\
w_{k+1} &= w_k - \frac{\eta}{\sqrt{g_{k+1}}} E^{'}(w_k)
\end{align}
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） RMSProp](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#rmsprop)

## 5.6 Adadelta

```math
\begin{align}
g_{k+1} &= \gamma g_k + (1 - \gamma)(E^{'}(w_k))^2, g_0 = 0\\
w_{k+1} &= w_k - \frac{\eta \sqrt{s_k}}{\sqrt{g_{k+1}}} E^{'}(w_k)\\
s_{k+1} &= \gamma s_k + (1 - \gamma)(w_{k+1} - w_k)^2, s_0=0
\end{align}
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） Adadelta](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#adadelta)

## 5.7 Adam

```math
\begin{align}
m_{k+1} &= \beta_1 m_k + (1 - \beta_1)E^{'}(w_k),m_0 = 0\\
v_{k+1} &= \beta_2 v_k + (1 - \beta_2)(E^{'}(w_k))^2,v_0 = 0\\
\hat{m}_k &= \frac{m_k}{1 - \beta_1^k}\\
\hat{v}_k &= \frac{v_k}{1 - \beta_2^k}\\
w_{k+1} &= w_k - \frac{\eta \hat{m}_{k+1}}{\sqrt{\hat{v}_{k+1}}}
\end{align}
```

(参考)
[ディープラーニングを実装から学ぶ（6-2）学習手法（最適化） Adam](https://qiita.com/Nezura/items/0b5457e080aa8070fa16#adam)


# 6.重み・バイアスの初期値
## 6.1 LeCunの初期化
平均を 0 、標準偏差を $ \frac{1}{\sqrt{d^{(l-1)}}} $とする正規分布、または、$ -\sqrt{\frac{3}{d^{(l-1)}}} $～$ \sqrt{\frac{3}{d^{(l-1)}}} $の一様分布

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク LeCunの初期化](https://qiita.com/Nezura/items/0a9a04476be084738a82#lecun%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96)

## 6.2 Glorotの初期化
平均を 0 、標準偏差を $ \sqrt{\frac{2}{d^{(l-1)}+d^{(l)}}} $とする正規分布、または、$ -\sqrt{\frac{6}{d^{(l-1)}+d^{(l)}}} $～$ \sqrt{\frac{6}{d^{(l-1)}+d^{(l)}}} $の一様分布

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク Glorotの初期化](https://qiita.com/Nezura/items/0a9a04476be084738a82#glorot%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96)

## 6.3 Heの初期化
平均を 0 、標準偏差を $ \sqrt{\frac{2}{d^{(l-1)}}} $とする正規分布、または、$ -\sqrt{\frac{6}{d^{(l-1)}}} $～$ \sqrt{\frac{6}{d^{(l-1)}}} $の一様分布

(参考)
[ディープラーニングを実装から学ぶ（２）ニューラルネットワーク Heの初期化](https://qiita.com/Nezura/items/0a9a04476be084738a82#he%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96)

## 6.4 orthogonal
直交行列を用いた初期化

(参考)
[ディープラーニングを実装から学ぶ（10-2）RNNの実装(双方向RNN・orthogonal(重みの初期値)) orthogonal(重みの初期値)](https://qiita.com/Nezura/items/40c47a178f7e865d2cad#orthogonal%E9%87%8D%E3%81%BF%E3%81%AE%E5%88%9D%E6%9C%9F%E5%80%A4)

# 7. その他
## 7.1 データ拡張
画像の水増し

![generate_333.png](https://qiita-image-store.s3.amazonaws.com/0/212365/1fe6f19c-6222-f284-665e-a2515dd7ea74.png)

(参考)
[ディープラーニングを実装から学ぶ（7-2）データ拡張](https://qiita.com/Nezura/items/c7d87b03975690f3aa63)

## 7.2 宝くじ仮説
重みの値の小さい接続をマスク

(参考)
[ディープラーニングを実装から学ぶ（7-3）ドロップコネクト・宝くじ仮説 宝くじ仮説](https://qiita.com/Nezura/items/79a8cf55feeb9926e847#%E5%AE%9D%E3%81%8F%E3%81%98%E4%BB%AE%E8%AA%AC)

## 7.3 Flooding
損失関数の値を一定の値以上にキープし、さらに学習を進めようとする。

(参考)
[ディープラーニングを実装から学ぶ（8-3）h-swish,TanhExp,Flooding,Nesterov Flooding](https://qiita.com/Nezura/items/741e766d14f43c0afb4f#flooding)

# 参考
## ネットワーク図の書き方

```math
f(x) = ax^2 + bx +c
```

![network_sample.png](https://qiita-image-store.s3.amazonaws.com/0/212365/7854a715-c820-16dd-28db-8c883897b953.png)

**　法則１：勾配は、ネットワークの各線の勾配の積となる。**
**　法則２：分岐の場合は、それぞれの勾配の和となる。**
**　法則３：複雑な関数は分解し、法則１、法則２を利用し勾配を求める。**
**　（$ + $定数）：定数を加えた場合の勾配 $ = 1 $**
**　（$ \times $定数）：定数を掛けた場合の勾配 $ = $定数**
**　（$ \sum $）：$ \sum $の勾配 $ = 1 $**
**　（$ \times $）：２つの変数の掛け算の勾配は、それぞれ逆の変数となる**
**　（関数）：関数の勾配は、数学の力を借りる**

(参考)
[ディープラーニングを実装から学ぶ（4-2）学習（誤差逆伝播法２） ネットワーク図の書き方](https://qiita.com/Nezura/items/4802f8abcd1733300561#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E5%9B%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9)