HOME > Neural Network Console

01.Neural Network Console

Visual Studio C++2017では昔からある「プログラムの世界」を駆使しして、なんとか人工知能に近づけないものかと還暦GGEは張り切ってみました。
一応課題「BOIDS」がVer2.00で一区切りついたので(終了ではないです)、21世紀最先端のAIの世界を覗いてみたりしてみませんか?

次に取り組むのは大学で行うような「概論」ではありません。プログラムと同じように自分のPCで具体的に作成し動かし手ごたえを感じるところまでを行うわけです。

とはいえですよ! 皆さんは具体的にこの質問に答えられますか?

        そもそも「AI (Artificial intelligence)」とは何か?

01.01 AIとは?

最近特に「AI」というキーワードをよく聞くようになりなりましたねぇ。
CMでも「AIスピーカー」を盛んに宣伝してますが、そもそも「AI」ってなんでしょうか?


AIとは ウィキペディアをみると次のようなことが書いてあります。

【人工知能】(ウィキペディア)
「人間の知的能力をコンピュータ上で実現する、様々な技術・ソフトウェア・コンピューターシステム。応用例は自然言語処理(機械翻訳・かな漢字変換・構文解析等)、専門家の推論・判断を模倣するエキスパートシステム、画像データを解析して特定のパターンを検出・抽出したりする画像認識等がある。
1956年にダートマス会議でジョン・マッカーシーにより命名された。現在では、記号処理を用いた知能の記述を主体とする情報処理や研究でのアプローチという意味あいでも使われている。日常語としてのこの呼び名は非常に曖昧なものになっており、多少気の利いた家庭用電気機械器具の制御システムやゲームソフトの思考ルーチンなどまでもがこう呼ばれることもある。
プログラミング言語 LISP による「MAZE」というカウンセラーを模倣したプログラムがしばしば引き合いに出されるが(人工無脳)、計算機に人間の専門家の役割をさせようという「エキスパートシステム」と呼ばれる研究・情報処理システムの実現は、人間が暗黙に持つ常識の記述が問題となり、実用への利用が困難視されている現状がある。
人工的な知能の実現へのアプローチとしては、「ファジィ理論」や「ニューラルネットワーク」などのようなアプローチも知られているが、従来の人工知能との差は記述の記号的明示性にあると言えよう。近年では「サポートベクターマシン」が注目を集めた。また、自らの経験を元に学習を行う強化学習という手法もある。
「この宇宙において、知性とは最も強力な形質である」(レイ・カーツワイル)という言葉通り、知性を機械的に表現し実装するということは極めて重要な作業であると言える。
2006年のディープラーニング(深層学習)の登場と2010年以降のMAZEデータの登場により、一過性の流行を超えて社会に浸透して行った。
2016年から2017年にかけて、ディープラーニングを導入したAIが囲碁や将棋のトップ棋士、さらにポーカーの世界トップクラスのプレイヤーも破り、時代の最先端技術となった。」


難しい言い回しですよね。 なんのこっちゃ!

私が小学生の頃は「コンピュータ」という言葉を聞いたこともありませんでしたが、ロボットアニメ「鉄腕アトム」の頭の中には「人工頭脳」が入っていて、それにより人間の言葉を話し、人間と同じように考える事ができるんだと思っていました。実際は1960年に第一次の人工知能ブームが到来していたのです。そして私が初めてコンピュータの存在を知ったのは名古屋市科学館で自分の誕生日を入力するとガチャガチャと音を立てて運勢を印刷する大型コンピュータでした。やがてTVでもアニメでも大型コンピュータが登場するとともに8ビットのパーソナルコンピュータが出現。大学でコンピュータを扱う頃16ビットのパソコンが登場。すると1980年に「エキスパートシステム」なるものを中心にした第二次ブームが起こりました。幸い社会人になってコンピュータ会社に入り高価だったエキスパートシステム構築専用機を身近で扱ってみたものの、当時は最新でしたが人工知能と呼ぶには遠く及ばない代物でした。要するに実用化には程遠いものであったために、これまでの人工知能ブームは直ぐに鎮静化してしまったのです。
やがてインターネットが一般へ普及すると同時に携帯電話が登場。やがて光通信を中心とする高速通信の登場とともにIoT(internet of Things モノのインターネット)の普及により大量のデータの授受が可能となった2013年ごろになると「機械学習・ディープラーニング」という用語が注目を集め始め第三次人工知能ブームが到来し現在に至ります。このように注目を集めた原動力は、やはり将棋やチェスでAIが名人級の人間を破ったことが原因ではないでしょうか。また、商品として成立するほどの理論と、それが実現したからだったのも1つの要因でしょう。


