【上級編】ディープラーニングでのパラメータ計算方法

スキルアップ

はじめに

前回の記事で、ディープラーニングを図と数式で説明しました。
そして、記事の最後にパラメータの計算方法について、説明できていないこともお話ししました。

そこで今回は、ディープラーニングのモデルについて、パラメータを計算する方法を説明します。

ただし、こちらを学ぶためには「数学の微分とベクトル解析」、「コンピュータで最小値を求める時の考え方」が必要となります。

もし、徹底的に理解したい方は、今後のためにもこれらを学ぶことをオススメします。
また、考え方の雰囲気を知りたい方は、細かい計算式は飛ばして、考え方の流れを掴んでもらえればと思います。

実際にプログラミングする場合は、パラメータを計算するパッケージを利用します
自分自身で、この内容を理解してプログラムを書く必要はないので、この情報は「より理解を深めたい人」向けの補足になります。

画像判定ディープラーニングの復習

今回も、前回の記事で用いた画像判定ディープラーニングで説明を進めます。
まずは、そのまとめを整理してきましょう。

全体像

記号の定義

第2層:隠れ層(Hidden Layer)

第3層:出力層(Output Layer)

(補足)

コスト関数の設定

パラメータを計算するためにはコスト関数を設定する必要があります。

コスト関数は、モデルと実際のデータの「誤差の総量」を表しています。
つまり、これが小さくなるパラメータを計算で求められれば、実際のデータに合ったモデルとなります。
※パラメータを計算する考え方を知りたい方は、次の記事をご参照ください。

コスト関数とは、「モデルで計算した判定結果」と「実際の正解」の差となります。

つまり、あるk番目のデータを利用して、○と×の判定(確信度)の結果がaで、正解がtだったとします。

この場合の誤差 c は、次のように表せます。

ただし、これはk番目のデータ1つの誤差です。
データがもっとたくさん(データがn個)ある場合は、この細かい誤差を全て足す必要があります。

そのため、最終的なコスト関数は次のようになります。

コスト関数から最適なパラメータを計算する「勾配降下法」

コスト関数が設定できたので、これを元にパラメータを求めます。
まず、コスト関数が最小になるための条件として、お馴染みの微分した結果が”0″となる数式を設定します。

しかし、またまた問題があります。

主な点では・・・
1つ目:コスト関数 C(具体的には人工ニューロンに設定した関数)の詳細が未定であること。
2つ目:毎回手作業で微分の計算をしては手間がかかりすぎること

そこで、コスト関数の詳細にかからず、コンピュータに計算させる方法として、勾配降下法が作られました。

コンピュータで最小値を求める方法

コンピュータで関数の最小値を求める時の代表的な考え方に、現在の値より小さい値を持つようにパラメータを更新し続け、最終的に最小点へ到達させる方法があります。

この方法で重要なのが、現在の値より小さい値を持つようにパラメータを更新するルールです。

今回は、このルールの中から「勾配降下法」と呼ばれるモノを紹介します。

勾配降下法の導出

説明を簡単にするために、パラメータが2つの場合の関数 z = f(x, y) について考えることにします。

この関数について、x → x+Δx、y → y+Δy とごく僅かだけ値をズラすとします。
そうすると当然 zも少しズレるので、そのずれ幅Δzを考えます。

ここで、微分法の定義を確認してみます。

はじめに、1変数の場合の微分法の定義は

ここで、Δx が非常に小さい時、微分法の定義は次のように近似できます。

これを、2変数の場合に拡張すると次のような式になります。

ここで、左辺の項がeq.(1)に含まれているので、代入します。


次に、eq.(2)の右辺がベクトルの内積の形に似ているので、以下のように表します。

ここで、ベクトルの内積の定義が

cosθ=-1〜1 なので、Δz が最小のなるのは以下の式を満たす時になります。

したがって、関数 z = f(x, y) のある点(x1, y1)から x と y を少しズラして、z1+Δz を最小にしたいならば、次のように(Δx, Δy)をズラせばよいことになります。

このルールに従って、x と y を繰り返しズラすことで、z を真の最小値までズラすことができます

勾配降下法の解釈

勾配降下法の導出した式(eq.(3))をよく見ると、右辺の()内は関数 f(x, y) の勾配を表しています
※勾配とはグラフの傾きのことです。

つまり、この f(x, y) のグラフを図のように単純化すると、z を最小値に向かうように点P→点Qにズラす様子は以下のように表すことができます。

これは、グラフの勾配に対して、真逆に進んでいる様子を示しています。

「勾配」という言葉に聞き馴染みがないとピンとこないかもしれませんが、簡単にいうと・・・

グラフを坂道に例えると、坂道の登り方向(≒ 勾配)と逆向き向かって移動する。
すなわち、坂道を下っているので、いつかは一番低い場所にたどり着けるはず!!

「勾配降下法」をディープラーニングに適用

勾配降下法によって、コンピュータが得意な「繰り返し計算」によって関数の最小値を求めることができます。
早速、勾配降下法にコスト関数を当てはめてみましょう!!

・・・あれ? 偏微分が消えてない!?
実は、コンピュータだけでコスト関数の最小値を求めるさせるためには、勾配降下法だけでは不十分なのです・・・

この問題は、本当にコンピュータだけで解かせるためには「誤差逆伝搬法」を導入する必要があります。

以降の説明は数式を多用するため、別ツールで作成した説明資料を画像形式で添付します。

まとめ

ディープラーニングのモデルでパラメータを計算する方法をまとめると次のようになります。

このプロセスを繰り返すことで、最適なパラメータを求めることができます。

最後に

これで、ディープラーニングのモデルを原理から理解し、パラメータの決定方法まで学ぶことができました。

もしかしたら、途中でよく分からなくなってしまった方もいるかもしれません。
その場合は、落ち着いて一つ一つの式を丁寧に見返してみてください。

または、自分の手で式変形を丁寧に紙に書いてみると、繋がりが見えてくると思います。

難しいと思いますが、ぜひこの内容を自分の物にできるように、チャレンジしてみてください!

コメント

タイトルとURLをコピーしました