0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サルでもわかる機械学習:ニューラルネットと誤差逆伝播を『値の流れ』から理解する

0
Last updated at Posted at 2026-08-11

サルでもわかる機械学習:「学習する」って結局、何をしているの?

機械学習の教科書を読むと、いきなりニューラルネットワークの式が出てきて、その直後に $h$、$\delta$、$\odot$、勾配、誤差逆伝播……と記号が増えていきます。

しかし、最初に知りたいのはそこではありません。

まず必要なのは、機械学習全体が何を繰り返しているのかです。その全体像が分かってから、ニューラルネット、勾配降下法、誤差逆伝播を順番に置いていけば、個々の式の役割が見えやすくなります。

この記事では、できるだけ「何のための計算なのか」を先に説明し、記号は後から導入します。


0. まず30秒で全体像

ニューラルネットを使う典型的な機械学習は、極端に縮めると次の繰り返しです。

1. 重みの初期値を置く
        ↓
2. 入力から予測を出す
        ↓
3. 予測がどれだけ悪いか採点する
        ↓
4. 各重みを動かすと採点結果がどう変わるか調べる
        ↓
5. 採点結果が改善する方向へ重みを少し動かす
        ↓
      2へ戻る

つまり「学習」といっても、モデルが突然何かを理解する瞬間があるわけではありません。

予測する → 採点する → 少し修正する、を何度も繰り返しています。

この中で、後から出てくる用語を対応させると、

  • 2:順伝播(forward propagation)
  • 3:損失関数(loss function)
  • 4:誤差逆伝播(backpropagation, backprop)
  • 5:勾配降下法やAdamなどのoptimizer

となります。

誤差逆伝播は、機械学習全体では4番目の一部分にすぎません。


1. そもそも機械学習とは何か

一番単純には、機械学習は

データを見ながら、モデル内部の調整可能な値を自動で決めていく方法

と考えれば十分です。

例えば、気温 $x$ からアイスの売上 $y$ を予測するモデルとして、

$$
y=wx
$$

を考えます。

ここで $w$ は「気温を何倍すると売上になるか」を決める調整値です。これをパラメータ、ニューラルネットでは特に**重み(weight)**と呼びます。

仮に、

$$
x=2
$$

のとき、本当の売上が

$$
y=10
$$

だったとします。

もし現在の重みが

$$
w=3
$$

なら、モデルの予測は

$$
y=3\times2=6
$$

です。

本当は10なのに6しか出なかった。そこで「では $w$ を少し大きくした方がよさそうだ」と修正する。

機械学習の基本は、この発想の延長です。


2. 「予測がどれだけ悪いか」を数字にする

コンピュータに「なんとなく惜しい」「かなり間違っている」と言っても計算できません。

そこで、予測の悪さを一つの数にします。これが**損失(loss)**です。

例えば、予測値を $y$、正解として与えられた値を $t$ として、

$$
E=(y-t)^2
$$

とします。

先ほどの例なら、

$$
E=(6-10)^2=16
$$

です。

この $E$ を小さくすることを目標にすれば、「何を改善すればよいか」を数学の問題として扱えます。

ここで大事なのは、損失関数は目的そのものではなく、モデルをどう改善するか決めるための採点ルールだということです。


3. 一発で正しい重みを求めるのではなく、少しずつ動かす

単純な式なら、正しい $w$ を方程式で直接解けることもあります。

しかし実際のニューラルネットには、数百万、数十億、あるいはそれ以上のパラメータがあります。しかも、それらが何層もの非線形な計算を通して最終出力に影響します。

そこで普通は、

今いる場所から見て、どちらへ動けば損失が小さくなるか

を調べて、少しだけ動きます。

そしてもう一度予測し、もう一度損失を計算し、また少し動く。

この繰り返し、つまり**iteration(反復)**が学習です。

イメージとしては、濃霧の山の中で最も低い場所を探すようなものです。山全体を一望できないので、現在地の傾きを測って下り坂へ少し進みます。


