人工知能について

もくじ > Web開発ノート > Webアプリケーション

2015年頃から、AI(人工知能)という言葉が流行り始めました。今まで人間にしか出来なかった仕事を、考えるコンピューターが代わりにできるようになるようです。

人間の脳のような並列処理を機械が行うという理論は昔からありましたが、その理論を具体的な仕組みとして解き明かす事はできても、コンピューターの直列的に処理するCPUで実現するのは現実的ではありませんでした。

しかし、Graphics Processing Unit(GPU)の技術の進歩などによって、並列処理計算をCPUと別のプロセッサと分担する事で、人工知能に必要な計算が実用的な基準に達しました。

そして、ネット技術の進歩と、ネットの人間社会への浸透によって、地球上の変動する巨大なデータを集める事ができるようになり、その大量のデータを分析し、その法則性を具体的な方程式で表わすプログラムを動かす事ができるようになったのです。

データマイニング

人が吐き出した大量の情報をいつしかビッグデータとよぶようになりました。そのデータをコンピュータープログラムが解析し、そこから価値のある有用な知見を見つけ出す事をデータマイニング(Data Mining)と呼びます。

データマイニングの具体的な方法として、大量のデータを何度もAIに認識させ、そこに存在する具体的な法則を見つけるように、何度も何度も認識を繰り返させます。

AIは自分になりに方程式を見つけ出し、その中で「これはこういうものなのだな」という認識が生まれて、覚えます。

しかし、その認識はズレていて、大抵根本的に方向を間違えます。だから、人間が少しずつ補正を加えたり、方向性を決めて、調節してやります。人間による調節と、AIによる解析を繰り返しているうちに、実用的な方程式が生まれてきます。

その方程式を現実社会での出来事に当てはまる事で、コンピューターが自動判別する仕組みができあがります。これを機械学習と呼びます。

機械学習とは?

AIが機械学習を通して覚える事は何か?をシンプルに説明します。

グーはチョキより強い
チョキはパーより強い
パーはグーより強い

と学習させ、では、ジャンケンしましょう。

ジャンケングー → パーを出す
ジャンケンパー → チョキを出す
ジャンケンチョキ → グーを出す

これはAIではありません。

入力に対して、後出しで適切な出力をしているだけのものです。人間が3行のプログラムを書けば良いだけです。

AIによる機械学習とは、この人間が次にグーチョキパーのうち、どれを出す傾向があるか?をあらかじめ予測する事です。相手の人間が考えるグーチョキパーに法則性を見つけ出し、次に出すのが何であるのかを、かなり高い確率で当てる事ができるようになれば、初めて実用レベルになります。

人間同士でジャンケンする時、「こいつ最初はいつも本能的にチョキ出すんだよな」と、相手の心を探り合うのと同じ仕組みです。

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

AIが機械学習するためには、人間が辛抱強く介入しなければなりません。何度もプログラムを組みなおして調整し、データをセットし直して、AIが間違えた方向を向こうとするのを訂正させます。これには気が遠くなるほど時間がかかります。

これでは埒が明かないので、AI自身に、大量の情報を無責任に押し付けて、そこから勝手に勉強してもらうようにしてもらうようにプログラムします。

AIは人間の神経と同じニューラルネットワークの仕組みを使って学習します。これをディープラーニングと言います。

AIはディープラーニングで世界中にあるデータから人間の吐き出した行動を解析し続けます。何年も何十年も何百年ものデータを何千億回も繰り返して確認しなおし、鉄板の方程式をチクチクと組み立てていきます。

AIはネットで集めた世界中に存在する写真動画を解析し続け、視覚的に見えるものについての認識ができるようになります。写真を見れば、そこに何が映っているのかがわかるようになったのです。

ディープラーニングの活用事例

2020年現在、人間の法則を解析し続けたAIは実用レベルにまで学習しました。具体的な成果を挙げてみます。

画像認識

画像や動画を見て、そこに映る人の名前がわかります。角度や表情が違っていても、この人の顔の方程式がわかっているので、正確に当てる事ができます。これは監視カメラの技術に活かす事ができます。

自動車の走行映像を見続けたら、道路の形や車線、景色、そこに映りこむ他車や、人間について覚えました。これは自動運転に活かす事ができます。人間よりもよっぽど安全運転してくれるに違いありません。

ジェスチャー認識

人間の行動パターンを覚えました。洋服や頭につけたセンサーで人間の首の動きや手足の動きなどを認識して、この人物が何を求めているのかを考えます。

この学習によって、筋肉の動きや、動作へのストレスなどを理解できます。これは介護ロボットの回路に活かす事ができます。

音声認識

人間の音声を覚えました。その波形を分析し、実際の単語に書き起こす事ができます。もし、その単語が意味のある命令であるならば、それを実行します。

更に学習を進める事で、声を聞いて、それが何語で誰が話しているものかを認識する事もできるようになりました。これは自動文字起こしや、同時通訳に活かす事ができます。

AIとの付き合い方

以上のようなAI技術は、僕らの生活からかけ離れた世界にあるわけではなく、なんとポケットの中のスマートフォンに入っています。

我々が作ったWebサイトを見つけ出し、その内容を解析して、検索結果に出力するのはAIです。そしてAIはより検索結果が最適化されるようにアドバイスしてきます。機械学習にも劣るようなSEO対策では通用しない時代になりました。

最近のWebサイトは、PCよりもスマートフォンによる閲覧を優先したコンテンツ作りをするようになりましたが、最新のAI技術満載のスマートフォンは、Webサイト閲覧時に自動翻訳したり、そこで使われている画像を自動解析しようとします。

ARアプリは、カメラを通して空間認識するAIの技術を活かしています。こういったARのような素晴らしい技術は、APIや開発キットという形で、無料で提供されており、その技術を活かしたコンテンツを開発者達が表現する事を期待しています。

どこかの表現者がそれを活用して面白いコンテンツを作ると、それはすぐに爆発的に広がり、いつしか当たり前の事になって、Webサイトの常識として定着してしまうかもしれません。

時代の流れや、閲覧者の認識の変化、そういった情報に絶えず敏感でありたいものです。

お役立ちリンク集

筆者は半年くらいかけて、AIについて勉強しました。まずは機械学習から始めて、Pythonを習得し、ディープラーニングのサンプルソースコードを分析し、安いGPUで検証マシンを作ろうと考えましたが、実験環境を整えるには、機材もお金も、学習させるための情報量も全く足りません。

個人や、小規模な企業では、ディープラーニングの勉強に必要なものを揃えるのは難しいです。これではとても実用レベルの事を学ぶ事はでません。

しかし、素晴らしい事に、超高速なCPUや性能の高いGPU、基本的なプログラムや必要ライブラリなど全てを用意したサービスが用意されていました。使用時間や、組み合わせられるプログラム数などに制限はありますが、無料で使う事もできます。

SONY Neural Network Console

マウス操作によるドラッグ&ドロップでかなり高度なニューラルネットワークの設計ができます。コーディングする必要もありません。自らの手でプログラミングしなくても、マウスを使ってプロセスを動かして組み合わせて、ディープラーニングさせる。といった実験ができる環境が提供されています。
https://dl.sony.com/ja/

Microsoft Azure

様々な開発ツールのフレームワークが構築できるサービスです。その中に機械学習やディープラーニングなどのAIの環境構築ができるものが用意されています。
https://azure.microsoft.com/ja-jp/

AWSでの無料の機械学習

AWSでもディープラーニングや機械学習の環境を構築する事ができる無料利用枠が用意されています。
https://aws.amazon.com/jp/free/machine-learning/