機械学習・統計学・最適化の違いについてまとめてみた

システム開発と機械学習、およびその周辺領域のこと

長く忘れられていた「機械学習」という分野が再び脚光を浴び、システム開発の現場でもソリューションとして用いられるようになって暫く経ちます。CPUの性能向上からニューラルネットワークのモデルを複雑化しても訓練が出来るようになり、性能の良いモデルの開発が出来るようになったのがその端緒だと言われています。

機械学習が援用されている分野の一例として、マーケティングの分野では「データドリブン・マーケティング」という言葉が数年前からHOTになっています。マンパワーではなく、データを駆動力として(data driven)、マーケティングを遂行することを指します。 弊社でも同分野には実績がありますので、本記事の最後で簡単に紹介させていただきます。

データドリブン・マーケティングを実践するには

データが自ら、人間に何かを教えてくれるということはありません。そこから何らかの「含意」を抽出するための仕組み(プラットフォーム)を構築することが不可欠です。 機械学習などの問題解決手法よりポピュラーな手法になった時、その構築にあたって実際に手を動かすのは、システム開発を担うエンジニアです。機械学習に実績のあるエンジニアは、様々な手法や周辺分野について理解を深めることを怠らず、来る時代に活かせる知識を日々拡充しています。

ところで、機械学習と近しい分野として「統計学」というものもあります。いずれもデータを扱う分野だということもあり、両者の違いがよく分からない、という声も業界の内外から上がっており、様々なところで「どう説明すれば初学者にわかりやすいか」議論されているようです。 少し勇気の要る試みですが、「機械学習と統計学の違い」について、本記事で整理してみたいと思います。

機械学習と統計学の違い

「統計学は既存のデータを説明し、機械学習は未知のデータを説明する」といった説明の仕方もあるようですが、本記事ではユースケースによる切り分けではない、別の方法で説明を試みます(反例も多いように思うため…)。 実のところ「両者は根本的に違う」というのが正解であるようにも思えますが、「データを説明する」という点では似ている部分もありますので、対比してコンパクトに理解したいというニーズはもっともでしょう。 本記事では機械学習と統計学をうまく対比させるため、「データの取り扱い」という観点から両者の「違い」を解説してみようと思います。

機械学習におけるデータの取り扱い(データによる訓練)

機械学習では、「データを用いてモデルを訓練する」という発想でデータを用います。 例えば、自動運転車を制御する機構の中で機械学習手法が使われているとしましょう。初めは、実用上想定される様々な運転上の課題に遭遇出来る「教習所」のような環境で運転させて、データを取ります(その『データ』がどんなものかは、あまり想像がつきませんが…)。 訓練環境下で十分に運転制御の品質を高めたら、路上に出て実際の運転を行い、やはり運転について十分な品質があると認められれば実用レベル、ということになります。

ここで重要なことは、「データに基づいてモデルを構築する」という発想が念頭にあることです。機械学習の分野では、モデルを改良し、意思決定(ここでは運転制御)を改善するために用いるデータを「訓練データ」と呼びます。 機械学習モデルは、最初から十分な性能を持つということはほとんどありません。実装者が試行錯誤しながらモデルを少しずつ改変し、訓練し、その性能を確かめる、ということの繰り返しでやっと十分な性能が得られます。 ここで機械学習モデルの性能とは、訓練データに対してではなく、未知の入力(テストデータ)に対して望ましい結果を返すことです。このような性能を、機械学習の分野では 汎化性能と呼びます。 汎化性能については下記の記事でも解説していますので、ご参考までにご覧ください。

参考記事

まとめると、機械学習では一般的なデータに対する汎化性能を高めるため、訓練データを用いてモデルを改善していきます。どのように改善していくかはモデルの設計(及び、用いる訓練データ)によるので、この点が実装者の腕の見せ所となります。 また、「データの扱い」という観点からは、「データがモデルを磨き上げるための訓練の素材になる」という点が機械学習の特徴です。

統計学におけるデータの取り扱い

一方で統計学では、「データが生まれる背景」に真っ先に着目します。例えば、ある工場で製造されている製品の重量が、平均で100gになるよう製造されているとしましょう。この時、ちょうど100gになるよう製品を作ろうと思っても、必ずミリグラム単位の誤差は出てしまうことに注意が必要です。 工場内の品質管理のため、重量に基づいて異常値検出をしたいというニーズがあるとしましょう。 この場合、「重量がきっかり100gでない製品は全て異常である」という設定にしたとすると、「ミリグラム単位で製品重量を計測出来る重量計を導入したら、頻繁に異常検出されてしまって困る」ということになりかねませんので、別の基準を設定する方法があります。機械学習の分野で言えば 二値分類を行うということになりますが、ここでは統計学の手法でこの問題を解決することにしてみます。 ここでは取り扱うデータを、製造された製品の「重量」のデータとします。たとえば、下記のようなものを想定してみましょう。

出荷No.製品重量
615100.013g
61699.998g
617100.021
61899.985g

(先ほどの自動運転の例と比べると、一次元のあまりに単純なデータになってしまいましたが、ご容赦ください。)

