3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【誤差逆伝播法】計算グラフのチートシート―これで誰でも分かるはず

Posted at

1. 結論

(切り取って、好きな方をノートにでも貼ってください)
---✂-キ-リ-ト-リ-線---
image.png
---✂-キ-リ-ト-リ-線---
image.png

---✂-キ-リ-ト-リ-線---

2. 例題

ソフトマックス関数の誤差逆伝播を、計算グラフで求めてみよう。
(準備の節は必要に応じて読んでほしい。)

2-1. 準備1―ソフトマックス関数と誤差逆伝播法のコンセプト

ソフトマックス関数とは、ベクトルを受け取り、同じ次元のベクトルを返す関数の一つだ。
ソフトマックス関数(柔らかい最大値関数)の正体を知るためには、
「ハーデストマックス関数」(最も硬い最大値関数)を考えるとよい。
(そんなものは多分ないけど、理解のために。)
「ハーデストマックス関数」(hardestmax)の例を次に示す。

hardestmax
\begin{pmatrix}0 \\99 \\0\\100\\0 \end{pmatrix}
=
\begin{pmatrix}0 \\0 \\0\\1\\0 \end{pmatrix}

いかがだろうか。
入力ベクトルの最大成分のあったインデックスに1が、
それ以外のすべてのインデックスに0が入ったベクトルが返却された。
ハーデストマックス関数は、「最大値はどれか」を特定する力があるのだ。
ソフトマックス関数は、これに近いことをする。例を次に示す。

softmax
\begin{pmatrix}0 \\99 \\0\\100\\0 \end{pmatrix}
=
\begin{pmatrix}0.00 \\0.27 \\0.00\\0.73\\0.00 \end{pmatrix}

ソフトマックス関数の出力の各成分はすべて0以上1以下の実数で、
しかも和は必ず1となる。 
なるほど。確率とみなせそうだ。

ハーデストマックス関数やソフトマックス関数はニューラルネットワーク上で、
分類問題を解くときに役に立つ。

hardestmax
(各選択肢の「正解らしさ」を何らかの数字で評価したベクトル) \\
=
(正解の選択肢→1、それ以外→0なベクトル)

とできる。
しかし、これだと「学習」ができないのだ。

一方、ソフトマックス関数を使えば、

softmax
(各選択肢の「正解らしさ」を何らかの数字で評価したベクトル) \\
=
(各選択肢が正解である確率のベクトル)

となる。
後は、ソフトマックス関数(柔最大値関数)の出力の各成分を、
ハーデストマックス関数(最硬最大値関数)のそれに近づくように(※)、パラメータを再調整する。この「再調整」こそ「学習」だ。
語弊はあるかもだが、次のように言ってもいいだろう。

「ニューラルネットワークが分類問題を学習する」とはソフトマックス関数の出力を『硬く』していくことである。

ここで、※を考えてほしい。「近づくように」ってどうやるのか。
実は、その方法の一つこそが「誤差逆伝播法」なのだ。
語弊はあるが、次のように考えてよいだろう。

(分類問題において、)誤差逆伝播法とは、「正しく固まった最大値」と「試算した柔らかい最大値」の間の誤差を小さくするために、パラメータをどう変更すればよいかを高速で求めるアルゴリズムである。

「正しく固まった最大値」というのは、
「不正解を1、正解を0にしていたら意味ないでしょ」という程度の注意書きなので、その点に注意していただければ「教師データによる最硬最大値」などと読み替えて構わない。

2-2. 準備2―ソフトマックス関数の式

ソフトマックス関数とは、「学習の余地を生むために柔らかくした最大値関数」であるということを、2-1節にてご理解いただいた。

シワのついたYシャツ(学習前のAI)
一度水につけて柔らかく(ソフトマックス関数の導入)し、
アイロンで「正しく硬く」すれ(教師データと誤差逆伝播法による学習)
シワが取れる(分類能力を帯びた学習済みAIができあがる)
ことに例えられるだろう。たぶん。

誤差逆伝播法では微分を使う($f(x)$を思い通りにするために$x$を再調整すると考えれば、$f'(x)$の登場は自然の成り行きだ)ので
ソフトマックス関数は微分が簡単な$\exp(~)$関数を使ってなるべくシンプルに定義したい。
また、各成分の総和が1になるようにしたい。
(「各選択肢が正解である確率」の総和は、常に1だ。)
この2つの要件を満たした関数が、次に示すものだ。

softmax\begin{pmatrix}a_1 \\a_2 \\:\\a_n \end{pmatrix}
=
\frac{1}{\exp(a_1)+\exp(a_2)+..+\exp(a_n)}
\begin{pmatrix}\exp(a_1) \\\exp(a_2) \\:\\\exp(a_n) \end{pmatrix}

2-3. 準備3―計算グラフの導出

1つずつの過程を図にする。
image.png
↑まず入出力のみ整理
image.png
↑まず分子を計算するノードを書いた
image.png
↑分母は出力の何番目でも共通
image.png
↑分母のノード(「∑」と「-1乗」に分けた)
image.png
↑分母のノード(「∑」のノードの左側をつないだ)

2-4. 誤差逆伝播法の適用

いよいよ誤差逆伝播法を適用していく。
次の図のように、出力側から$-\frac{t_j}{y_j}$が伝わった場合を考える。
image.png

ちなみに$t_j$は正解ベクトルといって、その成分(選択肢)が正解の場合に1、不正解の場合に0となるものである。「正しく固まった最大値関数」そのものである。
$y_j$は、ソフトマックス関数の出力の成分、$\frac{\exp(a_j)}{\sum_{i=1}^n\exp(a_i)}$である。
また、簡単に表すため、$\sum_{i=1}^n\exp(a_i)$を$S$と書いている。

緑色の矢印に対応する$?_1$を求めてみよう。

第1章に示したチートシートをもとに考えれば、
image.png
と求められる。
(書籍の中には、近似を用いていることを説明せず、いきなり$-t_j S$の結果だけを示しているものがある。
これは、初めの式で分母の$y_j$と被微分変数の$y_j$を約分し、微分変数$\frac{1}{S}$の逆数をかけたかのような誤解を生む、好ましくない表現であると思う)

image.png

次に$?_2$を求めよう。
image.png
∑は、薄い矢印をも考慮したものである。

image.png

$?_3$を求めよう。

image.png

image.png

$?_4$を求めよう。
image.png

image.png

最後に$?_5$を求めよう。これが「 $-\frac{t_j}{y_j} $ を受け取ったときに、ソフトマックス関数が逆方向に伝える誤差」である。

image.png

3.参考文献

[1]O'REILLY ゼロから作るDeep Learning

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?