4. 勾配降下法とは「今いる場所の傾き」を使う方法

ある重み $w$ を少し変えたとき、損失 $E$ がどちらへ、どの程度変わるかは、微分

$$
\frac{\partial E}{\partial w}
$$

で表せます。

これが**勾配(gradient)**です。

勾配が正なら、$w$ を増やすと $E$ が増える方向です。ならば $w$ を少し減らせばよい。

勾配が負なら、$w$ を増やすと $E$ が減る方向です。ならば $w$ を少し増やせばよい。

最も基本的な**勾配降下法(gradient descent)**では、

$$
w\leftarrow w-\eta\frac{\partial E}{\partial w}
$$

と更新します。

$\eta$ は**学習率(learning rate)**で、「一回にどれくらい進むか」を決めます。

つまり勾配降下法は、

今いる場所で下り坂の方向を調べ、少しだけ進む

という方法です。


5. 正しい重みの組み合わせは一つとは限らない

ここは機械学習を理解するうえで重要です。

例えば、

$$
y=2w_1w_2
$$

というモデルで、出力を10にしたいとします。

必要なのは、

$$
w_1w_2=5
$$

です。

したがって、

$$
(w_1,w_2)=(1,5)
$$

でも、

$$
(w_1,w_2)=(2,2.5)
$$

でも、

$$
(w_1,w_2)=(5,1)
$$

でも同じ出力になります。

つまり、同じ働きをするパラメータの組み合わせが複数あることは普通です。

機械学習は「宇宙にただ一つ存在する真の重み」を逆算しているわけではありません。

勾配法が教えてくれるのは、

今いる場所から、どちらへ進めば損失が小さくなるか

です。

どの解に到達するかは、初期値やoptimizerなどによって変わり得ます。


6. では初期値はかなり重要なのでは?

その通りです。

ニューラルネットの損失関数は一般に単純なお椀型ではなく、非常に高次元で複雑な形をしています。

そのため、学習中には例えば、

  • 局所的な谷(局所最小値)
  • 鞍点(saddle point)
  • ほとんど傾きのない平坦な領域
  • 勾配が極端に小さくなる状態
  • 勾配が極端に大きくなる状態

などが問題になります。

したがって「どこから出発するか」は無関係ではありません。

ただし、実際のニューラルネットでは、人間が一つ一つの重みに「この値が正解に近そうだ」と予想して初期値を決めるわけではありません。

通常は、適切な大きさのランダム値から始めます。

代表的なのが、

  • Xavier初期化(Glorot初期化)
  • He初期化

です。

これらは、層を通るたびに信号や勾配が消滅したり爆発したりしにくいよう、初期値の分布の大きさを調整する方法です。

また、現代の大規模ニューラルネットでは「悪い局所最小値だけ」が問題なのではなく、鞍点、平坦部、勾配消失・勾配爆発なども重要です。


7. optimizerは「勾配を見て、実際にどう歩くか」を決める

勾配が分かったとしても、実際の歩き方にはいろいろあります。

単純な勾配降下法以外にも、代表的なoptimizerとして、

  • SGD(Stochastic Gradient Descent)
  • Momentum
  • Adam

などがあります。

ざっくり言えば、

  • backprop:各重みについて「どちらへ動かすと損失がどう変わるか」を計算する
  • optimizer:その情報を使って、重みを実際にどう動かすか決める

という分担です。

この二つは同じものではありません。


8. ここで初めてニューラルネットを見る

ここまでの話は、まだ「機械学習全体」の話でした。

ニューラルネットは、その中で使われるモデルの一種です。

超単純化すると、ニューラルネットは

重み付きの計算を何段もつないだもの

です。

例えば、

        w1             w2
         ↓              ↓
x  ───>  a  ─────────>  y  ───>  E

というネットワークを考えます。

ここで、

  • $x$:入力
  • $a$:途中で計算された値
  • $y$:最終出力
  • $E$:損失
  • $w_1,w_2$:重み

です。

まず絶対に分けて考えたいのは、

x → a → y → E

は値の流れであり、

w1, w2

はその値の計算を決める調整つまみだということです。

例えば、

$$
a=w_1x
$$

$$
y=w_2a
$$

とします。


9. 順伝播とは、普通に答えを計算すること

例えば、

$$
x=2,\qquad w_1=3,\qquad w_2=1
$$

なら、

$$
a=w_1x=3\times2=6
$$

さらに、

$$
y=w_2a=1\times6=6
$$

です。

2 ───×3──> 6 ───×1──> 6
x           a           y

正解として与えられた値が10なら、例えば、

$$
E=(y-10)^2=16
$$

と損失を計算できます。

この、

入力 → 中間値 → 出力 → 損失

という普通の計算が**順伝播(forward propagation)**です。


10. では、どの重みをどちらへ動かせばよいのか

知りたいのは、

$w_1$ を少し変えたら、最終損失 $E$ はどう変わるか?

そして、

$w_2$ を少し変えたら、最終損失 $E$ はどう変わるか?

です。

つまり、

$$
\frac{\partial E}{\partial w_1}
$$

$$
\frac{\partial E}{\partial w_2}
$$

を求めたい。

しかし層が何百、何千とあれば、それぞれを最初から別々に計算するのは非常に非効率です。

そこで使うのが**誤差逆伝播(backpropagation)**です。


11. 「逆向き」の意味を、まず重み抜きで考える

ここが最も混乱しやすいところです。

まず重みをいったん忘れて、値だけ見ます。

x → a → y → E

この局所的な関係は、

  • $x$ が $a$ に与える影響
  • $a$ が $y$ に与える影響
  • $y$ が $E$ に与える影響

です。

微分なら、

$$
\frac{\partial a}{\partial x}
$$

$$
\frac{\partial y}{\partial a}
$$

$$
\frac{\partial E}{\partial y}
$$

です。

では「$a$ が最終的な $E$ にどれくらい影響するか」を知りたい。

$a$ と $E$ の間には $y$ があるので、連鎖律から、

$$
\frac{\partial E}{\partial a}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial a}
$$

となります。

さらに $x$ が最終的な $E$ に与える影響まで知りたければ、

$$
\frac{\partial E}{\partial x}=\frac{\partial E}{\partial a}\frac{\partial a}{\partial x}
$$

です。

計算順は、

E ← y ← a ← x

になります。

これが「逆伝播」の「逆」です。


12. なぜ逆なのか:出力に近いものほど重要だからではない

逆向きにたどる理由は、

出力に近いものほど影響が大きいから

ではありません。

遠い層の重みの方が、出力に大きな影響を与える場合も普通にあります。

逆向きに計算する本当の理由は、

前の値が最終損失にどう影響するか知るには、その後ろ側の影響を先に知る必要があるから

です。

例えば、

a → y → E

なら、$a$ が $E$ に与える影響を知るには、まず $y$ が $E$ に与える影響が必要です。

さらに、

x → a → y → E

なら、$x$ が $E$ に与える影響を知るには、まず $a$ が $E$ に与える影響が必要です。

つまり逆向きなのは、重要度順ではなく依存関係上の順番です。


13. 重みは、逆向きに戻る途中で拾う

重みを戻してみます。

        w1             w2
         ↓              ↓
x  ───>  a  ─────────>  y  ───>  E

まず $y$ が $E$ に与える影響、

$$
\frac{\partial E}{\partial y}
$$

を求めます。

すると、その場所に刺さっている $w_2$ について、

$$
\frac{\partial E}{\partial w_2}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial w_2}
$$

が計算できます。

一段戻って $a$ が $E$ に与える影響、

$$
\frac{\partial E}{\partial a}
$$

が分かれば、今度は $w_1$ について、

$$
\frac{\partial E}{\partial w_1}=\frac{\partial E}{\partial a}\frac{\partial a}{\partial w_1}
$$

が計算できます。

つまりbackpropは、

本線では最終損失への感度を後ろから前へ伝え、各地点でそこに刺さっている重みの勾配を回収する

