人工知能(AI)を作る手法の一つとして機械学習があったね!
最近はディープラーニング(Deep Learning)
という言葉もよく聞きますね。
ディープラーニングも機械学習の手法の一つだよ!
今回はディープラーニングを支える
人工ニューラルネットワークという仕組みを見ていこう。
人工ニューラルネットワークとは
ディープラーニング(深層学習)は人工ニューラルネットワークを発展させた技術です。
人工ニューラルネットワークは生物の神経系の働きを真似してつくられた仕組みです。
応用例として下記のようものがあります。
- 画像認識、音声認識
- 英語から日本語への変換などの機械翻訳
- 株式の上昇・下落を予想する株取引システム
- 自動車の自動運転
- レントゲン写真、MRI、CTスキャンなどのデータの解析(医療分野)
いろいろな分野で活用されていますね。
これはほんの一例だよ。
まず、人工ニューラルネットワークのヒントとなった
生物の神経系について説明するね。
生物の身体をコントロールする仕組みとして以下2つがあります。
- 神経系(Nervous system)
神経系は主に素早い、瞬間的なコントロールを担う。
電気信号が情報を伝達する。 - 内分泌系(Endocrine system)
内分泌系は比較的ゆっくりとした、持続的なコントロールを担う。
ホルモンという物質が情報を伝達する。
神経系は、情報を処理する働きをする神経細胞(Neuron:ニューロン)がたくさん結合して構成されています。
神経細胞は中心となる神経細胞体、神経細胞体への入力を受ける樹状突起、神経細胞体からの出力を行う軸索から構成されます。
これらはイオン(電気を帯びた物質)が出入りすることで電気信号として情報を処理、伝達しています。
人間の脳の場合は神経細胞が100憶から1000個程度あると言われており、これらが立体的に多数集まってネットワークを構成しています。
樹状突起では、シナプスを介して他の神経細胞から電気信号を受け取ります。
他の神経細胞から電気信号を受け取ると、神経細胞は内部の状態が変化し、その結果を他の神経細胞を伝えます。そしてこれらを繰り返し、情報の処理、伝達が行われています。
この仕組みを模倣したものが
人工ニューラルネットワーク(ニューラルネット)だよ!
人工ニューロンの仕組み
生物の神経系はたくさんの神経細胞(ニューロン)によって構成されていましたが、人工ニューラルネットワークも同様にたくさんの人工ニューロンの組み合わせでできています。
生物の神経細胞と同様に人工ニューロンも多入力一出力の計算素子です。
人工ニューロンは複数の入力端子がついており、それぞれに入力された値を増減する重み(結合荷重)が割り当てられています。重みは入力された値を掛け算することで値を増減します。
掛け算された値は全て足し合わせて、閾値と呼ばれる定数が引かれます。
さらにこうして求めた値を活性化関数(伝達関数、出力関数)と呼ばれる関数へ渡し、その関数の出力(引数)が人工ニューロンの出力となります。
人工ニューラルネットワークはたくさんの人工ニューロンで
構成されているので、上図はi番目の人工ニューロンという意味だよ。
活性化関数はステップ関数やランプ関数(ReLU:レルー)があります。
それぞれの関数の動作は下記になります。
- ステップ関数
入力がマイナスなら0を出力。
入力が0以上なら1を出力。 - ランプ関数(ReLU:レルー)
入力が0以下なら0を出力。
入力が0より大きいならそのまま出力。
線形の関数は何回合成しても線形の関数のままですが、活性化関数を入れることで非線形の関数にすることができます。
人工ニューロンを非線形の関数にすることで複雑な処理が実現できるようになります。
では、例題を一つやってみようか。
入力がx1 = 1、x2 = 0、重みがw1 = 1、w2 = 1、閾値θ = 0.5、
活性化関数がステップ関数の時はどうなるかな?
出力は1ですね!
正解。
次は人工ニューラルネットワークの仕組みについて見ていくよ!
人工ニューラルネットワークの仕組み
人工ニューロンを組み合わせると人工ニューラルネットワークができます。
人工ニューラルネットワークには階層型ニューラルネットワーク、相互結合型ニューラルネットワークなどがあります。
- 階層型ニューラルネットワーク
文字通り、階層構造に人工ニューロンが配置されたもの。
情報は層を一方向に流れ、同じ層では人工ニューロン間で
情報の受け渡しはない。パターン認識などに使用される。 - 相互結合型ニューラルネットワーク
層というものはなく、人工ニューロン同士が相当に結合したもの。
人工ニューロンの情報パターンにより、記憶などを行うことができる。
人工ニューロンAから出力された情報は、ほかの人工ニューロンを通して
人工ニューロンAへフィードバックすることもできる。
相関学習による連想記憶に使用される。
階層型ニューラルネットワークの構成例を下図に示します。
上図の人工ニューラルネットワークは2つの入力を持っています。
入力された信号は左側2つの人工ニューロンに渡され、それぞれの人工ニューロンで設定された重み、閾値、活性化関数に従い、計算が実行されます。
出力された信号は次の層の人工ニューロンの入力となり、同様に計算され出力されます。
このような仕組みが階層型ニューラルネットワークになります。
実際にはもっとたくさんの人工ニューロンで構成されているよ!
人工ニューラルネットワークの学習
人工ニューラルネットワークは、各人工ニューロンの重み、閾値、活性化関数などのパラメータを調整することで利用者の望む計算結果を得ることができます。
人工ニューラルネットワークの学習とはこれらのパラメータを調整することを言います。
- 学習データの一つを入力に与え、出力を計算する。
- 出力と教師データ(Training data)を比較し、誤差を計算する。
- 誤差が小さくなるように重み、閾値を調整する。
- 誤差が許容範囲内に入るまで、①~③を繰り返し実行する。
学習の考え方は下の関連記事も合わせて見てみてね!
まとめ
ディープラーニングの基礎となる人工ニューラルネットワークの概要について説明しました。
あまり難しいことは書いていないつもりですが、イメージは掴んで頂けましたでしょうか。
ディープラーニングについては人気があり、プログラミングスクールなどでも勉強できますし、書籍もたくさん出ています。
コンピュータへの実装にはプログラミングの知識も必要となりますので、もし、経験のない方はこの機会に勉強されてみてはいかがでしょうか。