誰でも機械学習を活用できるプラットフォーム

シバタアキラ氏(以下、シバタ):おはようございます。朝早くからどうもありがとうございます。

今日はDataRobotのお話をさせていただきます。DataRobotを聞いたことある方はどれくらいいらっしゃいますか? 

(会場挙手)

ちらほら。あまり手が高くない方はもしかしたら自信がないかもしれません。DataRobotは機械学習をやっていくためのプラットフォームです。今日はこれをどうやって製造業、とくにセミコンダクターの製造現場などで使っていけるのか、というお話を思います。

データの活用が我々のテーマです。もちろん今はいろいろなところでデータを活用したい方がいらっしゃいます。みなさんもそういったモチベーションで来ていると思います。

「データの活用」というと、今まではデータの収集や、IoTのようにセンサーをどうやって付けてデータを取るか、など。あとは、そういったデータをどこに入れるのか? ハードディスクに入れるのか、データベースに入れるのか? そういった収集の部分。

そして、分析ですね。分析と言ってもこれまでよくあるのは、統計解析をしてレポートを作ったり、BIツールで可視化してダッシュボードにしたり。そういった話が今までのデータ活用の主流であったと思っています。

当然、こういった活用は非常に価値があり、過去のことがデータをもとによくわかるようになりました。それをもとに未来になにが起こるのかを自分の頭で考えて想定して、それに基づいてアクションをしていく活用であると思います。

これを1つ進めて、今AIと言われる時代の中で、データ活用にAIを入れるとどうなるのかというお話です。

今まで通り、データの収集は非常に重要で、これからもやっていく必要があります。分析の過程でレポートやダッシュボードを作るのではなくて、今度はモデルと言われるものです。予測モデルとも言われますが、こういったものを作っていただいて、それが将来なにが起こるのかを予測してくれる。かつ、どうして起こるのかを説明してくれる。

いままでよりも1歩踏み込んだデータ活用が可能になることで、過去だけでなく未来を理解することでもデータを活用していただけるようになっていきます。

機械学習はそもそもは簡単に使える技術ではない

そのキーワードとなるのが、機械学習です。機械学習は過去のデータを使ってアルゴリズムが自動的に学習を行い、モデルを生成してくれます。そのモデルが未来の予測を作ってくれます。

実際には未来の予測だけではありません。未来の予測、例えば売上が将来どうなるのか? 未来に事故は発生するのか? ということもありますが、仮の未来というものもあります。「もしこういうことをやったらどうなるのか?」。例えばこの物質と物質をくっつけたらどんなものができるのか、など。

例えば全く違う分野の話ですが、「この応募者を採用したらこの人は会社で活躍するのか?」など。そういった仮の未来のこともあります。

より現在に近いこともあります。壊れているのかどうかを判断する故障検知や、この人が不正をしているのかどうがを見つける不正の検知。

それにちょっと似てはいますが、判別難という問題もあります。不良品なのか、スパムメールなのかの判別など、いろいろな種類の問題を解いてくれるということです。

問題点としては、この機械学習というアルゴリズムは非常に進んでいて、いろいろなところで使えるんですが、多種多様で非常に複雑なものが多いです。この中でいくつか、決定木や線形モデル、ランダムフォレストなどいろいろなものをあげました。

最近話題になっているニューラルネットワークはここには書きませんでしたが、それも機械学習アルゴリズムの一種ですね。

どれも非常に専門性が高く、理論がわかっても明日使えるかわからない。そもそも理論もものすごく難しいので、普通の人が簡単に明日使える技術にはまだなっていないのが現状だと思います。しかもこのアルゴリズムは全体のごく一部で、アルゴリズムにデータを入れる前に、もちろんデータの収集もあります。

収集したデータのクリーニング、欠損値があるかもしれない。値を変換して標準化しないといけない。そんなこともあります。一般的に前処理と言われています。

それをもとにデータをアルゴリズムに入れてできたモデルでも、すぐに使えるかというとそうではないので、その精度はどれくらいなのか、チューニングしてもっと良くしようとか、モデルの周りにはいろいろとやらなければいけないことがあります。それぞれに専門性が必要とされる分野になっています。

なぜ、データサイエンティストが不足しているのか?

こういうことができる人たちが「データサイエンティスト」と言われています。私もデータサイエンティストを名乗っていますが、非常に希少で需要に追いついていかないだろうと少し前から言われ始めています。みなさんもご存じだと思います。

