前の節では、全結合層が前の層のニューロンと次の層のニューロンをすべてつなぐ層であることを見てきました。
では、そのつながりの中では、実際に何が起きているのでしょうか。
ここで大事になるのが、重みと線形関数です。
でも、言葉だけだと少しかたく感じるかもしれません。
そこで、今度はコーヒーのブレンドで考えてみましょう。
目の前に、いくつかの豆があります。
・苦みの強い豆
・酸味のある豆
・香りの華やかな豆
・コクの深い豆
この豆をどう組み合わせるかで、一杯のコーヒーの味わいは大きく変わります。
たとえば、
・苦みを強くしたいなら、この豆を多めに入れる
・香りを出したいなら、あの豆を少し足す
・酸味は今回は控えめにしたい
というふうに、豆ごとに入れる量を変えますよね。
この、どの材料をどれくらい強く効かせるかを決めているのが、ニューラルネットワークでいう重みです。
全結合層には、前の層からたくさんの情報が入ってきます。
でも、それらを全部同じ割合で扱うわけではありません。
・ある情報は強く効かせる。
・ある情報は少しだけ使う。
・ある情報は、今回はほとんど効かせない。
つまり重みとは、情報をどれくらいの割合で混ぜるかを決める配合の比率のようなものです。
コーヒーで言えば、
・この豆は多め
・この豆は少なめ
・この豆は香りづけ程度
と決めることにあたります。
AIは学習を通して、この「ちょうどよい配合」を少しずつ見つけていくのです。
ブレンドでは、豆をただ並べるだけでは終わりません。
最終的には、それらを混ぜ合わせて、一杯の味にします。
全結合層でも同じです。
いくつもの入力に重みをかけて、最後にそれらをまとめて一つの値にします。
つまり全結合層は、
・いろいろな情報を集める
・それぞれに配合の比率を与える
・最後に一つの「総合的な味」にまとめる
という計算をしているのです。
ここで出てくるのが線形関数です。
といっても、ここでは難しい式として考えなくて大丈夫。
この場面でいう線形関数は、それぞれの材料に比率をかけて、素直に混ぜ合わせる計算くらいのイメージでいいです。
たとえば、
・苦みの豆を少し多めに
・酸味の豆は控えめに
・香りの豆を少し足す
そんなふうに配合して、最後に一杯の味をつくる。
全結合層で行われている「入力に重みをかけて足し合わせる」という計算も、基本的にはこのようなものです。
つまり線形関数とは、ここでは「配合どおりに混ぜて、一つの味にする方法」だと考えていいです。
■ 活性化関数
ただし、コーヒーの世界でも、豆をそのまま足し算するだけでは、本当のおいしさは決まりません。
温度、抽出時間、焙煎の違い、香りの立ち方。実際の味わいは、単純な配合だけでは語れないところがあります。
ニューラルネットワークも同じです。
全結合層では、まずは情報を重みづけして混ぜ合わせます。
でも、それだけでは世界の複雑さを表しきれません。
だからそのあとに、活性化関数を通して、ただの直線的な計算ではない、もっと複雑な表現ができるようにするのです。
つまり、
全結合層→ 情報をブレンドして一つにまとめる
活性化関数→ そこに個性や変化を与える
という流れです。
最初、AIは、どの情報をどれくらい混ぜればよいのか分かりません。
だから最初のブレンドは、まだ未完成です。
けれど学習をくり返すうちに、
・この情報はもっと強く効かせたほうがよさそう
・この特徴は少し減らしたほうがよさそう
・この組み合わせが意外と大事かもしれない
と少しずつ調整していきます。
つまりAIの学習とは、世界を理解するための「ちょうどよい配合」を探していくことでもあるのです。
next ▶ 全結合層の役割とパラメータ数