【聞いたことあるけど分からない単語】 機械学習ってなんだろう?

はじめに

現在、空前の機械学習ブームだと言われています。
この記事を読んでいる方も「機械学習」や「強化学習」などという単語を聞いたことがあるかもしれません。

新しい技術を学びたい時に、どこから学べばよいのか?というのが心を悩まさせる大きなものだと思います。
そんな人のために、機械学習とはいったいどういったものなのかを解説していきたいと思います。

具体的には、

  • そもそも機械学習とは何なのか?
  • 機械学習で解決できる問題とは?
  • 機械学習の種類
  • どのように適用していくのか?

をこの記事では解説していきます。
なお今回で具体的な実装方法や理論には触れていません。
あくまで、どういったものなのか大まかに理解して頂きたいと思っています。

目次

機械学習とは何なのか?

機械学習(Machine Learning: ML)とは、簡単に言う特定のアルゴリズムを使ってデータから学習することです。
そしてデータを使って特定の問題を解くことを目的としています。

機械学習を適用する際に、複雑なコードを書く必要はありません。
その代わりにアルゴリズムにデータを与えて、そのデータに基づいたロジックを組み立てる必要があります。

例えば、写真をみて犬と猫を分類する問題があるとします。

あなたはこれらをどのように判断しますか。
以下に二枚の写真があります。
これらはどちらが犬で、どちらがネコか見分けがつくでしょうか。

サンプル画像1

サンプル画像2

恐らく簡単に見分けることができたと思います。
しかしこれをコンピューターにやらせようとすると難しい問題になります。
この2つの写真であれば、耳の形や目の色、毛並みなどで簡単に見極めることはできるかもしれません。

しかし、犬や猫には様々な種類が存在します。
そのために一元的にこれらの特徴を捉えることはできません。
もちろんある程度特徴はありますが、それぞれの特徴を全て押さえることは難しいです。

そんな時に使えるのがこの機械学習です。
機械学習はデータを学習モデルに基づいて自動で解析してくれるため、私たちが自分でデータの特徴を抑える必要がありません。

それにより、言語化や規則性を見つけるのが難しい問題に対して、よりスマートに解決できるようになりました。

なぜ機械学習が注目されているのか?

では、なぜ今この機械学習が注目を浴びているのでしょうか?
それには機械学習が発展するうえで必要な、3つの要因があると考えられています。

それは、「CPUの機能の向上」、「記憶媒体の価格下落」、「そして理論の整備」です。

CPUの機能の向上

ムーアの法則をご存知でしょうか。
これはインテルの創始者の1人であるゴードン・ムーアが述べた理論で、「半導体の集積率は18か月で2倍になる」という経験則です。

この法則にもあるようにプロセッサーの機能がここ数年で目まぐるしく向上しました。
そのおかげでより高度で大量の処理を行うことができるようになりました。

引用元: Wikipedia ムーアの法則

また、近年ではGPUやTPUと呼ばれる機械学習に最適化されたプロセッサーが開発されたことにより、処理速度が大幅に向上しました。

記憶媒体の価格下落

2つ目の理由は記録媒体の価格が大きく下落です。

今、16GBのUSBを買うといくらぐらいで買えるでしょうか?
恐らく1000円ぐらいで買えると思います。
しかし、10年前ではもっと高い値段でした。

技術が枯れてより安価で世の中に普及すること、また企業の努力によりこの分野が発展していきました。

引用元: Graph of Memory Prices Decreasing with Time

理論の整備

$$
uj(l) = ∑iwji(l)xi(l) + bj(l)
$$

3つ目の理由は理論が整備されたことです。

機械学習の学習モデルを構築するには、高度な数学的理論が必要です。
例えば、深層学習における人間の神経回路を模倣したニューラルネットワークなどの新しい理論が次々と構築されていきました。

この発展で以前まで解決できなかった画像認証や音声認識機能が実装できるようになりました。