なので今、データサイエンティストの方がいればもちろんそれに越したことはありませんが、いないのがほとんどです。

そうだった場合、データサイエンティストではないけれども自社のデータのことは知っているというエンジニアの方がいらっしゃったり、データの専門家ではないけれど、ビジネスのことはよくわかっていて、かつ地頭がすごくいいのでエクセルやアクセス、SQLなどを今も使ってるという、それくらいのレベルの人もたくさんいます。

こういった方々まで機械学習を使った予測モデルを使えるようにしたいと思ってらっしゃる方が、いろいろな会社さんとお話させていただく中で見えてきていることです。

データサイエンティストがなぜそんなにいないのかというと、ある専門的な知識、例えば先ほどもあったような数学的・統計的な理論的なことや、それを実際に実装していくためのプログラミングなどのITの知識が必要になるからです。かつ、問題を解くための専門知識が必要です。

先ほどもお話したように、ビジネスパーソンであれば自分の事業に関してはよくわかっていますし、エンジニアの方もそうだと思います。ですが、機械学習に必要な専門的な技術を持っていません。

そこでDataRobotをお使いいただくことによって、業務のことはちゃんとわかっていれば、複雑なアルゴリズムを使った課題解決を実現できます。

今日はみなさんに我々の製品を実際にご覧いただき、どのようなことができるのかを体感していただきたいと思います。

ブラックボックスではなく「グレーボックス」なモデルを提供

それでは、DataRobotという製品の話を始めたいと思います。DataRobotは、機械学習を行うためのソフトウェアのプラットフォームです。特徴的なのは、先ほどからお話させていただいたように、「じゃあ、やろう」と思ったときに、やれプログラミングだ、やれ統計だという課題が出てきます。

DataRobotでは、そういったものなしに簡単なUIを使っていただくことでモデルが作れるようになります。簡単だからと言ってもおもちゃみたいなものではなく、非常に精度の高い予測モデルを簡単に作ることができます。

なぜそんなことができるのかと言うと、裏側で作っているデータサイエンティストには、Kaggleという誰が1番精度の高いモデルが作れるかを競う場がありまして、そういったところで活躍してきた人材が集まってできたスタートアップだからです。彼らのベストプラクティスのノウハウを製品の中に存分に入れました。

モデルを作る製品はほかにもありますが、実際にモデルを作るだけではダメです。ちゃんと工場の機械の中にそのモデルを入れて、予測値は人が見ているのか? そころまでいかないといけません。

そういった事業への導入の部分まで自動化するところを、我々は最も重要視していて、かつ差別化ポイントとして考えています。

導入する上でよく問題になるのは、なにが起こっているかわからないことです。複雑なアルゴリズムから出たモデルがなぜこういう予測を出しているのか、どんなときにはその予測が良くて、どんなときは良くないのかがわからないと「ブラックボックスだ」と言われてしまいます。

ブラックボックスという言葉は弊社では使っていません。ブラックボックスではなくグレーボックスをご提供しようということで、できるだけ中が見えるインサイトを手にしていただけるようなかたちで、モデルをご提供することに努めております。

計画の予測からR&Dまで

会社はボストンに本社があります。2012年に創設して、まだ5年くらいの会社です。非常に成長が激しくて、シリーズCまでに百数十億円の調達をしております。日本では2015年、ちょうど2年前から展開を開始しています。お客様の数は共有できませんが、日本では製造業のお客様が多い印象です。

実際になにをするのかというと、非常に適応範囲が広いです。製造業のパイプラインを見たときに、計画の段階での売上や需要を予測みたいな話もあれば、R&Dで物を作っているタイミングで、どれを組み合わせればいいのか? 性能や特性の予測ができます。

実際に作っていく段階では、製造技術においては非常に適応範囲が広く、「不良品を減らしたい」や「品質を良くしたい」ということが日本のお客様からは多い事例です。

その中でとくにR&D、品質管理のところは、実際に私もいろいろな会社さんとやらせていただいている中で対象テーマが多い印象がありますし、実際にやったときに非常に大きいインパクトが出るケースが多いので、少しここを見ていきたいと思います。

例えば材料の配合ですね。セメントでもいいです。「セメントと水といろんなものを組み合わせたときにどれくらいの固さになるのか?」ということを、より正確にシミュレーションをしながら予測ができるようになります。

シミュレーションができるので、「こういう配合にしたらどうだろう?」というのを実際に作らなくても予測をしてくれるので、R&Dの効率が飛躍的に伸びました。もちろんセメントでなくてもかまいません。インクを作っている会社さんでもいいですし、なんでも大丈夫です。

