機械学習とは、データからモデルを学習することである。これを取り扱う人工知能の技術分野は極めて広範にわたる。深い理解が求められる分野もある。従って、人工知能の全てを学ぶのは非常に難しい。機械学習にも多くの山がある(図1)。基本理論の分野だけでも「決定木」「ロジスティック回帰」「サポートベクトルマシン」などの用語が出現する。

図1 たくさんの山を登る
機械学習の理論は、山に例えることができる。人工知能の領域は非常に広く、山は険しい上にたくさんある。統計的機械学習と深層学習は、その山の1つである。(作成:筆者)

 機械学習を活用するためには、全ての山を登ろうとするのではなく、まずは1つの山を登り、基本を理解することが必要である。この際に、機械学習の手法を課題解決にどう適用するかについて考えながら学ぶことが重要だ。また、表現方法や最適化の解法についての用語や概念を学ぶことを薦めたい。

応用側の技術の理解が重要

 まず、機械学習の発展と現状について簡単に紹介する。

 学習の必要性は、1960年代から認識されていた。多様で膨大な知識を全て人間の手で記述することは不可能である。しかも、世界の急速な変化に適応するためには、学習が欠かせない。その後、機械学習の理論が発展した。モデルの不確実性を統計的に扱うことが本格的に実践できるようになり、近年のディープラーニング(深層学習)のブレークスルーにつながっている。

 機械学習は、教師あり学習(Supervised Learning)*1と教師なし学習(Unsupervised Learning)*2に大別できる。教師あり学習にも、識別(クラス分類)と、予測がある。機械学習の教科書は、“教師あり&識別タスク”の内容から始まり、クラスタリング、次元圧縮、密度推定などの内容に展開するものが多い。また、教師あり学習と教師なし学習の中間的な手法として、一部のデータに正解ラベルを付与する半教師あり学習や、ある領域での学習結果を他の領域に利用する転移学習、および強化学習*3がある。

 以前は、これらを詳細な実装のレベルまで、深く理解しなければ、機械学習を利用することが難しかった。しかし現在では、機械学習を利用するための計算機環境が進化し、ツールのオープン化が進んだ。実装の詳細は知らなくても、ライブラリーからプログラムを呼び出して、機械学習のツールや手法を手軽に利用できるようになった。

 従って、現在は、機械学習がおおよそどのようなものであるかという理解が重要である。また、どのような場合に、どのような手法を、どのように使えばよいかといった、応用のための手法の使い分けや利用技術の理解に重点を置くべきである。例えば、基本的な原理を知らなければ、手法の使い分けはできない。

 機械学習のツールを、クラウドサービスで提供するIT企業も増えた。無料または低価格で高性能なツールを活用できるようになり、ツールのコモディティー化が進んでいる。しかも、これらオープンなツールの技術レベルは非常に高い。並列分散処理などの高度で先進的なIT技術が提供されるようになっている。問題は、これらを使いこなせるエンジニアが不足していることである。

 また、ツールだけではなくデータのオープン化も急速に進んでいる。使いやすく整備されて、正解ラベルを付与された大規模なデータが公開されている。ただし、実際の製品やサービスの開発、あるいは工程や設備の管理などに、これらの公開されたデータをそのまま利用できるかというと、必ずしも期待できない。

機械学習の活用は3段階で

 このような環境の変化により、機械学習にとっての価値基準の重心は大きく移動した。従来の価値重心であったツール技術に代わって重要視されているのが、「データ」と「(製品やサービスが利用される)現場の課題」である(図2)。