方法です。

この見方をすると、「途中まで値の微分だったのに、急に重みの微分が出てきた」という混乱を避けやすくなります。


14. 実際に数字を入れて逆伝播する

先ほどの例では、

$$
x=2,\quad w_1=3,\quad w_2=1
$$

なので、

$$
a=6,\quad y=6
$$

でした。

損失は、

$$
E=(y-10)^2
$$

です。

まず $y$ が $E$ に与える影響は、

$$
\frac{\partial E}{\partial y}=2(y-10)=-8
$$

です。

つまり今の位置では、$y$ を少し増やすと $E$ は減ります。

次に、

$$
y=w_2a
$$

なので、

$$
\frac{\partial y}{\partial a}=w_2=1
$$

です。

したがって、

$$
\frac{\partial E}{\partial a}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial a}=(-8)\times1=-8
$$

となります。

ここで $w_2$ については、

$$
\frac{\partial y}{\partial w_2}=a=6
$$

なので、

$$
\frac{\partial E}{\partial w_2}=(-8)\times6=-48
$$

です。

一方、

$$
a=w_1x
$$

なので、

$$
\frac{\partial a}{\partial w_1}=x=2
$$

したがって、

$$
\frac{\partial E}{\partial w_1}=(-8)\times2=-16
$$

となります。

これで、

$$
\frac{\partial E}{\partial w_1}=-16
$$

$$
\frac{\partial E}{\partial w_2}=-48
$$

と分かりました。

backpropがやったのはここまでです。

実際に $w_1,w_2$ を更新するのは、SGDやAdamなどのoptimizerです。


15. 実際のニューラルネットはもう少しだけ複雑

ここまでは、

$$
a=w_1x
$$

のような単純な掛け算だけで説明しました。

実際のニューラルネットでは、例えば、

$$
a=\sigma(w_1x+b)
$$

のように計算します。

ここで、

  • $b$:バイアス(bias)
  • $\sigma$:活性化関数(activation function)

です。

流れは、

入力
 ↓
重みを掛ける
 ↓
バイアスを足す
 ↓
活性化関数を通す
 ↓
次の層の値

となります。

活性化関数が入っても、backpropの考え方そのものは変わりません。

各段階について、

その入力を少し変えたら、その出力がどのくらい変わるか

という微分を使い、後ろから前へ感度をつないでいきます。


16. 教科書で急に出てくる記号を翻訳する

ここまで理解してから記号を見ると、かなり読みやすくなります。

h

多くの教科書では、各層で計算された値の集まりを $h$ と書きます。

例えば、

$$
h_0,h_1,h_2,\ldots
$$

なら、

  • $h_0$:入力
  • $h_1$:第1層の出力
  • $h_2$:第2層の出力

という程度の意味です。

つまり、ここまで使ってきた $x,a,y$ を、層番号で一般化したものだと思えばよいでしょう。

WやJ

重みの集まりです。

実際の層には大量の重みがあるので、一個ずつ書かず、行列としてまとめます。文献によって $W$ を使ったり $J$ を使ったりします。

b

バイアスです。

δ

ここは文献ごとに定義を確認する必要があります。

$\delta h$ のように「$h$ の微小な変化」を表す場合もあれば、$\delta$ そのものを「逆伝播している誤差信号」の記号として使う教科書もあります。

記号だけ見て意味を決めないことが重要です。

⊙

$\odot$ は通常、アダマール積(Hadamard product)、つまり要素ごとの掛け算です。

例えば、

$$
(2,3,4)\odot(10,20,30)=(20,60,120)
$$

です。

行列積でも畳み込みでもありません。

「対応するニューロン同士で掛け算している」と読めば十分です。

bra-ket記法

資料によっては、

$$
|h\rangle
$$

のような量子力学風の記号が出てくることがあります。

ニューラルネットの文脈では、多くの場合「縦ベクトルとしての $h$」を表す記法として使っているだけで、量子力学的な意味があるとは限りません。


17. backpropの正体は、連鎖律の効率的な使い方

