この記事は、人工知能(AI)の初学者が、シンプルな機械学習(ニューラルネットワーク)のモデルを構築するためのガイドです。
人工知能(AI)とは
人工知能(Artificial Intelligence)は、専門家によってもその解釈が異なり、明確な定義はありません。
人工知能の大まかな分類
人工知能(AI)には、さまざまな種類があり、大まかには以下のように分類することができます。
(1) 人工知能
一番広い概念で、推論、認識、判断など、人間と同じ知的な処理能力を持つ機械(情報処理システム)全般を指す。
(2) 機械学習
人工知能の一種で、多くのサンプルデータをもとに入力と出力の関係を学習し、分類や回帰等の問題の解を出す。
(3) ニューラルネットワーク
機械学習の手法の1つで、脳の神経細胞の情報処理を模しており、大量データを繰り返し与えて階層構造のユニットのつながりで学習することで解を出す。
(4) ディープラーニング
ニューラルネットワークの階層をより多階層とし大量のデータを学習することで、複雑な問題に対してより精度の高い解を出すことができる。
ニューラルネットワークとは
ニューラルネットワークは、脳の神経細胞(ニューロン)の情報処理を模した機械学習の手法の1つで、 大量データを繰り返し与えて入力と出力の関係を学習し、分類や回帰等の問題の解を出す。
ニューロン(神経細胞)とは
ニューロンとは脳にある神経細胞のことで、生体の細胞の中で 情報処理用に特別な分化を遂げた細胞です。人間の脳の中には約140億個のニューロン(神経細胞)がある といわれています。
脳を生理学的に調べてたところ、小さな細胞(ニューロン)が網の目のようにつながり、ネットワークをなしていることがわかっています。
その各ニューロンは他の多数のニューロンから信号を受け取り、それを総合して次のニューロンに信号を伝えています。
このように脳の中では たくさんのニューロンのつながりによって 情報を処理しているのです。
実際のニューロンの構造
ニューロンは細胞体、樹状突起、軸索 の3つの部分からなります。
細胞体が本体で、樹状突起が入力部分、軸索が出力部分になっています。つまりニューロンは入出力を持った情報処理素子です。
ニューロンの出力は他のニューロンの入力部分につながっていて、複雑に結合したニューラルネット(神経回路網)を構成しています。つまり、出力を担う軸索は途中で何本にも枝分かれして、多数個の他のニューロンの樹状突起につながっています。
この結合部を シナプスと呼びます。ニューロンの情報は、1つの細胞の軸索から他の細胞の樹状突起へとシナプスを介して伝えられます。
細胞体 (soma) | 核などが含まれている部分で、 ニューロンの本体といえる部分 |
樹状突起(dendrite) | 細胞体から出ている多数の枝のような部分で、ニューロンの入力端子にあたるところ |
軸索 (axon) | 細胞体から伸びだし、ニューロンの出力端子にあたる部分 |
シナプス (synapse) | 枝の末端にある小さい太い足で、他のニューロンに接している。ニューロンどうしをつなぎ、情報を伝達する役割をする |
ニューロンの働き
次に1つのニューロンの働きについて説明します。
ニューロン内部の電位を膜電位といいますが、樹状突起へ入ってくる ニューロンの入力信号によって この膜電位が変化します。 そしてこの膜電位がある閾値(しきいち)を越えると、ニューロンは興奮して、パルスを出します。
このパルスが出力信号となって軸索を 伝わっていきます。パルスが他のニューロンとの結合点のシナプスに 達すると、軸索の末端から伝達物質が放出されます。この物質が受け手のニューロンの樹状突起に作用して、そのニューロンの膜電位を変化させます。
伝達物質には、膜電位を高める働きをするもの(興奮性)と、低める働きをするもの(抑制性)とがあります。このようにして、ニューロンからニューロンへ信号が 伝達されていくのです。
ニューロンのモデル化
ニューロンモデルの構造
まず1つのニューロンを多入力1出力の素子でモデル化をします。
このモデルを用いればニューロンの構造も簡単に示すことができます。実際のニューロンと比べてみると、シナプスは結合荷重に、細胞体はユニットに対応しています。
結合荷重とは、結合の強さを表す量で、 膜電位が入力の影響を受けて変化する大きさのことです。 つまり結合荷重は任意の実数値で、入力に重みをかける役割をしています。 これは、シナプスが異なる伝達効率を持つことをあらわしています。 興奮性のシナプス結合に対しては 結合荷重は正となり、 抑制性のシナプス結合に対しては 結合荷重は負となります。
ユニットはしきい値演算をするためのものです。 入力信号の強さに結合荷重を掛けたものを すべての入力について計算し足し合わせます。 つまり、入力に重みをかけた総和を計算するのです。 そして、その総和がしきい値を 超えたかどうかを判定し、それに合った出力を出します。
ニューロンモデルの数式化
れでは次に、このニューロンのモデルを一般化して、数式で明解に示します。 今、n個のニューロンから入力信号を受け取るニューロンを考え、 これらの入力信号の強さを X1,X2,・・・,Xnとします。 それぞれの入力に対して結合の強さ(結合荷重)がありますから、結合荷重もn個あり、 W1,W2,・・・,Wnとします。
さて、入力信号によって膜電位が上昇するということは、 入力の強さにこの結合荷重を掛けて、 それをすべての入力について計算し足し合わせ るという操作になるので、 膜電位の上昇量は総和で表されます。
この総和が ある値(閾値)よりも大きくなったとき、 この素子が出力1を出し、 総和が閾値より小さいとき、 出力0を出すようにしたいとすると、 このニューロンの出力は次の式で表されます。
ニューロンモデルの結合
これで、1つのニューロンのモデル化はできました。 しかし、1つのニューロンではこのような 簡単な計算しかできないのです。
それでは、もっと複雑な計算はできないのでしょうか。 それはニューロンを多数組み合わせる ことによって可能です。 つまり、あるニューロンの出力を次のニューロンの入力にして ニューロンどうしを接続し、そのニューロンの出力をさらに次のニューロンの 入力に・・・というようにどんどん接続していくのです。
このようにして、ニューロンモデルを何個か結合させて ネットワーク状にすることによって、高度な処理ができるようになるわけです。 それがニューラルネットワークです。
ニューラルネットワークの特徴
ニューラルネットとは
ニューラルネットとは 今まで見てきたニューロンのモデルを 互いに多数結合させ接続しネットワーク状 にしたものです。 これまでの計算機では高度な処理をさせるのはたいへん難しいです。 それをなんとかうまく簡単に処理できないかという希望から、 脳の情報処理方式を取り入れた ニューラルネットを使った処理方法が考案されました。 今まで見てきたように、 1つのニューロン素子の働きはごく単純なものですが、 その素子が多数結合して高度な処理をすることができるのです。 いわば、 ニューラルネットは多数鈍才方式というわけです。
ニューラルネットの構成方法
まだ、人間の脳の中で行われている処理は正確にはわかっていません。 そこで、これまでにわかっている 脳の生理学実験等の結果データをもとにして、 脳で行われているであろう処理をモデル化し、 そのモデルをコンピュータでシミュレーションします。 そして、その結果を実際の脳の働きと比較しながら、 そのモデルの有用性を検討し、新しい情報処理の方法を創造していきます。
ニューラルネットの利点
その際、それぞれの 結合の強さ(結合荷重)は学習により変化 させることができます。 また、各ニューロンは、 並列に動作することができます。
人間の脳の中には約140億個のニューロンがあるといわれていますが、 これらのニューロンが、すべて相互に結合しているわけではありません。 1個のニューロンの結合はたかだか1万程度です。また、脳における 機能の局在に対応したモジュール構造 になっていたり、下位のニューロン層から 上位の層に信号が伝播していく階層構造 になっていたりします。
したがって、 1つのニューロン素子の働きはごく単純なものですが、 その素子が多数結合して高度な処理をすることができるのです。
そういうわけで、 ニューラルネットの利点は、 巧妙なアルゴリズムがまったく必要ないと いうことと、各々の処理を並列に計算できるという点です。
今回は人工知能(AI)の大まかな分類と、ニューラルネットワークとは何かについて解説しました。次回以降は具体的なニューラルネットワークによる機械学習をやってみます。お楽しみに。
コメント