図2 価値の重心が移動している
かつてのトレンドだった機械学習の基本ツールが、オープン化しクラウドで提供されることによって、価値の重心はデータと現場の課題に移動した。これに、急速に進歩するIT技術への対応が加わっている。(作成:筆者)

 実際に現場にある課題は極めて多様である。これに対応するために不可欠なのがデータである。従って、データを持ち、課題を認識できている現場に、ツールを使いこなせる人材がいれば、極めて強大な戦力となる。ビッグデータの収集で米グーグル(Google)などの伸長が取りざたされるが、現場の課題を理解できているのは現場の人間であり、データを持っているのは現場のエンジニアである。これを軽視しては、機械学習の活用は難しい。

 なお、機械学習、特にディープラーニングに関わる技術は急速に発展している。通常の年次計画に基づく対応では、その変化に追いつけない。この速度感の差異をいかに乗り越えるかが、機械学習の活用には欠かせない。

 では、製品・サービスの開発技術者が機械学習の活用を学ぶために、具体的にどのようなステップで進めるべきか。筆者は、(1)体験→(2)基本の理解→(3)実践の3段階があると考えている。

 (1)体験は、実際にプログラムを動かして大枠を体感することである。現在は無料で利用できるフレームワークやデータが多数存在するので、比較的簡単に体験ができる。フレームワークの例としては、「Caffe」「Chainer」「TensorFlow」「Keras」などがよく知られており、文字認識、画像認識、言語モデルを使った単語予測などへの利用を体験できる。

 これらは“取りあえず”動かすことはできる。ただし、具体的な機械学習の活用を目指そうとすると、その先に障壁が存在する。そのステップが(2)基本の理解であり、いわば学び直しの過程である。エンジニアの立場であれば、課題を実感しておりデータの入手も容易であるから、(1)体験を通じて、(2)基本の理解の必要性を痛感できると思う。さらに現場で(3)実践をすることで、機械学習の活用に必要な技術の獲得につなげることが可能になる。

データマイニングの6プロセス

 現場の課題解決に対して機械学習の活用を進める際に、参考になる考え方が2つある。

 1つは、データマイニングのプロセスである(図3)。ビジネスの理解、データの理解、データの準備、モデリング、評価、適用という6つのプロセスがある。一般に、課題に対して何らかの方策を適用する際に、このプロセスが繰り返される。データの精度や信頼性、モデル化の効果などを検討しながら、プロセスを何回も回転させることで、課題を解決していく。これは一般論だが、機械学習の活用にも当てはまる。

図3 データマイニングの6プロセス
さまざまな分野のデータマイニングで、ビジネスの理解、データの理解、データの準備、モデリング、評価、適用という6つのプロセスがあるとされる。課題に対して何らかの方策を適用する際に、このプロセスが繰り返される。(出典:Colin Shearer, “The CRISP-DM Model: The New Blueprint for Data Mining,” Journal of Data Warehousing, 5 (4), pp.13─22, 2000.)

 もう1つは、デザイン思考である。実践的で創造的な課題解決のために、共感、問題定義、創造、プロトタイプづくり、テストという5ステップを掲げて実践する。機械学習を課題解決に使うときに参考になる。重要なのは、これらのステップを念頭に置いて迅速に実践することである。できるだけ早くにプロトタイプを作成し、試行を行って、次のステップに進む。ビジネスでよく言われる「PDCA*4を速く回す」という感覚とよく似ている。

*1 教師あり学習(Supervised Learning) 
機械学習の学習データとして、入力と出力のペアを示す方法。識別タスクでは、出力として正解となるクラス名をラベルとして与える。予測タスクでは、出力として望ましい値を教師信号として与える。
*2 教師なし学習(Unsupervised Learning) 
教師信号がなく、ラベルもないデータを使って、データ内容のみから学習を進める方法。
*3 強化学習(Reinforcement Learning) 
いわば間接的に正解を与える学習の方法。一部だけに正解があるようなデータ群を使って学習を進め、一連の行程が終了した段階で最後の結果を用いて、途中の過程で出てくるパラメーターを調整して学習する方法。
*4 PDCA 
PDCAサイクル(Plan-Do-Check-Act Cycle)のこと。さまざまなビジネス分野で、管理業務を円滑に進め継続的に改善する手法の1つとされている。Plan(計画)、Do(実行)、Check(評価)、 Act(改善)の4段階を繰り返す。
出典:日経エレクトロニクス、2017年9月号 pp.114-118
記事は執筆時の情報に基づいており、現在では異なる場合があります。