Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

機械学習 (AI/ML) 勉強会 #1 基本編

435 views

Published on

2019/02/13
AI/ML (Machine Learning: 機械学習) 勉強会 資料

1. 機械学習 (Machine Learning) とは
2. ニューラル ネットワークとは
3. デモ
- Microsoft Cognitive Services
- C# / Python による機械学習
- Azure Machine Learning Studio

Published in: Technology
  • Be the first to comment

機械学習 (AI/ML) 勉強会 #1 基本編

  1. 1. 機械学習勉強会 #1 基本編 2019年2月13日 小島 富治雄
  2. 2. 1. 機械学習 (Machine Learning) とは 2. ニューラル ネットワークとは 3. デモ  Microsoft Cognitive Services  C# / Python による機械学習  Azure Machine Learning Studio 本日ご紹介する内容 1
  3. 3.  AI61『C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう』  de:code 2018  de:code 2018 Online Microsoft de:code 2018 や日本マイクロソフト 大阪支店で話した内容 2
  4. 4. 人間の知能の一部をコンピュータで再現する技術 人工知能 (Artificial Intelligence) とは 3
  5. 5. “ドローンで建設現場を撮影、AzureでAI解析”も可能に ―― 建設IoTプラットフォーム「LANDLOG」が「Microsoft Azure」を採用 4
  6. 6. NSW、DJI、日本マイクロソフトが ドローンと AI を活用した建築物メンテナンスサービスの開発で協業 5
  7. 7. 建築 AI - Google 検索  AIは建築設計者の敵か味方か | 日経 xTECH  AIを活用した建築業界の技術を分かりやすく説明 | 世界の最新科学技術  AIが発達するこの先の未来における建築や都市計画の中で奪われる仕事、新たな職能 | ものまちぐらし  10+1 web site | 建築のAIはバベルの塔か | テンプラスワン・ウェブサイト  AI は、都市デザインを根本から変える<山梨知彦氏> | 建築×コンピュテーションのポータルサイト Archi Future Web  10年後に無くなる建築の仕事を考えてみた | あいつ、建築辞めるってよ。  AI (人工知能) で住宅建築の間取り設計はいつから自動化されるのか? 建築とAI 6
  8. 8.  LIFULLのAI戦略、予測分析はマーケティングをどう変えるのか?  DataRobot シバタアキラ氏と大阪ガス 河本 薫氏が語る「AIの民主化」  ピザハット、宅配待ち時間削減へAIベンチャーのGAUSSとデータ解析の取り組みを開始  人工知能で記者が欲しい情報を表示、PR TIMESが「リリースAI受信」を提供開始  GMO NIKKO、アフィリエイト広告向けのアドベリフィケーション機能を開発  Adobe、人工知能で検索エンジンマーケティングのROIを改善する「Adobe Advertising Cloud Search」を提供  Appier、AIプラットフォーム「AIXON」にオーディエンスのセグメンテーション予測機能を追加 AI がビジネスを変える 7
  9. 9. 機械学習 (Machine Learning) とは 8
  10. 10. 人工知能の歴史 9 第1次 AIブーム 第3次 AIブーム 第2次 AIブーム 冬の時代 冬の時代 シンギュラリティ の恐怖 ワトソン 将棋の電王戦 ディープ ラーニング 機械学習 1960年代 1970年代 1980年代 1990年代 2000年代 2010年代 『人工知能は人間を超えるか ディープラーニングの先にあるもの』(松尾豊)
  11. 11. 一部で AI が人間に追いついた 認識の正確さ 自動運転の事故率の低さ 将来的に、人間が認識できるものは 認識できる可能性 第3次 AIブーム 10
  12. 12. 人工知能の一分野 コンピュータプログラムが経験、 学習を行う 機械学習とは 11
  13. 13. 機械学習 (Machine Learning) ディープラーニング (深層学習: Deep Learning) 強化学習 (Reinforcement Learning) 深層強化学習 (Deep Reinforcement Learning) 機械学習の種類 12
  14. 14.  アルゴリズムを自分で考えプログラミングを行うのではなく、 大きなデータから統計的に解を求める  例. 株価予想  通常の開発 株価予想アルゴリズムを考え、それをプログラミング  機械学習 たくさんの株価のデータ → 機械に学習させる ニューラルネットワークなどを使用 → 学習済みの機械が株価予想を行う 機械学習 13
  15. 15. 機械学習の一種 通常のものと違って多層になった ニューラルネットワークを使用 画像解析や音声認識、自然言語理解、 翻訳など、複雑な処理にはこちら 作成のハードルは、かなり高い 高いコンピュータ パワーが求められるため、 CPUだけでなく GPUも利用 ディープラーニング (深層学習: Deep Learning) 14
  16. 16. ディープ ラーニング ニューラル ネットワーク ディープ ラーニング 15 多層
  17. 17. 機械学習の一種 通常の機械学習では、たくさんのパラメーターと 正解をデータとして与え、それを統計的に解析 (学習) することにより、新たなパラメーターから 正解を導けるようになるが、強化学習は、 はっきりとした正解がないような場合に用いられる 強化学習 (Reinforcement Learning) 16
  18. 18. ディープラーニングを用いた強化学習 プロ棋士に勝ったことで有名な「アルファ碁」など のゲームのAIや自動運転技術などで利用 深層強化学習 (Deep Reinforcement Learning) 17
  19. 19. 人工知能と機械学習 人工知能 (AI) 機械学習 (ML) Deep Learning 18
  20. 20. 数学 線形代数 統計 多変量解析 機械学習に必要な基礎知識 19
  21. 21. プログラミング言語 Python R言語 etc… 機械学習に必要な基礎知識 20
  22. 22. 1. Python 2. Java 3. R 4. C++ 5. C 6. JavaScript 7. Scala 8. Julia 機械学習で使われるプログラミング言語 21 What is the Best Programming Language for Machine Learning Tasks? | Machine Learning Ai Python Java Programming
  23. 23. 参考: AI プロジェクトには、どんなロールが必要か 22 ロール名 ロール 必要なスキル 人材登用 AI ディレクター AI/MLをビジネスのどこに 活用するか ビジネス 社内 AI プロジェクト マネージャー データ分析の視点での戦略 ビジネス/IT/ データ分析 社内 シニア データ サイエンティスト 分析方法 データ分析 外部委託 | 社内育成 データ サイエンティスト ML を適用 データ分析/ プログラミング 外部委託 | 社内育成
  24. 24. ビジネス課題ありき データありき AI/ML はツールに過ぎない 専門家まかせにしない リスクの許容 参考: AI プロジェクトのチェックポイント 23
  25. 25. Microsoft Cognitive Services Web API 経由で利用でき る “人口知能パーツ” ML のモデルを自作せずに、 成果を手軽に利用可 24
  26. 26. 例. Cognitive Services Fase API Cognitive Services で実現可能なシナリオ 25 顔検知 顔照合 感情解析 来店者数 検知・識別 顧客層 要注意人物 新規/リピーター 接客 顧客の表情 シナリオ 店員配置最適化 品揃え最適化 万引き防止 リピート率把握 接客品質向上 顧客満足度評価
  27. 27. Cognitive Services Face API を使った 「アロバビューコーロ」 売上データ、気象、曜日、ディスプレイ、男女比率、 入店率などのデータから、来客予測 例. 創業100年の老舗に学ぶAI活用の極意 「Webiya System with Aroba View Koro」 26 リアル店舗の経営を コグニティブで科学する ~伊勢の老舗店「ゑびや」の挑戦~ | CNET Japan
  28. 28. 例. 顔の特徴や感情に合わせて商品やサービスの広告を出しわけるアウトドアメディア 「Face Targeting AD」 27 博報堂、博報堂アイ・スタジオ、日本マイクロソフト、AI を活用した ターゲティング広告配信システムのプロトタイプ開発で連携 | News Center Japan
  29. 29. Speech to Text Speaker Recognition 音声文字起こし 話者識別/認証 Text to Speech Speech Translation テキスト読み上げ 音声の翻訳 Speech | 音声 28 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  30. 30. Text Analytics Translator Text Bing Spell Check テキストの分析 テキストの翻訳 スペルチェック Content Moderator Language Understanding 不快感を与えるコンテンツの モデレート 言語理解 Language | 言語 29 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  31. 31. QnA Maker Q&A 抽出 Knowledge | 知識 30 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  32. 32. Bing Web Search Bing Visual Search Bing Custom Search Bing Entity Search Web 検索 よく似た画像の識別 カスタム検索エンジン 名前付きエンティティの 認識と分類 Bing Video Search Bing News Search Bing Image Search Bing Autosuggest ビデオ検索 ニュース検索 画像検索 検索クエリのオートコン プリート Search | 検索 31 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  33. 33. Computer Vision Face Video Indexer 画像情報の読み取り 顔認識 ビデオ内のオブジェクト検出 Content Moderator Custom Vision 不快感を与える画像やビデオの モデレート 画像認識 Vision | 視覚 32 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  34. 34. Computer Vision Analyze 33https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/
  35. 35. Computer Vision API Demo 34
  36. 36. Computer Vision API 35 function onImageUrlButtonClick() { $('#imageUrlButton').attr("disabled", true); $('#result').html(''); $('#image').html(''); var endpoint = ’https://japanwest.api.cognitive.microsoft.com/vision/v1 .0’; var subscriptionKey = ‘[SubscriptionKey]’; var params = { ‘visualFeatures’: ‘Description, Faces’, ‘details’: "", ‘language’: ‘en’, }; var imageUrl = $('#imageUrlTextBox').val(); $.ajax({ url: endpoint + ’/analyze?’ + $.param(params), beforeSend: function (xhrObj) { xhrObj.setRequestHeader(‘Content- Type’, ’application/json’); xhrObj.setRequestHeader(‘Ocp-Apim- Subscription-Key’, subscriptionKey); }, type: ’POST’, data: '{"url": ' + '"' + imageUrl + '"}', success: function (predictions) { $('#result').html( predictionsToHtml(predictions)); var captionText = getCaptionText( predictions.description.captions); $('#image').html(imageUrlToHtml( imageUrl, captionText)); }, error: function () { $('#result').html('<span>エラー: 結果を取得で きませんでした。</span>'); }, complete: function () { $('#imageUrlButton').attr("disabled", false); } }); }
  37. 37. Custom Vision Service Demo 36
  38. 38. Custom Vision Service 37 (1) (2)
  39. 39. Custom Vision Service 38 (1) (2)
  40. 40. Custom Vision Service 39
  41. 41. Custom Vision API (JavaScript で利用) 40 function onImageUrlButtonClick() { $('#imageUrlButton').attr("disabled", true); $('#result').html(''); $('#image').html(''); var postUrl = 'https://southcentralus.api.cognitive.microsoft.com /customvision/v2.0/Prediction/[ProjectId]/url’; var predictionKey = ‘[PredictionKey]’; var imageUrl = $('#imageUrlTextBox').val(); var data = { 'Url': imageUrl }; $.ajax({ type: ’post’, url: postUrl, data: JSON.stringify(data), headers: { 'Prediction-key': predictionKey, 'Content-Type': 'application/json' }, dataType: "json", success: function (json_data) { $('#result').html(predictionsToHtml( json_data.predictions)); $('#image').html( imageUrlToHtml(imageUrl)); }, error: function () { $('#result').html('<span>エラー: 結果を 取得できませんでした。</span>'); }, complete: function () { $('#imageUrlButton’) .attr("disabled", false); } }); }
  42. 42. Custom Vision API (C#で利用) 41 public static IEnumerable<(string, double)> PredictImageUrl(string imageUrl) { if (!string.IsNullOrWhiteSpace(imageUrl)) { const string predictionKey = “[PredictionKey]"; var projectId = new Guid(“[ProjectId]"); var endpoint = new PredictionEndpoint { ApiKey = predictionKey }; var predictResult = endpoint.PredictImageUrl(projectId, new ImageUrl(imageUrl)); return predictResult.Predictions.Select(prediction => (prediction.Tag.ToString(), prediction.Probability)); } return new (string, double)[] {}; } NuGet:
  43. 43. 参考: Custom Vision で作成したモデルを Windows ML やモバイルで利用 42https://docs.microsoft.com/ja-jp/azure/cognitive-services/custom-vision-service/custom-vision-onnx-windows-ml
  44. 44. ニューラル ネットワークとは 43
  45. 45. 神経細胞のネットワーク 44
  46. 46. 神経細胞のネットワークを模倣 ニューラル ネットワーク 入力 入力 ・・ ・ 出力 出力 ・ ・・ ・ ・ ・ ・ ・ ・ ・・・ ニューロン 入力層 中間層 出力層 45
  47. 47. 個々のニューロン ニューロン 出力 入力 入力 ・・・ 入力 バイアス 46
  48. 48. 神経細胞が入力の合計を出力 にするときの性質をモデル化 シグモイド関数 47
  49. 49. ニューラル ネットワークによる分類 48
  50. 50. 今回作成するニューラル ネットワーク 入力 入力 出力 ニューロン 入力層 中間層 出力層 バイアス 重み 49
  51. 51. 今回のニューラル ネットワークの訓練 正解ー 1. 重みの修正 2. 重みの修正 入力 入力 ニューロン 入力層 中間層 出力層 バイアス 重み 出力 50
  52. 52. Demo 51
  53. 53.  「C# でニューラルネットワークをフルスクラッチで書いて機械学習の原理を理解しよう」 for Microsoft de:code 2018 AI sessions https://github.com/Fujiwo/CSharpNeuralNetworkSample-AI-decode サンプル ソース コードのご紹介 52
  54. 54. public class Neuron // ニューロン { double sum; public double Value { get; private set; } = 0.0; public void Input(IEnumerable<Input> inputData) { inputData.ForEach(input => Input(input.WeightingValue)); Value = Math.Sigmoid(sum); } void Input(double value) => sum += value; } C# によるニューロンの実装 53
  55. 55. C# によるニューラル ネットワークの実装 public class NeuralNetwork // ニューラル ネットワーク { // 各層 double[] inputLayer; Neuron[] middleLayer; Neuron outputLayer; // バイアス double inputLayerBias = 1.0; double middleLayerBias = 1.0; // 各層の重み // 入力層 → 中間層の重み double[,] inputWeight = new double[,] { { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 } }; // 中間層 → 出力層の重み double[] middleWeight = new[] { 0.0, 0.0, 0.0 }; 54
  56. 56. C# によるニューラル ネットワークの実装 (続き) // 実行 public double Commit((double, double) data) { // 各層 inputLayer = new[] { data.Item1, data.Item2, inputLayerBias }; middleLayer = new[] { new Neuron(), new Neuron() }; outputLayer = new Neuron(); // 入力層→中間層 middleLayer.For((index, neuron) => middleLayer[index].Input(ToInputData(inputLayer, inputWeight.GetColumn(index).ToArray()))); // 中間層→出力層 outputLayer.Input(new[] { new Input { Value = middleLayer[0].Value, Weight = middleWeight[0] }, new Input { Value = middleLayer[1].Value, Weight = middleWeight[1] }, new Input { Value = middleLayerBias , Weight = middleWeight[2] } }); return outputLayer.Value; } 55
  57. 57. C# によるニューラル ネットワークの実装 (続き) // 学習 void Learn((double, double, double) data) { var outputData = Commit((data.Item1, data.Item2)); var correctValue = data.Item3; var learningRate = 0.3; // 学習係数 // 出力層→中間層 // δmo = (出力値 - 正解値) × 出力の微分 var daltaMO = (correctValue - outputData) * outputData * (1.0 - outputData); var oldMiddleWeight = middleWeight.Clone() as double[]; // 修正量 = δmo × 中間層の値 × 学習係数 middleLayer.For((index, neuron) => middleWeight[index] += neuron.Value * daltaMO * learningRate); middleWeight[2] += middleLayerBias * daltaMO * learningRate; // 中間層→入力層 // δim = δmo × 中間出力の重み × 中間層の微分 var deltaIM = middleLayer.IndexSelect(index => daltaMO * oldMiddleWeight[index] * middleLayer[index].Value * (1.0 - middleLayer[index].Value)).ToArray(); // 修正量 = δim × 入力層の値 × 学習係数 inputWeight.For((row, column, _) => inputWeight[row, column] += inputLayer[row] * deltaIM[column] * learningRate); } 56
  58. 58. C# によるニューラル ネットワークの実装 (続き) // 学習 public void Learn(IEnumerable<(double, double, double)> dataCollection, int times) => times.Times(() => dataCollection.ForEach(data => Learn(data))); static IEnumerable<Input> ToInputData(double[] inputLayer, double[] inputWeight) => inputLayer.IndexSelect(index => new Input { Value = inputLayer[index], Weight = inputWeight[index] }); } 57
  59. 59. 58
  60. 60. 実行結果 (シグモイド関数) 59
  61. 61. 実行結果 (座標データと訓練前) 60
  62. 62. 実行結果 (教師データと訓練後) 61
  63. 63. 訓練前の重みの値 62
  64. 64. 訓練後の重みの値 63
  65. 65. 2値による分類 (Classification) 64 Longitude 136 Latitude 36 Longitude Latitude ➢ 一般的なアルゴリズムで 解くことはむつかしい ➢ 二次元だとこんな感じ ➢ 二次元の線で分けられる ➢ N次元に一般化すると? ➢ N次元空間の面で分ける ➢ 数学的には、テンソル (N次元の値の集まり) の流れ (tensor flow) で考えることができる
  66. 66. 機械学習用の ライブラリー Microsoft Cognitive Toolkit 65
  67. 67. 機械学習のライブラリー 66 Google 製 ディープラーニング用 Preferred Networks (日本の企業) 製 ディープラーニング用 BVLC (カリフォルニア大学) 製 ディープラーニング用 Google 製 機械学習一般用 Microsoft Cognitive Toolkit Microsoft 製 ディープラーニング用
  68. 68. CPU と GPU 67 コア数 得意分野 本来の用途 CPU 2, 4, 8, 16, … 直列処理 演算 GPU 数千 並列処理 画像処理 ディープラーニングは並列処理だらけ
  69. 69. 機械学習とGPU 68 ○ GPU対応版あり ○ ライブラリーの導入で対応可 ○ ライブラリーの導入で対応可 × Microsoft Cognitive Toolkit ○ GPU対応版あり
  70. 70. 文字認識 (Python版) 69 Demo Python のライブラリー scikit-learn を用いて、 数字の認識を行う
  71. 71. Python のライブラリー scikit-learn を用いて、 株価の予想を行う 株価予想 (Python版) 70 Demo
  72. 72.  「Microsoft Azure Machine Learning Studio による株価予想チュートリアル」 for Microsoft de:code 2018 AI sessions https://github.com/Fujiwo/PredictStockPrice-AI-decode サンプル チュートリアルのご紹介 71
  73. 73. Azure Machine Learning Studio 72
  74. 74. 機械学習 (Machine Learning) 73 例. Azure SQL Database クラウドに保存 例. Azure Machine Learning Studio 機械学習で解析! データをクラウドに かき集める Python による データの最適化 API アプリケーションや Azure Functions などで利用
  75. 75. Azure SQL Database 74
  76. 76. 75 Azure SQL Database
  77. 77. Azure Machine Learning Studio を用いて、 株価の予想を行う 株価予想 (Azure Machine Learning Studio版) 76 Demo
  78. 78. 77
  79. 79. IBM Cloud https://cloud.ibm.com https://console.bluemix.net IBM Watson Watson Studio 参考: IBM Cloud 78
  80. 80. 参考: Google Cloud ML Engine 79https://cloud.google.com/ml-engine/
  81. 81. AWS https://aws.amazon.com https://console.aws.amazon.com Amazon SageMaker 参考: AWS (Amazon Web Service) 80
  82. 82. 1. 機械学習 (Machine Learning) とは 2. ニューラル ネットワークとは 3. 実際の例  Microsoft Cognitive Services  C# / Python による機械学習  Azure Machine Learning Studio まとめ: 本日ご紹介した内容 81
  83. 83. IoT デバイス マシンラーニング スタジオ マシンラーニング API ストリーム アナリティクスIoT ハブ Microsoft Azure SQL データベース SQL データベース パワー BI CSV データ MQTT HTTP Web ブラウザー 【開発者向け勉強会】 AI/機械学習 勉強会 #2 AzureML/IoT編 2月27日(水)など 次回予告 82
  84. 84. 参考書籍 83 機械学習入門 ボルツマン機械学習から深層学習まで ¥2,484 あたらしい人工知能の教科書 プロダクト/サービス開発に必 要な基礎知識 ¥2,808 Pythonで動かして学ぶ! あたらしい機械学習の教科書 ¥2,894 詳解 ディープラーニング TensorFlow・Kerasによる時系 列データ処理 ¥3,672 ゼロから作るDeep Learning ―Pythonで学ぶディープ ラーニングの理論と実装 ¥3,672 Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴 量エンジニアリングと機械学習の基礎 ¥3,672 やさしく学ぶ 機械学習を理解するための数学のきほん ~ア ヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで ~ ¥2,786

×