AI活用に初挑戦! へっぽこエンジニアに立ちはだかった3つの壁とその解決策

はじめまして、岡田です。私は普段、Webアプリケーションの開発エンジニアを担当しています。

ある時、「データサイエンティストってなんかカッコいい!」と突然思うようになり、そんな単純な動機から、今年の1月にAIの領域に足を踏み入れることになりました。

それまで、統計や分析、機械学習アルゴリズムなどの知識は全く無く、完全なるAI初心者でしたが、現在では自身が携わる製品にAIを活用した新機能を提案し、プロジェクト化を果たすことができています。

そんな“へっぽこエンジニア“が、AIに関するプロジェクトを立ち上げるまでに立ちはだかった3つの壁と、それを解決した方法/技術についてご紹介します。

 

第一の壁:何から手をつければいいかわからない!

何か新しいことにチャレンジする時、「何から手をつければいいかわからない」という壁が立ちはだかるかと思います。私もデータサイエンティストに憧れはしたものの、一体何をすればいいのかさっぱり分かりませんでした。

そんなある日、ひょんなことから「DataRobot Essentials」というトレーニングを受講することになりました。このトレーニングは、機械学習プラットフォーム「DataRobot」を提供しているDataRobot社が輩出した優秀なデータサイエンティストが講師となり、DataRobotの役割と使い方の理解をゴールとしたものです。
私はこのトレーニングで、データサイエンティストになるためにまず何をすればよいのか、明確にすることが出来ました。

そうです、第一の壁を乗り越える方法は「データサイエンティストに直接話を聴く」ということです。

しかし、AI活用に取り組もうとしている全ての方がトレーニングの機会に巡り合えるわけではありません。そのような方は、「IBM Watoson Summit」や「Developers Summt」「Interop Tokyo」のようなIT系セミナーに参加することをおすすめします。

近年のIT系セミナーでは、「AI」というワードを聞かない日はない、というほどAIはトレンドとなっているため、データサイエンティストの登壇が増えています。そのため、直接データサイエンティストに質問するチャンスが多くあります。経験上、優しく丁寧に答えてくれますよ!

ではここで、トレーニングで教わったことの一部をみなさんに共有します。

 

非常に強力なツール”DataRobot”!

まず、お伝えしたいことは「DataRobotは非常に強力なツール」であるということです。それを理解していただくために、データサイエンティストの役割とDataRobotの役割を説明します。

データサイエンティストはIT技術/数学と統計学/分野の“専門知識”が必要です。しかし、これら全ての専門知識を有している人はなかなかいませんそのため、データサイエンティストは、実在しない生物であるユニコーンに例えられます。

それでは、DataRobotの役割は何なのでしょうか?

役割① IT技術を全て担う!

DataRobotはデータを渡し、開始ボタンを押すだけで、様々な機械学習アルゴリズムを使用したモデルを瞬時に作成します。これは、機械学習アルゴリズムが分からないエンジニアの救世主です。

(出典:http://www.trans-cosmos.co.jp/company/news/170531_0002.html)

また、機械学習アルゴリズムを用いてプログラミングを行ったことがある方なら驚愕すると思います。なぜなら、予測精度を少しでも上げるために、DataRobotは機械学習アルゴリズムを選定し、それを勉強しながらプログラミングする、という時間の掛かる作業を肩代わりしてくれるからです。

 

役割② 数学と統計学でデータを「見える化」する!

なぜこの予測結果になったのか?という根拠を示すために数学と統計学の知識が必要になりますが、DataRobotにはこれをサポートする機能が豊富に実装されています。

DataRobotのポリシーの一つに「グレーボックス化」というものがあります。グレーボックス化とは、なぜその結論に至ったのか見える化するという考え方です。

どの項目に強い相関性を持っているのか、「この項目の値がこうだから、こういう予測結果を導いた」といった情報を表示してくれます。

 

役割③ 専門分野の知識に注力させてくれる!

DataRobotはIT技術や数学/統計学をカバーしてくれるため、その部分をDataRobotに任せてしまうことができます。つまり、データサイエンティストは専門分野の知識取得に注力することができます。

以上のことから、伝説の生き物“ユニコーン”とも表現されるデータサイエンティストの役割の一部をDataRobotが担ってくれるので、「DataRobotは非常に強力なツール」と言えるのではないでしょうか。

 

第二の壁:専門分野の知識不足!

私はDataRobotという、データサイエンティストになるための強力なツールを手に入れたので、試しに競馬予測にチャレンジしてみようと考えました。ちなみに私は競馬素人です。

「課題は決まったことだし、データの準備をしよう!」と息巻いて取り組みましたが、一体何のデータが必要なのかがさっぱりわかりません。
試行錯誤の末、3401行19列のデータ(227レース分)を集め、なんとかモデル作成を果たしました。
そして意気揚々と、12レースを対象に1着になる馬を予想してみたところ…

 

 

 

正解率8%(1/12)

 

 

 

 

え?

 

これが第二に立ちはだかる壁「専門分野の知識不足」でした。

競馬に詳しい方に後から聞いた話ですが、馬毎のデータ以外に、芝の状態や走る距離、天候、枠版なども着順に影響するらしいです。もしこれらの項目をデータに含んでおけばより精度の高いモデルが出来ていたと思います。

このような「専門分野の知識不足」という壁は、「課題領域の有識者を含めた体制を作る」ことで解決できます。今回の競馬の場合、はじめから競馬に詳しい方にどんなデータが必要か質問しておけばよかったのです。

専門分野の知識の習熟をスコープに含めても構いませんが、既に有識者がいる場合はアドバイザーとしてプロジェクトに加わってもらうのがスピーディーです。しかも、専門分野の知識を吸収する良い機会にもなります。

「DataRobotを利用するからAI担当のアサインは1人で十分」と思われるかもしれませんが、DataRobotを利用しても様々な作業が発生するため、担当領域を明確にして体制を作ることが必要だと感じました。

 

第三の壁:データの準備に膨大な時間が掛かる!

精度はともかく一連の流れを経験したため、どの作業にどの程度時間が掛かったのかを表にしてみたところ…

データの準備(作業欄の赤字部分)がなんと70%近くも占めていることが分かりました。
加えて、227レースの結果をExcelにコピー&ペーストを繰り返すという気が遠くなる作業があったので、作業者への負荷は非常に大きいものでした。

つまり、「データの準備に膨大な時間が掛かる」というのが第三の壁です。

これは競馬予測特有の壁なのでしょうか?

データを一元管理していない場合、所在の確認が発生します。
必要なデータが非構造データの場合、構造化データに変換するデータ加工が発生します。
つまり、競馬予測に関わらず、どのような課題でもデータの準備は発生するということです。

私が普段携わっている製品は、正にこれに当てはまっています。
システムログを構造化しやすい形に出力するようにプログラム側の修正も検討しましたが、なんと1年という見積もりでした。

この「データの準備に膨大な時間が掛かる」という壁を乗り越えるために「データ収集技術」があります。

web上のデータを取得する場合は「クローリング」「スクレイピング」、非構造データを構造化データに変換する技術は「fluentd」「Logstash」がデータ収集技術にあたります。これらの技術を活用することでデータの準備負荷を軽減することができます。

私が携わっている製品でも「Logstash」「Beats」「Elasticsearch」「Kibana」というOSSから構成される「Elastic Stack」を活用する予定です。

「Elastic Stack」は、

  • 非構造データを構造化データに変換し、一元管理できる
  • 高速な全文検索エンジンを有している
  • データを渡す前にデータの特徴を確認できる

という点で非常に重宝されるOSSと考えています。

 

しかし「データを格納する設備が必要なのでは?」という疑問を抱く方もいらっしゃるのではないでしょうか?

データ加工を行うプログラムを開発してDataRobotに直接渡す場合は特に必要ないのですが、その場合データを渡す前の加工結果の確認が難しくなります。
また、オリジナルデータの直接参照はデータ破損のリスクもあり、データアクセスに伴う既存システムの負荷にも繋がってしまいます。

データを安全に扱うためも、データ収集技術の活用とともに、データ格納を行うサーバの準備をおすすめします。

 

まずはチャレンジしてみることが重要

これまではAIに関して無縁だった私が、データサイエンティストを目指し始めて立ちはだかった3つの壁。その解決策を整理しますと、以下となります。

  • 第一の壁:何から手をつければいいかわからない!
    セミナーなどに参加してデータサイエンティストに直接質問してみましょう!
  • 第二の壁:専門分野の知識不足!
    その領域の有識者を含めたチームを作り、自分自身も専門知識を吸収しましょう!
  • 第三の壁:データの準備に膨大な時間が掛かる!
    データ収集技術を積極的に活用し、負荷を削減しましょう!

何事においても同じかと思いますが、AI初挑戦においてもやはり「行動に移す」という事が一番大切でした。行動しないと壁も見えないし越えることもできません。

突然データサイエンティストに憧れだしたAI・機械学習領域 未経験の“へっぽこエンジニア”の私ですが、地道に行動することで壁を見つけ、乗り越えることができました。

そして現在、私が携わっているWebアプリケーション開発へのAI活用提案が通り、計画段階にまで進みました。

私がデータサイエンティストになれるのはまだまだこれからですが、AIを活用してUXが向上するよう引き続き取り組んでいきたいと思っています。

近年、「DataRobot」「elastic stack」などの技術の登場で、AIにチャレンジする敷居は確実に下がっています。

皆さんもこの機会にチャレンジしてみてはいかがでしょうか!

Tagged

About 岡田 鷹治

この夏、念願のサーフィンデビュー。趣味はバイク、スノボー、お菓子作り。 2年継続している筋トレと日焼けで「エンジニアっぽくない」と言われるのが最近の悩み。

View all posts by 岡田 鷹治 →