先日、品川のMicrosoftでAzure Machine Learningに関するセミナーに参加してきました。 勉強したことを、書き残します。
〇Machine Learningとは?
Machine Learningは日本語では機械学習とよばれる技術で、多くの場合MLと略されます。
コンピュータで既存のデータを使って将来の動き、結果、傾向を予測できるデータサイエンスの手法のことを指します。
かみ砕けばコンピュータを用いて、これまでのデータの特徴を分析してその法則から新たなデータに対して傾向を導き出すことのようです。
MLを用いることでデータごとに毎回プログラムをすることはなく、コンピュータが学習した結果を処理に用いることができます。
〇主な機械学習の手順
大雑把に機械学習では次の手順を踏みます。
- データを得る
2.データを準備する
3.モデルをtrainingする
4.スコアし評価する
5.予測に利用する
ここで2.のデータを準備するとは取得したデータを人の手で確認し、クリーンにすることです。 この手順がないと、同じデータとして扱うことができません。
具体的には、「生年月日」を表す手法として
・H9 9月9日
・1997年9月9日
・1997.09.09
・平成9年9月9日
・1997/09/09
のように、同じ日付でもデータの表し方には多くの表現があります。 人の目では5つのデータはすべて同じ日付であることがわかりますが、学習前の機械には5つの別々のデータとして扱われます。
これを人の手で(もしくは人の書いたプログラムで)修正する必要があります。
例として月を見ていきます。
1年は12か月ですが、ここに次のようなデータがあったとします。
これではコンピュータでは月のデータとして14つのデータを持ってしまうため、人の処理によってデータを頭文字3つで区切ることで12か月のデータにクリーンすることができます。
〇機械学習と深層学習
機械学習と似た言葉として深層学習(Deep Learning)があります。
それぞれ手段に違いはありますが、データから答えを導き出すという目的は同じです。
二つは次のように区別されます(学術的には複雑になるのでここでは大雑把にです)。
・機械学習
与えるデータに対して人が前もってクリーンな状態に処理をして学習させるもの
・深層学習
人間が行っていた作業を省き、元となるデータをそのまま与え、ニューラルネットワークを駆使するもの
〇機械学習と深層学習の使い分け
深層学習に関してはデータの量が膨大になる場合がほとんどで、膨大な計算を行う必要があるため計算能力の高いGPUなどのハードウェアが必要になります。 反面、処理の内容がニューラルネットワークでブラックボックス化されている場合もあり、機械学習は使用者が望む答え(「こうなってほしい!」)を盛り込みやすいという点もあります。
使用する環境やデータの量によって使い分けられることが一般的なようです。
〇機械学習を行うために開発者がやること
1.データの準備
2.モデルの実験とトレーニング
3.トレーニングされたモデルのデプロイ
4.デプロイされたモデルの管理
が必要となります。 これらのことをフェーズと呼びます。
ここでモデルの管理とはどのようなことを行うのかの例として「言語」で見てみます。
辞書を見てみるとわかりやすいのですが、流行語や事件、歴史的発見によって私たちが使用する言葉は日々変化しています。
これらの翻訳に機械学習を用いた場合、定期的に言葉というデータを更新しなければよい翻訳結果が得られません。
機械学習の場合、データによってはこれらのモデル管理する必要があります。
〇開発プラットフォームおよびツール
次のような環境があります。
〇Azure Cognitive Servicesとは?
・Microsoft Azure
Microsoftが開発者・企業向けに提供するクラウドサービスです。
今回学んだAzure Machine Learningだけでなく、非常に多くのサービスが提供されており、PCだけではなくスマートスピーカーなどIoT全般に利用されています。
・Azure Cognitive Servicesとは?
自然なコミュニケーション方法を使用するアプリを構築できるようにする一連のAPI群です。 数行のコードを書くだけで、見る、聞く、話す、理解する、ユーザーのニーズを解決することができるアプリを作成可能です。
〇まとめ
機械学習→事前にデータを与え特徴や傾向等を判別することで、新しいデータに対して何かしらの答えを導き出す。
深層学習→機械学習と目的は同じだが、ニューラルネットワークを用いることで人の手でデータをクリーンにせずに何かしらの答えを導き出す。