ここまでの説明を数学的に言い直すと、backpropは**連鎖律(chain rule)**を計算グラフの後ろから前へ効率よく適用する方法です。

より一般的な計算機科学の言葉では、**reverse-mode automatic differentiation(逆モード自動微分)**と非常に密接な関係にあります。

「ニューラルネットだけに存在する特殊な魔法」ではありません。

最終的な一つの損失 $E$ に対して、大量のパラメータそれぞれの勾配を一度の逆向き計算で効率よく求められるので、巨大なニューラルネットの学習に向いています。


18. 学習ループ全体をもう一度見る

ここまでを全部つなぐと、実際の学習は次のようになります。

重みを初期化する
     ↓
入力データを与える
     ↓
順伝播で予測を出す
     ↓
損失関数で採点する
     ↓
backpropで各重みの勾配を求める
     ↓
optimizerで重みを更新する
     ↓
次のデータでもう一度繰り返す

このループを大量に繰り返すことで、モデルの予測性能を改善していきます。

「学習」はこの反復過程全体を指します。

backpropは、その中の「勾配を求める」部分です。


19. 高次元データの裏には、もっと単純な構造がある?――多様体仮説とオートエンコーダ

ここまで、「ニューラルネットは大量の重みを調整して損失を小さくする」と説明してきました。

しかし、ここで別の疑問が出てきます。

そもそも、なぜ大量の数字を調整することで、画像や文章のような複雑なものを学習できるのでしょうか?

その直感を与えてくれる考え方の一つが、**多様体仮説(manifold hypothesis)**です。

一見すると高次元でも、実際に存在するデータはごく一部しかない

例えば、100×100ピクセルの白黒画像を考えます。

各ピクセルが0~255の256通りの値を取れるなら、理論上存在できる画像は、

$$
256^{10000}
$$

通りあります。

ほとんど想像不能なほど巨大な数です。

しかし、その中で「人間の顔に見える画像」はごくわずかです。

ランダムに100×100個の数字を選んでも、普通は砂嵐のような画像になるだけで、人間の顔にはなりません。

つまり、

数学的には膨大な画像が存在できるが、現実世界で意味のある画像は、その巨大な空間のごく一部にしか存在しない

と考えられます。

しかも顔写真なら、その違いを生み出している要因は、

  • 顔の向き
  • 表情
  • 年齢
  • 髪型
  • 照明
  • カメラとの距離
  • 個人差

など、元の1万ピクセルよりずっと少ない数の要因である可能性があります。

この、

高次元空間に存在する現実のデータは、実際にはもっと低次元の構造の近くに集中しているのではないか

という考え方が、多様体仮説です。


地球表面を思い浮かべると分かりやすい

地球は3次元空間に存在しています。

しかし、地表だけを移動する人間の位置を表すなら、基本的には

  • 緯度
  • 経度

の2つで足ります。

つまり地表は、

3次元空間の中に埋め込まれた、ほぼ2次元の面

と考えられます。

このように、

より高次元の空間の中に存在する、より低次元の滑らかな構造

を数学では**多様体(manifold)**と呼びます。

機械学習でいう多様体仮説も、直感としてはこれに近いものです。

巨大な高次元空間
┌─────────────────────────┐
│                         │
│       ほとんどは        │
│       意味のない領域     │
│                         │
│      ~~~~~~~      │
│    ~ 実データ ~        │
│      ~~~~~~~      │
│                         │
└─────────────────────────┘

現実のデータは、高次元空間を均等に埋め尽くしているのではなく、ある低次元的な領域の近くに集まっている、と考えるわけです。


オートエンコーダは「一度圧縮して、元に戻せるか」を学習する

この考え方と非常に相性がよいニューラルネットが、**オートエンコーダ(autoencoder)**です。

オートエンコーダは、入力を一度少数の数字へ圧縮し、そこから元の入力を復元するように学習します。

入力
 ↓
Encoder
 ↓
圧縮された表現
 ↓
Decoder
 ↓
復元された入力

