データは21世紀の石油だ!!AIサービス開発の基礎【データの準備編】
- 小山内 美悠
- 記事制作日2021年3月24日
- 更新日2021年3月25日
- 5いいね!
はじめに
こんにちは!小山内(おさない)です。
AIを使ったシステム受託開発会社を経営しております!
(AIにシステムを開発させてるわけじゃなくて、サービスやシステムの中に機械学習をいう手法を組み込んでいる、
という意味です)
私は仕事でそれなりの数の機械学習/AI案件をこなしてきたので、
そちらで得た一般的な知見をブログに残しておきたいと思います。
結構あるあるなパターンが会社で偉い人から
『AIってものが流行ってるらしいからウチも取り入れるぞ!おい○○!お前が音頭とって進めろ!!!』
みたいな指令が来る卍なパターン。
このパターンだと担当者の方はマジのガチで機械学習やデータ分析素人であることがほとんどなので
プロジェクトの進め方はおろか、そもそも何ができるのかってところすらわからないってのが正直なところでしょう。
このパターンは2,3年前はホントによく見られました。
最近は少なくなったとはいえ、まだたまにご相談いただきますね。
というわけで機械学習とかAIのことは全然わからないよーう!
だけどなんかプロジェクト任されちゃったよーう!って人向けに情報を発信していこうと思います。
機械学習ってそもそも何ができるのよってところはまた別途記事書きますね。
データを準備しよう
AIや機械学習を用いたプロジェクトを始める前にまず確認すべきことがあります。
(PJTの目的・ゴールとか予算とか体制とかそういった一般のPJTにも当てはまることは除きます。)
データをどう準備するのか
データのどうするのかというのをまずハッキリさせておく必要があります。
Webサービス系の企業様であればそんなものはサービスのデータベースがありますから、
データベースのデータそのまま使えばいいじゃない。って思われるかもしれません。
いいですか。世の中はWebサービス以外でおまんま食うてる会社さんはたくさんいるのです。
そういった会社さんにとっては今すぐ使える状態のデータなんてありません。
ダンボールにとてつもない量の紙で保管されていたり、そもそもデータなんもねえよ!ってのも普通にあります。
いやー、『データは21世紀の石油』という言葉もあるくらいです。
データはとっても重要なものです。GAFAが揃いも揃ってデータ集めまくってるのは単純に儲かるからです。
あいつらもはやただの石油王。
データがない場合の対応策としてはいくつかあります。それを今回の記事で紹介しようと思います。
データの集め方
ネット上に公開されているデータを使う
実はインターネット上には自由に使えるデータがあります。
これらを利用することで目標とする機械学習プログラムを作ることが可能かもしれません。
代表的なものをいくつか紹介します。
日本政府が公開する、二次利用が可能な公共データの案内・横断的検索を目的としたオープンデータのデータカタログサイト。
国立情報学研究所(NII)のデータセット共同利用研究開発センター(DSC)が運営するデータセットの共同利用事業です。
民間企業や大学等研究者のデータを研究者のために提供しています。
ハーバード大学が公開してるデータセットです。機械学習などに利用可能な約500近くのデータセットを公開。
80万以上、50カテゴリからなるファッション画像データセットです。
101,000個の食品画像を101個のカテゴリでラベリングされているデータセットです。
こんなものまであるんですね〜。
上記以外の公的機関が公開しているデータもありますし、民間企業が公開しているデータもたくさんあります。
これらのデータはすべて無料で利用することができます。
これを使って実現可能そうなら、これを使ってしまいましょう!
ただし、こういった公開されているデータはあなたのやりたいことのために作ったデータではないので
これだけでやりたいことが叶う、ということはほとんどないのが実情です。
Webクローラーで集める
クローラーでWeb上のデータをスクレイピングして集める、という方法もあります。
クローラーとはWebサイトを自動で巡回するプログラムのことです。(例: Googlebot)
特に画像やテキストなどのデータはWeb上に大量に存在するのでクローラーで集めることでデータを準備することが可能です。
実際に私も案件でクローラーを開発し、そこから機械学習サービスを開発したことがあります。
やったぜ!じゃあ、クローラーを開発してデータ集めようぜ!!
いやいや、待ってまって!!その前に検討すべきことがいくつかあります。
- そもそもWeb上に存在するデータなのか?
- クローリングしたいサイトの利用規約でクローリングが禁じられていないか
1の例ですが、例えば自動医療診断システムを作ろうにも医療診断データなどはそもそもWeb上に存在しません。
2の代表例でいうと、インスタグラムやAmazonはプログラムでクローリングすることを利用規約で禁じています。
(禁じてるのをわかっててやってる人はたくさんいるみたいですが。。笑)
これらをクリアした上でクローラーを開発するわけですが、
ただ、クローラーに集めさせたらすぐに目的が達成できるか、というとNO!です。
- アノテーションが別途必要な場合がある
- Web上のデータは玉石混交なので仕分けが必要
アノテーションについて簡単に説明すると、データの対になるコンピュータに教える答えを人間が付与することです。
例えば不動産の市場価格を自動算定するシステムを作るとします。
不動産サイトにいくと、写真や築年数、住所などのデータと一緒に金額もサイトに載っています。
このような場合はアノテーションは不要です。
ではどういう場合にアノテーションが必要なのかというと、ユーザーが投稿した画像が公序良俗に反していないか自動チェックするプログラムを作るとすると、
画像そのものには公序良俗に反するかどうかの情報は含まれていません。
人間が別途OKな画像なのか、NGな画像なのかを何かしらの方法でコンピュータに伝えてあげる必要があります。
このような作業をアノテーションといいます。
ちなみにアノテーション作業を外注できる業者さんもいますので、実際にアノテーション作業する際は相談してみましょう。
我々にプロジェクトを依頼した場合はアノテーションの外注作業もまるごと請け負います!
あと、Web上のデータは整理されてなかったり、データに不備や欠けがあることが多いので人目でチェックを入れる作業も必要だったります。
データを売っている企業から買う
これは最初の方法に近いですが、無料公開されているデータではなくて、企業が販売しているデータを使うことです。
例えばユーザーには無料で使えるスマホアプリの裏で企業がそのアプリのユーザーのデータを販売している、ということはよくあることです。
このアプリ便利なのに無料なんてすごいなぁ!!なんて感心している間にあなたの情報は他の企業に筒抜けです!!
そんなうまい話なんてないんだよ!!ざまあみろ!!
あとユーザーの位置情報なんかは通信キャリアが販売してます。
え、そんなことしてるの?って思われるかもしれませんが、もちろんこれらのデータから個人情報が特定されることはないです。
それと、ちゃんとデータの利用方法は契約時に了承しているはずです。(多分みんな読んでないだけ)
こういったデータを購入して自社のサービスに役立てることも可能です。
GPSのデータなんて自分で集めるのは無謀ですから、こういったところは課金せざるを得ないですね。
自社でデータを集める
最終手段です。自分たちでがんばって集めましょう。
ですが、私はこれを1番オススメしています。
理由は、
- 自社の独自データを持つことが強みになる
- データを集める仕組みを作るということが問題自体を解決してくれる
1は言わずもがなですが、誰でも手に入るデータを使っても得られる結果は他者と差別化は難しいです。
GAFAの強さの秘密はデータを独占していることです。
Amazonが持つ小売のデータに勝てる企業なんて存在しないですし、
ユーザーが知りたいと考えている情報(検索ワード)のデータを最も持っているのはGoogleです。
今から参入してGoogleやAmazonに勝つのは難しいでしょう。
それくらいデータを独占していることは強いことなのです。
2.の方は多分意味がわからないと思うので具体例付きで説明します。
バイク修理屋の話
以前バイクの修理業を営んでいる会社さんから、
修理中にバイクに傷がついたから金よこせ!というクレームを解決したいという依頼を受けました。
その企業の中でAIに写真で傷がついているかどうかを判定させよう!という企画が浮かびました。
そのときに私の会社に相談が来たのです。
たしかにそれ自体AIではできそうではあります。ただし問題はデータがないことでした。
これをするには
- バイクの画像
- 画像のどの位置に傷がついてるかを示す情報
このセットが大量に必要です。
もちろんネット上に公開なんてされてないですし、どこかの企業が販売しているわけでもありません。
したがってデータは自分たちで作るしかありません。
データの作り方は2種類あります。
- 一時的に人手を使って人海戦術でデータを作る方法
- 業務フローの中にデータを集める仕組みを入れる方法
1.は想像に難くないと思いますが、バイトを大量に雇って、バイクの写真を撮らせて、
ツールを使って傷の場所をマーキングさせる作業を大量にやらせます。
まあ、一ヶ月もあればまあまあのデータが得られそうです。
ただしこの方法には問題点があって、
- 実運用時と一時的にデータを集めたときのデータの差が問題となる
- 継続してデータが溜まっていかない
1つ目はバイトに撮らせた写真と、実際にAIに判定させるときの写真の撮り方が違うとうまくいかないのです。
例えるなら過去問でテスト対策バッチリしたつもりだったけど、受験本番でテストの傾向が大きく変わった、みたいな感じでしょうか。
2つ目はドンドンデータを溜めて継続的に精度を改善する、というのが難しいということです。
ので、オススメとしては業務フローの中にデータを集める仕組みを入れることです。
例えばバイク修理の例でいうと、私がこんな質問をしました。
私『ちなみに現在はクレーム対策はどうしてるんですか?』
顧客『何もしていない』
私『え、修理受付時に写真を撮るとかもしてないんですか?』
顧客『してないです。。。』
私『なるほど、では全店舗にタブレット端末を配備して、修理受付時の証跡としてバイクを4方向から写真を撮っておくというのはいかがでしょうか。データも集められますし、そもそもAI使わなくても写真を撮っておけばクレーム対策になりますね。』
顧客『たしかに』
とまあ、こんな感じで結局AIを使うことはなくなりました。
実は顧客に必要なのはAIではなくて、ちゃんとデータで記録を残しておくことだったのです。
そう、これがDX(デジタルトランスフォーメーション)だ!!!!!
これは実話です。
AIを使わなくても出来ることから始めることで問題を解決することができます。
もちろん集めたデータを活用して別の目的に活かすことも可能です。
とにかく今の時代はオフラインビジネスでもデータを集めて活用することが肝要ですね。
おわりに
というわけで今回はAIサービス開発の基礎として、データの準備についてブログ書かせていただきました。
AIを使うには色々な壁がありますが、1番問題になるのがこのデータ準備の部分です。
IT技術が現場に浸透していない企業様の場合はまずDXから行っていく必要があります。
その場合でも我々が御力になれますので、まずは相談からでも結構ですのでご連絡いただければと思います。
- この記事にいいね!する
この記事を書いた人
- 11いいね!
稼働ステータス
◎現在対応可能
- 小山内 美悠
職種
エンジニア
プロジェクトマネージャー(PM)
希望時給単価
10,000円~30,000円
プロフィールご覧いただきありがとうございます。 東京でAIを使ったシステム開発受託事業を営んでおります小山内です。 2008年に東京大学理科一類に現役合格、大学院には進学せずITベンチャーに就職。 JavaやPHPを使ったシステム開発を行いながら、2016年頃からDeepLearningを使った機械学習に取り組み始める。 現在は機械学習(AI)を使ったシステム開発PJのPM/システムアーキテクトを務めております。 代表的な案件をいくつか記載します。 ・某携帯キャリアのポータルサイトのニュースレコメンド機能開発(ユーザー数数千万人規模) ・某大手アパレル企業の需要予測システム開発 ・街頭広告用デジタルサイネージへのAIカメラ導入プロジェクト ・MAU100万規模の子供向けサービスのデータ分析基盤開発 これらのプロジェクトではいずれも技術側のトップとしてプロジェクトを牽引しました。 私自らデータ分析をしたり、機械学習のアルゴリズムを実装することもしますし、私が経営する会社には私と同じく東大卒の優秀な機械学習エンジニアが多数おりますので、 チームを組んで対応させていただくことも可能です。 機械学習を導入する以前の、データレイクを中心としたデータ分析基盤システムを整える所からお手伝いさせていただけます。 データを経営の中心に据えようとお考えの企業様はぜひご相談ください。
スキル
AWS
GCP
Python
・・・(登録スキル数:10)
スキル
AWS
GCP
Python
・・・(登録スキル数:10)