ShimakazeSoft Tech

Python好きの新卒WEBエンジニアが技術記事を執筆するブログ。主にWEB系や機械学習系のことを掲載。

Pythonで機械学習に軽く振れる その0(機械学習の概要)

f:id:shimamili:20180329024027p:plain
超初心者向けの機械学習チュートリアルを書いてみたかった・・・

最近はニュースでも人工知能(AI)の話題が出れば、ターミネーターの時代が近いなど、いろいろ騒がれて話題になっているAIですが、AIの中で特に話題となっているのは機械学習の技術です。

去年の2017年は機械学習ブームでもあり、エンジニア界隈でも「機械学習やってみたい!」と思う方がいるものの、実際本を一冊買って中身を見てみると、「何がなんだかわからん」「数式読めない」と言う方は多くいたと思います。

 

そんな自分も機械学習をやっているものの、深い所までいくと「さっぱりわからん」と感じるものです。

自分は、ある方に教えてもらう機会があり、機械学習にほんの数ヶ月だけガッツリ触れていた期間がありました。(ガッツリといっても本格的に長く触れてる方からしたら初歩的なものです)

 

今回は「数学よくわからん」「機械学習の本読んで挫折した」という方向けに、機械学習に軽くでも触れられるようなチュートリアルを作っていきます。

できる限り数式を省き、難しい所も省いて解説できるように心構えていきます。

最初にやるべきこととは何か?

まず初心者は何をすべきか?個人的な意見ではありますが、まずはライブラリなどを使って実際に機械学習をやってみて感覚を掴んでいくことが大事だと思います。

深く理解していくには理論も大事ですが、機械学習初心者が挫折しちゃうのは、大体は最初に理論を全て理解しようとして「なるほどわからん」と思って辞めちゃう方が多いのかなと思います。すべての理論を理解しようとしなくても良いと思います。

まず最初は機械学習は「何ができるか」「どんな手順なのか」を理解していき、そこから理論を紐解いていくのが良いのかなと思います。

このチュートリアルで使うプログラミング言語

タイトルにもある通り、Pythonを使います。だいたい機械学習となると、Pythonを使っていくのがほとんどです。
しかし、決してPythonでなくてはいけないわけではありません。
Pythonは、機械学習をするのに便利なツール類が一式揃っているため、大抵機械学習関連の資料となるとPythonを使っていくものが占めていきます。

このチュートリアルで扱うライブラリ

機械学習用のライブラリには、Googleが公開した「Tensorflow」、国内企業であるPFNが公開した「Chainer」などいろいろあり、どれを選べばいいかわからないという方が多いと思います。

最初は「scikit-learn」を扱えるようになるのがオススメです。scikit-learn自体はいろんな機能を備えており、何より使いやすいのが特徴です。本シリーズでも「scikit-learn」を使っていきます。

機械学習って何?

ここまでタイトルを引っ張っておいて「機械学習とは〜」と説明するのも今さらですが、一応のために説明しておきます。

wikipediaなどによれば、以下の内容を機械学習というそうです。

人口知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピューターで実現しようとする技術・手法のことである

 
機械学習とは | SAS

他にもこの記事には以下のような記述もありました。

さまざまなアルゴリズムを用いてデータから反復的に「学習」するため、人間が探すべき場所を明示的にプログラムしなくても、コンピューターが自律的にデータから洞察を導き出せるようになります。

簡単に言えば、データーを学習させることにより、結果を導き出す処理を自動でやってくれるというものです。

大抵何かしらの動作をさせるプログラムを書きたいと思うとき、自らコーディングをして、「もし〜こうなら」というif文のような条件分岐を大量に自分で書かなくてはいけません。
しかし、そういった条件分岐を自動で生成してくれるのが機械学習と考えればよろしいと思います。
ただ、この記事に辿り着いた人の多くは大体のことはわかっているかと思うので、この辺は軽く飛ばします。

機械学習の流れ

機械学習のプログラムを作成する上での最終的な目標は「学習モデル」を生成することです。

学習モデルとは、未知のデーターが与えられた際に、そのデーターを分類するためのの判定器(分類器)です。前の段階で、大量のデーターを元に作られています。

機械学習を行う上での全体の大まかな流れを表すと以下のようになります。

  1. データーを収集
  2. データーを整形する
  3. 集めたデーターを元に学習モデルを作成
  4. 検証・調整

1でまず機械学習に必要なデーターを集めます。データーの集め方としては、どこかで配布されているデーターだったり、いわゆるスクレイピングと呼ばれる手法でデーターを一気に集めたりします。

2では、集めたデーターを機械学習で使える形式に整形します。大抵いらないものが含まれてたりすることがあるため、それらを除去したりします。

3で2で整形したデーターを元にモデルを作成していきます。選択したアルゴリズムを元に実際にデーターを学習させて、モデルを作ります。
これにより、学習させたデーター以外の未知のデーターを入れても、自動で分類などが行えるようになります。

4では3で生成したモデルがそれなりに精度が良いものなかを検証したり、良い精度が出るようにチューニングなどを行っていきます。


一通りに流れを説明しましたが、実際にやってみるのが良いと思います。
このチュートリアルでは、最初は機械学習関連で使うツール類の使い方から解説していき、そこから徐々に機械学習の実践方法に触れていきたいと思います。