人工知能を模型で理解して、プログラミングは「あの」方法で学ぶ
中学生でもわかる「子どものための人工知能プログラミング ワークショップ」が凄かった
2016年11月14日 17時00分更新
2016年11月3日と4日、UEI本社でディープラーニングに触れながら学べる体験型イベント「Deep Learning Akiba 2016」が開催された。
ディープラーニングは、日本語では「深層学習」と呼ばれ、機械学習の一種である。ディープラーニングの考え方は以前からあったが、近年、GPUの性能が向上し、従来に比べて遙かに高い効率で学習できるようになったことで、画像認識や絵画の生成などの分野で目覚ましい成果が得られるようになり、大きなブームとなっている。ディープラーニングの発展により、人工知能の実用化の機運が高まっている。
UEI代表取締役社長兼CEOの清水亮氏は、数年前からディープラーニングを中心とする人工知能分野に注力しており、人工知能関連の開発や講演などを積極的に行っている。直近では、2016年10月17日より、清水氏による人工知能の最先端研究者の対談集「よくわかる人工知能」(KADOKAWA アスキー・メディアワークス刊)を発売中なほか、2016年12月3日より秋葉原プログラミング教室において、子供から社会人まで手軽に学べる「AIプログラミングコース」も開講する。
今回レポートする「Deep Learning Akiba 2016」は、日々革新が進むディープラーニングの世界を広く知ってもらおうという意図で企画されたもので、2つのスペシャルセミナーと発売になったばかりの新しいディープラーニング用ワークステーションの実機デモ、そして人工知能が学習した特徴空間の中にVRゴーグルを装着して潜り込める「Feature Space Diver」の体験などが行われた。
スペシャルセミナーとして、「よくわかる人工知能 特別講座 ~深層学習の現状とこれから」と題した講演と、「子供のための人工知能プログラミング入門」および「大人のための人工知能プログラミング超入門」というワークショップが行われ、どちらもすぐにチケットが売りきれるほどの人気となった。
ここでは、その中から、特に興味深かった「子供のための人工知能プログラミング入門」の様子を紹介する(ちなみに、「大人のための人工知能プログラミング超入門」も内容はほぼ同じだ)。
子どもが夢中になる!人工知能の作り方
清水氏はまず、人工知能への入り口として「知能とは何か?」ということから、解説を始めた。辞書によると、知能(インテリジェンス)とは、知識や技術を獲得し、応用する能力とのことだが、知識を獲得して応用することは、1970年代に開発された「エキスパートシステム」や、Googleを始めとする検索エンジンなどですでに実現されている。
より難しいのは、技術を自ら獲得して応用することだが、こちらもディープラーニングの発展により、できるようになってきている。
清水氏の近著「よくわかる人工知能」の中で、東京大学の松尾豊特任准教授は、「ディープラーニングは農耕革命に匹敵する進化」だと述べている。清水氏は最初にこの言葉を聞いたときには、大げさだと思ったそうだが、今は確かにその通りかもしれないと思っているという。
清水氏はゲームを学習する人工知能や絵のタッチを真似する人工知能、写真に写っているものが何かを判断する人工知能などを紹介。参加者も持参したMacBookを使って、好きな写真を人工知能に見せて判別させていた。そのほか、単語や文章を入力すると、その語句を含む歌詞を生成する人工知能や、写真を見せて英文で自由に質問をすると、答えてくれる人工知能といった、より高度な人工知能も紹介された。
人工知能の学習には「運」が重要?
続いて、清水氏は人工知能の学習方法、人工知能を作る方法を解説していく。
人工知能は、基本的に「教材」と「正解」のペアを多数用意することで、学習を行う。これをデータセットと呼ぶが、データセットの質や量によって人工知能の賢さが変わってくる。
人工知能を作るのに必要なものは、「最低限のプログラミング能力」と「最低限の人工知能プログラムへの理解」、そして「運」である。
実は、人工知能がうまくいくかどうかは、多分に運が影響しており、ぐだぐだ考える前にまずはやってしまうほうがいいと、清水氏は語る。人工知能のパラメーターの初期値は乱数で与えられるため、同じプログラムで、同じデータセットで学習を行っても、その結果は毎回変わってくる。
現在の人工知能プログラムは、生物の脳のニューロン(神経細胞)を模して作った人工ニューロンを多数ネットワーク状に並べたものになっている。ここで、1つのニューロンから構成されるごく簡単な人工ニューラルネットワークを作り、手動で論理回路の1つである「OR回路」を学習させるというワークショップが行われた。
この人工ニューラルネットワークでは、ニューロンの重み付けとしきい値をコインの数で表し、その初期パラメータはサイコロを振って決める。
その後、入力Aと入力Bの組み合わせ(全部で4通り)を順番に人工ニューラルネットワークに入力し、得られた出力が正解ならそのまま、不正解だったときにはコインを手で動かして、重み付けとしきい値を変更することで学習を行う。
学習を繰り返していくと、全ての入力の組み合わせにおいて、正しい出力結果が得られるようになる。
この学習方法は、実際のニューラルネットワークで使われている「バックプロパゲーション」(誤差逆伝播法)とは厳密には異なるのだが、「不正解のときのみ学習できる」という、ディープラーニングの基本原理はこの人の手によるニューラルネットワークでも学べる。
次に参加者は、今手動で学習させたニューラルネットワークをPythonでコーディングしたものを、プログラムリストを見ながら実際に打ち込み、動作させることにチャレンジしていく。
清水氏は、プログラミング学習において、プログラムリストを見ながら手で打ち込む「写経」を推奨している。
写経は慣れないと面倒で時間もかかるが、写経をすることでプログラムの構造や言語の理解が進むため、UEIが主催するプログラミング教室でも、写経を必ず行っているという。プログラムの打ち込みに苦労していた参加者もいたが、清水氏がデバッグを手伝い、最後には無事動くようになった。
プログラムの打ち込みと動作確認が終わった後に、プログラムの中身を清水氏が解説し、AND回路の学習をさせるには、プログラムのどこを変更すればよいのかという課題が与えられた。
人工知能の頭の中をVRで体験できる「Feature Space Diver」
次に、より高度なニューラルネットワークの仕組みを解説していく。
ここで例として挙げられたのが、7万種類の数字の手書き文字データを集めた画像認識データセット「MNIST」を学習し、手書き文字の数字を識別する人工知能だ。
人工知能では、特徴ベクトルという概念で認識を行うが、この特徴ベクトルのパラメータを空間にプロットしたものが「特徴空間」である。特徴空間で、近い場所にある数字は形が似ていると人工知能が判断したことになる。
UEIは、この特徴空間の中に入って、自由に歩き回れるVRシステム「Feature Space Diver」を開発したが、これはいわば人工知能の頭の中に入ることに相当する。
別室ではHTC Viveを用いて、このFeature Space Diverを体験することができ、参加者はその美しさに驚きの声をあげていた。最後のワークショップは、この手書き文字を認識するための人工知能プログラムを先ほどと同じように、手で打ち込むというものだ。
先ほどのプログラムよりも複雑なため、打ち込みに苦戦している参加者も多かった。関心したのは、清水氏が自ら、参加者の目の前で、自分も毎回実際にリストを見ながらプログラムを入力していることだ。特に子供相手では、自分も入力することが大切だと、清水氏は前に語っていた。「自分がやってみせないと、子供もやろうという気にならないですから」
この人工知能プログラムでは、特に画像認識で高い効果を発揮する畳み込み(コンボリューション)というテクニックが使われている。畳み込みとは、データの1つ1つにフィルタ処理を行って、それを足し合わせる演算であり、画像の特徴を抽出することができる。
畳み込みニューラルネットワーク(CNN)を利用すれば、一画面に収まる程度の短いプログラムでも、画像認識が可能になるのだ(実際はChainerなどの人工知能フレームワークを利用しているのだが)。