人工知能と同列で用いられる、機械学習というキーワードを聞いたことありませんか?
「人口知能とどう違うの?」って思うかもしれませんが、実はあなたも使っている身近な技術です。
この記事ではそもそも機械学習とはなにか?についてや機械学習の限界についても解説します。
また2020年現在の先端の機械学習についても解説します。
機械学習とは
機械学習とはwikipediaによると「明示的な指示を用いることなく、その代わりにパターンと推論に依存して、特定の課題を効率的に実行するためにコンピュータシステムが使用するアルゴリズムおよび統計モデルの科学研究である。」とあります。
なんだか分かりにくいですね。
要するに人間の代わりに自動的にある種の課題をこなしてくれる機能のことです。
これは機械学習の例を見たほうがわかりやすいと思います。
機械学習の例
分かりやすい機械学習の例としてはgoogleレンズがあげられます。
これはスマホ版のgoogleアプリに実装されている機能です。
このスマホアプリを通してカメラで写した画像をみるとこの画像が何なのかを判定してくれます。
ネコをカメラで写すとネコと判定してくれるという具合です。
他の例としてはyutubeにおすすめ動画として表示される動画も機械学習で選定されています。
実はもはやありふれた技術なのです。
機械学習の処理の作り方
ではどうやって機械学習のコンピュータが出来るようになるのでしょうか?
ざっくりいうと大量のデータを覚えさせるというやり方になります。
大量のネコとイヌの画像がぞうがあればそれらを見ていくとイヌとネコの特徴をつかめると思いませんか?
この特徴をつかめば新たな画像についてもネコかイヌか判断できるはずです。
そういった処理をコンピュータで行うことが機械学習です。
人工知能との違い
ここまで説明して、人工知能との違いはなんだろうと考えるかもしれません。
その違いは言葉の定義が機械学習の方がはっきりとしている点です。
実は人口知能という言葉の定義自体が曖昧で人によって違います。
下の表は研究者によっての定義のち外の抜粋です。
色々な研究者がいろいろな言い回しをしています。
これは定義が定まっていない証拠になります。
ちなみにwikipediaによると「言語の理解や推論、問題解決などの知的行動を人間に代わってコンピューターに行わせる技術」とあります。
人工知能も機械学習も似たような意味ですね。
ただし、言葉の定義が人工知能よりも機械学習よりはっきりとしています。
機械学習の中にも手法の分類や技法も定義されています。
そのため、エンジニアやサイエンティストにとっては機械学習の方が使いやすい言葉になっています。
機械学習の分類
一般てきに機械学習は画像や数値データのデータの集まりから、それらのデータを分類したり、推測した利します。
データの集まりを処理する方法の違いでいくつかの種類に分類されています。
機械学習の分類
- 教師あり学習
- 教師なし学習
- 強化学習
それぞれの特徴を見ていきましょう。
教師あり学習
教師あり学習の教師とは正解がわかっているということを意味します。
先程のネコの例で言うとそれぞれの画像がネコかイヌのラベルがきちんと貼られている状態です。
教師なし学習
教師なし学習とは正解がわかっていないデータで学習することです。
先程のネコとイヌの画像でいうとラベルがなくて混ぜられているデータになります。
ラベルが付いていないとしても、それぞれの画像には特徴があるのでイヌとネコは分類できるはずです。
それをコンピュータで行うのが教師なし学習です。
この学習方法はスパムメールの分類などで使われています。
強化学習
この学習方法は学習方法に点数をつけて徐々に改善していく方法です。
イヌとネコの画像の例でいうと、正しく見分けられたら点数を与え、
更に点数が高くなるような学習方法を模索していきます。
AIがマリオのようなゲームを学んでいく動画がわかりやすい例かと思います。
囲碁の名人を破ったAIのAphaGoでもこの手法を用いています。
機械学習の難しさと限界
機械学習を使うとデータさえあれば正しい分類や予測ができるかというと、そうではないです。
ここでとても簡単な例で機械学習の難しさと限界を示したいと思います
最も単純な例x-yのグラフから式を予測する
最も単純な例としてxに対してyを予想するといったことを考えます。
いま上の図のようにx=1,2,3,4に対してyが決まっていますが出ています。
これに対してx=5の値を予測するという課題です。
見た目からするとx=yの直線からは少しずれますがこれが最も正しい並びのように思えます。
ただ、少しのずれがきになるので曲線で全部つないでしまおうと考えると問題が起こります。
わかっているデータに最適化すると新たなデータに弱い
曲線すべての点を正確に通る曲線を引きます。
理論的にはあっているように思えますが、
この曲線に対して新たなx=5データを加えます
これで見ると見事に曲線からは外れています。
y=xの方がマシですね。
曲線のようなデータへの最適化は過学習といいます。
機械学習ではいかに過学習させずにデータを学ばせて、新たなデータに対応できるかが大きな課題です。
これは100%の正解を出せる機械学習はありえないことも同時に表しています。
一般化と精度はトレードオフに有り両立させるのはとても難しい課題になっています。
この課題を克服するために、デープラーニングなどの新たな手法を機械学習研究者は模索しています。
ポイント
- 今のデータに100%対応させると新たなデータに対応できな
- 精度良く一般化させるのはとても難しい
機械学習の実践方法
実際に機械学習を実践するためにはプログラミング言語を使います。
その代表がpythonです。
pytyohでの機械学習の実践は下記のサイトが詳しいです。
他にもRなどの言語もありますが、pythonの方が情報が多くおすすめです。
機械学習のスクール
機械学習を更に学ぶためには有料のスクールで学ぶのも有効です。
多少の出費がネックですが、「短時間で集中して早く学びたい」って人にはおすすめです。
スクールとしてはいくつかありますが、Dive into codeがおすすめです。
仕事で機械学習を必要としている人が利用するほどな知識が得られます。
まとめ
最後まで読んでいただきありがとうございました。
機械学習の理解の助けになれば幸いです。
実践にもぜひチャレンジしてみてください。