今回は、ディープラーニングの基礎の第7回目です。前回は、ニューラルネットワークの学習の基礎知識である「勾配法」について説明しました。単純な勾配法は実装が簡単なのですが、計算コストが高いという問題があります。そこで今回は、効率的に学習を行う「誤差逆伝搬法(Backpropagation)」について紹介します。

一般的にニューラルネットワーク、ディープラーニングの学習といえば、この誤差逆伝搬法によるものです。損失関数の勾配を求め、より誤差が小さくなる方向に重みパラメータを順次更新するという考え方は勾配法と同じです。勾配を求めるときに各重みパラメータごとの偏微分を計算するのですが、その偏微分の計算を効率良く行うことができるのが誤差逆伝搬法です。

計算グラフによる誤差逆伝搬法の説明が理解し易いと思いますので、本連載でも計算グラフで説明していきます。

計算グラフ

図1の非常にシンプルな構成のニューラルネットワークを例に説明したいと思います。説明を簡略化するために活性化関数などを省略すると、出力層の出力値は、y=(x1×w1+x2×w2)×w3で計算できます。

  • シンプルな構成のニューラルネットワーク

    図1 シンプルな構成のニューラルネットワーク

この計算を計算グラフにしたものが図2です。左から右にデータが流れ計算が進みます。これを順伝搬といいます。

  • 計算グラフ

    図2 計算グラフ

偏微分の計算

誤差逆伝搬法では、この計算グラフの出力側から正解値と予測値の誤差を逆方向に伝搬していきます。y=(x1×w1+x2×w2)×w3 = t×w3とすると、w1についての偏微分は次式の通り分解することができます。実際には、yと正解値との間の誤差を損失関数L(w)で評価することになるので、損失関数L(w)を偏微分することになります。

w2についての偏微分も同様です。

この偏微分を計算グラフと対応付けると図3、図4となります。出力層に近い偏微分の計算結果出力層に近い偏微分の計算結果は、重みパラメータw1、w2それぞれについての偏微分の計算で共通であり、毎回計算する必要がないことが分かります。このように出力層から順に入力層に向けて偏微分を計算し、計算済みの結果を伝搬することで効率良く入力層に近い重みパラメータの偏微分を計算していく手法が誤差逆伝搬法です。

今回の例は、極シンプルなネットワークのためあまりメリットがあるように感じないかもしれませんが、ディープラーニングではネットワークが多層となり、かつ非常に多くの重みパラメータが存在するため有用な手法です。

  • 計算グラフにおける重みパラメータw1についての偏微分の計算

    図3 計算グラフにおける重みパラメータw1についての偏微分の計算

  • 計算グラフにおける重みパラメータw2についての偏微分の計算

    図4 計算グラフにおける重みパラメータw2についての偏微分の計算

今回は、説明を簡略化するために活性化関数などの説明は省略しました。活性化関数が加わっても基本的な考え方は同じです。誤差逆伝搬法の基本原理だけでも理解しておくと、ディープラーニングがどのようにものごとを学習しているのかが分かってくると思います。ニューラルネットワーク、ディープラーニングの研究、設計、開発できっと役立つはずです。

著者プロフィール

樋口未来(ひぐち・みらい)
日立製作所 日立研究所に入社後、自動車向けステレオカメラ、監視カメラの研究開発に従事。2011年から1年間、米国カーネギーメロン大学にて客員研究員としてカメラキャリブレーション技術の研究に携わる。

日立製作所を退職後、2016年6月にグローバルウォーカーズ株式会社を設立し、CTOとして画像/映像コンテンツ×テクノロジーをテーマにコンピュータビジョン、機械学習の研究開発に従事している。また、東京大学大学院博士課程に在学し、一人称視点映像(First-person vision, Egocentric vision)の解析に関する研究を行っている。具体的には、頭部に装着したカメラで撮影した一人称視点映像を用いて、人と人のインタラクション時の非言語コミュニケーション(うなずき等)を観測し、機械学習の枠組みでカメラ装着者がどのような人物かを推定する技術の研究に取り組んでいる。

専門:コンピュータビジョン、機械学習