はじめまして、DATAFLUCTのSaiです。
この記事では「機械学習」について、AIやディープラーニングの違いに触れながら分かりやすく解説していきます。
また機械学習を知る上で欠かせない
- AI
- ディープラーニング
- 教師あり学習、教師なし学習、強化学習
- 回帰、分類
- 精度
といった用語も図をまじえて最後まできちんと理解できるようになっています。
身近にある機械学習
機械学習とは何かを説明する前に、身近なところで機械学習が使われてるケースを2つ紹介します。
1. 迷惑メール判定
1つ目のケースとして、機械学習は迷惑メールの判定に使われています。
私たちが毎日見るメールには迷惑メール(SPAMメールとも言います)がたくさん送られてきていて、見たいメールを見やすくするために、迷惑メールフォルダに自動で振り分けてくれています。
その振り分けを実は機械学習がやってくれています。
図のように、ここから上はSPAMメールだ、ここから下は非SPAMメールだ、と振り分けてくれます。実際はこんなに綺麗に上と下の境界に直線で分けてくれることはありませんが、あくまでイメージとして理解してもらえるといいかなと思います。
では、このSPAMメールとそうでないメールを分けるのになぜ「機械学習」を使うと良いのでしょうか?
メールって毎日たくさん受け取っていて、たくさん種類があります。その1つ1つをSPAMかどうかを判定して振り分けようとすると、「振り分けるルール」をいちいち作るのが大変なんですね。
そこで機械学習を使うことで「振り分けるルール」を自動でどんどん作ってくれるわけです。
機械学習を使うと嬉しいことがもう1つあります。
突然、SPAMメールと非SPAMメールを分けてくれていた境界(点線)の上に新しいパターンのSPAMメールが登場してきました。SPAMか非SPAMのどちらかに振り分けないといけないので、機械学習は、この新しいパターンのSPAMメールを学習して、振り分ける境界を調節してくれます。調節の結果、点線から少し傾きが急な実線の方に境界が変わるのが分かります。
メールは毎日新しいパターンの迷惑メールが登場してくるので、いちいち人間が振り分けルールを更新しなくても機械学習は自動でルールを調節したりルールを追加してくれたりするのです。
2. チャットボット
2つ目のケースとして、商品やサービスの問い合わせに自動で回答してくれるチャットボットも機械学習を使っています。
商品の使い方や故障についての問い合わせは、決まったパターンの会話になるため機械学習で比較的簡単に正確な回答を返すことができます。従来のチャットボットでは、「問い合わせ」と「回答」をセットで完全にパターンが決まっていましたが、機械学習を使うことでもう少し多くのパターンであったり、自然な回答をすることができるようになってきています。
最近では、マイクロソフトが開発したAI「りんな」がそれこそ人間と区別がつかないほど自然な会話ができるので、今は特定の場面でしかチャットボットとして使われていませんが、将来的には普段会話する友達の一人がAIということも出てくるのではないでしょうか。
機械学習とは
さて、改めて機械学習とは何かを見ていきましょう。
機械学習とは、AI(人工知能)の技術の1つになります。
機械学習という技術を使うことで
- データから特徴や法則性を見つけ出す
- 特徴や法則性を見つけることで、将来を予測・判断できる
を実現できるようになります。
私たちは普段データとは切っても切り離せない生活を送っています。
車のドライブレコーダーの動画だったり、ネットショッピングの購入記録だったり、あらゆる場面で行動した結果としてデータが生まれています。こういったデータは何十年も前から記録はされていましたが、使いこなすことができていませんでした。
しかし、コンピュータの性能が大きく向上し、機械学習という技術を使うことで、これまでのたくさんあるデータを処理することができるようになったのです。データを処理できるようになるとデータから特徴や法則を発見することができるようになります。
例えば、
購入記録から「ある人は日用品の購入をまとめて日曜日に購入している」という特徴が分かる ↓ この人は次の日曜日も購入するだろうとあらかじめ予測して、土曜日にセールの通知をする |
というふうに特徴を発見できると、将来を予測して先回りができたりするわけです。
▼機械学習について詳しく知りたい方はこちら
ディープラーニングと機械学習の関係
次に、ディープラーニングを見ていきましょう。
もうすっかり言葉は聞いたことがあるディープラーニングですが、AIと機械学習と密接な関係のある技術になります。
AI・機械学習・ディープラーニングは、
という関係になります。
機械学習はAIの一部であり、ディープラーニングは機械学習です。
「AI > 機械学習 > ディープラーニング」
というイメージを持っておくのが良いかと思います。
機械学習とディープラーニングの違いについては
- (ディープラーニングでない)機械学習は複雑なデータ(画像・音声・文章)が苦手
- ディープラーニングは複雑なデータが得意
であること。
また機械学習とAIの違いについても
- 機械学習は、コンピュータの中で使われる技術
- AI は、コンピュータだけでなく機械やロボットも含めて使われる技術の総称
になります。
ロボットそのものを動かそうとした場合は、機械学習だけでなく、例えばロボット制御工学といったハードウェアの知識技術が必要になるので、AIはそれらも含んでいるイメージになります。
以上のことを知っておくだけでも、これまで違いが分かりにくかったAI、機械学習、ディープラーニングに対する理解が進んだと思いますので、次はデータについて見ていきます。
ディープラーニングは複雑なデータが得意ってどういうこと?
機械学習が苦手にしていて、ディープラーニングが得意である、複雑なデータとは何でしょうか。
次の犬と猫の画像を見てみます。
犬と猫の画像を見て、どちらが犬かを判断したいとします。私たちは犬の画像を見ても1枚の写真と分かりますが、実はコンピュータは画像を見ても1枚の写真であるとは分かりません。コンピュータは画像の中の1つ1つのピクセルをデータとして分割して処理します。逆に1つ1つのピクセルのデータを人間が見ても何であるかは分かりません。このようなデータのことを、非構造化データといいます。
あらためてデータには
- 非構造化データは、画像・音声・文章といったデータのこと
- 構造化データは、氏名・購入記録・温度/湿度といったデータのこと
と大きく2種類のデータがあります。
▼データについて詳しく知りたい方はこちら
機械学習で知っておくべきデータの種類と構造化・非構造化データ
テキストより動画の方が容量が大きいことから(それも圧倒的に)、非構造化データの方はコンピュータで処理しようとするとデータ量が多いと分かります。
複雑なデータ、つまり非構造化データは圧倒的にデータ量が多いので、機械学習ではなくディープラーニングでないと処理することができないのです。
少なくとも、この記事では
- 構造化データは機械学習を使う(ディープラーニングも使えます)
- 非構造化データはディープラーニングを使う(機械学習は使えない)
ことを理解しておきましょう。
データから特徴や法則性を見つけ出すってどういうこと?
この章の最後として、データから特徴や法則性を見つけ出すことについても具体的に見ていきます。
次でも犬と猫を例にとって、犬猫の特徴を上げてみます。
犬である特徴は
- 体の色が茶色なのが犬
- 鼻が突き出ているのが犬
猫である特徴は
- 体の色が白色なのが猫
- 体の大きさが小さいのが猫
茶色であるだけで犬であるというのおかしいので、これらの特徴から「体の色が茶色で、鼻が突き出ていて、舌を出していて、…」という組み合わせであれば、犬であるというふうに判断することができます。
機械学習では、この特徴の組み合わせを学習して自動で犬だと判断できる特徴の組み合わせを見つけてくれるのです。
今回あえて例として犬と猫を上げましたが、察しの良い方は「犬と猫の特徴なんてはっきりと区別できるのか?」と気づかれたかもしれません。それだけでなく、特徴を上げたらキリがないというケースでもあります。
この曖昧で特徴が無数にあるデータは、これまではコンピュータでは学習できませんでした。それがディープラーニングという技術が登場したことで、曖昧な特徴を曖昧なまま学習して、人間のそれに近いような判断をできるようになったわけです。
機械学習(ディープラーニング含む)がデータから特徴や法則性を見つけ出すようになる最終地点が、人間と同じように自然な会話をすることができて、人間の大半の仕事ができるようになることかもしれません。このことが実はディープラーニングが注目されている理由なわけです。
機械学習の種類
機械学習をさらに理解を深めるために、3種類の機械学習がありますので見ていきます。
- 教師あり学習
- 教師なし学習
- 強化学習
どれも世の中に役に立つ技術なので優劣はありませんが、私たちが理解するにあたって
「教師あり学習 > 教師なし学習 > 強化学習」
のイメージで、基本的には教師あり学習を重点的に理解していくことになります。他の2つについては利用事例だけ理解しておき、具体的な内容については必要になった時に調べていくのが良いかと思います。特に強化学習については全くの別物になりますのでこの記事では事例だけ紹介することになります。
教師あり学習
教師あり学習は、その名の通り教師となるデータを学習する機械学習になります。
これまで出てきたSPAMメールの判定では、あらかじめ
- SPAMであるメール、SPAMであるラベル
- SPAMでないメール、SPAMでないラベル
となるデータのセットを用意します。
メールそのもののデータと、〇〇というラベルを用意することでコンピュータはどのメールがSPAMかそうでないかを学習することができます。
このあらかじめ用意した正解となるデータのことを、教師データといいます。
もし、犬と猫の画像を見てコンピューターに区別してほしい場合は同じように
- 犬の画像、犬であるラベル
- 猫の画像、猫であるラベル
という教師データを用意することでコンピュータは学習できるようになります。
私たちは子供の頃は、大人ほど物の名前を知りませんでした。例えば初めて犬や猫を見たときは名前がわかりませんよね。(絵本でも実物でも)何度も見ているうちに、名前を覚えて次から言えるようになります。実は人間も、データと〇〇というラベルを何度も見て学習するうちに区別できるようになるという点で、教師あり学習はとても馴染み深いものなのです。
コンピュータは常に何も知らない子供のような状態であり、データを1つ見ただけでも、データを1回見ただけでも何もできませんので、とにかくたくさんのデータを読み聞かせてあげることで学習して覚えてくれるのです。
教師あり学習では(教師あり学習だけには限りませんが)、大量のデータとラベルが必要であることを覚えておきましょう。
教師なし学習
教師なし学習は、教師がないデータを学習する機械学習になります。
教師あり学習と違う点は、〇〇というラベルを用意しない点です。
犬と猫の画像だけ用意して、コンピュータに学習させて、いい感じに分けてもらうというイメージになります。
この「いい感じに分けてもらう」ことがポイントで、分けた結果、犬と猫になるとは限りません。
例えば、勝手に大きいものと小さいものに分けてしまうし、色が白いものと黒いものに分けてしまうかもしれないのです。
教師あり学習に比べると随分不便なもののように思えてしまいますよね。でも、〇〇というラベルを用意しないことで、コンピュータが勝手に新しい発見をしてくれることがあります。
ある店の毎月の商品ごとの売上データがあったとします。
何も正解を与えないでコンピュータに教師なし学習をさせてみると、
- グループ1「買い物頻度が多い人たち」
- グループ2「買い物頻度が少ない人たち」
に分けられました。
グループ1の方の購入された商品を見てみると「するめ」と「お酒」を買っている人が多いことが分かりました。この結果を元に、お店では「するめ」と「お酒」を一緒に並べることでセットで購入されやすくなり、グループ2の人たちも「するめ」と「お酒」を一緒に買ってくれて買い物頻度が上がりました。
非常に単純な例を挙げましたが、教師あり学習ではどのデータを予測するか目的を与えるのに対して、教師なし学習は目的は与えずに上手くデータをグループに分けてみてねというイメージになります。
教師なし学習には、このグループに分けること(専門的にはクラスタリングと言います)以外に、もう一つ次元削減をすることにも使います。
より詳しく知りたい方は、教師なし学習についての記事も今後出していきますのでチェックしてみてください。
強化学習
3つ目の強化学習ですが、教師あり学習や教師なし学習と「考え方」や「仕組み」が大きく違うため、機械学習と強化学習は別々と思っておくのが良いかと思います。
強化学習は、とるべき行動を学習する機械学習になります。
とった行動に対してポイントを与え、あらゆるパターンの行動を学習して、どの行動を選択することで最終的なポイントが最大化できるかを予測する手法です。
具体的には
- 将棋
- 囲碁
- 掃除ロボット
といった事例があります。
私たちが初めて将棋をしたときのことを思い出してください。(やったことがない人は、五目並べでも似たようなゲームを想像してください)
なんとかルールを覚えたばかりで、最初はデタラメに打ってしまって負けるかと思います。負けていくうちに、この打ち手は悪かった、この打ち手は良かったということを、徐々に覚えてだんだん変な打ち方をやめて上手になっていきます。
強化学習も同じで最初はデタラメに行動して勝ったり負けたりしているうちに学習して、負けにつながる行動を避け勝ちにつながる行動を取るようにして将棋が上手くなっていきます。
一見正解を覚えて学習するという点で教師あり学習と同じように思えるかもしれませんが、その違いは、
- 教師あり学習は、正解となる答えを学習すること
- 強化学習は、正解となるゴールに辿り着いたときに、ポイントが最も高くなるような行動を学習すること
になります。
犬を見たときに、「これは犬だ」と正解を答えられることが教師あり学習です。
一方で、将棋で駒を1回動かすことそれ自体は正解でも間違いでもありませんが、相手より先に勝つために、ポイントが高くなる行動を探すのが強化学習になります。
私たちが将棋に慣れてない時は、目の前の駒をまず取ることが得だと思って取ることがあります。ところがその駒を取ることであとあと負けにつながった経験をすることで、次は相手より先に勝つために目の前の駒は取る以外の方法を考えだします。
強化学習も同じで、最初は間違えたり目先の利益を優先した行動をとって負けることを経験していくうちに賢くなり、勝ちにつながるようなポイントの高い行動を優先して取るようになります。
余談ですが、強化学習におけるコンピュータは、タイムリープの主人公のようなものだと私は感じています。間違った行動をどこかで取ってしまったために、愛するものを失い、もう一度過去に戻って(もしくは未来で間違いに気づいて現在に戻り)行動を変えながら自分にとって一番良い未来になるように行動していく映画の主人公のように感じられるのです。
最後に
機械学習についていかがでしたか。
普段の生活でも機械学習が使われており、これまで使いこなせなかったデータから特徴を発見することで様々なことができることが分かりました。
機械学習の具体的な方法として、教師あり学習、教師なし学習、強化学習に分けられることも理解できました。
今後ますます機械学習を使える場面が増えてきますので、今のうちに勉強したり導入を検討したりすると良いかと思います。
そのために、DATA Campusでは初心者が学べる内容の記事や、
より高度なことを知ることができるTech Blogも運営しております。
またDATAFLUCTでは、どんな人でも簡単にデータサイエンスを使えることを目指して、これまでにない機械学習を利用してビジネスに使えるプロダクトを開発していますので、こちらもぜひ導入を検討してみてください。
▼DATAFLUCTのプロダクト情報はこちら
プロダクト情報