LoginSignup
5
3

More than 3 years have passed since last update.

はじめてのパターン認識7章後半 式変形メモ〜誤差逆伝播法〜

Last updated at Posted at 2019-07-02

ブログの動機

 先日、はじパタ輪読会なるもので担当として7章後半が当たってきました。この輪読会は担当者が皆の前で講義を行うスタイルだったので、準備のため概要をノートにまとめました。
 はじパタは全体的に、式変形とか飛ばしながら進んでいくのでどうしても読むのに時間がかかってしまい、、、まとめたノートをブログに書いておくことで、あとで自分で振り返ることが出来るようにしておきたいなと思い、今回のブログを書くことにしました。

いきなりお詫び

  • 誤字脱字等あるかも知れません。
  • 表記ははじパタに寄せていますが、所々微妙な違いがあるかも知れません。

本編

単純パーセプトロンの限界

 4章の後半、一番最初の話題は単純パーセプトロンでは単純な識別関数しか表現できないって話です。
IMG_5255.jpg
ここでXORゲートの話が出てくるのですが、分かり易いように$x_1$と$x_2$の二変数の場合で図示して見ました。

損失関数(二乗誤差)

 この式は損失関数と言われ、多層パーセプトロンの学習ではこの関数を出来るだけ小さくするような$\boldsymbol{w}$を求めていくのがゴールになります。実際の正解と出力の差を取って二乗するという操作を全ての$k$(出力値の数)で足し合わせる操作を意味しているのですが、正解と出力(予測値)が近いほど精度が高いモデルと言えるので、この式を小さくするというモチベーションは割と分かり易いかと思います。
IMG_5256.jpg
 一応、赤字で書いているのですが①(つまり全てのデータの損失を合計した値)を使ってパラメータを更新していくのがバッチ学習、②(つまりデータ一つ一つの損失)を使って都度パラメータを更新していくのがオンライン学習になります。

ここから少しややこしくなります

IMG_5257.jpg

 左のページが入力層から隠れ層、およびその後の隠れ層から出力層への流れを書いています。各ノードへの総入力がデータ$x$の各特徴量($x_1, x_2, … x_i$)、及び前層からの出力($V_1, V_2, …V_j$)と各層のパラメータ$\boldsymbol{w}$の線型結合で表現でき、最終的にベクトルの内積で書くことが出来るのが分かるかと思います。
 右のページは先ほどの損失関数の最小値を求めるための準備として、勾配$w_{kj}$で損失関数を微分しています。この辺はそこまで難しい計算をしている訳ではないのですが、添え字がたくさん出てきて戸惑うポイントでした。
 ここで出てきた勾配に$-\eta$をかけた分だけパラメータを更新して(つまり、勾配降下法)、求めたい$\boldsymbol{w}$に辿り着けるよう$\boldsymbol{w}$を更新していきます。

隠れ層の勾配と連鎖律

 先ほどは損失関数を$w_{kj}$(出力層のパラメータ)で微分していきましたが、次は$w_{ji}$で微分していきます。その前に以下の連鎖律をひとまず約束事としておきます。

1変数の関数$h=f(x)$と1変数の関数$x=g(t)$
$$\frac{dh}{dt} = \frac{dh}{dx}\frac{dx}{dt}$$

2変数の関数$h=f(u, v)$と1変数の関数$u=s(x), v=t(y)$
$$\frac{dh}{dt} = \frac{\partial h}{\partial u}\frac{du}{dx} + \frac{\partial h}{\partial v}\frac{dv}{dy}$$

2変数の関数$h=f(u, v)$と2変数の関数$u=s(x, y),v=t(x, y)$の場合
$$\frac{\partial h}{\partial x} = \frac{\partial h}{\partial u}\frac{\partial u}{\partial x} + \frac{\partial h}{\partial v}\frac{\partial v}{\partial x}$$
$$\frac{\partial h}{\partial y} = \frac{\partial h}{\partial u}\frac{\partial u}{\partial y} + \frac{\partial h}{\partial v}\frac{\partial v}{\partial y}$$

Slide1.jpg

連鎖律自体が分かっていてもパッと見て、はじパタの式の意味が分かりづらいと思ってノートの最初に色々書きましたが、なんだか余計分かりづらいかもです。ここの部分がこの章で一番ややこしいかも知れません。

正則化

Slide1 2.jpg
正則化については、機械学習のその他アルゴリズムでも良くあるかと思うので、先ほどの微分に比べると式変形は理解し易いかと思います。パラメータ$\boldsymbol{w}$のノルムを評価関数に加える手法はその他のアルゴリズムでも定番です。

クロスエントロピーとシグモイド関数の組み合わせ

 先ほどまでは損失関数(評価関数)として二乗誤差の最小化を目指していましたが、次は尤度関数というものを考えてその最大化(実際には−1を掛けているので、最小化)を目指していきます。ちなみに対数をとって変形された後の式をクロスエントロピーとも言います。
 長い式変形をしていますが、最終的にシグモイドとクロスエントロピーの組み合わせが勾配が非常にシンプルな形で出てきます。
Slide1 3.jpg
 良く見るとはじパタでは勾配に$\beta$という定数が出てきていますが、これはシグモイド関数の変数部分に$\beta$という値がついている為、微分後に出てくるのが理由です。$\beta$という定数でシグモイド関数の挙動をコントロールしている形になります。

終わりに

  • はじパタは何となくの理解で終わっている章も多いので、深いところまで理解できるようにしたい(特にSVMは難しかった)

参考文献

はじめてのパターン認識 著 平井有三 森北出版株式会社

5
3
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
5
3