例えば、1万個の数字で表された画像を、

10000個の数字
        ↓
      Encoder
        ↓
   50個の数字
        ↓
      Decoder
        ↓
10000個の数字

のように、一度50個の数字まで圧縮したとします。

そして、

元の画像と、復元した画像ができるだけ同じになるように

ニューラルネットを学習させます。

もし50個の数字だけから元画像をかなり正確に復元できたなら、

元の1万個の数字すべてが独立に重要だったわけではない

と考えることができます。

この中央の圧縮された表現を、潜在表現(latent representation)、その空間を**潜在空間(latent space)**と呼びます。


「圧縮」といってもZIPとは少し違う

ここでいう圧縮は、単純にファイルサイズを小さくするという意味ではありません。

例えば顔画像なら、潜在空間の中で、

  • こちらへ動くと顔が右を向く
  • こちらへ動くと笑顔になる
  • こちらへ動くと照明方向が変わる

といった構造が現れることがあります。

つまりニューラルネットは、

ピクセルそのものではなく、データを作り出している背後の特徴を表現しようとしている

と解釈できます。

これを**表現学習(representation learning)**と呼びます。


多様体仮説は「証明済みの法則」ではない

ただし、「仮説」という名前の通り、

あらゆる現実データが厳密に低次元多様体上に存在する

ことが保証されているわけではありません。

実際のデータには、

  • ノイズ
  • 不連続性
  • 複数の異なる構造
  • 離散的なカテゴリ
  • 観測誤差

などが含まれます。

したがって実際には、

データは厳密な一枚の滑らかな多様体上にある

というより、

高次元空間の中で、ある低次元的な構造の近くに集中している

くらいに考えたほうが安全です。

また、オートエンコーダが低次元表現を作れたからといって、

その潜在空間が真の物理的・意味的な多様体そのものである

と証明されたわけでもありません。


潜在表現も一意ではない

ここまでの記事で、「同じ出力を作る重みの組み合わせは一つではない」と説明しました。

同じことは潜在表現にも言えます。

例えば、あるオートエンコーダが顔画像を、

潜在変数1 = 顔の向き
潜在変数2 = 表情

のようにきれいに分離してくれる保証はありません。

別の学習結果では、

潜在変数1 = 顔の向きと表情の混合
潜在変数2 = 別の混合

になっていても、Decoderが正しく復元できれば損失は小さくできます。

つまり、

良い復元を実現する潜在表現も一意ではない

のです。

これは、ニューラルネットにおける「非一意性」が、重みだけでなく内部表現にも現れる例です。


では、機械学習は何をしているのか

ここまでを非常に乱暴にまとめると、

現実のデータ
   ↓
高次元で複雑に見える
   ↓
しかし実際には何らかの構造がある
   ↓
ニューラルネットがその構造を表現できるように重みを調整する

という見方ができます。

誤差逆伝播は、

その内部表現を直接発見する魔法

ではありません。

あくまで、

今のネットワークを少し変えたら損失がどう変わるか

を効率よく計算する仕組みです。

しかし、その計算を何度も繰り返すことで、ネットワーク内部にデータの規則性を表現する構造が形成されていきます。

したがって、

多様体仮説は「なぜ複雑な高次元データにも学習可能な構造があり得るのか」という直感を与え、オートエンコーダはその低次元構造を学習しようとする代表的な方法の一つ

と理解するとよいでしょう。


20. 自然言語では「正解=唯一の真値」ではない

ここまでの例では、説明を簡単にするため、

$$
t=10
$$

という一つの正解を置きました。

しかし自然言語では、これがそのまま成り立ちません。

例えば、

今日は天気がいいので、___

の続きを考えると、

  • 散歩に行った
  • 洗濯をした
  • 公園へ出かけた
  • 外で昼食を食べた

など、複数の自然な続きがあります。

したがってLLMは、

唯一の真値を当てる

という問題を解いているわけではありません。

事前学習では基本的に、

$$
P(\text{次のtoken}\mid\text{ここまでの文脈})
$$