機械学習の種類

次は機械学習の種類です。
機械学習と一括りに言っても、さまざまな種類があります。

その中でも今回は教師あり学習(Supervised Learing)、教師なし学習(Unsupervised Learning)、そして強化学習(Reinforsement Learning)の3つに関してそれぞれの特徴を解説していきます。
関係性は以下のようになっています。

引用元: UCL Course on RL Lecture 1: ntroduction to Reinforcement Learning

教師あり学習

教師あり学習(Supervised Learning)とは、教師データを読み込ませることで学習を進めていく学習モデルです。

この学習方法では、ラベル付きデータセットを使用します。
ラベル付きデータセットとは、1つのデータに対してそのデータの意味を付与してあるデータのことを指します。

先に説明した犬と猫の分類問題では、犬の写真には0、猫の写真には1というようにラベルを張ってアルゴリズムに読み込ませます。
そのようにすることで新しくデータが0と1のどちらなのかを分類することができます。
また、この学習モデルはこのラベル付けされたデータから学び、分類、予測などを手助けすることができます。

以下で詳しくみていきます。

クラス分類

クラス分類(classfication)とは既に説明したように、あらかじめ定められた選択肢の中からクラスラベルを予測することです。

上記の犬と猫の分類は、2種類に分類する特殊なケースで2クラス分類と言います。
また、他の3つ以上に分類することを多クラス分類と言います。

2クラス分類は2つのグループに分類すればよいので、例えばメールがスパムメールか否か等の問題も解決することができます。

回帰

回帰(regression)とは、データから数値を予測するものです。

クラス分類とは異なり、連続値の予測が目的です。
例えば身長から体重を予測したり、顧客データから売り上げを予測したりすることができます。

教師なし学習

教師なし学習(Unsupervised Learning)とは、ラベル付きデータセットを必要とせずに学習を進めていく学習モデルです。

教師あり学習とは違い、データを似ているグループに分類することを目的としています。
例えば、いぬと猫の問題であれば、どちらが犬か猫かを示したデータは必要ありません。

それぞれの特徴を読み取り、似ているものでグループを作ることができます。

強化学習

強化学習(Reinforcement Learning)とは、「価値を最大化するための行動」を探索することを目的に学習を進めていく方法です。

何となく、教師あり学習と似ていると思う方もいるかもしれません。
強化学習は教師あり学習よりも、もっとざっくりと価値を最大化するための行動を探索していきます。

少し分かりにくいと思いますので、具体的な例を示します。
分かりやすいのは将棋のAIです。