過去のデータから不良品を予測する

テストもそうですね。実際に作ったものがどんなパフォーマンスを出すか、今までは非常に長い時間をかけてテストをしていましたが、DataRobotを入れるとそれが非常に短い時間で可能になります。

品質管理も関連しています。不良品を検知したい場合ですね。できたものが不良品なのかどうか。とくに製造工程の中に物理モデルが難しい過程がある場合、削ったり叩いたりなど、そういった場合は統計モデル、つまり機械学習を使うとよい精度が出ています。

ですが、多くのお客様ははじめに予測をしません。まずはどこが悪いのか要因分析をされるのがスタートになると思います。いろいろなプロセスやデザインがあります。その中のなにがよくないかを、まずは見ていく。これもモデルを作ることによって提供される洞察、インサイトの一種ですね。

これをもとにモデルを実際にデプロイします。過去の製造のデータ、「どういう製造条件で作ったのか」や「なにを作ろうとしているのか」というスペックを混ぜてあげて、それをもとにモデルを作ります。

その結果として「不良品の可能性があるのか?」を当ててくれるモデルができますので、そこに今作っている製品の情報を入れていくとスコアが出てくる。高いスコアのものは不良品の可能性が高いということで、そういったものだけ人間で確認するオペレーションに変えることで人間の数を減らしつつ検査の精度を上げられ、より早くできます。

こういったものを応用することによってより早期に、まだ不良品になる前に当てていただくことで、それを作ってもどうせ故障してしまうことを事前に把握して、歩止まりをどんどん上げていく。そうすることでコストを減らしていくことが可能になっていきます。

モデル作成を実演

今日は、先ほどもお話したようにデモをさせていただきます。ご自分で予測モデルを作ったことがある方はあまりいらっしゃらないと思いますので、これからどのようなステップでモデルを作っていくのかをお話しします。

先ほどもお話ししましたが、データの収集は非常に重要ですし、それ以前に「どういう課題を解くのか?」を人間が課題設定をしてあげること。こういったところは自動化できないので、人間にやっていただきます。我々の自動化が始まるのは、データがあって、1つの表になっているところからですね

そうしたデータがあったとき、それでもまだデータが汚かったり、もしくはこのデータをうまく組み合わせることによって、もっといい精度のモデルを作れたり、合成変数を使うことで精度を上げられるなど。そうしたことを自動的にやってくれるようになっています。

学習モデルというのは、データが100あったらその一部を使って学習して、残ったデータ、まだ見たことがないデータでテストをします。そういったデータの分割も自動的にやってくれるようになっています。

2つ目のステップは技術力が必要になってくるところです。いろいろな機械学習のアルゴリズムをいくつか走らせてみて、それぞれのアルゴリズムに「ハイパーパラメーター」と言われるチューニングがありますので、それを変えることによってどのように精度が変わるのか。そして、できたモデルを選ぶステップですが、ここもDataRobotでは完全に自動化をしています。

3つ目のプロセスです。モデルができたらすぐに使えるかと言うと、そうではありません。モデルの特徴を解釈しなければいけないです。どういう精度なのか、どういうときが精度がいいのか、どういうときがそうではないのか。また、実際に使ったときにどういう効果があるのかを考えていくには、やはり人間でなければといけません。

人に解釈してもらっても解釈したことにならないので、それは自分でやらないといけません。それを助けるための非常にイノベーティブな機能も多数ご用意しております。

最終的にこれを使う段では、ここからすぐにできるかと言うとそうではありません。サーバーに載せる、小さいエッジデバイスに載せる、センサーの上に載せるなど、開発が必要になります。

かつ、この予測値で「壊れている」という結果が出た時、機械はそう言ってるけど信じられるのか。現場の方に対しての説明も必要です。こういったところまでDataRobotは自動的にやってくれます。

既存のデータをもとに不良品率を検証する

今日は実際に、半導体の現場で取られた製造データを使ってモデルを作ってみたいと思います。そこに対して新しいロットの製造データを入れたとき「このロットはどれくらいの確率で壊れるのか? 不良品になるのか?」を当てる、ということをDataRobotはどのように行っているのかを示させていただきたいと思います。

これがDataRobotの画面です。ここに「データをドラッグ&ドロップしてください」とありますので、さっそく今日使うデータを見てみたいと思います。