という次のtokenの確率分布を学びます。

例えば学習データに、

今日は天気がいいので、散歩に行った。

と書かれていれば、その一件の学習例では実際に観測された「散歩」に対応するtokenを教師として使います。

しかし、これは

「散歩」だけが唯一の正解で、「洗濯」は間違い

という意味ではありません。

一つの文章で一つのtokenが観測された、というだけです。

大量の文章から、文脈ごとにどのtokenがどの程度現れやすいかという分布を学んでいきます。


21. LLMには非一意性が何重にもある

自然言語モデルでは、少なくとも3種類の非一意性があります。

同じ働きをする重みの組み合わせが複数ある

ニューラルネット内部のパラメータは、一意に決まるとは限りません。

同じ意味を表す文章が複数ある

例えば、

  • Tokyo.
  • The capital of Japan is Tokyo.
  • Japan's capital is Tokyo.

は、表現は違ってもほぼ同じ内容を伝えています。

意味そのものとして複数の回答が妥当なことがある

例えば、

東京で明日の午後、何をしたらいい?

に唯一の真値はありません。

美術館でも、散歩でも、買い物でも、条件次第で妥当です。

したがって、

損失を小さくすること

と、

唯一の真実に近づくこと

は同じ意味ではありません。


22. LLMでは「良い回答」を学ぶ段階もある

LLMの学習は、次token予測だけで終わるとは限りません。

例えばinstruction tuningでは、「指示に対してどのように答えるか」を追加学習します。

さらに、RLHF(Reinforcement Learning from Human Feedback)や各種のpreference trainingでは、

回答Aと回答Bなら、どちらが人間にとってより望ましいか

という選好を学習に利用します。

ここまで来ると、学習対象はますます「唯一の正解値」から離れます。

それでも基本構造は変わりません。

何らかの採点ルール、つまり目的関数や損失を定め、その値を改善する方向へパラメータを更新していきます。


23. 最後に、これだけ覚えればよい

機械学習全体を最小限にまとめると、

予測する
  ↓
採点する
  ↓
改善方向を調べる
  ↓
少し修正する
  ↓
繰り返す

です。

ニューラルネットについては、さらに、

順伝播:入力 → 中間値 → 出力 → 損失
逆伝播:損失 → 出力 → 中間値 → 入力側

と考えます。

ただし逆伝播は「前から順番に重みを直す」のではありません。

本線では各途中値の最終損失への感度を後ろから前へ伝え、その途中で各重みの勾配を回収します。

そして、

  • backprop:勾配を求める
  • optimizer:勾配を使って重みを動かす
  • iteration:それを何度も繰り返す
  • initialization:どこから学習を始めるか決める

という役割分担があります。

さらに、正しいパラメータの組み合わせも、自然言語における妥当な出力も、一つとは限りません。

つまりニューラルネットの学習は、

唯一の正解を方程式で逆算する作業ではなく、巨大なパラメータ空間の中で、設定した損失を小さくする方向を何度も探し続ける作業

と考えると、かなり実態に近くなります。


用語だけ最後に一覧

用語 ざっくり言うと
parameter / weight モデル内部の調整可能な値
loss 予測の悪さを数字にしたもの
gradient 重みを少し動かしたとき、lossがどちらへどの程度変わるか
gradient descent 勾配を使ってlossが下がる方向へ進む方法
forward propagation 入力から出力・lossを計算すること
backpropagation lossから逆向きに感度を伝え、各重みの勾配を効率よく求めること
optimizer 勾配を使って実際に重みを更新する方法
SGD / Adam optimizerの代表例
learning rate 一回の更新でどのくらい動くか
initialization 学習開始時の重みの置き方
Xavier / He 代表的な重み初期化法
local minimum 周囲よりは低いが、全体で最良とは限らない谷
saddle point 方向によって上りにも下りにもなる地点
Hadamard product 要素ごとの掛け算
reverse-mode automatic differentiation backpropをより一般的な計算グラフとして見たときの自動微分の考え方
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?