AI

機械学習

機械学習とは、データからパターンを発見すること。人間だとif文でルールを分けていっても不足が生じて大したことできないけど、機械に変なアルゴリズムを適用してぶんぶん回すとなぜかかなり確かなパターンが抽出できる。最近は機械の性能も上がり、使えるデータ量も莫大になったので、機械学習の精度が上がった。ディープラーニングはニューラルネットワークのちょっと丁寧なバージョンらしい。機械学習は下火になりみんながあきらめかけてたが、色々なことが進化した中で、あきらめず頑張った人が、ニューラルネットワークを丁寧にしたことで、急激にその性能が上がり、みんなが一気に見直したらしい。機械学習はパターンを見つけることなので、用途はあらゆる分野に沢山ある。過去のデータから未来を予測したり、混沌としたデータをうまい具合に分類したりする。正しいとわかっているデータを食わせて、判断の正確性を向上させるのが教師あり学習で、データ食わせないのが教師なし学習という。教師あり学習は何かを予測する為のもので、その対象が数値の場合は回帰といい、カテゴリは分類という。教師ないのはクラスタリングとかいう。機械学習のステップは、大きく3つある。1つが、モデルをつくること。モデルというのは、教師あり学習であれば、正しいデータであると判断するのに最適と思われる数式のこと。これは機械が勝手に作り出せるものではなく人間がつくっている。数式のパラメタは未確定だが、数式自体は人間が考える。数式のパラメタが最適化されると、まさしく優秀な機械学習システムができあがり、人間と同等以上の判断が下せるようになる。パラメタを最適化させるプロセスは、基本的に大量のデータで試行錯誤することで出来上がるので、データ量が少ないとパラメタは最適化されない。また、大量のデータのどの特徴を重視するかも重要で、特徴が膨大だと計算に時間がかかり、使い物にならないし、変な特徴をちょっとだけ選ぶと早く計算が終わるが、残念な機械学習システムになってしまう。選ばれた特徴達は特徴ベクトルと呼ばれている。試行錯誤のプロセスは、まずパラメタをきわめて適当に決めるところから始まり、適当なパラメタが出す判断が正解とどの程度の乖離があるかで評価し、その乖離が縮まると思われる方向にどんどん修正させることで、最適化されていく。機械が下す判断に対する評価手法と、乖離を正しい方向に修正させる手法も基本的に人間が考える。人間が考えるといっても、さすがにニューラルネットワークを丁寧にしたやつをもっと画期的に丁寧にすることを、ぽっとでのプログラマが目指せるかというとそうではない。非常に大変なことである。そして、すでに現在の数式は非常に優秀である。さらにTensorFlowまで登場した。よって、馬鹿でも十分優秀な機械学習ができるようになったのであります。馬鹿でも、馬鹿でなくても幸か不幸か同じようなクオリティの機械学習ができる状態にほぼなってしまいました。プログラムと同じです。馬鹿な僕がやることはTensorFlowを使って機械学習をやることであり、そのために必要なのは、数ある優秀なモデル数式・評価手法・修正方法から何を選択することが最適かを判断できることです。最適な手法さえ判断できれば、その手法はTensorFlowがすでに関数として提供してくれているので、使えばいいだけです。