「人工知能が人間の知能レベルを大きく超えるシンギュラリティ時代がやって来るーー」
俄に「人工知能」が一世を風靡している。*1こうした人工知能実装のスタンダード言語はPythonだが、Pythonはプログラミング言語別の平均年収ランキングで堂々の1位となっている。
ここからも、「人工知能」に対する期待は高まっていると断言できるだろう。
もちろん、SF映画に出てくるような「人工知能が人間を支配する」世界への到達にはまだまだ時間がかかるだろうし、「人工知能」に対する期待は過大評価されているように感じる。
しかし、特定のサービスやアプリ内に人工知能のノウハウを入れるような活用事例は少なくなく、大きな成果を挙げやすい。(分かりやすい例は、facebook上の画像に自動でタグ付けられる機能やGmailの自動迷惑メール振り分け機能などであろうか。また、最近はチャットボットの活用による、カスタマーセンターの工数削減に取り組んでいる企業も多い。)このような市場の盛り上がりからも、データを解析してサービスの改善を行いたいと考えているエンジニアやマーケターは多いのではないだろうか。
人工知能を扱うとぶつかる「3つ」の大きな壁
しかし、人工知能エンジニアに必要とされるスキルと、WEB系エンジニアが学習してきたスキルは大きく異なる。実際、人工知能を扱えるまで、私は大きな壁が「3つ」立ちはだかっていると考えている。
まず1つ目の壁は「数学の壁」である。プログラミング学習では、足し算・引き算・掛け算・割り算が出来れば問題ない。しかし、人工知能ーー特に機械学習のアルゴリズムを理解しようと思うと、微分・積分・ベクトル計算・行列式が大量に顔を出す。
もちろん、アルゴリズムを深く理解し、より精度の高いモデル構築を行うためには、その背景となる数学的知識が必須であることに疑いはないだろう。しかし、「まずは試しに人工知能を触ろう」と思っているエンジニアやマーケターにとっては、ハードルが高い。
次に2つ目の壁は「手法選択の壁」である。プログラミングであれば、選択すべき言語は作りたいプロダクトによって大抵決まる。WEBアプリ制作であればRuby on Rails、iPhoneアプリを作りたげればSwiftで、Androidアプリの場合はJava。最近だと、React.jsでハイブリッドで作ってもいいし、ゲームを作るのであればUnityがベストだろう。
しかし、人工知能・データ分析分野に関しては、状況が異なる。プログラミング言語というレイヤーであればPython(R、C++でも良いかもしれない)一択だろう。ただ、その上で習得すべき解析手法がいくつもある。
大きく分けて、教師なし学習、教師あり学習、強化学習。教師なし学習であれば、階層型クラスタ分析、k-meansなどが挙げられる。教師あり学習であれば、回帰、SVM、決定木、ランダムフォレスト。深層学習(ディープラーニング)と呼ばれるCNN、RNNといった手法もこの一つである。どの手法を選択するかは、人工知能エンジニアの手によってかかっており、全ての手法を概観出来なければ、適切な分析・実装ができるとは言い難い。
最後の3つ目の壁は「データクレンジングの壁」である。自社のデータを活用しようと思った時に、手元にあるデータベースは一部欠損値にあるデータであることが多い。(もしくは紙ベースであることも多い!この場合は、データを電子化する手間が加わる。)こうしたフォーマットが整っていないデータを整理することを「データクレンジング」と呼ぶ。
とあるデータサイエンティストはデータ解析の実務に関して、下記のように言及していた。
僕なんぞヘッポコに限らず各社のものすごーーーく優秀なデータ分析者の皆さんも叫んでますが、「データサイエンティストの仕事の9割は前処理(フォーマッティングやデータクレンジングなど)」です。*3
こうした前処理は、プログラムを書く必要があり、Pythonにて処理されることが多い。
壁が少ない体系的な「人工知能」カリキュラムを作りたい!
「人工知能」を扱えるようにするには、以上のようにWEB制作とは違うスキルセットが必要となるのである。そのため、熟達したWEBエンジニアでも、「人工知能系はなんだか取っ付きにくいなあ…」と考える人が多いのではないだろうか。
そこで、それぞれの壁を克服する方向を紹介すべく、以下の3点を念頭に置いた教育コンテンツの制作を行いたいと考えている。
ポリシーは以下の3点。
1. どんなエンジニアでも理解できるように、数式を使わず直感的に分かりやすい記述を心がける
2. 様々なデータを「まず使ってみる」ことに重きをおき、様々な解析手法・学習手法を比較しながら、ビジネスでの「人工知能の応用」を伝える
3. 生データを扱う場合は、Pythonによるデータクレンジングの手法を省かずに紹介する
以上の3つを意識することで、今まで人工知能を直接触ったことの無い人でも「あ、自分でもできそう!」と思えるような、コンテンツを制作することを目的とする。*4
少しでも多くのマーケター・エンジニアが人工知能に触れられるように、人工知能を扱う日本一分かりやすい教育コンテンツの制作を目指し、まずは上記のポリシーに則って、会社メンバーでブログを執筆する。
*1:今回のブームは三回目と言われており、「深層学習(ディープラーニング)」の実用化がその契機とされている。
*2:【年収1位はPython】求人人気1位はあの言語!転職時に有利な言語ランキング – paiza開発日誌
*3:データサイエンティストはこうやってデータ分析の仕事をしている(自分の経験と見聞談をもとに) – 六本木で働くデータサイエンティストのブログ
*4:勿論、高精度・高速な解析を行うためには、数学や低レイヤーの知識は必須であろう。しかし、人工知能に触れていない方の「取っ掛かり」としては不要ではないだろうか。理論より先に実践を行うことで、理論的な学習を行うモチベーションが向上し、その理解も深まるためである。
それではまた次の記事でお会いしましょう。最後までご覧くださりありがとうございました。