ここ数年、AI(人工知能)が話題です。
これからは同じIT人材でも従来型よりAI人材が圧倒的に不足すると言われています。
なので私もアンテナを張ってAIがどんなものか理解したいんですが色々ネットや本を見ても正直よくわかりません。
わかりやすく解説しますとか言って概念だけ書かれててもコンピュータは具体的に何しているかイメージわきませんし、かといって実際の数式理論見ると難してくついていけません。
Python使ってAIのAPI呼び出して何々するって本もよくありますが、だから何?って思ってしまいます。
ですがこの本(ディープラーニング やさしく知りたい先端科学シリーズ2)を読んでそういうことかとやっと理解が進みましたのでそれを私なりにわかりやすく書いていってみたいと思います。
書くにあたり用語の意味など厳密にこだわってしまうと難しくなりすぎるためこういうことね、とイメージしやすいようにしてます。
まずは取っ掛かりを掴むためと思ってください。
AIは何に使えるのか?
AI,AIって言っても結局AIは何ができて何に使うことができるのでしょうか。
それがわからなければどんなことだったらAI化できるのかのイメージさえ湧きません。
AIの応用先は大きく分類すると3つ
AIの応用先は大きく分類すると3つあって、予測、識別、実行と分類されます。
予測
売上予測や発症リスクなど大量の過去データを元にAIというかコンピュータが学習して予測します。
つまり、「見込み」を立てるのに役立つということです。
ビジネスで見込みが立つと立たないでは全然違うというのは容易に想像つきます。
機械学習で一番実用化が進んでいる分野だそうです。
もっともこの「予測」についてはAIが導き出したましたっていうのも統計から導き出しましたってのも同義ですかね・・・。
識別
画像識別や音声識別など。
顔認証したり、感情を判定したりとかありますよね。
実行
自動運転、翻訳、作曲などですね。さらには会話、チャットボットなども。
つまり行動が伴うものを自動化してくれると認識してれば良さそうです。
機械学習とは何か
ディープラーニングもそうですが機械学習とは一体何でしょうか。機械が何を学習するっていうんでしょうか?
概要となりますがなるだけ簡単にわかりやすく説明できればと思います。
教師あり学習
たとえば商店がチラシを配布してある商品を販売しようとしています。
この商店ではチラシの配布数と商品の売上のデータを持っているとします。
たとえば100枚配ると10~15個売れたとか、200枚配ると15~30個売れたとか。
こういうデータがあればよしチラシ200枚配ろう、そうすれば15個から30個くらいは売れるぞ、と人間なら予測できます。
これは非常に簡単な例ですが回帰という過去の実績から未来の数値を予測するアルゴリズムといえます。
y = ax + bという1次関数で例えると
yが売上個数、xがチラシ枚数だとして、チラシ200枚に対して30個売り上げたという実績があってそれを当てはめれば
30=200a + b
となります。bは切片なので1枚もチラシ配らなくても10個は売れているとするとbは10になるので
30=200a + 10
a=0.1
となり傾きが0.1の1次関数となります
つまりy=0.1x + 10という関数が出来上がり
チラシを300枚配れば何個売れるか予測したいときは例えばxを300とすればyは自動的に40と一意に決まるため、40個売れるだろうとすぐ予測できるわけです。
ここでは
y = ax + bという1次関数をアルゴリズム、チラシ200枚で30個の売上という教師データを元に
y=0.1x + 10という数式を導き出したわけです。
ちなみにチラシ100枚配ったら10個売れたとか200枚配ったら20個売れたとかのデータを教師データといいます。
つまり教師データとは入力データとその結果のことです。
(教師データという言い方より実績データってほうがしっくりきますかね。)
今回はチラシ200枚で30個売れたというだけの実績からy=0.1x + 10という関数を作りましたが実際は当然もっと多くのバリエーションというか実績データがあるわけでこんな単純には導きだせません。
また商品の売上はチラシの枚数だけでなく、曜日だとか、天気だとか、様々な要因があるはずでy=0.1x + 10みたいな単純な式じゃななくもっと複雑な式になるはずです。
y=0.1x + 10は私が計算しましたが実際はコンピュータがもっと複雑なアルゴリズム(数式)と大量のデータを使って処理させて予測を作るわけです。
これが機械学習です。(machine learning訳して機械学習!)
使うアルゴリズムとそれに食わせるデータは人間が選択する必要がありますが人間が何かプログラミングする必要ありません。
一旦機械学習して予測式(学習済みモデル)ができてしまえば後はパラメータを入力すれば予測結果がすぐ導き出されるようになるのはイメージできると思います。
これがAI(人工知能)の正体ですね。
学習済みモデルが本当に正しいかは全教師データのうち例えば7割を学習に使い、それで学習済みモデルができたら残り3割をその答え合わせに使うというようなやり方ができます。
今回は機械学習の回帰というアルゴリズムでしたが他にもクラス分類、クラスタリング、情報圧縮、レコメンデーションなど色々種類があります。
教師データの使用有無もアルゴリズムによって変わってきます。
それぞれ得意分野が違うようでAIを作るときはどのアルゴリズムを選択するのかも肝となります。
教師なし学習
教師あり学習とは上の例のように簡単にいうと入力と結果(=正解)の実績があってそれからどういった傾向があるかを導きだすための学習方法でした。
これに対し教師なし学習は文字どおり教師データを使わない方法で、与えれたデータから自動的に分類、グループ分けします。
例えばあるデータをグループ3つに分けようと思った場合、各グループの中心となる値を仮決めして、それに近いかどうかでどのグループに所属するか判定するイメージです。
例えば身長と体重のデータがあるとして身長180センチ、体重65キロはグループ1(痩せ型)、170センチ、60キロはグループ2(標準型)、160センチ、70キロはグループ3(肥満型)の代表値だったとします。
あとはそれぞれの各身長、体重データをどのグループに近いかアルゴリズムが自動で振り分けてくれる感じです。
例えば185センチ、68キロは痩せ型のグループに一番近い数値だなと判断してそのグループに振り分けるとか。
(各グループの代表値は仮決めなので途中で変化していきます。)
今回は身長と体重の例でしたが顧客の嗜好性別に分類できたりすれば効果的なマーケティングにも使えることができたりしますよね。
あと教師あり学習同様、教師なし学習にも様々なアルゴリズムがあるのはいうまでもありません。
機械学習とディープラーニングの違い
AIにおいてディープラーニングという言葉はよく聞くと思います。ディープラーニングは機械学習と何が違うんでしょうか。
ディープラーニングは機械学習の進化したもの
ディープラーニング(深層学習)は機械学習のアルゴリズムの一つであるニューラルネットワークから発展したものだそうです。
なので機械学習の一部とみなす考えもある一方、統計学の応用である機械学習とは原理が大きく異るので機械学習とは別物という考えもあるようです。
まあ学習界の異端児みたいなもんでしょうか(笑)
それはそれとして機械学習とディープラーニングでは何が違うのでしょうか。
機械学習では適切なアルゴリズムと教師データを用意するだけで人がプログラミングする必要はありません。
特定のアルゴリズム(学習モデル)に対して教師データを大量に入力し、その出力結果を人間が評価します。
そして期待する結果が出せるようにするためパラメータを調整(チューニング)します。
つまりどんなデータを食わせるとより求めている結果に関係するのかを調べていくわけです。これを特徴量の抽出といいます。
例えば商品の売上に配るチラシの枚数は関係あるが誰が配るかは関係ないな、とか。
(これは画像認識でも同じで例えばりんごの画像を自動で認識できるように学習させる場合、その画像のどこかにりんごたらしめる特徴が無いと学習できないということです。)
ディープラーニングも教師データの入力までは同じですが機械学習では人間が行う必要のあった特徴量の抽出を自動的に行ってくれます。
またディープラーニングは機械学習に比べてより大量のデータを必要としたり、なんでこういう結果(予測)が出たのかが人間にはわからない、ということも起こります。
ディープラーニングの原理はいうまでもなく難しいので(私もわかりません)ここでは記載しませんが実用上は原理まで知らなくても大丈夫でしょう。
ディープラーニングは万能でもなんでもなくまだ技術的にも未成熟です。
AI作ろうと思ったらじゃディープラーニングで。ってそんな簡単な話ではないのは認識しておくべきでしょう。
続いてAI開発の流れついて書いてますのでこちらも御覧ください。