IT

機械学習とは? 初心者の方にもわかりやすく解説します!

こんにちは!ウマロです。

近年、「AI」とか「機械学習」とか「ディープラーニング」というキーワードをよく耳にすることが多いと思います。

でも、それぞれが一体どういったもので、私たちの生活にどのように生かされているのか、詳しくは知らない方もいらっしゃるのではないでしょうか?

そこで今回は「機械学習」というキーワードについて、以下のポイントに絞って分かりやすく解説したいと思います。

なお、本来「AI」「機械学習」「ディープラーニング」はそれぞれ独立したものではなく密接な関係にあるものですが、今回はあくまでも「機械学習」にのみ焦点を当てた解説記事となります。

解説のポイント
  1. 機械学習とは?
  2. なんで注目されてるの?
  3. どんな仕組みなの?
  4. 何に利用されているの?
  5. 個人で機械学習ってできるの?

上記5点について、本や記事などで私が得た知識をなるべく噛み砕いて解説していきます。

機械学習とは?

ではまずはじめに、そもそも「機械学習」とは一体何なのかについて解説します。

機械学習とは、

「大量のデータを元に、そのデータに潜むパターンや特徴を見つけ出して、それらを自動的に判別したり傾向を予測するような機構を持たせるための技術」

です。

(゚ω゚)「えっ?」

  • 「①パターンや特徴を見つける?」
  • 「②自動的に判別する?」
  • 「③傾向を予測する?」

いきなり抽象的なワードが出てきました。

これだとあんまり意味がわかりませんよね。

もうここで、理解するのをやめたくなります。

ですが、ちょっと待ってください!

ここでは一旦「機械学習」の定義だけに留めて置いて、

まずは「3.どんな仕組みなの?について分かりやすく解説したいと思います。

(すみません、その方が都合がよいのです・・・)

この段階では、機会学習とは

「コンピュータを使って大量のデータからパターンや特徴を見つけること」

