Azure MLで何かやる

2,119 views

Published on

サトヤ+プロ生勉強会@マイクロソフト 東北支店でのセッション資料です。
ポーカーの役の識別 / 熊の出没予測 / キャラクターの識別をAzure MLで実現しようと挑戦しました。

Published in: Software
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,119
On SlideShare
0
From Embeds
0
Number of Embeds
117
Actions
Shares
0
Downloads
21
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Azure MLで何かやる

  1. 1. Azure MLで何かやる 2015年5月30日 /サトヤ+プロ生勉強会@マイクロソフト 東北支店 山口 健史 (@quintia) 五十嵐 祐貴 (@bonprosoft) Microsoft MVP for .NET / MSP / サトヤ 1
  2. 2. 土下座タイム • 今回Azure MLの惨敗しました • あまり良い結果は見せられません 2
  3. 3. 自己紹介 • 五十嵐 祐貴 • 所属  Microsoft MVP for .NET April 2015  Microsoft Student Partners Fellow  サトヤ仙台  青葉山の上 • 自然言語処理の研究室でアルバイト  機械学習はあまり良く分かってません 3
  4. 4. Azure MLとは • ブラウザだけで簡単に機械学習が試せるサービス  手元で環境を整える必要が一切なし! • 数クリックで実験からデプロイまで可能  Azureの安定したプラットフォームに支えられて動きます • Azureでホストしているサービスと連携  BlobやSQL Databaseなどとも連携可能 • 様々なモジュールが手軽に扱える  Open CVやR/Pythonなども扱えます 4
  5. 5. Azure MLを使って何かやる 〜 機械学習のはなし 〜 山口健史 @quintia サトヤ+プロ生勉強会@マイクロソフト 東北支店 2015/5/30
  6. 6. わたしのこと  大学研究室で働いているエンジニア  機械学習を勉強しているわけじゃない  でも、機械学習を扱う研究室なので 門前の小僧なんとやらで 「どんな話をしているか」ぐらいは わかる(気になっている)  教科書とかチュートリアルとかを 斜め読み状態でこの場に望んでいます 6
  7. 7. 機械学習って、なに? 7
  8. 8. 機械学習って、なに?  コンピュータプログラムが、ある種のタスクTと評価 尺度Pにおいて、経験Eから学習するとは、タスクTに おけるその性能をPによって評価した際に、経験Eに よってそれが改善されている場合である  Wikipedia 機械学習のページ より  原文は Wikipedia 英語版 Machine Learning (Tom M. Mitchell) 1997 8
  9. 9. 機械学習って、なに?  アルゴリズムとして明示的に 解法が与えられないタスクに対して、 そのタスクを遂行するためのモデルを、 学習データから構築すること フリーソフトではじめる機械学習入門 (荒木 雅弘) 9
  10. 10. つまりどういうこと? 何かの タスクを 解く プログラム データ 答え 今度はもっとうまくタスクを解けるよ! 10
  11. 11. 解こうと している タスクの 問題領域 研究で普段やっていること システムの 答え 合ってる? 間違えてる? 問題領域を うまく記述できる モデル 学習用データ テストデータ これを検証する 11 繰り返す
  12. 12. 機械学習の種類 教師あり学習 Classification 識別 Regression 回帰 教師なし学習 Clustering クラスタリング Anomaly Detection 異常検出 Pattern Mining パターンマイニング 半教師あり学習 強化学習 Deep learning 深層学習 12 Distant supervision
  13. 13. 機械学習の種類 Azure ML studio のコンポーネント 教師あり学習 Classification 識別 Regression 回帰 教師なし学習 Clustering クラスタリング Anomaly Detection 異常検出 13
  14. 14. 14 識別 回帰 クラスタリング 異常検知 教師あり 学習 教師なし 学習
  15. 15. 識別  2つのクラスのどちらかに属する データの集合で学習  データを持ってきた時にどちらに 属する(可能性が高いか) を当てるタスク  もしくは識別面を 当てるタスク 怪奇!!次元の呪い : 識別問題,パターン認識,データマイニングの初心者のために(後編) 情報処理, vol.43, no.5, pp.562-567 (2002) ※彩色は引用者 http://ci.nii.ac.jp/naid/110002764383 15
  16. 16. 識別 怪奇!!次元の呪い : 識別問題,パターン認識,データマイニングの初心者のために(後編) 情報処理, vol.43, no.5, pp.562-567 (2002) ※彩色は引用者 http://ci.nii.ac.jp/naid/110002764383 こんな感じだと 思った? 16
  17. 17. 識別  2変数正規分布から発生させた 乱数のデータでした  なので「真の識別面」は2次曲線 怪奇!!次元の呪い : 識別問題,パターン認識,データマイニングの初心者のために(後編) 情報処理, vol.43, no.5, pp.562-567 (2002) http://ci.nii.ac.jp/naid/110002764383 この谷間を上から見ると 2次曲線になる(らしい) 17
  18. 18. 識別  主な手法(主な、と言いつつたくさん)  決定木  ロジスティック識別  ベイジアンネットワーク  ニューラルネットワーク  サポートベクターマシン  3クラス以上を識別する問題は 一工夫すれば ok 18
  19. 19. 19 識別 回帰 クラスタリング 異常検知 教師あり 学習 教師なし 学習
  20. 20. 回帰  数値特徴から数値特徴を出力する関数 を推定するタスク  識別とは「地と図」みたいな関係  主な手法  線形回帰  回帰木 20
  21. 21. 回帰  1次元特徴→1次元特徴の関数を推定 こう? それとも こう? 21
  22. 22. 22 識別 回帰 クラスタリング 異常検知 教師あり 学習 教師なし 学習
  23. 23. クラスタリング  教師なしデータから 「近いもの」の固まりを 見つけ出すタスク  主な手法  k-means 23
  24. 24. 異常検出  教師なしデータから 大多数の正常データ と ほとんど発生しない異常データ を分離する  クラスタリングの特殊なケースとも 考えられる 24
  25. 25. 問題を 解いてみよう 25
  26. 26. こんな題材 26
  27. 27. ポーカーの役の識別  Poker Hand Data Set  トランプのカード5枚分のデータ と それでできる役のデータ(正解) で1件分  学習用データ 25,010件  テスト用データ 1,000,000件 http://archive.ics.uci.edu/ml/datasets/Poker+Hand 27
  28. 28. ポーカーの役の識別 2 2 5 5 7 7 J J J 3 4 5 6 7 ♥ ♥ ♥ ♥ ♥ 6 6 6 Q Q 4 4 4 4 ♦ 4 ♦ 5 ♦ 6 ♦ 7 ♦ 8 ♠ 10 ♠ J ♠ Q ♠ K ♠ A ワンペア ツーペア スリーカード ストレート フラッシュ フルハウス フォアカード ストレートフラッシュ ロイヤルストレートフラッシュ 28
  29. 29. ポーカーの役の識別 識別器 ? どんな役ができた? 識別モデル 29
  30. 30. ポーカーの役の識別 識別器 ♥ J ♥ 3 ♠ 3 ♦ 8 ♣ 3 スリー カード どんな役ができた? 識別モデル 30
  31. 31. ポーカーの役の識別 2 2 5 5 7 7 ♥ ♥ ♥ ♥ ♥ 6 6 6 Q Q 4 4 4 4 ♠ 10 ♠ J ♠ Q ♠ K ♠ A ワンペア ツーペア フラッシュ フルハウス フォアカード ロイヤルストレートフラッシュ 学習器 識別モデル 正解から学習 31 学習用データ
  32. 32. さて 32
  33. 33. こう思った人が いるはず 33
  34. 34. それ 機械学習 使わなくてもいいよね? 34
  35. 35. (再掲)  アルゴリズムとして明示的に 解法が与えられないタスクに対して、 そのタスクを遂行するためのモデルを、 学習データから構築すること フリーソフトではじめる機械学習入門(荒木 雅弘) 35
  36. 36. じゃあなんでこの題材?  プログラマなら100%識別可能な ルールベースの識別器が書ける  ということはどう解くのかが分かる  機械学習が間違えた時にどうして 間違えたのかが想像できる  最初はそういう問題の方がいいのでは と思った 36
  37. 37. データの加工 0 1 0 0 1 0 0 0 0 0 …… 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 1 0 0 0 0 …… 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 …… 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 …… 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 …… 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 …… 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 1 0 0 0 0 0 0 0 …… 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 7 52個の 0/1 の2値データ 1つがカード1枚を表現 つまり1行には1が5個 0:役なし から 9:ロイヤル ストレート フラッシュ (正解データ) 1行が1つの役 37
  38. 38. 動かしてみる 38
  39. 39. Azureで予測する、宮城県の○○ 39
  40. 40. ところで… 40
  41. 41. 身近な? 全国のラーメン二郎の4sq チェックインをクロール 41
  42. 42. 身近な? _人人人人人人人_ > データ不足 <  ̄Y^Y^Y^Y^Y^Y ̄ 42
  43. 43. 身近な? 山手線各駅の チェックイン数 43
  44. 44. 身近な? 山手線各駅の チェックイン数 ⇒面白そう だがやはりデータが足りない (2週間前に始めた) 44
  45. 45. ある日のメール 45
  46. 46. Azure MLを使ってクマ出没を予測 • 「ある地点pにおいて時間tの時に、クマが出没す るかどうか」  簡単にするために、pは宮城県全体をグリッドとした時の一部とす る • 問題点  データセットの入手  熊の出没に関わる素性  学習にどのようなモデルを用いるか  熊を人が”目撃した”データからの学習である  熊にGPSが付いているわけではない 46
  47. 47. データセットの入手 47
  48. 48. ツキノワグマ出没情報 • 宮城県公式ホームページよりダウンロード可  http://www.pref.miyagi.jp/soshiki/sizenhogo/h27kumajouhou. html • H22〜H27で合計2827件の目撃情報が獲得できた • 大体の日時と大体の場所が記録 48
  49. 49. 熊の出没の条件とは? 49
  50. 50. 熊の出没条件 地形・植生的条件 気温・時間的条件 50
  51. 51. データを眺める • 気温と出没数 51
  52. 52. データを眺める • 降水量と出没数 52
  53. 53. デモ • 実際に学習させます 53
  54. 54. 熊に出会ったときは • http://www.shizenfureaikan.jp/material/images/pdf/ animals/kuma.pdf ※興奮させないことが大切です 54
  55. 55. Azureで識別する○○○○○ 55
  56. 56. みんなのアイドルと言えば…? 56
  57. 57. みんなのアイドルと言えば…? 57
  58. 58. プロ生ちゃん!!! 58
  59. 59. プロ生ちゃんが出演する漫画があるらしい • すぱこー  http://pronama.azurewebsites.net/web-comic/ • 情報処理研究会のメンバー活躍するWebコミック  http://pronama.azurewebsites.net/pronama/computer- science-club/ 59
  60. 60. Azure MLを使ってキャラ判別 • すぱこーのデータを入力した時に漫画中のキャラを識別する • 今話題のDeep Learningに近いお話 (になるはずだった) 60
  61. 61. Deep Learning • 画像の分類問題  一昔前まで  いかに画像から特徴を抽出するかがキー  抽出した特徴を素性として機械学習  今  実は生画像だけでも機械が特徴を自動的に獲得してくれる(?)  レイヤーが深くなるごとに全体的・抽象的となっていく 61
  62. 62. ConvolutionとPooling (引用: http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf ) カーネルは自動で学習 or Denoising Autoencoder やRBMでプレトレーニング 62
  63. 63. CIFAR10のCNN (引用: http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf ) 63
  64. 64. CIFAR10で学習した例 • Deep Learningでラブライブ!キャラを識別する  http://christina.hatenablog.com/entry/2015/01/23/212541 • ご注文はDeep Learningですか?  http://kivantium.hateblo.jp/entry/2015/02/20/214909 • きんいろDeepLearning  http://showyou.hatenablog.com/entry/2015/05/24/174621 64(画像は各サイトからそれぞれ引用)
  65. 65. 最高 65
  66. 66. さっそくやってみる • AzureでもDeep Learning 出来るらしい  http://gallery.azureml.net/Details/7d3f74981b5b42cd9687370 671c86696 • Multiclass Neural Networkモジュールを使用  Hidden layer specificationをCustom definition scriptに変更  言語はNet# と呼ばれるものを使う  https://azure.microsoft.com/ja- jp/documentation/articles/machine-learning-azure-ml- netsharp-reference-guide/ 66
  67. 67. 書く 67
  68. 68. 動かす 68
  69. 69. 突然のエラー _人人人人人人人人人人人人人人人人人人_ > System.NullReferenceException <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ 69
  70. 70. とりあえずデモ • します 70
  71. 71. 思うこと • Open CV Image Readerがちょっと使いにくい  扱えるImageのサイズに制限がある  正規化されない  FileNameとピクセルごとの色データしか出力されない • WebAPIのInput/Outputが少々使いにくい  画像データを渡すのが大変 • よく内部例外にあたる  どこが原因かつかみにくい 71
  72. 72. まとめ • Azure MLは手軽に機械学習が試せる研究室  Caffeなどの強力なツールもあるが、慣れていないと環境構築も大変 • クラウドの力で大規模なデータを扱える  Azure MLはAzureと連携してクラウドの利点を最大限に活かせます • まずは試してみよう!  無料で試せます  https://studio.azureml.net 72
  73. 73. 謝辞 • 本セッション中の実験・データ処理にあたって、以下の 方々に多大なご協力をいただきました。  佐々木さん ( @hikomimo)  ぺろさん ( @ThePerorist )  おぼさん ( @oboenikui )  雀さん ( @WeatherSparrow ) 73

×