第1回 機械学習の解説とセットアップ
連載第一回目の今回は、機械学習とはどのような技術か説明し、第二回では、Azure ML (Azure Machine Learning)を使って実際に学習できる環境を準備するところまで紹介したいと思います。
第1章 機械学習とは
1.1.機械学習とは「予測や判断を行うルールを見つけること」
機械学習を実装する前に、まずは機械学習とは何かについて説明したいと思います。
かつて何らかの問題をコンピュータに予測させるためには、人間が予測のルールをプログラムという形で機械に与えて、ただ「過去の経験(データ)から未来を予測させること」しかできませんでした。このような、ルールを与えて機械に判断だけ行わせる方法はルールベースと呼びます。
一方機械学習では、「過去の経験(データ)から未来を予測するルールを考えさせること」ができます。
コンピュータにルール作りを行わせると、人間がルール作りに関与しなくてよくなるので、以下のような特長があります。
l 実際のデータを元にルールを作成することができる
l 人が気づかない(考え付かない)データの特徴を捉え、ルール化することができる(可能性がある)
l 人間と違って疲れないため、時間経過とともに誤判断が増えることがない
l 高速に計算できる
l 膨大に存在する様々な情報を取り込んで予測に活用できる
こうした特長に加え、大量のデータを入力して繰り返し学習させることで、予測精度を向上させることができるようになっています。
例えば、インターネット上のファイル共有サービスでは、保管される画像データの数が膨大になったことによって画像認識の精度がよくなり、画像に写っている被写体が何であるかを見つけ出す「タグ付け」と呼ばれる機能が実現しています。また、コンピュータの処理速度の向上によって市場分析を瞬時に行うことができるようになったために、株式の高頻度取引(HFT)が普及しています。さらに弊社グループ会社においても金融・経済に特化した人工知能サービスの開発が進んでおり、日本経済新聞の記事をはじめとした膨大なデータを解析し、自然言語によって回答することを目指しています(http://www.deepocean.jp/)。
そのほかに機械学習で扱う対象としてよく用いられているものとして、以下のような分野と応用例があります。
l 時系列分析
医療データや気象データ、株価データのように時間経過とともに変化するような「時系列データ」を対象にして、過去の変動から未来を予測する
(例) 世界の地上気温の経年変化(年平均)
出典)IPCC第5次評価報告書 全国地球温暖化防止活動推進センターウェブサイト(http://www.jccca.org/)より
l 画像認識
手書き文字の認識や、顔写真をもとにした個人識別を行う
(例)手書き文字データの例
MNISTデータセットをもとに生成
l 音声認識
Microsoft社のIP電話製品である「Skype」では、発話者の音声を機械学習によって文字起こしした後に、翻訳も機械学習を用いて行うことで、通話内容を同時翻訳する機能が公開されている
l 商品推薦
オンラインショッピングサイトにおいて、ユーザー自身や他のユーザーの過去の行動履歴をもとに、ユーザーが次に購入すると予測された商品を表示する
1.2.教師あり学習と教師なし学習
機械学習は、正答が分かっているデータを使用する教師あり学習と、正答が分かっていないデータを使用する教師なし学習の2つに分類されます。
教師あり学習の1つである「クラス分類」と、教師なし学習の1つである「クラスタリング」のそれぞれでデータを複数のまとまりに分割する場合を考えてみましょう。前者は、事前に分割するためのルールを作っておき、そのルールを忠実に再現するように分類します。事前にルールを作成するために、データと一緒に正答(ラベルと呼ぶ)も人間が教えておく(ラベル付けと呼ぶ)必要があり、データ量が多くなるとコストがかかるというデメリットがあるものの、分割されたまとまりのそれぞれがどのような意味を持つのかを予め指定しておくので、結果が明確になるというメリットがあります。
一方教師なし学習は、全体の中でデータ同士が似ているものを集めることで、最終的に分割された状態になるというものです。予めデータにラベル付けを行っておかずに済むメリットがあるものの、それぞれのまとまりがどのような意味を持つのかを示す解答ラベルが出力されないため、得られた結果を人間が解釈しなければならないというデメリットがあります。
例として動物を、まとまりに分割する場合を考えます。クラス分類の場合はそれぞれのまとまりが「種類」を表しますが、クラスタリングの場合はそれぞれのまとまりが何を表しているのかは機械学習の過程では分かりません。
まず、クラス分類の場合は、予め与えられた動物の種類ごとの体長、体重、首の長さ、といった正答データをもとに、それぞれの値がどうであればどの種類なのかを表現するルールを作っておきます。次に、分類したいデータを投入し、作っておいたルールと比較して分類を行い、種類名を出力します。
一方、クラスタリングの場合は、事前のルール作りがなく、いきなり分類したいデータを持ってきて、他のデータとどれくらい似ているかを見たあと、似たもの同士のデータは近い場所に、そうでないものは遠い場所になるように移動していきます。
教師あり学習(クラス分類)と教師なし学習(クラスタリング)を行った結果のイメージを以下の表に示します。教師あり学習の場合はそれぞれのデータとともに分類先の種類名も出力されるため、分類結果が明確に分かります。このようなまとまりのタイトルのことをラベルと呼びます。
一方、教師なし学習の場合はクラス分類とは異なり、分割されたそれぞれのまとまりに対してラベルが出力されないため、人がそれぞれのまとまりの持つ意味合いを、含まれる個別のデータを見て推定しなければなりません。例えば下の例①であれば、水中にいる動物のまとまりと陸上にいる動物のまとまりに分割されていると考えられますし、例②であれば、鳥のまとまりと哺乳類のまとまりに分割されていると考えられます。しかし、投入しているデータによっては「寿命」や「移動速度」によってまとめられた可能性もあり、本当にそれらの推測が正しいかどうか、どうしてその分割方法になったのかは、別途処理の経過を見る必要があります。
実際には、ラベルが全く出力されないわけではなく、連番などの形で区別だけはできるようになっていますが、それ単体で意味を把握できないことは前に述べたとおりです。
1.3.機械学習とデータマイニングとの違い
機械学習とよく似た技術として、データマイニングがあります。機械学習とデータマイニングは対象としている領域がかなり重複していますが、機械学習は過去のデータから未来を「予測」することに重きを置いているのに対して、データマイニングは過去のデータを「説明」することに重きを置いています。そのことが顕著に現れているのが、近年話題となっているDeep Learningです。予測過程がブラックボックスとなっておりデータのどのような特徴をもとに結果を求めたのかという説明がし難い代わりに、精度よく予測を行うことができます。また、機械学習の場合は、学習も予測もコンピュータが行わないと機械学習と呼びませんが、データマイニングの場合はコンピュータが分析していなくてもデータマイニングと呼ぶ、という違いがあります。とはいえ、回帰分析による予測をデータマイニングと呼ぶ例や、データマイニングの結果に対して交差検証法を用いて未知のデータに対する精度を求める例もあるため、厳密に分けることはできません。
第2章 Azure MLを使ったテスト環境の準備
これまで機械学習について概要を説明してきましたが、本章からは実際に機械学習を使って予測を行わせてみます。予測には、Microsoft社によって提供されているAzure Machine Learning(以下AzureML)というサービスを利用します。これはクラウドサービスですので、ハイスペックなPCやサーバを用意する必要がなく、余計なソフトウェアを用意しなくてもブラウザさえあれば誰でも機械学習を行うことができます。また、基礎的な予測サービスであればソースコードを書くことなく素早く機械学習させることができます。また、発展的な予測サービスを作りたくなった際には、プログラミング言語を利用して拡張することもできるという柔軟性も備えています。本章では、Azure M Lを使い始める際の操作手順について紹介していきます。
無料で試すことができるプランがありますので、2種類の操作方法を紹介していきます。
2.1.無料で試す場合(Free Workspaceでのスタートアップ)
Free Workspaceは無料ではあるものの大きな制限は無く、Webサービスを公開したり、ソースコードを自分で書くことで機能を拡張したりすることが可能です。
まずは、ユーザー登録を行います。https://studio.azureml.net/にアクセスして、「Sign Up」ボタンをクリックします。
「Free Workspace」の枠の中の「Sign In」をクリックします。
Microsoftアカウントのメールアドレスとパスワードを入力し、「サインイン」ボタンをクリックします。
※Microsoftアカウントが無い方は、事前にアカウント登録を行ってください。
2.2.無料で試す場合(MSDNサブスクリプションでのスタートアップ)
次に開発者が持っている可能性が高い、MSDNサブスクリプションでの利用方法を紹介していきます。My Visual StudioのWebサイトでAzureをアクティブ化すると、Machine Learningサービスを使用することができます。場合によっては、サブスクリプション特典のAzureクレジットを使用することができるかもしれません。
まず、https://my.visualstudio.com/benefitsへアクセスし、Azureの枠の中の「Activate」ボタンをクリックします。
自動的にサインアップ画面へ移動するので、ユーザー情報を入力後、「サインアップ」ボタンをクリックします。
「Microsoft Azureへようこそ」画面から、「サブスクリプションの準備が整いました」と書かれた画面へ自動的に移動するので、「サービスの管理を開始する>」ボタンをクリックします。
Azureダッシュボードが表示されます。「その他のサービス>」をクリック後、「Machine Learning ワークスペース」をクリックします。
「+追加」ボタンをクリックします。
必須項目を入力後、「作成」ボタンをクリックします。
2.3.プロジェクトの作成
これまでに紹介した2つのどちらかで、AzureMLが利用可能になっているかと思います。
次に機械学習を行わせるベースとなる、「プロジェクト」を作成していきます。
プロジェクトは実験と呼ばれる機械学習のモジュール等をツリー化したものを入れるフォルダのようなものです。
それではプロジェクトを作成してみます。
「Projects」タブを開いて、「Create project」をクリックします。
プロジェクトの名前と説明を入力して、「☑OK」ボタンをクリックします。
プロジェクトが作成されました。
これで機械学習を行うための箱までできましたので第1回目はここまでといたします。
次回からは作成したプロジェクト内に実際に学習内容を記述して、機械学習を行ってみようと思います。