わかりやすく ニューラルネット とは
前のレッスンでは、ニューロン一つが入力に重みをかけて足し、オンになるかどうかを決めるのを見ました。でも、ニューロン一つでは、境界を直線で引くような単純な判断しかできません。ニューロンをいくつもつないで何層にも重ねると、どうなるでしょうか。ずっと複雑なパターンまで学べるようになります。このようにニューロンを幾重にもつないだものが、ニューラルネットワークです。
ニューロンを幾重にもつなぐ
ニューロン一つは、入力を重みで集めて足し、その合計によって信号を出します。単純なぶん判断も単純で、線一本で分けるくらいがせいぜいです。
でも、一つのニューロンの出力をほかのニューロンの入力につなぐと、事情が変わります。ニューロンどうしが信号をやりとりしながら、一つでは見えなかったもっと大きな絵を、いっしょに作っていきます。
ニューロンを一つずつ押してオンにしてみましょう。オンになったニューロンどうしが信号線でつながり、単純なニューロンが網をつくります。
ニューロン一つ一つは、やはり単純です。変わったのは、つながったという点です。一つのニューロンの出力が次のニューロンの入力になるので、一つでは見えなかったものを、いくつもがいっしょに見はじめます。
ただし、でたらめにつなぐより、列をそろえてつなぐ方が、計算がずっとすっきりします。この列を層と呼びます。
入力層、隠れ層、出力層
ニューロンを列にそろえて並べると、層になります。いちばん前の層は外から入ってくる値を受け取る入力層で、いちばん後ろの層は最終的な答えを出す出力層です。その間の層は外から直接は見えないので、隠れ層と呼びます。
ふつう、ある層のニューロンは、前の層のすべてのニューロンとつながっています。信号は入力層から出発し、層を順に通って出力層まで、前へだけ流れます。
ボタンを押して、信号を一層ずつ前へ送ってみましょう。入力層から隠れ層を通って出力層まで、順にオンになります。
信号は前へだけ流れました。それぞれの層は前の層の出力を受け取り、また計算して次の層へわたします。写真を見分けるネットワークなら、前の方の層は線や角のような小さなかけらを調べ、後ろの方の層はそのかけらを集めて、目や耳のようなもっと大きな形を見分けます。
層が深くなるほど、だんだん抽象的な特徴をとらえるのです。隠れ層がいくつもある深いネットワークで学ぶことを、ディープラーニングと呼びます。でも、層を重ねるときに、忘れてはいけないことが一つあります。
間に曲げる段階が必要
層を重ねさえすればよさそうですが、落とし穴があります。それぞれの層がかけて足すだけなら、それはまっすぐな直線の変換です。まっすぐな変換をいくらつなげても結果はまた一つのまっすぐな変換なので、層を百重ねても一層と変わりません。
そこで、層と層の間に、信号を曲げる段階を必ず入れます。前のレッスンで見た活性化関数が、まさにこの段階です。今よく使われるのは、負の値が入ってきたらゼロにし、正の値はそのまま出す、単純な関数です。
曲げる段階をオンとオフにして比べてみましょう。オフにすると層を重ねても直線一本にまとまり、オンにすると曲がった線が生き残って、形が豊かになります。
ちがいははっきりしていました。曲げる段階をオフにすると、層をいくら重ねても結局は直線一本で、できることは一層のものと同じです。曲げる段階をオンにすると、層ごとに信号が少しずつ曲がって、まっすぐな線ではえがけなかった形が出てきます。
この曲げる段階のおかげで、層を重ねたかいが生まれるのです。
層を足すほど複雑なパターン
曲げる段階をそなえた層を増やしてみましょう。層が一つなら、まっすぐな線一本で世界を二つに分けるくらいです。層とニューロンを足すと、曲がった線が集まって、折れたり曲がったりした境界を引けるようになります。
さらに重ねると、円や曲がりくねった境界まで、だんだん複雑なパターンを学びます。ニューロンが十分に多ければ、ニューラルネットワークはほとんどどんな形の境界でもまねできることが知られています。これが、ニューラルネットワークが強力な理由です。
層を足すボタンを押してみましょう。層が少ないとまっすぐな線で、増やすほど境界がうねり、複雑なグループを包みこみます。
層を足すたびに、境界はより自由になりました。まっすぐな線から始まって、折れ線へ、そしてなめらかな曲線へと変わりました。単純なニューロンが層をつくり、その間に曲げる段階が入ると、一つでは思いもよらないパターンを、いっしょに学び取るのです。
もちろん、代償もあります。層とニューロンが増えるほど直すべき重みが多くなり、学習に必要なデータと計算も増えます。
まとめ
まとめるとこうです。単純なニューロンを層にして重ねてつなぎ、信号は入力層から出力層へ流れます。それぞれの層は前の層の出力を受け取り、もっと大きな特徴をとらえます。
層と層の間には、曲げる段階が必ず必要です。そうでなければ、全部が直線一本にまとまってしまうからです。層を重ね、間で曲げて複雑なパターンを学ぶこと、これがニューラルネットワークです。
要点を順に押して振り返りましょう。(ニューロンを層にして重ねる → 信号は前へ流れる → 間に曲げる段階が必要 → 層を足すほど複雑なパターン)
これで、単純なニューロンが集まって、どうやって複雑なパターンを学ぶかが分かりました。線一本しか引けなかったニューロンが、層をつくって間で曲げると、曲がった境界まで学べたのです。
でも、層がいくつもあると、問題が一つ出てきます。出力がまちがったとき、その責任が数えきれない重みのうちどこにどれだけあるのかを、どうやって知るのでしょうか。まちがいの度合いを出力から逆にさかのぼって分ける方法を、次のレッスン「誤差逆伝播法」で扱います。