こんにちは。アスカルの代表をしている遠藤です。
天気の良い佐賀県の神埼ですが、最近火事も多いのが難点ですね。みなさん、家事には気をつけましょう!そして、毎日を楽しみながら過ごしていきましょう!
えーーっと、そんな話とは全然関係ないのですが、AIに関してちょっとご説明をしていこうかと思っております。平たく話していきたいと思っています。
今回解説をしていくAIは、「ディープランニング」という分野になります。
そのなかでも今回は「ニューラルネットワーク」について解説をしていこうと思っています。
ニューラルネットワーク
このニューラルネットワークは、ディープランニングの骨です。この骨の部分をわかっていないと本当に理解をすることはできないので、このニューラルネットワークの部分はしっかりと押さえておいてください。
人口知能は人間の脳と同じ??
人間の脳は、実はまだ詳しいことが分かっていないといわれています。私はシステム担当で、人間の脳を解剖したり中身をほじくったりしているわけではないので、ここのところは不透明です。ただ、文献などではそうだと言われているというだけですね。
そして、この人間の脳を模倣して「ニューラルネットワーク」というものを作っているわけです。砕いて説明をすると、ニューラルネットワークとは複数のニューロンというものがネットワークを構成して情報のやり取りをしているということです。
このニューロンは、人間の脳内に約140億個もあるそうです。
それぞれが細かくネットワークとなって存在しており、これをシステムの分野でも構築してきたのが「ニューラルネットワーク」と言われるものです。
語弊を恐れずに言うならば・・・・。
回路としてのニューラルネットワーク
こうして出来ている人間の脳内では、様々な電気信号を伝達しながら結果を出していきます。結果とは、たとえば「これはネコ」などのことですね。電気信号は「写真をみて・・・」という具合です。目が合って、耳がとんがっていて・・・などの情報のことを指します。
統計学では、この「目が」とか「耳が」というものを説明変数という風に読んでいます。この説明変数を認識して、電気回路を通した結果、「猫」という判断が下されるわけですね。
こういう具合に、説明変数があたえられて、ニューロンに電気信号が送られます。このニューロンを通り越す電気信号かどうかを判定して、通り越すのであれば次のニューロンへ。そうでなければそこで処理を終えます。
この仕組みがニューラルネットワークといわれるものです。
注意が必要なのは、ニューロンのどこにどれだけの電気信号を流すのか、流すとしてそれぞれのモンチはどのくらいにしておけばいいのか、また、モンチを超えたときにどの程度の電気信号を流すのかということを定めておく必要があるということです。
これがニューラルネットワークの「モデル化」と言われるものになります。
論理回路
ここまでで、基本中の基本であるニューラルネットワークとは何かということを説明してきました。
次に、この論理回路というものを説明する必要があります。なぜなら、実際に人間の脳にかわる仕組みを機会に実装させなければならないからです。この論理回路の仕組みができるかどうかというのはかなり大きなポイントなのです。
論理ゲートというのは、簡単に言うと「AND、OR、NOTの各ゲート」のことだと思ってください。
なるべく難しい数式みたいなものを記載するつもりもないのですが、簡単に説明をしていきたいと思います。
まず、ANDゲート
これは、AかつBという、いくつかのデータが全てそろって初めて結果へと通じるというものです。
これをシステム的にどのように実装していくのかと言いますと、「誤り訂正学習法」というものを使って実装を行います。
このANDを数式にしますと・・・・・
このブログシステムでは書けないのでやめておきますが、興味のある方はググってみてください。
要するに、パラメータを与えて試験を行い、正解へと近づくまで学習を行います。これがANDゲートといわれるものです。
次に、ORゲートについてですが、こちらも実際に行われることはANDゲートと同じです。ただ、A OR Bなので、AかBであれば結果へとつながっていくということになります。
最後にNOTゲートですが、これは単純にNOTです(笑。
このような論理ゲートを数式で表すことができるため、ニューラルネットワークへの実装が可能になっているのです。
神埼で、お酒を買ってしかもパンも買うというのであればANDゲートへ、お酒か若しくはパンだけでいいということであればORゲートへ、お酒もパンのいらないということであればNOTゲートへお越しください、というような感じにすぎないのですが・・・。
単純パーセプロトン
人間の脳は、必ずしもひとつのことだけを行っているわけではないですよね。神埼は幼稚園の数も多いですが、お皿を洗いながら子供を神埼保育園に連れていくイメージをしつつ、佐賀銀行でお金をおろす予定をたてて・・・
なんて。
そういうことで、単純にひとつのデータを与えてあげれば一日がおわるというわけではないですね。そのため、未定数のK回処理を繰り返すという場合にどうすんの?というのが問題として出てくるわけですね。
このとき、ステップ関数というものを使って実装を行っていきます。ロジスティクスにおけるシグモイド関数に対比されるものになります。
このステップ関数を用いてニューラルネットワークを表現したものを単純パーセプトロンと呼びます。
さて、ではこれをシステム的にどのように実装していくのでしょうか。
それを次回に回したいと思います。