IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

AIの作り方~AIってなに?~

どうも、Koheiです
3連休は土曜日にジャンプが発売するので得した気分になりますね。

今回は最近流行りのAIの作り方について書きたいと思います。

AI流行ってますよね。
僕が愛用しているSONYのイヤホンにもAIノイズキャンセリング機能とか入っています。
 
僕の思うAIといえばこんなイメージです。
 
ターミネータ
ペッパー
アマゾンAcho
Siri
 
こうやって見ると人間と同じように考え行動するものがAIっぽい感じがします。
実際AIというものはいわゆるBuzzワードで、人によってとらえ方が違うものであり
その人が「これ、AIじゃね?」って思えばAIなんだと思います。
 
さて、ここではAIの定義づけはざっくりと
「人と同じように学習し、判断できる機能を持ったコンピュータ」とします。
 
ではこのAI、どうやって作ったらよいのでしょうか。
ターミネータを作るのは難しいですが

何かの機能に特化した「特化型AI」なら比較的簡単に作れてしまいます。

では、ここでなんでも画像を読み込ませるとリンゴかどうかを判断してくれる
特化型AI「リンゴなら知ってる君」を作りたいと思います。

f:id:go-mount:20180713235659p:plain

1. 学習させる

さて、「リンゴなら知ってる君」になんとかしてりんごを覚えさせたいあなた。

人間はどうしてリンゴの画像を見て、リンゴだとわかるのか?を考えてみます。
 
例えば、
目の前にリンゴがあります。
世の中の人は、それを見ればリンゴだと認識できます。
 
なぜそれがわかるのかというと、小さいころからリンゴを見て、
・丸い形をしている
・色が赤色である
という特徴から、それがリンゴだと記憶しているからです。
 
人生で一度もリンゴを見たことがなければ、
リンゴをみてもリンゴだとわからないでしょう。
 
これをコンピュータに理解させるにはどうしたらいいでしょうか
 
答えはシンプルで、人生でまだリンゴを見たことのない人と同じように
リンゴをリンゴだと覚えさせればよいのです。
 
リンゴの画像とそうでない画像をたくさん用意します。
できるだけたくさんのバリエーションを用意した方がいいでしょう
この画像はリンゴであるという特徴を作り、この画像はりんごですよ、とラベル付けをします。これがいわゆる学習データになります。
コンピュータとしてはこういう情報がインプットされます。
・丸い形をしている
 →画像ドットのうち、x行目y列目が黒色
・色が赤色である
 →x1行目からx2行目、y1列目からy2列目のRGB値が255:0:0
 

f:id:go-mount:20180713235752p:plain

2.特徴を抽出し、モデルを作成する

さあ、これでリンゴを覚えただろう!ということで
新しいりんごの画像を「りんごなら知ってる君」に与えてみます。
f:id:go-mount:20180713235821p:plain

おいぃぃぃぃ
 
そうなんです、画像が今までのパターンと1ドットでも違うと
コンピュータはNoといいます。
 
これではリンゴの画像を大量に集めても
過去と全く同じものでなければ正解しません。
融通の効かない奴め
 
さて、ここで使うのが統計です。
経験的に得られたバラツキのあるデータから、応用数学の手法を用いて数値上の性質や規則性あるいは不規則性を見いだす(wikipedia統計学」より)
 
いままでもこの値だったから、この先もこうなんじゃね?
っていうのを数学的に表現します。
数学的にというのがポイントで、つまり、コンピュータ(1/0)の世界でも表現できます。
 
有名な統計の例としては正規分布というものがあります。
 
テストの点数推移とかを表現するアレです。
10000人テスト受けて、平均点が60点、標準偏差が20点なら
今後十人がテスト受けてもだいたい60点前後の人が多くなる
ってなるよねっていうアレです。
このあたりの説明は、オソロシイ数式の乱立なので今回省略していますが、個人的にはとても面白い分野なのでぜひ調べてみてください。
 
さて、「リンゴなら知っている君」のプログラムに統計モデルを反映すると

具体的には、

・丸い形をしている

 →画像ドットのうち、黒色位置の平均値はx行目、y列目
  ばらつきは±5ドット
・色が赤色である

 →x1行目からx2行目、y1列目からy2列目のRGB平均値が200.XX。ばらつきは±20

 

といった形です。
これらの平均値、ばらつき(過去の統計情報)から、りんごの特徴量をモデル化することができます。
データ全体が正規分布と仮定すると、数式で確率も算出することもできます。

過去の統計的傾向から言うと、**%でリンゴっぽいです。という感じです。
さて、この統計モデルを「りんごなら知ってくる君」にあてはめてみます。
f:id:go-mount:20180713235904p:plain

おお、80%りんごですか。
僕からすると100%なんですが。まあ、でもいい感じです。

もっとたくさんのりんごの画像を見せて、もっとりんごの特徴として使える要素を盛り込んであげれば、もっと正確にりんごを見分けることができるようになるでしょう。
こうしてどんどん学習してより正確な答えを、より人間に近い答えを出せるプログラムが完成します。これでリンゴ画像識別特化型AI「リンゴなら知ってる君」の完成ですね。

3. AIの要素まとめ

今回リンゴの画像を例に記載しましたが
この「学習、特徴抽出、統計モデル構成」によって、コンピュータに人間と同様の知識を学習させるサイクルを機械学習といいます。これがAIのコアとなる技術になります。

最近のいわゆるAIが世の中に広がってきたのも
コンピュータ技術の発達のおかげといわれていて、主に
 
・たくさんのデータで学習データを作れるようになった
・たくさんのデータを処理して複雑な統計学に基づく数式を計算できるようになった

というのがキーになっていると言われています。

さて、今回は肝心の統計学の部分をかなり端折ってしまいましたが
AIの要素について書いてみました。

昨今では、さまざまなAI技術が発達しており、上記のようなプロセスを踏まないことも多々ありますので、最新のAI技術の動向については、また別のタイミングで書いていきたいと思います。
  
ではでは