ゼロから始める機械学習 第1回「機械学習とは?」

連載「ゼロから始める機械学習」でお知らせしたように、「ゼロから始める機械学習」と題して

初学者向けに機械学習の解説を書いていきたいと思います。

目次

  • はじめに
  • スパムフィルタ
  • 機械学習の用語
  • その他の機械学習の例
  • プログラミングとの関係

はじめに

機械学習には大きく分けて、3つの種類があります。

  • 教師あり学習
  • 教師なし学習
  • 強化学習
    この3つを体系的に理解しようとすると、とても複雑です。

そこで、この解説では最も基本的で一般的な教師あり学習にフォーカスを当てます。

まず、身近な機械学習(教師あり学習)の例としてスパムフィルタを見ていきましょう!

スパムフィルタ

スパムフィルタの目的

皆さんの中でメールを使ったことがない人はいないでしょう。そして、メールにはスパムフィルタと呼ばれる機能があるのをご存知でしょう。

メールアドレスを持っていると、スパムメール(迷惑メールのこと)を受信することがよくあります。受信する全てのメールに対して、利用者が

これは大事なメールだから読もう

これはスパムメールだから捨てよう

とわざわざ見分けているととても手間ですよね。そういった手間を省くためにスパムフィルタが存在するわけです。

スパムフィルタはプログラムでできている

では、スパムフィルタはどのような仕組みで動いているのでしょうか。

もちろん、誰かが手動で振り分けをしているわけではなく、

プログラムが自動で識別をしています

スパムフィルタを作るとしたら?

その際、あなたがプログラマだったらどのようにプログラムを組むでしょうか。

1
2
3
- 儲かる
- 会いたい
- 久しぶり

といった典型的なスパムメールのキーワードを列挙してみて、

それが含まれるかどうかを判定するプログラムを組むと良さそうです。

メンテナンスが必要

しかし、そのようにして作ったプログラムはメンテナンスが大変です。

キーワードは最初に考えたものだけでは十分ではなく、追加していく必要があるでしょう。

また、本当に「久しぶり」という単語が含まれるメールは全てスパムだと言えるでしょうか?

「久しぶり」という単語と合わせて、「アドレスを変えました」などのフレーズも出てきたらスパムの可能性は高そうです。

だんだんとルールが複雑に・・・

このようにしていくと、プログラムの条件分岐が増えてとても複雑になってしまいます。

こういった課題を解決するのが機械学習です。

コンピュータにルールを発見させる

では、機械学習だとこの課題をどうクリアできるのでしょうか。

機械学習の場合、人間がルールを考えてプログラムをする必要がありません

コンピュータに大量のデータを与えることで、そこからルールを発見することを期待します。

スパムフィルタのための機械学習

そういったルール発見を自動化する学問を機械学習だと思ってください。

そして、それを実現する仕組みのことを機械学習モデルと呼びます。

機械学習モデルには、事前に以下の情報を与えます。

  • メールの文章
  • そのメールがスパムであるかどうか

機械学習モデルはこれらの情報からルールを獲得します。この過程を学習 と呼びます。

これらの情報は事前に与えることに注意してください。つまり、実戦投入する前の練習ということです。

学習を終えた機械学習モデルに、

  • 未知のメールの文章

を与えると、それがスパムメールであるかどうかを判定することができます!

この処理を予測(推論) と呼びます。

この時、最も重要なのはメールの内容が未知であっても問題がないということです。

つまり、スパムメールの内容を丸暗記しているわけではないのです。

機械学習は応用が効く

機械学習のアプローチは、人間がルールを考えるアプローチとは全く考え方が異なることがお分かり頂けたでしょうか。

また、機械学習は非常に応用が効きます。

新しいデータ

例えば、スパムフィルタを作成してから時間がたち、時代の変化とともにスパムメールの傾向が変わってきたとしましょう。スパムフィルタの精度はだんだんと劣化していくでしょう。

しかし、機械学習の場合は新しいデータを利用して、再度学習を行えば良いのです。ルールベースの場合はそうはいきません。再びキーワードの選定や、条件分岐の習性が必要になるでしょう。

類似したタスクへの適用

機械学習を使って英語向けのスパムフィルタを組んでしまえば、他の言語についてもプログラム自体を大きく作り直す必要がない場合もあるでしょう。

なぜなら、ルールを記述せずにデータからルールを学んでいるので、データを丸ごと変えればそのデータでのスパムメールの傾向を自動で獲得できるからです。

機械学習の用語

では、スパムフィルタから一般化させて、機械学習の用語を整理します。

学習と予測

機械学習を利用する際には二つのステップがありましたね。

  1. 学習(ルールを獲得)
  2. 予測(未知のメールを判別)

説明変数と目的変数

機械学習モデルの入力(メールの文章)を

  • 説明変数または特徴量

出力(そのメールがスパムであるかどうか)を

  • 目的変数またはラベル

と呼びます。

その他の機械学習の例

スパムフィルタは、機械学習の成功例としてはかなり古い部類です。

現代では、かなり多くの用途で機械学習が用いられています。

  • 文字認識
  • 顔認識
  • 音声認識
  • クレジットカードの不正利用検知
  • 画像認識
  • 自動運転
  • チャットボット

他にもまだまだありますし、今後もさらに増えていくと考えられます。

プログラミングとの関係

さて、これからの記事ではプログラミングを用いながら機械学習を学んでいきます。

その理由は、もうお分かりですね?

機械学習は、データを元にルールを自動で獲得するシステムなので、

基本的にはプログラム上で実現されることになります。

そのため、機械学習を学ぶ際はプログラムを動かしながら学ぶのが最も効率が良いのです。

次回

機械学習を学ぶためにプログラミングをする上で、最初のハードルとなるのは環境構築です。

その点で、Google Colaboratoryは機械学習の初学者にとってメリットが満載の環境です。

そこで、次回(第2回)のテーマは「Google Colaboratoryを用いた環境構築」として、

環境構築の方法について解説します。

「Google Colaboratoryの使い方」

記事情報

  • 投稿日:2020年3月26日
  • 最終更新日:2020年3月27日