5章誤差逆伝播法
前章では、ニューラルネットワークの学習について説明しました。その際、ニューラルネットワークの重みパラメータの勾配——正確には、重みパラメータに関する損失関数の勾配——は、数値微分によって求めました。数値微分はシンプルで、実装は簡単でしたが、計算に時間がかかるという難点があります。本章では、重みパラメータの勾配の計算を効率良く行う手法である「誤差逆伝播法」について学びます。
誤差逆伝播法を正しく理解するには、2つの方法があると、筆者は(個人的に)考えています。ひとつは「数式」によって、もうひとつは「計算グラフ(computational graph)」によって理解するというものです。前者のほうが一般的な方法で、特に、機械学習に関する書籍の多くでは、数式を中心に話を展開していきます。確かに、数式による説明は、厳密で簡潔になるのでもっともな方法なのですが、いきなり数式を中心に考えようとしたら、本質的なことを見逃してしまったり、数式の羅列にとまどったりすることがあります。そこで本章では、計算グラフによって“視覚的”に誤差逆伝播法を理解してもらおうと思います。実際にコードに書くことでさらに理解が深まり「なるほど!」と納得できると思います。
なお、誤差逆伝播法を計算グラフによって説明するアイデアは、Andrej Karpathyのブログ[4]、また、彼とFei-Fei Li教授らによって行われたスタンフォード大学のディープラーニングの授業「CS231n」[5]を参考にしています。
5.1 計算グラフ
計算グラフとは、計算の過程をグラフによって表したものです。ここで言うグラフとは、データ構造としてのグラフであり、複数のノードとエッジによって表現されます(ノード間を結ぶ直線を「エッジ」と言います)。本節では、計算グラフに慣れ親しむため、簡単な問題を解いていきます。簡単な問題から始め、ステップ・バイ・ステップで進みながら、最後には誤差逆伝播法にたどり着く予定です。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access