さて、工場から1万個の製品(データ)を取り、そのヒストグラムを描くと下記のようになったとします。

(横軸:製品重量(g)、縦軸:その重量をもつ製品数)

一般に、「ある基準となる重量があり、その重量をめざして製品を作る」際には、多くの場合、重量の分布は正規分布と呼ばれる分布に従うことが知られています。正規分布に従う事物について十分数のサンプルを取り、ヒストグラムを描くと、上記のようなベルのような形(bell-shape)が描かれることがわかっています。このような、「十分数のデータが従う傾向」のことを「母集団分布」と呼びます。統計学手法の特徴は、データについて何かを説明する前に、母集団分布に関する仮定をまず置く、という点にあります。 (もちろん、仮定を置く際にはデータを図示して目視したり、何らかの事前分析にかけることになりますので、データは手元に必要です。)

正規分布については、その性質が非常によく知られており、ほとんどの統計学の本で解説されていますので、ここでは詳細の説明は省くことにします。重要なことは、「データが生じる背景(i.e. 母集団分布)」を特定化してから分析を進めているということです。 今回の場合、統計学に基づく異常値検出のシステムは、下記のような流れで設計・実装が出来るでしょう。

  1. 製品重量の分布は正規分布に従うと仮定する
  2. データからその平均値と、データのばらつきを表す値(分散)を推定
  3. 推定された平均値と分散を基に、重量に基づく異常値検出のシステムを実装

2.で推定される「平均」と「分散」という2つの数値は「パラメータ」と呼ばれます。機械学習においてモデルのパラメータは数多あり、それらの含意は読み取ることが難しい場合が多いのですが、統計学のモデルにおいてはパラメータが比較的少数であり、含意も明確であることが多いと言えます。

3.について具体的に述べると、「推定されたパラメータの値において、ごく稀にしか生じないであろう重量」が検出された場合に異常値とみなしアラートを出す、という実装が可能となります。

統計学に基づいた実装の良いところは、「判断ミスの確率」を一定以下に抑えることが出来ることです。 ここで判断ミスとは、「通常の『バラつき』の範疇なのに、異常値と判定してしまう」という間違い(統計学の用語で『第一種の過誤』と呼ばれるもの)を指します。

上記のように、統計学を援用して設計・実装されたシステムならば、「通常の『バラつき』の範疇なのに異常値判定されてラインが止まってしまう」望ましくない挙動の頻度を、確率 という観点から抑えることができます。 例えば工場で製造される製品数が、1日あたり1,000個であるとしましょう。この時、「1日の稼働あたり異常値判定の誤作動が起きる確率を1%以下に抑えるような異常値検出の閾値」を、統計学における「信頼区間」という概念から求められることが知られています。 そのような「保証」の下で実装の信頼性を示せることも、統計学を援用したシステムの魅力といえるでしょう。

しかし、データがどのような母集団分布から生じるか仮定を置くことは、言うまでもなく「確率と統計」の知識を必要としますし、うまく仮定を満たすよう、データに対する加工が必要であることも多いことに注意が必要です。

機械学習と最適化の関わり合い

ここまで、機械学習と統計学の関係性について整理してきました。もう一つ、整理しておくと何かと便利な二つの言葉があります。 機械学習について書かれた記事や文献を読んでいると、「最適化」や「最適化アルゴリズム」といった単語が出てくることがあり、しばしば混乱を招きます。 「機械学習」と「最適化」、この二つの用語も混同されることが多いようですので、本記事で整理を試みてみます。

まず「最適化」とは、制約を満たす中で「目的」をもっともよく達成するような解を見つけることであり、下記のような具体例があります。

用途目的目的関数制約
乗換検索出発駅と到着駅が与えられたとき、もっとも所要時間の短い経路を見つける経路に応じて求まる所要移動時間を最小化経路が途中で途切れている、枝分かれしているような経路は認めない
スケジューリング従業員の負担が最も均等化するスケジュールを生成する「もっとも残業時間が長いスタッフ」の残業時間を最小化タスクが全て完了しないようなスケジュールは認めない
生産管理売上が最大化するような生産計画を立てる生産計画のアウトプットについて求まる売上の総和を最大化物的・人的な生産資源が不足してしまう生産計画は認めない

機械学習をはじめとする、数理的に問題解決する分野では、最適化といえば「目的関数」と「制約」が揃っており、この2つだけで説明がつくものを指します。

言い換えれば、「制約はこのようなもの、目的関数はこのようなもの」と説明できない場合は、それは「最適化ではない」か、「最適化を部品として用いる別の概念(ex. 機械学習)」である可能性が高いです。

機械学習アルゴリズムの中で、最適化は学習の手段として用いられれます。 その目的関数としては「誤差関数」「尤度関数」といったものが挙げられ、最適化を実際に行うアルゴリズムには問題に応じて多数挙げられますが、誤差関数の最小化アルゴリズムとしては「勾配法」(ex. 確率的勾配降下法)などはよく聞く手法でしょう。