ところで最初の「AIとは何か?」にもどりますが、この説明ではなんのことやらさっぱりわかりませんね。

「AI」を「医師」に例え考えてみましょう。
小さな町で「かかりつけのお医者さんは誰ですか」と尋ねれば、すぐに「〇〇先生です」という答えが返ってくると思います。しかし大きな病院へかかっている方に同じ質問をすると「何科の先生ですか」と逆に聞かれるのではないでしょうか。ですから答えは「血管内科の〇〇先生です」となるわけです。
AIも同じように選択肢が少なかった少なかった時代には、「AIは何か」と聞かれたら、例えば「エキスパートシステム」のように答えられたのです。しかし現在では広義な意味でのAIはウィキペディアのように、

 「人間の知的能力をコンピュータ上で実現する、様々な技術ソフトウェアコンピューターシステム

のような答えになりますが、現在では非常に多くの分野がってひとくくりに何とは言えない時代になってきたのです。
要するに、それだけ「人間の知的能力」が具体的に分析され実現しようと専門家が沢山いるということなのです。

さらにAIは「非常に特殊な傾向持った技術」だとも言えます。

例えば大学時代パソコン内にワープロソフトはありませんでしたが徐々に漢字変換ソフトが誕生し「一太郎」や「ワード」が登場してきました。最初はひらがな文字を変換する際に何度も変換キーを押して探したものですが、最近では文章を打つと漢字にすべきところが勝手に変わっていて変換回数がかなり少なくなりました。

ちょっと待ってください!

これをよぉーく!考えて見てください!

日本が英語より難しい言語だといわれています。英語の場合単語と単語の間がブランクで空いていますが、日本語の場合漢字があるため間を空けずに書いても意味をくみ取ることができますよね。しかし全てひらがなの場合人間でも非常に読みにくいです。要するにどこまでが1つの単語なのか自分が持っている知識を総動員して理解しないといけないからです。しかし漢字変換ソフトは全部ひらがな入力でも漢字の箇所がある程度出てくるじゃないですか。

要するに、これは文章から名詞・動詞・助詞・助動詞の区別をすることができる「AI技術」で「形態素解析」という技術になります。

次に全く同じことを人間の会話でやる技術、TVCMでお馴染みの「AIスピーカー」や「Siri」などです。これを「自然言語解析」といいます。
しかし「AIスピーカー」や「Siri」の自然言語解析は「AIスピーカー」というぐらいですから、この技術が「AI技術」であるという認識がありますが、ワープロの漢字変換機能に関してはどうでしょう? あまりAI技術だという認識がないとは思いませんか。

つまりこれがAIが「非常に特殊な傾向持った技術」と言われている由縁で、AIは一般化すると「AI技術ではなくなってしまう」という運命にあるのです。実はこのようにしてAIと呼ばれないけれども凄い技術というのは現在いっぱいあるのです。

ミーハーの新しもの好きのGGEは第三次人工知能ブームの火付け役ともなった「AI技術」のなかでも「ディープラーニング(深層学習)」をテーマに進行していきます。


01.02 ディープラーニングとは?

今回勉強していく「ディープラーニング(深層学習)」とは一体何か?

【ディープラーニング】(ウィキペディア)

「ディープラーニングまたは深層学習(しんそうがくしゅう、英: deep learning)とは、(狭義には4層以上の)多層のニューラルネットワーク(ディープニューラルネットワーク、英: deep neural network)による機械学習手法である[2]。深層学習登場以前、4層以上の深層ニューラルネットは、局所最適解や勾配消失などの技術的な問題によって充分学習させられず、性能も芳しくなかった。しかし、近年、ヒントンらによる多層ニューラルネットワークの学習の研究や、学習に必要な計算機の能力向上、および、Webの発達による訓練データ調達の容易化によって、充分学習させられるようになった。その結果、音声・画像・自然言語を対象とする問題に対し、他の手法を圧倒する高い性能を示し、2010年代に普及した。しかしながら、多層ニューラルネットが高い性能を示す要因の理論的な解明は進んでいない。」


ウィキペディアを見ても何のことだか意味不明な言葉の羅列です。これ分かりやすく一口で言ってしまうと「機械が勉強して知識を取得する手法のこと」です。今までやってきたVisual C++の場合、C++というコンピュータ言語でプログラムを作りコンピュータは、そのプログラム通りに動作します。そして違う仕事をさせようとするとプログラムを作り直して再実行します。ディープラーニングというのは勉強するためのプログラムだけ与えてやると、コンピュータは処理するための専用のプログラムなしに自分で学習し、その経験した知識で目標を達成しようとするのです。

