誤差逆伝播法ようやく一歩前進

# なんの記事？

逆伝播していくとき微分していきますが、微分したら答えが出る理由が全然理解できなかったので勉強した記録。

今は納得してるけど理解できてるかは怪しいし、多分どうせすぐ忘れるからね。
手がかりを残しておきます。

全然すごい内容じゃないし、「まーた日記代わりにしてやがる」とか言われそう。

## まず、微分とは？

微分とは瞬間の変化を捉える計算式で、速度の概念がよく解説に用いられます。

例えば$f(t)=t^2$で動く物体があったとします。
この物体の動いた時間と距離の関係は次の表になります。

|$t$[sec]|$t^2$[m]|
|:--:|:--:|
|1|1|
|2|4|
|3|9|
|4|16|
|5|25|

$3$秒後から$h$秒間の平均速度を求めると

```math
\begin{align}
\frac{f(3+h) - f(3)}{h}
&= (3 + h)^2 - 3^2\\
&= 3^2 + 2\cdot 3h + h^2 - 3^2\\
&= h^2 + 6h
\end{align}
```

ここで、$h$を限りなく$0$に近づけていくとどうなるでしょう。

|$t$[sec]|$t^2$[m]|3秒からの平均速度[m/sec]|
|:--:|:--:|:--:|
|5|25|8(=$\frac{25-9[m]}{5-3[sec]}$)|
|4|16|7(=$\frac{16-9[m]}{4-3[sec]}$)|
|3.1|9.61|6.1(=$\frac{9.61-9[m]}{3.1-3[sec]}$)|
|3.01|9.0601|6.01(=ry)|
|3.001|9.006001|6.001(=ry)|

$3$秒後から$3.00000\cdots1$秒後までの平均速度とは、もう$3$秒時点での瞬間の速度とも捉えることができます。
$f'(t) = 2t$なので$f'(3)=6$[m/sec]であり、確かに表の$6.001$などとほぼ一致します。

このレベルで「やったね！微分を理解した！」と思っていたし、大学１年生あたりでやるだろう偏微分も重積分もなんなく成績は取れました。

> 数学科も出てないクセに、なーにが理解したじゃ

でも、ここまでの理解でどうにも誤差逆伝播法の理屈が全然わからなくて、自分にとっては**もう一歩進んだ整理**が必要でした。

## 微分をもう一度整理する

この計算式では$t^2$を時間変数$t$で微分し、$2t$という微分係数を割り出しました。
この微分係数は<font color=red>**変数の変化が結果にどれだけの影響力を持つか**</font>ということを示します。

> **瞬間の変化**を捉えたんだ。どれだけ影響するかを示すなんて今更何言ってんだ。当たり前だろ！
> 分からんかったんや。すまぬ。すまぬ。

今回、$f(t)=t^2$を時間変数$t$で微分することで$f'(t)=2t$という式が求まりました。
これは「時間$t$が結果の速度に$2t$の割合で影響しますよ」ということを示します。

影響力ということを頭に入れて誤差逆伝播法を見ていきます。

## 誤差逆伝播法

> 出典：[ゼロから作るDeep Learning -Pythonで学ぶディープラーニングの理論と実装-](https://www.oreilly.co.jp/books/9784873117584/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54925/7abdb383-ce55-de8b-77f5-da3833422f9a.png)

```math
y = pnt
```

|変数名|意味|変数名|意味|
|:--:|:--|:--:|:--|
|$p$|リンゴの単価(price)|$\frac{dy}{dp}$|$y$における$p$の影響力|
|$n$|購入数(number)|$\frac{dy}{dn}$|$y$における$n$の影響力|
|$t$|消費税(tax)|$\frac{dy}{dt}$|$y$における$t$の影響力|
|$x$|税抜き小計|$\frac{dy}{dx}$|$y$における$x$の影響力|
|$y$|税込み合計|$\frac{dy}{dy}$|$y$における$y$の影響力|

## 計算式yについて、yの影響度は？


```math
\frac{dy}{dy} = 1
```

同じ計算式なので等倍が返る。

## 計算式yについて、消費税tの影響度は？

```math
\begin{align}
\frac{dy}{dt}
&= \frac{d}{dt}x \cdot t\\
&= x
\end{align}
```

消費税の変動で$x$倍の影響がある。  

> 現状のパラメータでは、200倍の影響があることを示す。
> 消費税が$1.1$から$1.2$に値上がりしたとすると、$0.1 \times 200 = 20$円値上がりする。

あとは同じ文句が続くだけです。
これで私が言いたいことを理解した人はもうバックしていいですよ。

それはそれとして、消費税の影響度は消費税分だと思うんだけど、日本語の使い方間違えてない？

## 計算式yについて、税抜き小計xの影響度は？

```math
\begin{align}
\frac{dy}{dx}
&= \frac{d}{dx}(x \cdot t)\\
&= t
\end{align}
```

$y = pnt$であるため、$x = pn$で微分すると、残るのは任意の消費税$t$のみとなる。
つまり、税抜き小計が変化することで合計に影響されるのは消費税分のみといのは分かり易い。

## 計算式yについて、単価pの影響度は？

```math
\begin{align}
\frac{dy}{dp}
&= \frac{dx}{dp} \cdot \frac{dy}{dx}\\
&= \frac{d}{dp}(p \cdot n) \cdot \frac{dy}{dx}\\
&= n \cdot t
\end{align}
```

単価の変動がもたらす影響度は購入数$n$と消費税$t$の積となる。

> 現状では合計金額に2.2倍の影響があるということを示す。
> 単価が100から200に値上がりしたとすると、$100 \times 2.2 = 220$円値上がりする。

## 計算式yについて、購入数nの影響度は？

```math
\begin{align}
\frac{dy}{dn}
&= \frac{dx}{dn} \cdot \frac{dy}{dx}\\
&= \frac{d}{dn}(p \cdot n) \cdot \frac{dy}{dx}\\
&= p \cdot t
\end{align}
```

購入数の変動がもたらす影響度は単価$p$と消費税$t$の積となる。

> 現状のパラメータでは、合計金額に110倍の影響があることを示す。
> 購入数が2から5に上がったとして、$3 \times 110 = 330$円値上がりする。

## まとめ

リンゴの例も、「購入数を増やす」「単価が上がる」「増税・減税される」というアクションがおきた時の**瞬間の変化率**が分かるのは速度と同じ。
また、速度の例も「瞬間の速度が分かる」ということから**パラメータがどれだけ影響を及ぼしているのか**が分かるのも同じ。

全然違う例だけど、やってることは同じなんですね。

捉え方一つかもしれないけど、いろんな捉え方ができたのでちょっとだけ世界が広がった気がします。

こんなところでつまづいていた人が私以外にいるのか分かりませんが、誰かのためになったら幸いです。

数学苦手だけどやっぱりたのしー