昨今のAIブームの流れもあり、専門家でなくてもディープラーニングという言葉を耳にしたことくらいあると思います。
ディープラーニングとは、人間の神経細胞同士のつながりを模したニューラルネットワークという仕組みを発展させたものです。
ディープ(Deep:深く)ラーニング(Learning:学習)することから、その言葉の通り深層学習とも言われますが、層を深くして学習することで人間の想像を遥かに超えた進化を遂げました。
では、層を深くして学習すると何故賢くなったのでしょうか。
Contents
ニューラルネットワークとは
神経細胞(ニューロン)の情報伝達を数理的なモデルとして再現したものが、ニューラルネットワークです。
実際にはもっと複雑に繋がり合うものですが、ここでは最も基本的な形で表現しています。
人間の神経細胞は、電気信号を発して情報をやり取りしますが、その際にシナプスで重みづけされて一方向へ伝播していきます。
この仕組みを真似て、ニューラルネットワークでは、信号が伝播する時に重みを乗算します。
ニューラルネットワークの基本単位パーセプトロン
パーセプトロンとは、「複数の信号を入力し、一つの信号を出力する」ものです。
つまり、たくさんのパーセプトロンが繋がり重なりあうことで、ニューラルネットワークを構築していることになります。
次の図の例は、2入力1出力のパーセプトロンで、ニューラルネットワークを構成する基本単位として見ることができます。
入力信号(X1,X2)2つに対してそれぞれ重み(W1,W2)を乗算し、送られてきた信号の総和が計算され、総和がある閾値(θ)を超えた場合に”1”を出力します。
この1を出力するというのが、ニューロンが発火する状態を再現しているわけですね。
重みは、各信号がどれくらいの重要性を持っているかをコントロールする要素として働きます。
重みが大きいと、その重みに対応する信号の重要性が高いと判断できます。
また、パーセプトロンの作動原理を数式化してみると、シンプルに整理できますね。
作動原理自体はパーセプトロンが増えても同じで、パラメータとなるのは、重みや閾値です。
重みとバイアス
パーセプトロンの作動原理を少し式変換してみましょう。
閾値であるθを-bとして式変換してみると次のようになります。
重み(W)は、各信号がどれくらいの重要性を持っているかをコントロールする要素として働くのに対し、
バイアス(b)は、出力信号が1になる度合い(ニューロンが発火するしやすさ)を調整する要素として働くことになります。
式変換したもので考えると
バイアス(b)と、入力信号(X1,X2)にそれぞれの重み(W1,W2)を乗算したものを加算し、
送られてきた信号の総和が0より大きければ発火、0以下であれば発火しないということになります。
単純パーセプトロンで解ける問題
それでは、2入力1出力の最も単純なパーセプトロンを使って解ける問題について考えてみましょう。
論理積回路(AND)
論理積回路は、2入力のいずれかが0の場合は0を出力し、2入力の両方とも1の場合にのみ1を出力します。
さて、真理値表を満たすような、(W1, W2, b)の組み合わせはどのようなものが考えられるでしょうか・・・
X1=1、X2=1のときに、Y=1となるようなパラメータ(W1, W2, b)は、
(0.5, 0.5, -0.7),(1.0, 1.0, -1.0)など、細かく設定すると無限に設定することができますね。
パーセプトロンをグラフで可視化してみてみると
●と○の4点を直線で区分するようなパラメータ(W1, W2, b)を探すということで考えることもできます。
論理和回路(OR)
論理和回路は、2入力の両方が0の場合は0を出力し、2入力のいずれかでも1の場合に1を出力します。
論理和回路も、真理値表を満たすような、(W1, W2, b)の組み合わせはどのようなものが考えられるでしょうか・・・
Y=1となるようなパラメータ(W1, W2, b)は、
(0.5, 0.5, -0.3), (1.0, 1.0, -0.5)など、細かく設定するとこちらも無限に設定することができますね。
ここで、論理積回路と論理和回路それぞれグラフ化してみてみましたが、いずれも共通点としては、
単層パーセプトランは、直線で領域を区切ることができるという点です。
多層パーセプトロンで解ける問題
では、もう少し複雑な条件について考えてみましょう。
排他的論理和(XOR)
排他的論理和回路は、2入力の両方が同じ値の場合は0を出力し、違う値の場合は1を出力します。
単層パーセプトロンでは、残念ながら「2入力の両方が同じ値の場合は0を出力し、違う値の場合は1を出力する」という結果を導くことはできません。
グラフに描いたように、直線で領域を区切ることができず、非線形な領域を考える必要があります。
そこで、パーセプトロンを組み合わせることで、排他的論理和(XOR)を実現します。
X1とX2の否定論理積(NAND)をS1、X1とX2の論理和(OR)をS2、とします。
そして、さらにS1とS2の論理積(AND)を繋げてみると期待する結果を得られるようになります。
単層パーセプトロンでは実現できなかったことが、層を重ねる(深くする)ことでより複雑な問題を解決することができたと考えることができますね。
層を深くする意味
排他的論理和(XOR)のように、単層パーセプトロンではできなかったことが、層を重ねる(深くする)ことで解決することができました。
これは、言い換えれば、
単層パーセプトロンは線形領域だけしか表現できないのに対し、多層パーセプトロンは非線形領域を実現することができるということですし、
また、別の表現をすれば
問題をその次元で解決しようとしても解決できず、問題解決の次元を深めることで解決するという見方もできますね。
ディープラーニングの本質
さて、層を深くすることで複雑な問題を解決できるということが何となく理解できたとして、もう少しだけ深く考えてみましょう。
今回考えた例は、単層パーセプトロンや、層をもう1層だけ深くした多層パーセプトロンです。
これくらいだったら、期待する入力と出力を満たすように、人間が重みやバイアスなどのパラメータを設定することは何とかできそうです。
しかし、
学習する層が何層も深くなっていったとき、パラメータ数は何千、何万、何億となっていき、人間が一つずつパラメータ設定することは不可能です。
そこで、重みやパラメータさえも自己学習できるようにしたのがディープラーニングです。
AIはインプットするデータから、人間では絶対に処理できない量とスピードで複雑な関係性を学習していきます。
結果的に、認識精度・分析精度が向上したり、高度なパターン認識を行えたり、予測を立てられるようになり、学習を繰り返すことで、人間の想像をはるかに超えてしまったのです。
そして、画像認識、音声認識、自然言語処理、など様々な場面で活躍しているのが現状です。
一方人間はと言うと
ここまでの話で、みなさんはどのような問題意識を持たれるでしょうか?
私は、機械の進化(ディープラーニングによるブレークスルー)はすごいなぁと感じる一方で、
人間もディープラーニングしないとまずくないか?と思いました。
人間は5感覚を使って情報をインプットして多様な経験をし、自分独自の価値観や判断基準を構築していきます。
しかし、その価値観や判断基準にずっと固定したまま、さらには問題解決の次元が同じまま、変わらずお互いに比較し合ったり争い合ったりしています。
重みやバイアスを自由に設計したり作り替えたりしながら、層を増やして問題解決するという考え方は、人間にも応用できるものではないかと思います。
それが、人間そのもののアップデートに繋がっていくでしょう!
人間のディープラーニングについては、認識技術の創始者であるNohJesu氏のブログにアップされているので、ぜひ興味のある方はご一読ください。
人間の新しい生き方についてのヒントになると思います。
▼NohJesuオフィシャルブログの参考リンク
・AI時代を楽しめる!知識生産を劇的に変える“人間のディープラーニング”
・人間のディープラーニング(Deep learning)教育革命で世界基軸教育時代が始まる
AIの進化が注目されている昨今ですが、AIの進化が鏡になって人間も進化せよと言われているような気がしますね。
人間の認識OSをバージョンアップしていきましょう!
(終わりに)
私自身AIの専門家ではありませんが、本記事は自己理解のためにまとめたものです。
誤っている点などあるかもしれませんが、そういった点がございましたら理解向上のためにもご指摘いただければ幸いです。