1.人工ニューロン一つが行うこと
人工ニューラルネットワークという名前は脳の神経細胞から借りたものですが、実際に行っているのはとても単純な計算です。人工ニューロン一つは、いくつかの入力を受け取ってそれぞれに「重要度」を掛け、すべて足したあと、その合計を一度ふるいにかけて出力します。この重要度を重みといい、掛けて足した値を重み付き和といいます。
最後の「ふるいにかける」段階を活性化と呼びます。最もよく使われる方式の一つは、合計が0より小さければ0を出力し、0以上ならそのまま出力するというものです。この単純な折れ曲がりがあるからこそ、ニューロンを何層も重ねたときに、直線一本では表せない複雑な関係を表現できるのです。
- 重み付き和 = 0.6 × 4 + 3 × 0.5 + (−2)
- = 2.4 + 1.5 − 2 = 1.9
- 活性化:1.9は0より大きいので、そのまま1.9を出力します。
- もし降水確率が0.1で外出1時間なら、0.4 + 0.5 − 2 = −1.1となり、出力は0です。
2.重みこそが学んだ内容である
上の例で、降水確率の重み4は「降水確率が判断に大きく影響する」という意味であり、バイアス−2は「よほどでなければ傘を持っていかない」側に基準を下げておいたものです。これらの数値を人が決めればルールベースのプログラムであり、データを見ながら機械に決めさせれば学習です。
ニューラルネットワークの学習とは、結局のところこの重みとバイアスを調整することです。第2講で見たように、予測と正解の差(損失)を測り、損失が減る方向にすべての重みを少しずつ直します。実際のニューラルネットワークには、このような重みが少なくとも数千個、大きなモデルでは数千億個以上あります。そのため、学習には大量のデータと計算が必要になります。
大切なのは、学習を終えたニューラルネットワークの中に「猫は耳がとがっている」といった文が保存されているわけではない、ということです。学んだ内容は、数多くの重みの値として散らばっています。ニューラルネットワークがなぜそう判断したのかを人が説明しにくい理由は、ここにあります。
3.層を積み重ねると何が変わるか
ニューロンを横にいくつも並べると層になり、ある層の出力を次の層の入力として渡すと、多層のニューラルネットワークになります。入力を受け取る層と結果を出す層の間にある層を隠れ層といい、隠れ層の多いニューラルネットワークで学ぶことをディープラーニング(深層学習)といいます。「ディープ(深い)」とは、層が深いという意味です。
層が深くなると、段階的により複雑な特徴をとらえられるようになります。写真を見分けるニューラルネットワークを分析すると、前のほうの層は線や輪郭のような単純な模様に、中間の層は目や車輪のような部分に、後ろのほうの層は顔や自動車のような全体の形に反応する傾向が観察されます。人が「輪郭を探せ」と命じたのではなく、学習の過程でそのように役割が分かれたのです。
| 位置 | 主に反応するもの | たとえ |
|---|---|---|
| 前のほうの層 | 線、輪郭、色の境目 | 文字の画 |
| 中間の層 | 目、耳、車輪のような部分 | 単語 |
| 後ろのほうの層 | 顔、猫、自動車のような全体 | 文の意味 |
4.手で計算してみる小さなニューラルネットワーク
層を積み重ねるというのが実際にどんな計算なのか、入力2個 → 隠れニューロン2個 → 出力1個というとても小さなニューラルネットワークで実際にたどってみましょう。数値は説明のために決めたものです。隠れニューロンは先ほど見た活性化(負なら0、そうでなければそのまま)を使い、出力ニューロンは重み付き和をそのまま出力することにします。
計算の順序はいつも同じです。前の層の出力が次の層の入力になり、ニューロンごとに「掛けて足し、ふるいにかける」だけを行います。このように入力から出力の側へ順に計算を進めていくことを順伝播と呼びます。二つ目の例題は、その結果を見て重みを一度直す、学習の一歩です。
- 手順1:h₁の重み付き和:1 × 0.5 + 2 × 1 + (−1) = 0.5 + 2 − 1 = 1.5。正の値なのでh₁ = 1.5。
- 手順2:h₂の重み付き和:1 × (−2) + 2 × 0.5 + 0 = −2 + 1 = −1。負の値なので、活性化を通すとh₂ = 0。
- 手順3:出力:1.5 × 2 + 0 × 3 + (−1) = 3 + 0 − 1 = 2。
- 検算:h₂が0になったため、h₂の重み3は今回の結果に影響しませんでした。入力が変わればh₂がオンになり、結果に加わることがあります。入力によってオンになるニューロンが変わること、それが活性化の働きです。
- 手順1:今の予測:3 × 2 = 6。誤差は6 − 10 = −4、損失は(−4)² = 16。
- 手順2:wを少し変えたときに損失が変化する度合い(傾き)は、2 × 誤差 × 入力 = 2 × (−4) × 2 = −16です。負の値なので、wを大きくすれば損失が減ります。
- 手順3:新しいw = w − 学習率 × 傾き = 3 − 0.05 × (−16) = 3 + 0.8 = 3.8。
- 手順4:新しい予測:3.8 × 2 = 7.6。誤差は−2.4、損失は(−2.4)² = 5.76。
- 検算:損失が16から5.76に減りました。同じ方法を繰り返すと、wは正解をぴったり当てる5(5 × 2 = 10)に近づいていきます。
5.ニューラルネットワークは脳ではない
名前のせいで、ニューラルネットワークは脳をそのまま真似ていると誤解されがちです。実際には、脳から「多くの単位がつながって信号をやり取りする」というアイデアを借りただけで、動き方は大きく異なります。人工ニューロンは掛け算と足し算を行う数式であり、学習も人間の経験とは異なる数学的な最適化です。
ですから、ニューラルネットワークが人間のように理解したり感じたりすると言うのは正確ではありません。反対に、「ただの計算だから大したことはない」と軽く見るのも正確ではありません。単純な計算がとてつもない規模で集まると、人が驚くほど精巧な結果が生まれます。両方とも事実だということを一緒に覚えておくのが、バランスの取れた理解です。
📌 要点まとめ
- 人工ニューロン = 入力 × 重みをすべて足し(重み付き和)、活性化でふるいにかける計算
- 学習とは、損失が減るように重みとバイアスを少しずつ直すことである
- 計算は、入力から出力の側へ層ごとに「掛けて足し、ふるいにかける」を繰り返す順伝播であり、学習はその結果の損失を見て重みを直す
- 学んだ内容は文ではなく、数多くの重みの値として散らばって保存される
- 層を深く積み重ねたニューラルネットワークで学ぶのがディープラーニングであり、層ごとにしだいに複雑な特徴をとらえる
- ニューラルネットワークは脳からアイデアだけを借りた数学モデルであり、脳の複製ではない
🤖 AIにはこう聞いてみましょう
コピーして [ ] の部分を自分の状況に書き換えて使います。答えはそのまま信じず、本文と比べて確かめましょう。
手計算で仕組みを身につけたいとき
入力3個、隠れニューロン2個、出力ニューロン1個のとても小さなニューラルネットワークを例に、重みを簡単な整数で決めて、一つの入力が出力まで計算される過程を段階ごとに見せてください。私が自分で計算をたどれるように、表にまとめてください。
たとえがどこまで当てはまるのか知りたいとき
人工ニューラルネットワークと人間の脳の似ている点を三つ、違う点を五つ、表にまとめてください。確かでない内容には「不確実」と書いてください。
- ディープラーニングの入門書における一般的な説明(人工ニューロン・活性化関数・層)
- 高校の教科「人工知能の基礎」の内容(教育省告示の教育課程)
学習目標をすべて達成できたら完了を押しましょう。
このブラウザでは保存できないため、この画面でのみ表示されます。