機械学習は近頃様々な場面で目にするAI(人工知能)と深い関わりがあります。機械学習とは、コンピュータがデータを学習し、新たなデータについて答えを出すことができるようにする訓練のことです。もしかしたら、近年非常に活発に研究開発が行われている分野で、既に調べたことがある、実際に作って試したことがあるという人もいるかもしれませんよね。
基本的に機械学習は、プログラミング又はソフトウェアを用いて開発しますが、数学やアルゴリズム等プログラミング以外の様々な知識を必要とします。普段からプログラミングを行う人であっても上記の知識がない状態では機械学習について調べようとしても、全容が掴みにくいでしょう。
機械学習に全く触れたことのない人は、まず全体構造を理解することから始めましょう。機械学習、機械学習モデルとは何か、どのようにして作るのか、どの工程でどんな知識が必要なのか、これらを頭に入れておくだけでも今後の学習に非常に役立ってきます。
そこで今回は、機械学習の肝である機械学習モデルとは何か、またその作り方をお伝えします!
機械学習のモデルの定義を簡単に説明!
まず機械学習のモデルとは、入力値を受け取り、評価・判定をして出力値を出すものです。
つまり機械学習モデルが出力値を出す場合は事前に「Aと来たらBと返す」のようなプログラミングはされておらず、膨大な量のデータを学習し、その統計から傾向を推理して機械学習モデルが独自の答えを出力します。
機械学習を理解するうえで重要な「予測分析」とは
予測分析とは将来その結果が出る可能性を過去のデータにもとづいて特定する分析方法です。身近な例でいうと、1990年代前半にウォールストリートジャーナルという新聞から「おむつを買う顧客は同時にビールも買う」という調査結果が出たことです。
この予測分析をプログラムを利用して実現する手段の一つが機械学習です。
実際の機械学習のモデルの作り方
では実際に機械学習のモデルの作り方を紹介していきます。基本的な作り方の流れとしては
- 学習させるための大量のデータを用意する
- データに意味を持たせる
- 機械学習によってモデルを学習させる
となります。順番に見ていきましょう。
学習させるための大量のデータを用意する
まず、必要となるデータの数ですが、これはAI(人工知能)の用途によって変わってくるため一概にこれだけのデータがあればOKというふうに断定することができず、現状は人間が推測するしかありません。
続いてデータの集め方についていくつか説明しましょう。
1つ目は動画から画像を集める方法です。動画は画像データをパラパラマンガの要領で動かしアニメーションにした物なので、例えば、30分の動画でフレームレートが30fpsだと、1秒に30コマの画像があるということなので1コマ1コマ区切れば54000枚の画像を得ることができます。
2つ目はWebサービスを利用する方法です。例えば画像データであればGoogleの画像検索で大量に取得することができるでしょう。手作業で1枚1枚保存するのでは時間がかかりますが、アプリやウェブスクレイピングの技術を使うことで、一括でダウンロードできます。
データに意味を持たせる
機械学習では目的変数(生存有無)と説明変数(その他パラメータ) という要素があり、これらの関係性を整理して、ある程度相関関係のある説明変数をモデルに突っ込む必要があります。
この作業をデータクリーニングといいます。この作業が機械学習によるモデル作りの9割くらいを占めます。
機械学習によってモデルを学習させる
データを用意し、データクリーニングを行った上で実際にモデルに学習させていきましょう。機械学習で使用されるアルゴリズムを大きく分けると、教師あり学習、教師なし学習、強化学習の3つに分類されます。
教師あり学習
教師あり学習とは「正しいデータ」という教師をつけてAI(人工知能)に学習させていく手法です。膨大な量の正解となるデータを学習することによって、新しいデータが入力されたときでも正しいデータに近いかどうかで対応が可能となるでしょう。
教師なし学習
教師なし学習は教師あり学習と違い、「正しいデータ」を使わずデータから共通する特徴を持つグループを見つけたり、データを特徴づける情報を抽出したりする手法です。
強化学習
強化学習とは、試行錯誤を通じて「価値を最大化するような行動」を学習する手法です。例としてはテトリスでできるだけ高スコアを得るような問題等が挙げられます。
機械学習のモデルを作るときの注意点
機械学習モデルに学習させる場合、間違ったやり方をしてしまうと見当違いの答えを返してくるモデルができてしまうことがあります。ここでは機械学習モデルを作るときの注意点について紹介しましょう。
過学習にならないよう気をつける
過学習とは機械学習モデルにデータを学習させすぎて、学習したデータ以外認めないモデルになってしまう状態のことを過学習となります。
手持ちのデータを学習用データとして使いすぎない
手持ちのデータを全て学習用データとして使用してしまうと、適合し過ぎたモデルができ上がってしまうのえ、逆に精度が低くなってしまうことも。このため機械学習を行う際には学習に使用するデータ、パラメータ等の調節に使用する検証用のデータ、精度テストに使用するデータの3種類を用意しましょう。
さて、今回は機械学習のモデルとは、またその作り方についてお伝えしました。一つ一つの工程で細かな調整は必要ですが、「実際に機械学習のモデルの作り方」で紹介したように必要な工程は
- 学習させるための大量のデータを用意する
- データに意味を持たせる
- 機械学習によってモデルを学習させる
の3つです。今回は工程だけの紹介なので更に勉強したい方、プログラミングベースで勉強したい方は紹介した工程を元に調べましょう。
機械学習のすごいところは、音声・画像認識、戦略ゲーム等で人間を上回るレベルの結果が出てきていることです。例えば画像認識技術が将来的に医学診断に応用され、人間が識別困難なものでも識別可能で人間よりも効果のある診断ができるようになっていく等、今後IT技術の枠に収まらず様々な分野で機械学習の技術は活躍していくことでしょう。
もし興味を持って頂けたのであればぜひ自分で機械学習モデルの作成にチャレンジしましょう。