AIをゼロから学ぼうとするとAIを理解するための領域がとても広く全体像をつかむのが大変です。この記事では自分へのメモも兼ねてAIの全体像を理解する手助けになるようなキーワードと動画and記事へのリンクを紹介したいと思います。
AIのざっくりとした分類
現状、実用的になってきているAIの領域は以下のような感じです。
- 画像の解析
- 種類の判別(車・猫・犬など)
- 顔の判別
- 表情の判別
- 人の骨格と動きの判断
- 人工の画像の生成
- 音声の解析
- 音声⇔文字
- 人工の声の作成
- 言葉の解析
- 意味の解析
- 翻訳
AIの応用的な活用としては
- アルファGO(囲碁)
- ポナンザ(将棋)
- ピンポイントでの天気予報(https://www6.nhk.or.jp/special/detail/index.html?aid=20180915)
- ゲームをAIがクリア(https://www.youtube.com/watch?v=qv6UVOQ0F44)
- AIの信号制御で渋滞緩和(http://tamakino.hatenablog.com/entry/2018/10/11/080000)
などがあります。
AIにもいくつか種類があります。
https://products.sint.co.jp/aisia/blog/vol1-9
2018年である程度実用的にになってきているのは「教師あり学習」の「分類」を活用したものが多い印象です。「教師無し学習」「強化学習」「回帰」などはこれからという感じでしょうか。
AIを簡単に使ってみる
実用的になってきたAIはREST APIで簡単に利用できるようになってきてます。以下に紹介します。
画像の解析(種類判別、顔・表情・感情の判別)
GoogleCloudVision
https://cloud.google.com/vision/
Cognitive Service
https://azure.microsoft.com/ja-jp/services/cognitive-services/
音声⇔文字
https://cloud.google.com/speech-to-text/docs/
以下はAPIは公開されてないみたいですが
AI骨格検出
VisionPose
https://www.next-system.com/ai/visionpose
AIアナウンサー荒木ゆい
株式会社ロゼッタ
https://www.rozetta.jp/department/
公開されているAPIを利用すると数行のコードで画像を判定したりすることができます。一般化したAIの機能はGoogleなどの会社がどんどん公開していくので他の会社の出番は無さそうです。ビジネスをするのであればある程度、ドメイン特化・業務特化型でないと厳しそうな印象です。
AIアナウンサーの領域はそのうちGoogleがサービスを出してきそうではあります。例えば自分の好きなタレントのラジオの音声のmp3ファイルをGoogleにアップロード→クラウドで自動で学習→API経由でテキストを渡す→渡したテキストでそのタレントがしゃべる音声データが生成されてmp3で取得できる、みたいなのは出してきそうですね。
Google、Amazon、Microsoftが出す領域とかぶるようなAIビジネスはリスクがありそうです。
AIが可能なことと不可能なこと
AIが「ちゃんと使える」ようになるには
- 大量のデータが必要
- 傾向があるデータ
この二つが良い精度を実現するには重要です。データが少ないとAIの精度があがりません。画像、音声、文章というのはインターネットが出来てから大量に蓄積されているというのもありAIの適用が進んでいます。しかしながらデータが多ければそれでOKかというとそれだけではダメで、そのデータがある程度の傾向を持っていないと精度があがりません。人の顔や猫や車というのはかなり似通った形をしています。しかし業務のメールの返信内容などはデータこそ大量にあれど文章は千差万別です。ある程度の傾向が無いとAIの精度が上がりません。例えば「制作業界の会社の人の取引先とのメールのやりとりをAIが自動でやる」とか「問い合わせフォームからの質問に自動で答えるBOT」みたいなのは個人によって返信の文章が違ったり業界によって質問と答えが違ったりします。ですので高い精度のAIの作成は少し難しいと思われます。まだまだこの分野での失業の心配はなさそうです。
同じ文章でも法律の解釈などは文章に傾向があり、ゴールの定義もできそうです。通常の返信メールの作成などに比べるとAI化の波は早めに来そうです。
改めて応用例として挙げた
- アルファGO(囲碁)
- ポナンザ(将棋)
- ピンポイントでの天気予報(https://www6.nhk.or.jp/special/detail/index.html?aid=20180915)
- ゲームをAIがクリア(https://www.youtube.com/watch?v=qv6UVOQ0F44)
- AIの信号制御で渋滞緩和(http://tamakino.hatenablog.com/entry/2018/10/11/080000)
を振り返って見てみるとどれもデータ形式が決まっていて大量のデータが確保しやすいものばかりです。ゲームなどはデータ化が容易です。またゴール(お手本となる教師データ)も定義しやすいです。マリオなら死なずに少ない時間でクリア、天気なら各四角形の領域の降水確率、渋滞なら単位時間あたりのスループットといった具合です。こういった領域ではAIをうまく活用しやすく、実用化が進んでいる感じです。返信メールやQ&Aとかは最適なゴールの定義が難しくまだ実用化は先だと思われます。
ちなみに中国は今後AIで最先端を進むと思われます。何故ならプライバシーの問題をある程度無視して大量のデータを集められる政治環境があるからです。日本やその他の先進国ではプライバシーや法律などの制約があり、中国の真似をするのは難しいでしょう。
AIは既存の技術と何が違うの?
まず大きいのが画像・音声・文章をより抽象的に扱えるようになったというのがあります。今までは画像に含まれているオブジェクトを抽出したり、音声をテキストにするのは難しかったのができるようになりました。これが一つ。もう一つは今までと全く異なるプログラムの作成方法です。「データを学習して自動的に判別の精度が改善される」という部分が違います。
今までは判断の部分を変えるには「プログラムの変更」が必要でした。if文の書き直し→コンパイルという形です。AIの場合、「データを変更して学習」すれば判断の部分が改善されます。(※もちろんAIのプログラムの修正が必要な場合もあります)AIを使うと何が嬉しいかというとトレーニング処理で重みパラメーターを試行錯誤してくれ、教師データに一致するようにパラメーターを調整してくれます。プログラマがif文を修正する必要はなく自動で判断の処理が出来上がるというのが今までできなかったメリットです。
AIの仕組みの理解
AIがどういう仕組みでできているのか、また最適なパラメータをどうやって見つけだしているのかを理解するのはなかなか大変です。画像へのAI適用の仕組みは大まかにいうと
1.画像のデジタルデータ化の仕組み
2.画像の特徴の抽出
3.パラメーターの自動調整の仕組み
という感じです。それぞれのステップでは
1.行列での処理
2.畳み込み、Pool層、活性化関数
3.損失関数、勾配降下法
といったキーワードを理解する必要があります。(他にもいろいろありますが…)今回は画像の例ですが音声や文章も同様の仕組みでデジタルデータとして処理されます。
まずは
ゼロから作るDeep Learning
がお薦めです。しかし数式ばかりだと理解が進まないので動画も活用しましょう。
1.画像のデジタルデータ化の仕組み
RGBや画素などをどのようにデータ化するかを解説してくれている動画と記事です。
But what is a Neural Network? | Deep learning, chapter 1
(↑前半部分)
【深層学習入門】画像処理の基礎(画素操作)からCNN設計まで
2.画像の特徴の抽出
画像の特徴(○とか×とか斜線とか)を抽出する仕組みを解説した動画と記事です。
How Deep Neural Networks Work
But what is a Neural Network? | Deep learning, chapter 1
(↑後半部分)
定番のConvolutional Neural Networkをゼロから理解する
ディープラーニング学習メモ #5 CNN
3.パラメーターの自動調整の仕組み
教師データとの誤差を最小化するパラメータを求めていきます。誤差の大きさを高さで表すと標高線のようになり、高さが一番低い位置が誤差が一番小さい場所になります。この低い場所を求めるのに今の場所から少しだけ動かした時に値が小さくなっている方向に進んでいくというのがパラメータ調整の仕組みです。そのちょっと動かしたときの値の増減で微分を使います。
動画で見てみましょう。
Gradient descent, how neural networks learn | Deep learning, chapter 2
What is backpropagation really doing? | Deep learning, chapter 3
スタンフォード大学 Lecture7 Training Neural Networks II
スタンフォード大学の動画は各種の勾配降下法をビジュアルに解説してくれるのでわかりやすいです。より短い時間で一番誤差が小さい地点へ到達できることにより計算時間が短くなります。そうすると試行錯誤の回数が増やせて開発スピードがあがるのでとてもメリットがあります。
英語の動画に加えてさらに日本語の記事で理解を深めます。
ディープラーニング(深層学習)を理解してみる(勾配降下法:最急降下法と確率的勾配降下法)
勾配降下法の最適化アルゴリズムを概観する
各キーワードだけでも掘り下げるとかなり深いので後述のサイトなどでさらに理解を深めたいところです。
今後のAIの方向性
現在のAIの課題は
- ライブラリの淘汰
- ハイパーパラメータの自動探索
- 教師ありデータが無い場合
- AI as a Service
- エッヂAI
あたりがHOTになる予感がします。
ライブラリの淘汰
今のAIのライブラリはjQueryが出る前のJavaScriptを思い出させます。簡単なことをするのにたくさんプログラムを記述する必要があります。近いうちにデファクトのライブラリが決まるのではないでしょうか?来年TensorFlow2.0が出るようですが要チェックです。
ハイパーパラメータの自動探索
AIを精度を上げるのにハイパーパラメータの調整→トレーニング→結果の精度を確認…というのを繰り返します。これは結構退屈な作業で勘で修正→長時間待って→結果を確認→またちょっと修正→以下無限ループといった感じです。当然、パラメータを自動でいろいろ試行錯誤してほしいなというニーズが出てきています。今後そういった自動探索のサービスが増えてくるでしょう。
実はGoogleは既にそういったものを出してきています。
Google Cloud ML の Hyper Parameter Tuning の探索アルゴリズムを探索する
教師無しデータ
他は教師データが無い場合のAIの進化が今後進むと思われます。
教師なし学習は機械翻訳に魔法をかけるか?
現在は大量の傾向のある教師データがないと精度がなかなか上がらないのですが教師無しで精度があがる方法が今後新たに見つかっていけばまた急速な発展がありそうです。
AI as a Service
AIのトレーニングには非常に時間がかかります。これは画像がそもそもデータが多い、画質は年々良くなっている、動画にするとさらに1秒で30フレームで掛け算、それぞれのパラメータを掛け合わせると指数関数的に増えてしまう、などが要因です。たくさんの試行錯誤をするためには計算を早く終わらせる必要があり、そのためには高価なGPUを積んだPCが必要ですが個人ではなかなかという現状があります。また作成したAIを素早くデプロイしてREST APIで利用できるようにしたいという要望もあります。こういった課題に対して、クラウド上で安価にAIのトレーニングが出来て、学習済みモデルがクラウドに保存され、自動でAPI公開される、みたいなSaas形式のAIサービスが今後出てきそうです。環境構築、開発、学習、デプロイまで一貫してサービスとして提供してくれるサービスがあると助かります。
Google Golaboratoryがそんな感じで非常に便利です。
https://colab.research.google.com
エッヂAI
あとはIoTとのからみでクラウドではなくエッヂの端末でAIを動かしたいという話も出て来そうです。工場でネットワーク環境が悪いとか、リアルタイムでのレスポンスが必要なパフォーマンス特性上端末で処理したいとか。開発からデプロイまでシームレスにできる開発環境andサービスのニーズは高まる予感がします。
AIのサイト
今回の記事は全体像なので各分野さらに掘り下げて理解がしたい場合は以下のサイトを参考にしてみてください。
AI研究所
https://ai-kenkyujo.com/
高卒でもわかる機械学習
http://hokuts.com/
はやぶさの技術ノート
https://cpp-learning.com/category/画像処理/
https://cpp-learning.com/category/機械学習/
私もまだまだ勉強中なので他にもあれば教えて頂けると助かります。