引用元: ITmedia NEWS
バンナム、日本最強の将棋AI「Ponanza」開発元と協業へ(https://www.itmedia.co.jp/news/articles/1612/26/news076.html)

強化学習では1手の価値を将棋の勝敗から評価して、より良い手は何かを模索することができます。

従来の将棋AIでは将棋の棋譜を読み込ませる教師あり学習を使っていました。
しかし強化学習を適用した方が未知の局面に対する対応力が高く、非常に相性の良い方法になりました。
現在では、将棋AIがプロを凌ぐ強さにまで発展したことはニュースなどでご存知の方も多いかもしれません。

機械学習における重要な要素

今まで機械学習とは何なのかについて説明してきました。

しかし、機械学習を実装するにあたって考えなければならない事があるため順を追って説明していきます。

データを分類する

データを拾ってきたときにそのデータを全て学習モデルに読み込ませてはいけません。

何故かというと自分たちが作った学習モデルが本当に正しいのかどうかを評価する必要があるからです。
もし、全てのデータを学習モデルの構築に使用してしまうと、学習モデルの評価に使用するサンプルのデータがなくなってしまいます。

正確には、学習モデルの構築に使ったデータを学習モデルの評価に再度使うこともできますが、既に使っているデータは一致度が100%のため過度に高く評価してしまいます。

なので通常の場合、集めたデータを学習モデルのために使う訓練用データとその楽手モデルを評価するために使うテストデータの2つに分けます。
また、これらのデータは訓練用データが8-9割ぐらいになるように分類するのが一般的です。

学習モデルを精密に作りすぎてはいけない

これは前に説明したことと矛盾しているように聞こえるかもしれませんが、学習モデルを精密に作りすぎてはいけません。
あまりに精密に作りすぎてしまうと、新しいデータに対応できないことがあるからです。

私たちが解決した問題はあくまでも既知のデータではなく、未知のデータです。
訓練データにぴったり合い過ぎてしまっている学習モデルは、この未知のデータを過小評価してしまう可能性があります。

そのため、学習モデルを何個か作っておいてテストデータでテストしてみることで、使える学習モデルかどうかを評価していきます。

自分の目で評価をしていないか

これは機械学習だけの話ではなく、統計学でもよく言われていることです。

私たちは人間ですので、こうなったらいいなとか、この結果は最悪だと思うことがあります。
その時に、自分の都合の良い結果だけを受け止めてしまう可能性があります。
このことをバイアスと言います。

結果をしっかりと定量化して良し悪しを判断することが非常に重要です。

実際に機械学習を使うまでの流れ

では最後に、実際に機械学習を進めるための流れを説明したいと思います。
以下の6ステップで行っていきます。

1. 問題を明確にする

これは最初にして一番重要な問題です。

何故この問題に機械学習を使うのかを明確にしなければなりません。
機械学習は数学理論を使用し比較的扱いが難しいため、使わずに解決できるのであればそれに越したことはありません。

機械学習はあくまで1つの手段に過ぎません。
ですから本当に機械学習を使うことが最善なのかを考える必要があります。

2. データを入手する

エンジニア界隈でも機械学習を実装し、実際に評価する上で一番苦労する点と言われています。
問題に対して機械学習を適応することが決まったとしてもこのデータを集める段階で苦戦することが多々あります。

例えば、薬物治療について何か問題を解きたい。となったとき、データを集めることは研究機関や企業でない限りかなり難しいです。
またできるとしても、仮名らの費用が掛かる場合があります。
データの入手ができるのかできないのかは考えなければならない問題の1つです。

ないのかは考えなければならない問題の1つです。

データを販売している企業も存在します。

JMDC株式会社: https://www.jmdc.co.jp/

JMDC株式会社: https://www.jmdc.co.jp/

3. データの内容を理解する

また、データの中身を吟味する必要があります。
網羅的にデータを拾うことができているか、不必要なデータは入っていないかを調べ、そのデータの特徴を捉えることが非常に重要です。

4. データを加工する

データを解決したい問題に合わせて適切に加工する必要があります。

例えば、クラス分類であればラベル付けデータが必要ですし、回帰であれば連続値のデータが必要です。
データは基本的に汚いものであり、適切に加工しなければそもそも使い物にならないケースがほとんどです。
データの加工はこの流れの中でかなり多くの時間を費やす重要な作業です。

5. 学習モデルを選ぶ

問題に合わせて適切な学習モデルを選択する事が重要です。

そのためにはまずどのような学習モデルがあるのかの基本的な知識と適用するとどのような結果が得られるのかという経験の両方が必要になります。
機械学習を実装するうえで一番そのエンジニアの腕が重要になる段階です。

6. 実装する

1-5までのステップを全て超えることができたら、いよいよ実装をすることができます。
今回は機械学習の概要的な理解を深めることがメインのため、実装についてはまた別の記事にて触れることとします。

まとめ

今回は機械学習とは一体何なのかから、そのブームの背景、機械学習の種類そしてその実装までの流れを解説しました。
非常に盛沢山でしたが、理解できたでしょうか。

大まかな話になりましたが、概要を把握しておくことはこれから機械学習を勉強しようとする人の手助けになるはずです。


おすすめ記事