たくさんセンサーがあり、各製造プロセスからさまざまなデータが取られています。震動なのかもしれないし、入った材料をどういう条件で付けたのかなど、そういったこともあるかもしれません。

リアルなデータではまずいので各特徴量の名前はマスキングしていますが、たくさんの数値データですね。

その中にはデザインの情報もあるかもしれないですし、製造過程の情報もあるかもしれません。その後のテストの情報もあると思います。こういったものを、ロットごとに情報を横に並べているデータになっています。

これをつなぎ合わせた上で、最終的に出ているのが、製造した最後のテストでテストを通過したのかどうかというところ。通過しなければ1、要するに不良品になったということですね。通過したのであれば0、問題なかったと。

つまり、1を減らしたいということです。逆に1を当てられることによって1になるようなものをできるだけ早く製造プロセスから外したい、というモチベーションのデータになっています。

数値の重要度を自動で判別

簡単にドラッグ&ドロップで始めていただけます。もちろんデータベースに入っていればそこからつないで入れていただくこともできます。

こちらはSaaS版なのでAWSの上で動いているバージョンですが、もちろん工場の中で使いたい、会社の中で使いたいということであれば、オンプレ環境ないし御社の独自のプライベートな環境の中にインストールしていただけるソフトウェアとしても提供させていただいています。

実際に製造業の現場で使われているときには、そういった使い方がほとんどだと思います。やはり会社の外にデータを出せない、ということはよく言われています。

すると最初に走るのは、探索的データ解析です。今入れたデータがどのように分布しているのか、どんな変数があって、とくにどれが重要そうなのかを簡単にざっくりと見せてくれます。

その中には、例えば「これは数値です」と自動的に判別してくれていて、「この変数の平均はこうです」「偏差はこうです」など、基礎的な統計情報をこの段階ですべて見てきてくれます。実際の分布においてもこの段階で中を見ることができますので、とくに変な外れ値がないかなどもここで判別できます。

これからモデルを作るんですが、例えば「製品のロットIDが何番だから壊れる」ということはないので、そういったIDは自動的に外してくれるようになっております。

ほかにもそういったタグの付いた変数があって「値が少ない」といったタグが入っています。全部に「70」という値が入っていますと、どの計測をしても70しかでないのであれば、その計測自体で不良品かどうかを判別することはできないので、こういったものも外していいということを自動的に見破ってくれます。

なぜこうしたことをするのかというと、今、データが596の特徴量を見ているので、これが多いと処理に時間がかかります。いらないデータはできるだけ早く捨てたいということです。

最終的に予測したいのが、failという特徴量ですね。今、全体で数千行のデータがあります。やはりそれくらいはあったほうがいいですね。数百からでもできます。数十だと少なすぎるのでもうすこし集めたほうがいいですね。

モデル作成は完全に自動化

今、数千くらいのロットのデータが入っている状態です。その中で10パーセント以下、わりと少ない不良品を当てるモデルを作りたいと思います。

そのためにやらなければいけないことはあまりなくて、ここにやたらでかい開始ボタンがあると思うんですけれども(笑)、あとはこれを押すだけです。これを押すだけでモデルを作るステップが完全に自動化されています。

本来であればここからパイソンのセットアップをして、ライブラリを持ってきて、コーディングして、などいろいろなプロセスが始まるわけですが、こういったものは全部自動的にやってくれますので、「みなさんここで休憩です」と言って戻ってきたら全部終わっているかたちです。

これからモデルをつくるので、先ほどお話していたような一部のデータを使って学習をして、残りのデータでテストをします。今、そのためのデータの分割など、準備をしている段階になります。

最適なアルゴリズムを自動で判別

今、このfailという変数が予測の対象になっていることを教えてあげたので、それに対してほかの変数がどのような関係値を持っているのか。とくに重要そうなのはどれなのか、という初期的な分析をしています。

ここからが1番おもしろくて、かつ重要なところです。機械学習はまだ走っていません。これが終わると、このデータに対して適応でき、かつ精度が高くなりそうなアルゴリズムをかなり網羅的に選んできてくれます。

その中には、最近話題のニューラルネットワークみたいなものもあります。それだけでなく、ナイーブベイズなどの昔からあるようなアルゴリズムもあります。

いろいろなところで使われているのは回帰モデルと言われるもので、ロジスティック回帰やElastic Netなど、いろいろな種類のものがあります。

ほかにも新しいアルゴリズムとして、決定木やディシジョンツリー、ランダムフォレスト、SVMやk近傍法もあります。

