機械学習とはなにか?活用事例などを踏まえて簡単に概要を紹介

近年、人工知能・機械学習といったワードがよく聞かれるようになりました。身近になりましたといったほうが正しいかもしれません。

ワードそのものは身近になったとはいえ一体どのようなものなのか、概要については知らないと言う人も多いはず。(私はよくわからなかった)

自己学習的な意味合いも含めて機械学習とはなんぞやと言うことを改めてまとめてみました

機械学習とはそもそもなにか?

機械学習とは人工知能の分野の一部です。コンピューターに人間が行なっているようなプロセスで学習をさせる機能をつけたい、と思った時使う手法になります。

 

通常機械に何かをさせる時、「Aと言う条件の時はこうする。Bと言う条件の時はああする。」

と、いうような感じで逐一条件とその条件に当てはまった時の処理を指定しなければなりません。

これでは複雑なデータが入ってきた時対応しきれなくなるので、人間が行なっているように「大量のデータを学習して、そのに潜むパターンを見つけ出す」そう言うことを機械にもやらせようと言うものです

その機能を実現させるための手法は主に2種類あり、そのうちの一つを機械学習と呼びます。

機械学習では大量のデータを分析します。データの何を持ってAと言う分類にするかBと言う分類にするか、目のツケどことは人間が指定します

ディープラーニングの場合目の付け所も機械が分析結果をもとに自分で学習すると言うものです。

パターンを見つけ出すとは

人間と同じような学習といっても、普段無意識で行なっているのでイマイチピント来ないと思います。

例えば人間は、犬を見れば犬とわかります。

猫を見れば猫とわかります。

同じ4つ足で歩き、同じように尻尾を持つ哺乳類ですがちゃんと見分けることができます。

犬は犬の顔をしていますし、猫は猫の顔をしているのでわかります。

人は無意識のうちでも、犬は犬の共通点を見つけ・猫には猫の共通点を見つけることができています。

これを機械にやらせようとすると、「〇〇と言う骨から〇〇までの長さは〜cmで、角度は・・・。」と言うことをひたすら教え込むことになります。個体差もあり犬種・猫種と様々あるため、全てのデータを入れることは不可能です。

そこで、機械にも人間のように平均値や共通点を大量のデータから学習してもらい、個体差などがあってもそれが何か識別できるようにしようと言うのが機械学習です。

機械学習の活用事例

超絶ざっくり機械学習とはなんぞやと言うことをおはなししましたが、これだけいってもあまり身近には感じないと思います

現在機械学習の技術は私たちの身近にたくさんあります。

  • iPhoneのSiri
  • アイサイトのような画像認識機能
  • ネットでよく出るおすすめの商品
  • 手書き文字のデジタル化

これらのサービスは大量のデータをあらかじめ機械に分析させて、その共通点を見つけ出させ(学習させ)初めてであるデータにも対応できるようにしたからこそできることです。

具体的にどうやって学習させるの?

機械学習では主に「教師あり学習」と呼ばれる方法と「教師なし学習」と呼ばれる方法を用いてコンピューターに学習させます。

(他にもありますが、今回は割愛)

教師あり学習とは?

教師あり学習ではあらかじめ答えのラベルをつけたデータをコンピューターに渡します。

コンピューターは与えられたデータがどうしてその答えになるのか分析します。何百回、何万回とこれを繰り返すとやがて初めて出会うデータが、今学習しているものと適合するかしないか見分けられるようになります。

教師なし学習

一方答えのつけられていないデータで学習する方法を教師なし学習と言います。

何か対象物を見つけられるようにと言うよりかは、大量のデータからパターンやカテゴリーに自動分類すると言うような使われ方をしたりします。

もしくは、初めの段階は教師ありで学習したり、初期値を入れるなどしてその後解析の精度を高めるための学習は正解のないデータでコンピューターが勝手に進めていくと言う使われ方をする場合もあります。

 画像を分類したりできるようにするには

答えをつける・つけない等やり方があるとはわかりましたが、では具体的にどうしたら良いのでしょうか?

比較的説明しやすい画像にスポットを当ててお話しします。

例えば、画像を自動で分類してくれるシステムを作りたいとします

  1. プログラミング環境を準備する(主流はPythonでPythonを実行するための環境を整えるのにAnacondaと言うツールがあります。LinuxやWindowsにこれらのものをインストールして環境を整えます)
  2. 必要なライブラリーなどをインストールする。
  3. 利用する画像を用意する
  4. 画像を機械が識別できる形式に変換(大きさなども調整)、扱いやすいように次元の少ない配列に直す
  5. データの中で特に重要な次元を見つける
  6. 似ているデータ同士を集めてグループ分けする
  7. データを作ってグループわけする作業を再び行い精度を高める

上記のような流れでデータを扱うことになります

必要な知識

まず、画像を変換したり振り分けたりするためにプログラムを書かなければなりません。そのためにPythonなどプログラミングの知識が必要なります。ライブラリーを扱うと言うこともできなくてはなりません

データベース操作も必要になってくるのでRやSQLといったデータベース操作の知識も必要です

また、似ているデータを集める時には平均値を出しそこに当てはまるものを探すので統計・微分積分などなど数学の知識が必要になってきます

まだまだ知っておかなければならないことはたくさんありますが、おおよそこのような知識を使って作業を進めることになります。

 

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA