企業において人工知能(機械学習)サービス開発を始めるためのファーストステップ

第3次人工知能ブームとして盛り上がりを見せている日本の人工知能ですが、まだまだ人工知能に出来ることは少なく映画の中に登場する人工知能や人造人間には程遠いのが実情です。

とはいえ、Google社が開発したAlphaGoがトップ騎士に勝つことや、AI搭載スピーカーやAI搭載のWebサービスがどんどん登場するなど、わたしたちの生活に人工知能が少しずつ登場し始めるようになりました。

新しい技術の誕生と普及は、当然新しい新市場・新ビジネスの創出に繋がり
ベンチャー企業を始めとする様々な企業が人工知能のビジネス化のために研究開発を進めています。

イノベーター理論とキャズム理論通りに、大企業の研究機関、テックベンチャー、中小企業、大企業と人工知能サービス開発に着手を始めているのが分かります。
今参入している企業は、まだアーリーアダプターといったところでしょうか?

まだまだ乗り遅れていない人工知能サービス開発に今から参入する際、「一体なにから始めたらいいのか?」そんな疑問に対して、プログラムという観点ではなく、プロジェクトマネージャーの視点から、わたしが取り組んだファーストステップを紹介します。

人工知能が出来ること、まだ出来ないこと

人工知能サービス開発に着手し始める前に、人工知能について最低限は知っておく必要があります。

現代の人工知能は2種類に分類することが出来ます。(厳密にはこの2種類の中からさらに3種類に分類されます)

1つは、”強いAI”。もう1つは、”弱いAI”。
現代の人工知能は、後者の”弱いAI”に分類されます。

まず、強いAIは、わたしたちが映画などで見る人工知能や人造人間のことだと思ってもらって問題ありません。
ターミネーターなどは強いAIです。(物理的にも)しかし、強いAIは現代において今だ実現は出来ていません。

実現できていない要因は、テクノロジーが追いついていないことや素材がおいついていないとか色々あるのですが、一番大きな要因は人間の枠を超えた自由な思考に追いついていないことにあります。この話は後ほど簡単にまとめています。

続いて、弱いAIですが、わたしたちが映画の中で見る人工知能や人造人間のようなものではありません。
特定の分野や、特定の課題に対して答えを導き出すことができる人工知能のことを弱いAIと呼びます。
AlphaGoも性能としては凄いものですが、分類上では弱いAIに当たります。

特に人工知能という言葉に夢を抱く方が勘違いしがちなのですが、人工知能だからと言って人間と同じように思考したり行動したり・・・。というのはもう少しテクノロジーの進歩を待つ必要があります。

企業において人工知能(機械学習)サービス開発を始めるためのファーストステップ

人間によって定められた定義(領域)の中で思考するものが弱いAIにあたり、人工知能はまだ、自ら人間が定めた定義を超えて思考することは出来ていません。

人工知能サービス開発のファーストステップ 「数値化」

人工知能の特性を知れば知るほど、人工知能の正体が掴めてくると思います。
一言でまとめれば「プログラミングを用いて統計学に基づき解を導出する」という感じなのですが、こう書くと凄く分かりにくくなってしまいますよね。

この記事を読んでいる方が、プログラマの方であれば、ファーストステップがなぜ「数値化」なのかはピンとくると思いますが、プログラムや統計でデータを扱うためには項目全てが数値化されている必要があります。
逆を言えば、数値化の出来ていないデータは扱うことが出来ず何の役にもたちません。

まずサービス開発を始めるにあたり検討すべきは、扱うデータを全て数値化することができるか?という課題を解決することにあります。

例えば、インプットされた人物データからオススメの旅行先をレコメンドする人工知能サービスを開発するとします。
年齢や年収、配偶者の有無などの項目は元から定量的に数値化されていたり、数値化しやすいものですが、「職業」や「趣味」など定量的に表すことが出来ないものはどうすればいいでしょうか。
これらを扱うためには数値として”定義”する必要があります。例えば「職業」ですが、総務省が定める「日本標準職業分類」によると12種類の職業に分類することが可能です。(厳密にはもっと細かく分類する必要があります)

この12分類について、それぞれ数値化を行うために数字を割り振ります。

企業において人工知能(機械学習)サービス開発を始めるためのファーストステップ

数値で表すことの出来なかった職業を数値化することが出来ましたが、これでは不十分です。

「(例)ハワイ旅行は販売職に近しい仕事に就いている人にオススメすると良い」という業界常識があったとします。
先ほどの1~12の様に分類した場合、販売職に近い仕事とは何でしょうか?また、何をもって近いと判断したらいいのでしょうか?もちろん答えを知らない人工知能は答えを出すことが出来ません。
そこで、定義した12分類が”どれくらい近い”のかを定義することで初めて人工知能が扱うことが出来る数値化が出来たと言えます。

数値化を行う上では、定義・ルールを定めた後、項目の振り分けを行う人員は出来る限り少なくします。(1人が望ましい)
いくら厳密に定義やルールを定めたとしても、人それぞれの価値観や考え方に微妙な揺らぎは生じているため、この揺らぎ部分に複数人が介在すると誤差が大きくなり結果として良い定義になり得ません。
どれだけ多くても2人までを上限とした方がいいです。

今回の定義は、下記のルールに基づいて決定しました。

  • 最も仕事の内容が不明瞭な分類不能を正の最大値とする
  • 最も仕事の内容が類推しやすいものを負の最大値とする
  • 負の最大値から順に類推しづらい職種を定義していく

スコアの付け方ですが「農林漁業職」と「生産工程職」がどのくらい離れているのかを現時点で定義することは難しいため、最小値と最大値を定めた上で等差級数を使ってScoreを決定します。

分類不能と分類不能な職に最も近い(と定義した)管理職がその他の職業と同じだけ離れているとは考えにくいので、この距離感だけは広く数値化する。など人工知能に学習させるための工夫を行います。

企業において人工知能(機械学習)サービス開発を始めるためのファーストステップ
数値化のコツ

  • データの最小最大値の範囲を出来る限り小さくするため偏差1の間で定義する
  • -1~1の範囲内で表現する
  • 極値である-1と1は扱わないようにする。(これ以上の値を持つべき項目が発生したときに対応できなくなるため)
  • いわゆる外れ値(今回でいうところの 分類不能 は最大値として定義する)
文句おじさん
「いやいや、専門・技術職の方が分かりやすいって、販売職の方が分かりやすいじゃないか!」
と、この様に思う方も居ると思います。

まったくその通り、人によって考え方や感じ方が違うのは当然です。上記のような定義は”人間の人生経験による集積知”から行っています。
わたしとあなたは別の人生を歩んできました。当然、見たもの。感じたもの。知っているものが違います。

人工知能サービス開発の非常に面白い所はココだとわたしは思っていて、”誰が”、”何を”、学習させたかによって精度が大きく変わる。これは人生によって何を見てきたか?という人間の人生観と同じだと思いませんか?

学習させた結果、多くの人が期待する答えと違うのであれば、多くの人が期待する答えを導き出せるように再学習させればいいのです。
人工知能は人間の様にパラダイムに縛られる事はありません。学習させるデータに応じて学習の仕方や答えを変えて新しい結果を教えてくれるようになっていきます。

この学習させるデータが、「教師データ」と呼ばれるものに該当します。

少し話がそれましたが、人工知能サービス開発のファーストステップはインプットするデータの数値化から始めることです。

人工知能のアウトプットを実現するためのインプットデータを揃えることが出来るか?

人工知能サービス開発をする上で、重要かつ最も過酷なのが「データ集め」です。これは実際に開発を進めていく上で常に付き纏う課題です。

簡単に言う人
「自社のナレッジを活かして人工知能に業務を最適化させよう」
などと軽く言う人がいれば、その人にデータの定義と収集を担当して貰い猛省を促すレベルに大変です。
自社のナレッジで何ですか?定量的な数値で表すことが出来ますか?統一したフォーマットに保存していますか?

人工知能サービス開発に用いるデータ量は膨大です。
1,000や2,000のデータ量では、精度が上がる上がらない以前に「学習結果が荒すぎて良く分からない」なんていう事象が発生します。

では、10,000件集めればいいのか?それとも1,000,000件集めればいいのか?答えは「動かしてみないと分からない」です。人工知能サービス開発では大量のデータを利用する事は分かっていますが、何件集めれば良いか?という問いには明確な答えはありません。また、大体何件集めればいい。という問いについても全く同じようなレコメンドサービスを作るならまだしも、パラメータや重み・定義が異なるデータを扱っているため、大体の目安を定めることすら出来ません。

こんな目標値も定まらない状態でデータ集めをして、集めたデータを使って学習を行い精度向上のために更にデータを集める。これの繰り返し・・・。
データ収集を人の手によって行っているのでは、いつまで経ってもデータ集めに時間がかかるばかりで精度向上やチューニングに時間を使うことが出来ない状態が続き、その結果、プロジェクトが停滞します。

人工知能サービス開発を行う前に、いま一度確認してほしいのは「データを恒久的に集めることは出来ますか?」この1点に限ります。

  • 集めることが出来ないデータがある
  • 人の手を介在しなければならないものがある
  • そもそも母数が少ないもの

1つでも当てはまった時、開発を動かし始める前にデータ収集スキームを整える方に着手した方がいいかもしれません。

SNSへのシェアはこちらから!

ABOUTこの記事をかいた人

工業高等専門学校を卒業後、NTTグループのSI企業に就職。数々の炎上案件を鎮火するために日本各地を5年間転々とする。2015年に一般ユーザ向けのWebシステム開発案件のチームリーダとして業務に従事し、改めて”Webのものづくりの楽しさ”に気付きWeb制作会社に転職。Web制作やアクセス解析を使ったオウンドメディアの運用改善などを行っていく中で、もっとユーザー目線でWebをただ制作するだけではなく企画や運用まで幅広い領域で仕事がしたいと感じるようになり、Webディレクターのキャリアを目指す。日本中のビジネスホテルに詳しく、犬や猫よりも鳥派。