最初にもお話ししましたが、世の中にはいろいろなアルゴリズムがあり、ありとあらゆるものを網羅的に、片っ端からモデルを作って比較できるようになるというところがDataRobotの1番の価値ではないかと思います。

人間であればせいぜい1個か2個のモデルを1~2ヶ月かけて作って、それで「3つ目も作ったほうがいいんじゃないか」と言うと文句を言ったりするわけです。これは文句を言わないで30種類くらいのアルゴリズムをバンバン自動的に作ってくれます。

なぜかと言うと、データによってどのアルゴリズムがいいか毎回違いますし、最近コンペなどでもよく使われている手法として、複数のアルゴリズムを組み合わせるアンサンブルという手法によってさらに精度の高いモデルを作ることができます。そういったところまでDataRobotは自動的にやってくれます。

すこし時間がかかってしまうのが難点ですね。今キューというところに30個くらい並んでいますが、やはり1個ずつの計算は非常に複雑なので時間がかかります。

そのため、今並列処理をしていて、2個のサーバーで動かしています。

これは動的に増やすことができるようになっていて、私のアカウントはこれがいっぱい付いているので、20個のサーバーで一気に走らせることができます。すると、より短い時間ですべてのアルゴリズムを走らせ、結果にたどり着けます。非常に効率的に、自動的にアルゴリズムを動かしてモデルを作れるようになっています。

変数ごとの重要性をランク付けして表示

今、モデルを作るプロセスを走らせていてまだ終わっていませんが、できたモデルから片っ端から見ていくことができます。これはモデルの順位表ですね。リーダーボートと言われていて、上にあるモデルは不良品を当てる精度が高いものです。

精度はAUCという指標で出していますが、1番高い精度は1、1番低いものは0.5となっています。今は0.7くらいなのでまあまあのモデルですが、これからもっといろいろなアルゴリズムが走っていくのでもっと精度の高いモデルもできていくと思います。

ただ、精度が0.5とか0.6と言われてもよくわかりません。だいたいみなさん気にされるのは、いろいろなデータを入れたなかで「とくにどのデータが重要だったのか?」ということだと思います。

かつ、それをより細かく見ていくことによって、どんな条件のときに不良品が発生しやすいのか、中を見ていただくことができる。これが先ほどお話したグレーボックスのところです。

これは、機械学習のアルゴリズムを使っていると一般的には非常に長い時間がかかりますし、ニューラルネットワークを使った場合にはぜんぜんできないということになりかねません。

ですが、DataRobotの場合はこういったいろいろなツールを組み合わせることによって特徴量のインパクトを計算できるので、どの変数がとくに重要でどの変数があまり重要ではないのかを順位付けして提示してくれます。

こういったものを見ると「あ、ここがとくに悪いのか」と、「ここの条件がうまくないと故障につながりやすいんだ」とか納得感のいくものがあったり。

「意外にこういうものが重要なんだ」という意外性のあるものが出てくることもあるので、ここを見ていただいて「もっとこんなデータを入れたほうがいいんじゃないのかな」とかいろいろなデータや問題に対して理解が深まっていくようになっています。

最も精度の高いモデルで予測値を計算

今、1番いい精度のモデルがあがりました。0.71のモデルができましたので、最後にこれを使って新しいデータに対する予測をお見せしたいと思います。

例えば10個の新しいロットを作った場合を予測します。形式は同じです。今回は「まだ作っている途中なので、これがfailしたどうかというのはわからないです」というデータがあったとします。

このデータを先ほどのモデルを使って予測をしてもらおうと思います。そのためにはデータをアップロードして、「予測を計算」というボタンを押していただければ、それぞれの10個に対して何パーセントの確率で不良品になるのかを簡単に計算してくれます。

時間が限られているので、最後まではできなさそうですね。ただ、あとはワンステップです。「予測を計算」ボタンを押していただいて、結果をダウンロードして予測値を見ることができるようになっています。

もっとご興味ある方はぜひあとでお話させていただければなと思います。このようなかたちで、一連のプロセスがすべて自動化されているのがDataRobotの特徴になっております。

日本では、代理店パートナーさんとやらせていただいています。こちらにあるような新日鉄住金ソリューションズさんやNTTデータさん、オージス総研さんなど。

製造業に強い代理店さんとも一緒にやらせていただいておりますので、もしお近くに代理店の方がいらっしゃればぜひお問い合わせいただければと思います。ということで、本日は以上とさせていただきます。どうもありがとうございました。

(会場拍手)