バックプロパゲーション

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

バックプロパゲーション(Backpropagation)または誤差逆伝播法(ごさぎゃくでんぱほう)[1]は、ニューラルネットワークを訓練するために使われる教師あり学習技術である。backwards propagation of errors(後方への誤差伝播)の略から作られた言葉である。

1969年、アーサー・E・ブライソン英語版(Arthur E. Bryson)と何毓琦英語版が多段動的システム最適化手法として提案した[2][3]。ニューラルネットワークに応用されるようになったのは、ポール・ワーボス英語版[4]デビッド・ラメルハートジェフリー・E・ヒントン英語版ロナルド・J・ウィリアムス英語版[5][6]の業績によるもので1974年以降のことであり、それによってニューラルネットワーク研究が注目を浴び再活性化することになった。

教師あり学習手法であり、デルタルール英語版を一般化したものと言える。訓練集合を作るには、多数の入力について必要とされる出力を事前に定めておく必要がある。フィードフォワードネットワーク(フィードバックを持たない、あるいは単にループするコネクションを持たないネットワーク)で最も効果を発揮する。バックプロパゲーションでは、人工ニューロン(または「ノード」)で使われる伝達関数可微分でなければならない。

概要[編集]

技術の要約は次の通りである:

  1. ニューラルネットワークに学習のためのサンプルを与える。
  2. ネットワークの出力とそのサンプルの最適解を比較する。各出力ニューロンについて誤差を計算する。
  3. 個々のニューロンの期待される出力値と倍率(scaling factor)、要求された出力と実際の出力の差を計算する。これを局所誤差と言う。
  4. 各ニューロンの重みを局所誤差が小さくなるよう調整する。
  5. より大きな重みで接続された前段のニューロンに対して、局所誤差の責任があると判定する。
  6. そのように判定された前段のニューロンのさらに前段のニューロン群について同様の処理を行う。

このアルゴリズムの名が暗示するように、エラー(および学習)は出力ノードから後方のノードへと伝播する。技術的に言えば、バックプロパゲーションはネットワーク上の変更可能な重みについて、誤差の傾斜を計算するものである[7]。この傾斜はほとんどの場合、誤差を最小にする単純なアルゴリズムである確率的最急降下法で使われる。「バックプロパゲーション」という用語はより一般的な意味でも使われ、傾斜を求める手順と確率的最急降下法も含めた全体を示す。バックプロパゲーションは通常すばやく収束して、対象ネットワークの誤差のローカルミニマム(区間を限定したときの極小値、極値参照)を探し出す。

バックプロパゲーションを行う場合、ネットワークは少なくとも三層以上でなければならない(入力層、中間層、出力層)。また、多層ネットワークの中間層が意味のある関数を表すには、非線形の活性化関数でなければならない。線形な活性化関数の多層ネットワークは、単層ネットワークと等価である。非線形の活性化関数としては、ロジスティック関数(中でもシグモイド関数)、ソフトマックス関数ガウス関数などが一般的である。

バックプロパゲーションのアルゴリズムは何度か再発見されており、逆積算モードにおける自動微分という汎用技法の特殊ケースと見ることもできる。

また、ガウス・ニュートン法とも密接に関連する。

学習のモデル[編集]

学習には、オンライン(逐次的)学習とバッチ学習という2つのモードがある。オンライン(逐次的)学習では、個々のプロパゲーションの直後に重み付けの更新を行う。バッチ学習では多数のプロパゲーションを行い、まとめて重み付けの更新を行う。バッチ学習ではメモリ容量をより多く必要とするが、オンライン学習では更新処理が多くなる。

マルチスレッドのバックプロパゲーション[編集]

バックプロパゲーションは完了までに非常に時間のかかる反復処理である。マルチコアのコンピュータでマルチスレッド技法を使えば、収斂までにかかる時間を大幅に短縮することができる。バッチ学習を行う場合、マルチスレッドでバックプロパゲーションのアルゴリズムを実行するのが比較的簡単である。

訓練データをそれぞれのスレッド毎に同程度の大きさに分割して割り当てる。それぞれのスレッドで順方向と逆方向のプロパゲーションを行う。重みとしきい値のデルタをスレッド毎に合計していく。反復の周回毎に全スレッドを一時停止させて、重みとしきい値のデルタを合計し、ニューラルネットワークに適用する。これを反復毎に繰り返す。このようなバックプロパゲーションのマルチスレッド技法が Encog Neural Network Framework英語版 で使われている[8]

限界[編集]

  • バックプロパゲーションによる学習での収斂は非常に遅い。
  • バックプロパゲーションによる学習は、必ず収斂するとは限らない。
  • 広域的な最適解ではなく局所的な誤差最小点に収斂することが多い。
  • 入力のスケーリングまたは正規化を必要とする。

脚注[編集]

  1. ^ 逆誤差伝搬法(ぎゃくごさでんぱんほう)と呼ばれることもあるが,電波伝播に対する電波伝搬と同じく誤読に起因する誤字である。
  2. ^ Stuart Russell and Peter Norvig. Artificial Intelligence A Modern Approach. p. 578. "The most popular method for learning in multilayer networks is called Back-propagation. It was first invented in 1969 by Bryson and Ho, but was largely ignored until the mid-1980s." 
  3. ^ Arthur Earl Bryson, Yu-Chi Ho (1969). Applied optimal control: optimization, estimation, and control. Blaisdell Publishing Company or Xerox College Publishing. pp. 481. 
  4. ^ Paul J. Werbos. Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. PhD thesis, Harvard University, 1974
  5. ^ Alpaydın, Ethem (2010). Introduction to machine learning (2nd ed. ed.). Cambridge, Mass.: MIT Press. p. 250. ISBN 978-0-262-01243-0. "...and hence the name backpropagation was coined (Rumelhart, Hinton, and Williams 1986a)." 
  6. ^ Rumelhart, David E.; Hinton, Geoffrey E., Williams, Ronald J. (8 October 1986). “Learning representations by back-propagating errors”. Nature 323 (6088): 533–536. doi:10.1038/323533a0. 
  7. ^ Paul J. Werbos (1994). The Roots of Backpropagation. From Ordered Derivatives to Neural Networks and Political Forecasting. New York, NY: John Wiley & Sons, Inc.
  8. ^ J. Heaton http://www.heatonresearch.com/encog/mprop/compare.html Applying Multithreading to Resilient Propagation and Backpropagation

外部リンク[編集]