文脈においては、込み入った数式をシンプルに記述する「表記としての線形代数」が非常に重要です。コンピュータ上の実装を考えるときにも線形代数のアイデアは大活躍します。入力や重みはプログラミングにおけるarray(用いるプログラミング言語によって名称は変わります)というデータ構造でまとめることが多く、これはベクトル・行列に非常に近いアイデアです。これからも学習を続け、ぜひ線形代数に慣れ親しんでいってください。ここからが今回のメイントピック。前回までは「入力値の前向き伝播」を行い、その後「誤差の更新」を考えました。今回は「誤差の更新項を具体的にどうやって計算するのか」ということに焦点を当てていきます。}$はどうやって求めるのか」ということです。そこで登場するのが「バックプロパゲーション」と呼ばれるアルゴリズム。このアルゴリズムと勾配降下法を組み合わせることで、ニューラルネットワークの重みの更新をばっちり行うことができます。Propagationと書きます。後ろ向きに(Back)、伝える(Propagation)ということ。何を伝えるのかを簡単に言うと、ニューラルネットワークの文脈では「偏微分の値を出力から逆方向に各層内のニューロン達に伝える」のです。こんなことを考える背景には「勾配降下法」があります。}$を計算しなければなりません。考えてみると出力層から遠く離れた中間層の結合の重みで誤差関数を偏微分するというのは、少しイメージができませんね。}$の計算を可能にします。具体的には「連鎖律の原理」という非常に強力な微分の法則を用います。連鎖律の原理バックプロパゲーションと呼ばれるアルゴリズムでは、連鎖律の原理が非常に重要な役割を担います。簡単な具体例から、連鎖律の原理を理解しましょう。この関数の見方を変えてみます。w_2)$を2つの関数の合成と見なすのです。w_2x_2$$という2つの関数の合成と見なします。}$を考えてみましょう。$y$は一見すると$s$の関数であり、$w_1$で偏微分できそうにありません。$s$自体は$w_1$の関数となっています。このとき、偏微分を以下のように分解できるのです。}$$これが連鎖律の原理です。}$も2つの偏微分に分解して掛け合わせれば良いのです。この連鎖律の原理がバックプロパゲーションのカギです。「偏微分の数珠つなぎのアイデアを用いて、あらゆる重みに対する誤差関数$E$の偏微分の値を求めよう!」ということをしていくのです。すれば勾配降下法を用いて重みの値を更新できます。このアイデアを、2つの中間層を持った下図のような深層ニューラルネットワークを用いて具体的に考えていきましょう。}$の更新ついて考えます。}$を求めることが目標です。}$$と考えることができます。