まとめると、機械学習アルゴリズムは、その内部で、何らかの「最適化」のアルゴリズムを部品として用いていることが多い です。 そして、 最適化アルゴリズムとは、「目的関数」と「制約」によって定義された問題について、効率的に問題を解くためのアルゴリズム のことです。

「機械学習ではない最適化アプリケーション」について

単一の最適化アルゴリズムそのものにインタフェースを付加するだけで、立派なアプリケーションになることもあります。 その代表例として挙げられるのは、乗換検索のアプリでしょう。乗換検索は所要時間が最小になる経路や、所用運賃が最小になる経路を求めることがコアな機能のすべてであり、多くのアプリにおいてその機能は「最適化」によって実現されています。

  1. 出発地、目的地、出発時刻(etc.)を入力
  2. 所要時間、所用運賃などの目的関数をもとに、最適経路を求める(最適化)
  3. 求まった最適経路を適切なインタフェースで出力

2.で解く問題は最短経路問題として知られており、この問題を解くシンプルなアルゴリズムとして、ダイクストラ法などが知られています。上記のアプリケーションには「データに基づいてモデルを訓練する」といった発想はないので、機械学習ではありません。

機械学習のモデルの解釈について

機械学習は「モデルの解釈が難しい」とよく言われます。機械学習のモデルは、実用に堪えるものを作ると非常に複雑になるため、モデル全体として「結局、どうやって最適化しているか」は分からないことが多いのです。

なぜ、機械学習のアルゴリズムは、解釈が難しいほど複雑化してしまうのか、ニューラルネットワークを実例として考えてみましょう。

ニューラルネットワークは、互いに結びつく人間の脳細胞(neuron)が、なんらかの意思決定をする際に送る電気信号の回路(neural network)をモデル化したものです。 ニューラルネットワークのモデルを、解きたい問題に応じて適切に構築すると、下記のような、様々な意思決定(i.e. 出力)を行うことができます。

  • 目の前の物体はリンゴとミカンのどちらであるか?(画像認識・二値分類)
  • このSNSユーザーは「嵐」の5人のメンバーのうち、どのメンバーのファンであるか?(自然言語処理・多値分類)

上述した通り、これらのアルゴリズムにおいては、何らかの「最適化アルゴリズム」が部品として用いられています。しかし、「モデル全体として、どうやって意思決定を最適化しているのか?」という問いには、モデルを作った(構築し、訓練した)本人すら、答えられないことが殆どなのです。

もちろん「損失関数値を最小化している」といった答え方は可能ですが、「なぜ訓練結果のパラメータが望ましいか?」といった質問に答えることは困難です。もしそれがシステム開発の成果物だったとすれば、「納品物が『いい感じ』に意思決定をしてくれることは確かだが、その理由は厳密にはわからない」という性質を持つのが、機械学習の納品物だということができます。

「なぜか?」と問われたならば、下記のような説明ができそうです。 ニューラルネットワークは人間の脳の仕組みを模倣したモデルですが、人間の脳も同様に「何を判断基準として、意思決定をしているか」分からないことが多いからです。

例えば、目の前にいる人が第一印象で「優しそう」か「怖そう」かを判定することは、人間には可能です。しかしその「判定基準」を言語化することは非常に難しいと言えます。このような、「どのように判断しているか、基準は明確化できないけれど、人間にはなぜか判断できる」といった意思決定を、機械学習は得意とする場合が多いのです。 もちろん、性能の高い機械学習モデルを構築する際には、「この問題を解く際の判断基準は何か?」という推理が構築の助けになります。「機械学習は統計学と違い、データについて仮定を置かず、訓練されたモデルの性能(汎化性能)で判断することが多い」というのは真かもしれません。しかし、モデル改善の過程ではデータの成り立ちや、問題を解く際のプロセスに関する分析力・洞察力が重要な役割を果たします。 重要なことは、システムで問題を解決する方法には複数の選択肢があり、それぞれ違った性質があることを知るということだと言えそうです。

人間のように判断し、問題を解決するシステムの開発をご所望なら

上述したように、「人間のように判断し、問題を解決する」ことの出来るシステムが、機械学習で実現されるケースが増えています。 「これは人間がやるしかない」と思われている問題について、機械学習に実績のあるシステム開発会社に相談すると、自動化の道筋が立つ可能性も十分にあります。

アルタスファイブは、機械学習を援用した開発案件を得意とするシステム開発会社です。SNSの投稿情報をクローリングして収集、投稿内容をお客様のニーズに合わせて分類する際に、機械学習手法を用いています。 お問い合わせ頂けば、機械学習プロジェクトにおいて多数実績のあるマスター開発者が、課題を直接ヒアリング致します。お客様のニーズをダイレクトに、機械学習の知見ある開発者にご相談頂けますので、「できない」と思われていたことが可能になる瞬間に、立ち会っていただけるかもしれません。

まずはお気軽にご相談くださいませ。

最近の記事タグ

関連記事

\(^▽^*) 私たちと一緒に働いてみませんか? (*^▽^)/

少しでも興味をお持ちいただけたら、お気軽に、お問い合わせください。

採用応募受付へ

(採用応募じゃなく、ただ、会ってみたいという方も、大歓迎です。)