程度の理解で十分です!(´ー`)

なんで注目されてるの?

ここでは「機会学習」がなぜ最近注目されて来ているのか解説します。

PCやスマホなどの普及により、多くの人がインターネットを利用する時代になりました。

インターネット上で買い物をしたり、SNSで繋がったり、YouTubeで動画を見たり、大変豊かで便利な時代ですよね。

このように、世の中にインターネットが広く浸透した結果、AmazonなどのWEBサービスでは、顧客の購入履歴などの「データ」を以前より大量に蓄積できるようになりました。

ではここで、そもそも「データを蓄えること」ことに何の意味があるのでしょうか?

蓄えられたデータは、一体何に利用するのでしょうか?

それは、簡潔に言うならば

「蓄えたデータを分析し、未来を予測する。そこから得られた予測結果から、未来を改善する」

ためです。

例えば、ここにAmazonを利用しているAさんがいたとします


Aさんは一か月のうちにこんな買い物をしました。

  • 初心者でも分かるPythonプログラミング(書籍)
  • 機械学習入門書(書籍)
  • ミネラルウォーター2L 24本入り(飲料)
  • Pythonを使ってWEBアプリケーションを作ろう!(書籍)
  • 高級ビジネスカバン(雑貨)

この購入履歴をみて、Aさんがどういったものを買う傾向にあるのか予想できませんか?

どうやらAさんは、プログラミング言語である「Python」の学習教材をよく購入していることがわかりますね。

この場合、AさんにPython関連の商品をオススメすることで、より商品が購入されやすくなりますし、Aさんもわざわざ商品を選ぶ手間を省くことができます。

これはデータ解析の一例ですが、イメージとしてはこんな感じです。

しかし、データを大量に蓄積するのは良いのですが、あまりに数が膨大であるとどのように活用すべきか?どのように分析すべきか?といった分析作業を人間が行うには膨大な時間がかかってしまいます。

また膨大なデータを多くの人が分析していく場合、分析基準をきちんと共有しておかないと分析結果もよくわからないものとなってしまいます。

そのような問題の解決策として注目されているのが「機械学習」なのです。

機械学習の特徴として、「大量のデータから自動的に短時間で正確な分析結果を得られる」という点が挙げられます。

人がデータ解析を行うよりも、圧倒的に時間やコストをカットし、尚且つ信憑性の高い分析結果を得ることができるのです。

こういった背景には、コンピュータの処理速度の向上や豊富なデータの解析に耐えうるデバイスが登場したのも要因のひとつと言えるでしょう。



どんな仕組みなの?

ここでいよいよ冒頭で説明を後回しにしていた

「①パターンや特徴を見つける?」

「②自動的に判別する?」

「③傾向を予測する?」

について解説します。

いきなりですが、私たちは「りんご」と「ばなな」をすぐに見分けることができますね?

では、それぞれの特徴をあげてみましょう。

りんご

赤い。青いのもある。丸い。甘い。

バナナ

黄色い。細長い。茶色の斑点があったりする。

というように、私たちは物体の「特徴」を理解して、それが何であるのか「認識」しています。

しかし、これをコンピュータに同じように理解させる場合はどうでしょうか?

「りんご = 赤い + 丸い」

というように定義した場合、「赤くて丸い“ボール”」までもコンピュータは「りんご」であると理解してしまいます。

これだとまずいですよね?

コンピュータは、その正確さ故人間のように融通の利いた理解はできないのです。
(このような問題は「記号接地問題」と呼ばれ、人工知能が解決すべき難解な問題の1つと言われています)

その解決策として、機械学習では大量のりんごの画像をコンピュータに読み込ませ、そこに含まれる特徴やパターンを教えたり、コンピュータに自ら判断させることで、「りんご」が「りんご」であると理解させるような仕組みがあります。

そして、その仕組みには以下の3種類があります。

機械学習の仕組み
  • 教師あり学習
  • 教師なし学習
  • 強化学習

教師あり学習

まずは定義からいきましょう。

教師あり学習とは、

「コンピューターにラベル付きの入力値を与えて学習させる方法」

です。

これを入れたらこれを出すのが正解という訓練を繰り返すことによって、新しいデータを入れたときに正しい出力ができるようになります。

「教師」という言葉があるように、「学校の先生」「生徒」をイメージしてみてください。

シチュエーションとして先生が生徒に「馬」とはどんなものなのかを教えるとします。

先生は生徒に「馬」のイラストを見せ「みなさん、これは馬と言う動物ですよ」と教えます。

これも馬。

「イラスト」(データ)に「馬」という名前(ラベル)を付けながら教えているというわけですね。

その行為を何回も何回も行うことで、生徒に「馬」とはどういったものなのかを理解させます。
(画像だけではなく、「足が速い」「しっぽがある」といった特徴も教えたりします)

そして、学習が終わると、次は学習の習熟度を試すテストを実施しますよね?

先生が「では、これはなんのイラストでしょうか?」と新しい「馬」のイメージを生徒に見せたとします。

ここで生徒が「馬です!」と答えることができれば、理解ができたということが分かりますね。

教師あり学習に当てはめるとすれば、先ほどの「学校の先生」は「人間」に当たり、「生徒」は「コンピュータ」となります。

ここでようやく冒頭の

「①パターンや特徴を見つける」

「②自動的に判別」

の解説ができました。

「①パターンや特徴を見つける」

・「りんごは赤くて丸い特徴がある」ということを理解する。

「②自動的に判別する」

・赤くて丸いものは、「りんご」であると判別する。

教師あり学習は、株取引における市場予測や、購買確率の高い顧客の推定といった、過去のデータから将来を予測するような場合によく使われます。

教師なし学習

続いて教師なし学習についてです。

まだ冒頭の「③傾向を予測する?」の説明がまだですね。

大丈夫です。ここで解説します。

例のごとく、まずは定義からいきましょう。

教師なし学習とは、

「ラベルの付いていないデータを与えることによって、そのデータの特徴や傾向を学習させる方法」

です。

この場合、正しい出力というものは存在しないので、入力値をグループ分け(クラスタリング)できるように訓練して、新しいデータがどのグループに近いかを判別させます。

今度も登場人物は一緒です。「先生」と「生徒」がいる場面をイメージしてください。

先ほどと違う点は、

「先生はある画像を生徒に見せますが、それがなんであるかは教えない」

という点です。

つまり、「生徒自らが(正解・不正解に関係なく)答えを導き出す必要がある」ということです。

「③傾向を予測する

データを収集・整理して、データどうしの類似度を判定してデータをグループ分けしたり、顧客の購買履歴から「Aという商品を買ったお客さんはBを買う傾向にある」という法則を見つける。

教師なし学習では、どのような分類基準をコンピューターが作るか人間では予測がつかないため、思いもつかない分類方法を見つけ出すことがある反面、全く役に立たない場合もあります。

解析結果をどのように使うかという判断の難しさ、価値ある分類を生み出すためのチューニングなどの課題があります。

教師なし学習は主に、ECサイトのレコメンド機能などに応用されています。

強化学習

強化学習は、どのような行動をとれば最大の「報酬」が得られるかを、コンピューターが試行錯誤しながら学んでいくことで最適な判断に到達します。

「〇〇したら+1点の報酬」「〇〇したら+5点の報酬」というように、最初に報酬を決めておきます。

コンピューターは最初、何をしたら良いのか全くわからない状態から、用意された選択肢を手当たり次第実行します。

その中で、ある選択肢を実行した場合、「報酬」を得ることができました。

その時、「どのような状態」で「何をしたら」報酬がもらえたかを記憶します。

この記憶を頼りに何度も何度も選択肢を実行していくことで、最高の「報酬」が得られるパターンを学習していきます。

強化学習は主に、自動車の自動運転技術に活用されています。



何に利用されているの?

機械学習の仕組みについて、なんとなく理解はできたでしょうか?

次は、私たちの生活に身近な「機械学習」の技術を用いたものについて解説します。

機械学習という言葉から堅苦しいイメージがあると思いますが、実は私たちの身近なところで機械学習技術が生かされているんですよ

迷惑メールの自動仕分け

迷惑メールによく出てくる単語やその出現確立の特徴を学習し、自動的にスパムメールの分類を行います。
Gmailなどのメールツールを利用されている方なら、身近なものですよね。

ECサイトのレコメンド機能

購入データから顧客が興味を持ちそうな商品を予測し、おすすめ商品として購入を促す仕組みです。
AmazonのECサイトを利用している方なら、身近なものだと思います。

株取引

現在と過去の株の値動きをから、今その株式を買うべきか、保持しておくかべきか、それとも売るべきかという予測をコンピュータが行います。

自動運転

自動運転の精度を上げるために、マシンの判断に「罰」と「報酬」を与えるという、機械学習の手法(強化学習)が利用されています。

この他にも機械学習は、様々な分野で活躍しています。

今後、さらに活躍の幅は広がっていくことは間違いないでしょう。

個人で機械学習ってできるの?

ここまでの解説で、もし機会学習に興味を持った方!

個人で機械学習を勉強したいけど、具体的に何から始めたらいいの?そもそも個人規模できるものなの?

と考える方もいるのではないでしょうか?

大丈夫です!機械学習は個人でも取り組むことができます!!

機械学習において、必要な基礎知識は主に以下となります。

1.プログラミングの基礎
2.線形代数と統計の基礎

プログラミングの基礎

機械学習を取扱うに当たり、とりわけ人気なプログラミング言語が「Python」です。

Pythonは、コードの簡潔さやライブラリー(機械学習を行う上で便利なツール群)が豊富であることから、広く使われています。

他にも機会学習に向いている言語はたくさんありますが、Pythonの基礎を勉強するところから始めてみた方が良いでしょう。

なによりPythonは、他のJavaやC言語に比べ、比較的コードが分かりやすいためプログラミング初心者の方でも挫折することなく学習を進めていけると思います。

ちなみにPythonを使ったWEBアプリケーションとしては、「YouTube」や「Instagram」、「DropBox」などがあります。

このようにPythonは機械学習をはじめ、ゲームやWEBアプリケーションの開発にも長けていて、誤解を承知で言うのであれば、基本的にPythonはオールラウンダーなプログラミング言語と言えるでしょう。

★Pythonおすすめ学習サイト&書籍

Paizaラーニング Python3入門編 (全11レッスン)

Python全くの未経験者の方は、Paizaラーニングの「Python3入門編」を学習することをまずお勧めします。

何と、このレッスン最後まで全て無料なんです!

動画ベースで学習を進めていくことができ、動画時間も3〜5分程度なので、無理なく続けることができます。

解説もわかりやすく、演習課題もありますのでPythonの門を叩く一歩として最適と言えるでしょう。

ある程度、Pythonの基本が身についた後にお勧めの書籍を紹介します。

この本はPythonの基本的コーディングから、機械学習のさわりまで幅広くサポートしています。

何よりサンプルコードが大量に用意されていますので、実際にコードを書きながら学習を進めていくことで、より一層理解を深めることができます。

線形代数と統計の基礎

線形代数とは行列やベクトルなどを扱う数学です。
まずは初歩的な用語や手法などの学習を行うといいでしょう。

★線形代数と統計のおすすめ学習サイト&書籍

実際に機械学習をやってみる

ある程度基礎を学べたら、実際に機械学習をやってみることをおすすめします!

知識の蓄積だけではどうしてもその後の成長は頭打ちになってしまいます。

「鉄は熱いうちに打て」と言いますが、基礎を完璧にマスターする前に機械学習に飛び込んでしまっても構いません。

躓いたら、また1、2の学習に戻り再度基礎を見直す。そして3に戻るを繰り返すことで、自ずと理解が深まってくるでしょう。

★機会学習のおすすめ学習サイト&書籍
機械学習を始めるには、まずこの1冊から!

Pythonの機械学習用ライブラリの定番、scikit‐learnscikit‐learnを使った機械学習の方法を、ステップバイステップで学習できます。

また基本的なプログラミングの知識があれば、Googleの「TensorFlow」などのオープンソースを利用することで、すぐに個人でも機械学習を始めることができます。

また、学習していく中で、基礎学習だけでは足りないと気付くことがあるかもしれません。

その時は、専用の参考書を買ったり、インターネットで調べたりして理解を進めていきましょう!



まとめ

今回は「機械学習」とは何かという解説をしました。

「AI」や「機械学習」は最近現れた技術ではなく、実は50年ほど前から既に存在していました。

ですが、当時のPCスペックだとどうしても限界があり、なかなか思うように研究が進まずAIブームは今までに2度苦しい時期を迎えています。

しかし、昨今のPC性能の向上や2010年代に登場した「ディープラーニング」という新たな技術によって、機械学習は今さらに注目を集めています。

一方、機械学習系のエンジニアは不足しています。

それに対し、企業側の需要は増加しているため、採用難から機会学習系エンジニアの年収の予算が高まりつつあるのも事実です。

まさに、「需要」>「供給」の関係に今あるということですね。

また今後、「AI」や「機械学習」への社会的関心が薄れることは、まずあり得ないと思います。というか、さらにブームは広がっていくことでしょう。

ですので、少しでも「機械学習」に興味のある方は、今回を機にぜひ学習をはじめましょう!