2016年7月15日金曜日

はじめての人工知能入門の前段階のはなしと実装例(3)


の続き。

2回に渡ってニューラルネットワークの説明と実装について書いたので今回はニューラルネットワークの考え方のまとめを行いたいと思います。

人工知能の学習やニューロンの仕組みを学んでいくと、パターン認識であるという事がわかってくると思います。
この機械学習を進めていくと、様々なパターンを組み合わせて認識するディープラーニングというものになっていきます。ディープラーニングは自ら共通項目を見つけ出してラベリングしていくのでもう少し進化してますが現時点はここが最先端になります。

昔からあって今になって話題になったけど、何が変わったかというと

・ニューロンのデザイン
 学習方法(誤差伝播、損失関数)
 →問題と解答を教えることでニューロンを学習する方式から
  自ら入力パターンを見つけ出してパターンの組み合わせから解答する方式へ
 
・ニューロン同士の接続
 →全結合かつ3層構成から
   繰り返し・分岐・状態保持、多層化などが考案されて高度化へ


このような変化がありました。

プログラム的に言い表すと、

・入力データのパターン化、enum型(イベント、状態)
 これは文字認識や音声認識はこれができれば良いのです。

・時系列のパターン認識、Dictionary型
 外部入力からenum型に変換したあと、次に待っているのが時間軸の変化のパターン認識です。
AとくればBというような反応であることからdictionary型だといえます。
これは将棋やオセロ、チェスなどの1手先の読み、Q&A形式のトラブルシューティングなどに当てはまります。
あえて意味とは書かない理由は、機械的に計算された一致率で解答を算出していることが意味を理解しているのか?と思えるからです。

・パターンの組み合わせ、タスク(シーケンス処理
 AとくればB、BときたらCといったようにパターンの掛け合わせでより先にある良い結果の道筋を算出します。これを戦略的判断とは言いづらいですが、数学的に効率的な判断をしていきます。
 これには問題があって、統計情報からは人間みたいに一手間二手間増やしてさらに良い結果を導き出そうという考えに行き着かない当たりがロボットみたいだと思われてくるんだろうと予想されます。

・パターンの並列処理、ディスパッチ処理
 将棋や囲碁でも盤面上で戦っているのは一箇所ではなく複数箇所あって互いのタスク協調動作をしていく部分になります。この領域になると抱えるタスクが増えるごとに人間が負けていきそうです。


特定された状況下で1つの入力に対して作業させることは可能になります。
ゲームやオートメーション化はここまでで良いです。しかし車などは多種多様な入力を受け付けます。そういった時は状態遷移(オートマトン)が必要になってきます。


・様々な入力を同時に受け取った時のパターン化、enum型(イベント、状態)
 例えばポーカーを例にとると、相手の表情やカードの引き具合、様々な事が情報になります。
笑顔で遅くカード引いた場合、 真剣な顔で目を閉じて早くカードを引いた場合、部屋にある火災警報が鳴ったなど、状況は様々あります。

・適材適所の判断をグループ分け、enum型(モード)
 神経衰弱、マインスイーパー、将棋、オセロ、など異なるルールがあるのでそれに合ったルール別に回路を変える。人間でもハサミを使うとき、包丁を使う時で考えが全く異なっていて、知らずに思考を切り替えています。


ここで1つ例で台所調理ロボットがあって、レシピ選択するだけ調理してくれる物があった場合
包丁も洗い物{コップやお皿}をうまく扱え、更に調理も火加減など上手くこなして、盛り付けも綺麗にできる、そのようなものをどうやったら出来るのかについて考えてみよう。

調理モードでレシピ(シーケンス)があって、包丁を持ってる、まな板に野菜が乗っているという状態があって、シーケンスには千切りにすると書かれていて、それを実行する。
シーケンス処理には条件が揃うのを待つといった事も可能でないといけないのをどうやってニューラルでどうやって表現するのかが問題になる事が見えてくる。これの解決策で分岐や繰り返し、状態の保持などが考案されている段階です。


最後にコンピュータがより人間らしさを手に入れるには、5感というものがないのでメリット/デメリットを自己採点刷る必要がでてきます。

・損得勘定、自己採点
 言われたことをやるだけではなく、それが自身にメリットがあるか判断する。
 これができればロボットが反発したり、抑止に繋がったりする



ひとまずここまで。
今回はニューロンを理解した先に何が待っているのかの道標の回でした。

コメントを投稿

Androider