脳の神経細胞をまねた計算の部品
この章では、ディープラーニングの土台である ニューラルネットワーク の仕組みを学びます。画像認識や音声認識、ChatGPTのような生成AIも、突き詰めればこの仕組みの上に成り立っています。
名前の由来は、人間の脳の神経細胞(ニューロン)です。神経細胞は、ほかの細胞から受け取った信号を合計し、それがある強さを超えると次の細胞へ信号を送ります。これをまねた計算の部品を、人工ニューロン(以下、ニューロン)と呼びます。
ニューロンがやっている計算は、次の2段階だけです。
- 入力 x1,x2 に、それぞれ 重み w1,w2 を掛けて足し、バイアス b を加える
- その合計 z を 活性化関数 に通して、出力にする
z=w1x1+w2x2+b
2つの入力がそれぞれ線でニューロンにつながった図。線の1本1本に重みがあり、ニューロンは受け取った値に重みを掛けて合計します。
1つ目の計算は、第4章で学んだ 内積 そのものです。重みをベクトル w=(w1,w2)、入力をベクトル x=(x1,x2) とすると、z=w⋅x+b と書けます。重みは「どの入力をどれくらい重視するか」を表す数値で、学習によって決まります。
例えば、勉強時間 x1 と睡眠時間 x2 から合格を判定するニューロンで、w1=1、w2=0.5、b=−6 だったとします。勉強4時間・睡眠6時間の人なら、z=1×4+0.5×6−6=1 です。
活性化関数:実はもう知っている
2つ目の計算で使う 活性化関数 には、いくつかの種類があります。そのうちの1つを、実はあなたはもう知っています。第5章で学んだ シグモイド関数 です。
出力=σ(z)=1+e−z1
前のスライドの例では z=1 だったので、出力は σ(1)≈0.73、つまり「合格する確率は約73%」になります。
ここで気づいたでしょうか。「一次関数で z を計算し、シグモイド関数で確率に変える」というのは、ロジスティック回帰とまったく同じ です。シグモイド関数を使ったニューロン1つは、ロジスティック回帰そのものなのです。あなたはすでに、ニューロンを1つ作って動かしていたことになります。
ReLU:もう一つのよく使う活性化関数
現在のニューラルネットワークで最もよく使われる活性化関数は、ReLU(レルー)です。規則はとても単純で、「z がマイナスなら0、プラスならそのまま」です。
式で書くと ReLU(z)=max(0,z)(0と z の大きい方)です。計算が速く、層をたくさん重ねても学習が進みやすいため、ディープラーニングで広く使われています。
横軸をz、縦軸をReLU(z)にしたグラフ。zが0以下では0の水平線、0より大きいところではz=2なら2、z=4なら4と、zと同じ値で右上がりになる直線で、z=0で折れ曲がった形をしています。
シグモイド関数のなめらかなS字と違い、ReLU は0のところで折れ曲がった、2本の直線をつないだ形です。
よくある誤解と振り返り
誤解:「ニューラルネットワークは、脳をそっくり再現したもの?」
名前は脳に由来していますが、中身は脳の仕組みを再現したものではありません。やっていることは、ここまで見てきたとおり「掛け算・足し算」と「活性化関数」という計算の組み合わせです。「脳のように考える機械」という印象で捉えるよりも、「たくさんの小さな計算部品をつないだ、大きな関数 y=f(x)」と捉える方が、実際の姿に近いと言えます。
これは、第1章で見た「AIとは、入力 x から出力 y を計算する f をどう作るかという話」という捉え方と同じです。ニューラルネットワークは、その f を作るための、非常に表現力の高い方法の一つです。
振り返り
- ニューロンは、「重みを掛けて足す(内積)+バイアス」→「活性化関数」という2段階の計算をする部品
- シグモイド関数を活性化関数にしたニューロン1つは、ロジスティック回帰と同じ
- よく使われる活性化関数には、シグモイド関数と ReLU(max(0,z))がある
次のレッスンでは、このニューロンを「たくさん並べて、層として重ねる」ことで、何ができるようになるのかを見ていきます。