全く新しい技術なので何を言っているのかわからないと思いますが、画像認識の場合だったら例えばAKB48グループ全員の顔写真を一定の大きさにしてコンピュータに見せて柏木由紀かそうでないかを、教え続けると何度も続けると写真を見せると柏木由紀か、そうでないかを判別できるようになるということです。 これがディープラーニングです。


01.03 ニューラルネットワークとニューロン

人間の神経系構成細胞に「ニューロン」というものがあることは、確か中学生ぐらいに学校で習うと思います。ニューロンは棒状の先にひまわりのようなものがついている構造になっていますが、これが複数集まるとネットワークを構成して脳に情報を伝達したり処理したりします。これを「ニューラルネットワーク」といいます。この考え方をコンピュータ内で人工的なニューラルネットワークを用いて行うのが、今回行うニューラルネットワークを用いたディープラーニングというわけです。


【ニューロン】(ウィキペディア)

神経細胞(しんけいさいぼう、ニューロン、neuron)は、神経系を構成する細胞で、その機能は情報処理と情報伝達に特化しており、動物に特有である。なお、日本においては「神経細胞」という言葉でニューロン(neuron)ではなく神経細胞体(soma)を指す慣習があるが、本稿では「神経細胞」の語を、一つの細胞の全体を指して「ニューロン」と同義的に用いる。

宇宙記事チャンネルさんの
「ニューロンとシナプス超わかりやすく」
 https://www.youtube.com/watch?time_continue=18&v=ysph_mj9syw

で詳しく解説されていますので、興味がある方はご覧ください。



【ニューラルネットワーク】(ウィキペディア)

「ニューラルネットワーク(神経回路網、英: neural network、略称: NN)は、脳機能に見られるいくつかの特性を計算機上のシミュレーションによって表現することを目指した数学モデルである。研究の源流は生体の脳のモデル化であるが、神経科学の知見の改定などにより次第に脳モデルとは乖離が著しくなり、生物学や神経科学との区別のため、人工ニューラルネットワーク(artificial neural network、ANN)とも呼ばれる。
ニューラルネットワークはシナプスの結合によりネットワークを形成した人工ニューロン(ノード)が、学習によってシナプスの結合強度を変化させ、問題解決能力を持つようなモデル全般を指す。狭義には誤差逆伝播法を用いた多層パーセプトロンを指す場合もあるが、これは誤った用法である。一般的なニューラルネットワークでの人工ニューロンは生体のニューロンの動作を極めて簡易化したものを利用する。
ニューラルネットワークは、教師信号(正解)の入力によって問題に最適化されていく教師あり学習と、教師信号を必要としない教師なし学習に分けられることがあるが、本質的には教師なし学習と教師あり学習は等価である。三層以上のニューラルネットワークは可微分で連続な任意関数を近似できることが証明されている。
画像や統計など多次元量のデータで線形分離不可能な問題に対して、比較的小さい計算量で良好な解を得られることが多い。 現在では、画像認識、市場における顧客データに基づく購入物の類推などとして応用されている(パターン認識、データマイニング)。」



01.04 巡り合ったNeural Network Console

ニューラルネットワークを用いたディープラーニングに去年、1から作ってみようと張り切ってチャレンジしました。

この技術は最低限、多次元行列を使用するためVisual C++では処理速度の観点からも、作る難易度からも難しく、Python(パイソン)という超言語が最適だとされています。当初中古で購入した3ビット機にPythonをインストール(Pythonは基本的に無料、VisualStudio2017オプションでも無料でインストール可能)し専門書を元にやってみたところ、当初そうでもなかったものの正解率を上げるために偏微分だの高度な数学がわんさか出てきて、処理時間も最終段階ではフルパワーで一週間かかっても終了しないという結末で、中古のPCはオーバーヒートで液晶の一部が破損してしまいました。

そうこうしているとGoogle社が無料でTensorFlow(Pythonでできている)というディープラーニング開発ツールを提供していることを聞きつけインストールしようとしたら、64ビット版windowsのみの対応でNG。丁度オーバーヒートでPCを交換したので4万円で64bit版windows10機を購入し、いざ! インストール 。 と思ったら! 今度はTensorFlowがPythonの旧V3の特定のバージョンにしか対応していないことが判明し、マイナーバージョンインストールしても今度はウィルスチェッカーがPythonのプログラム内通信を阻んだたり、anacondaの通信障害が発生したりで、またしても撃沈!!
もう何をやっても撃沈続きであきらめておりました。

すると! Yahooのトップページにある時「数式なし、コーディングなしのディープラーニング Neural Network Console」というCMが出たので内容を確認してみると、どうやらSONYが無料のディープラーニング開発ツールを提供していることが判明しました。


これもどうやら64ビットしかダメなので、購入した4万円PCにインストールすることにしました。



ということで今回からディープラーニング編 開始します!




HOME > Neural Network Console