トップQs
タイムライン
チャット
視点
バックプロパゲーション
ウィキペディアから
Remove ads
バックプロパゲーション(英: backpropagation)または誤差逆伝播法(ごさぎゃくでんぱほう)[1]とは、ニューラルネットワークの損失関数のパラメータに関する偏微分を、自動微分のトップダウン型(リバース・モード)と同様の手法により、出力側から偏微分を計算し、誤差を伝播させる方法で、効率よく計算する手法である。一般的には、ここで計算した偏微分を使用し、確率的勾配降下法でニューラルネットワークを学習させる。用語は曖昧に使用されていて、バックプロパゲーションに確率的勾配降下法まで含んで使われている事も多い。[2]
概要
要約
視点
バックプロパゲーションは数理モデルであるニューラルネットワークの重みに関する偏微分を計算するアルゴリズムで、確率的勾配降下法は重みを更新する(学習する)手法である。
バックプロパゲーションおよび確率的勾配降下法は次の通りである:
- ニューラルネットワークに学習のためのサンプルを与える。
- ネットワークの出力を求め、出力層における誤差を求める。その誤差を用い、各出力ニューロンについて誤差を計算する。
- 個々のニューロンの期待される出力値と倍率 (scaling factor)、要求された出力と実際の出力の差を計算する。これを局所誤差と言う。
- 各ニューロンの重みを局所誤差が小さくなるよう調整する。
- より大きな重みで接続された前段のニューロンに対して、局所誤差の責任があると判定する。
- そのように判定された前段のニューロンのさらに前段のニューロン群について同様の処理を行う。
アルゴリズム名が示唆するように、誤差(および学習)は出力ノードより前方のノードへと伝播する。技術的に言えば、バックプロパゲーションはネットワーク上の変更可能な重みについて、誤差の傾斜、つまり損失関数の偏微分を計算するものである[3]。数式での実際の計算方法は自動微分のトップダウン型自動微分を参照。バックプロパゲーションと同一である。
出力側から偏微分を計算すると計算効率が良くなる理由は、損失関数の出力がスカラーであることに起因するのだが、詳細は自動微分を参照。
確率的勾配降下法
→「確率的勾配降下法」も参照
バックプロパゲーションで計算した偏微分値は、ほとんどの場合、損失関数の誤差を最小にするアルゴリズムである確率的勾配降下法と共に使用される。
ネットワーク に対する損失関数 を定義したとき、現在の重み における の傾きすなわち偏微分値 がわかれば、最適化手法である確率的勾配降下法を用いて損失 が小さくなるように を更新(=学習)できる。学習アルゴリズムであるバックプロパゲーションの目的はこの偏微分値を得て重みを学習することである。
本来は偏微分の計算方法だけを指すのだが、「バックプロパゲーション」という用語は曖昧に使われ、偏微分の計算方法と確率的勾配降下法も含めた全体を示す事に使われることも多い。確率的勾配降下法は通常収束して、対象ネットワークの誤差の局所解(区間を限定したときの極小値、極値参照)を探し出す。人工ニューロン(または「ノード」)で使われる活性化関数は微分可能関数でなければならない。
数理最適化問題の一種であるため、バッチ学習・オンライン学習のいずれかが採用される。典型的には確率的勾配降下法を用いたミニバッチ学習が行われる。
自動微分
→「自動微分」も参照
バックプロパゲーションは、自動微分のトップダウン型(リバース・モード)という汎用技法の特殊ケースである。昔は手作業で偏微分の式変形を行っていたが、現在は PyTorch や TensorFlow などのニューラルネットワークのライブラリには自動微分の機能が含まれているので、簡単に使えるようになっている。膨大数の偏微分値を自動微分により高速計算することで、極めて多次元の最適化計算の実用的な高速化が可能となる。
Remove ads
確率的勾配降下法のテクニック
要約
視点
確率的勾配降下法を用いて(深層)ニューラルネットワークモデルを素早く・最適解へ収束させるために様々なテクニックが提唱されている。
標準的なテクニックをヤン・ルカンらが1998年にまとめていて[4]、2010年に Xavier Glorot らが追証・発展させている[5]。以下に要約する。詳細はそれぞれの論文を参照。
- オンライン学習において訓練データが一周したら毎回シャッフルし直す
- 入力は、平均を0にし、主成分分析により線形相関を取り除き、分散が1になるように線形変換する。面倒だったら主成分分析は省略しても良い。
- 目標値(出力)は活性化関数を通す場合は、二次導関数が最大になる範囲内を使用するべきである。 の場合は −1〜1 で、tanh(x) の場合は 〜 = −0.65848 〜 0.65848 である。
- 初期値: 各層で平均0分散1、かつ連続一様分布[6]
- 入力ベース: by ヤン・ルカン
- 入出力ベース: by Xavier Glorot
- 勾配法: 様々なパラメータ更新法が提案され利用されている(確率的勾配降下法#変種を参考)。
- 活性化関数
Remove ads
高速化
GPU
行列の掛け算はGPGPUが得意としており、高速に計算できる。PythonではTheanoなどのライブラリおよびそれを間接的に使用してる機械学習のライブラリなどがある。
CPUによる並列化
CPUのメニーコアやSIMDを有効活用する簡単な方法は行列演算ライブラリを使用する方法である。行列演算ライブラリとしては、例えばインテルのCPU向けではIntel Math Kernel Libraryなどがある。
バックプロパゲーションは完了までに非常に時間のかかる反復処理である。マルチコアのコンピュータでマルチスレッド技法を使えば、収斂までにかかる時間を大幅に短縮することができる。バッチ学習を行う場合、マルチスレッドでバックプロパゲーションのアルゴリズムを実行するのが比較的簡単である。
訓練データをそれぞれのスレッド毎に同程度の大きさに分割して割り当てる。それぞれのスレッドで順方向と逆方向のプロパゲーションを行う。重みとしきい値のデルタをスレッド毎に合計していく。反復の周回毎に全スレッドを一時停止させて、重みとしきい値のデルタを合計し、ニューラルネットワークに適用する。これを反復毎に繰り返す。このようなバックプロパゲーションのマルチスレッド技法がEncog Neural Network Frameworkで使われている[11]。
歴史
要約
視点
確率的勾配降下法およびバックプロパゲーション(出力側から偏微分)に相当するニューラルネットワークの学習手法は1960年代に開発されたものだが、定着せず、その後、何度も再発見され、1986年より標準的な手法として普及した。
- 1951年、Herbert Robbins等が確率的勾配降下法を発表した。[12]
- 1960年、バーナード・ヴィドローとマーシャン・ホフが、二値分類問題に対して、損失関数が二乗誤差損失の形式ニューロン(入出力が二値の線形分類器、つまり、活性化関数が符号関数の1層の単純パーセプトロン)を確率的勾配降下法で学習させる方法を発表した[13][14]。Widrow-Hoff法(デルタルール)と命名した。学習させる際は、活性化関数の符号関数を外して内側の線形モデルに対して学習させる。二乗誤差の線形モデルなので、偏微分は出力誤差を使用したものになり、論文では、誤差のフィードバックで学習させていると書かれているが、単なる線形モデルなので、誤差を伝播させる話ではない。
- 1964年、R.E. Wengertが自動微分を発表した[15]。論文で書かれていたのは入力側から偏微分する方法(ボトムアップ型、フォーワード・モード)で、Andreas Griewank によると、計算の効率化のために出力側から偏微分する方法(トップダウン型、リバース・モード)を誰が考案したのか判然とはしないが、1960年代後半には提案されていた[16]。出力側から偏微分する方法はバックプロパゲーションと同じ計算方法である。
- 1967年、甘利俊一がニューラルネットワークの最も基本的な形である多層パーセプトロンを確率的勾配降下法で学習させ、その理論的解析を書いた論文を発表した[17][18]。翌年1968年に書籍『情報理論II ―情報の幾何学的理論―』[19]にて詳しく解説した。書籍には判別面がギザギザの線形分離不可能な例を学習させるものが紹介されている。1967年の論文には具体例がなく、1968年の書籍のp.119に載っている具体例のモデルは、入力が2次元ベクトル、出力がスカラーの二値分類問題で、1966年のR. O. Dudaの手書き文字認識のモデル[20]を改変した という区分的線形識別関数のモデルであり、これは、中間層の活性化関数にReLUを使用した場合の多層パーセプトロンと等価ではあるが、これが多層パーセプトロンであるという記述は書籍側にはなく、また、出力側から偏微分を計算するという話も書かれてはいない。
- 1969年、アーサー・E・ブライソン& 何毓琦[21][22]: 多段動的システム最適化手法として提案
- 1974年、ポール・ワーボス[23]: ニューラルネットワークにおける応用を示唆
- 1986年、デビッド・ラメルハート、ジェフリー・ヒントン、ロナルド・J・ウィリアムス[24][25]: backwards propagation of errors(逆向きの誤差の伝播)の略からバックプロパゲーションの名で出力側から偏微分を計算する方法を再発明し、この論文では確率的勾配降下法ではなく最急降下法が使用されているのだが、直後から以後、確率的勾配降下法を使用する方法を含めて定着した。
Remove ads
限界
脚注
関連項目
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads
