Upgrade to Pro — share decks privately, control downloads, hide ads and more …

機械学習 (AI/ML) の基礎と Microsoft の AI

機械学習 (AI/ML) の基礎と Microsoft の AI

・ Global AI Nights Fukui (2019/04/02)
https://connpass.com/event/123614/
https://global.ainights.com

・ 機械学習 (AI/ML) の基礎とMicrosoft の AI
- 機械学習 (Machine Learning) とは
- ニューラル ネットワークとは
- Microsoft Cognitive Services
- C# / Python による機械学習
- Azure Machine Learning Studio

Fujio Kojima

April 01, 2019
Tweet

More Decks by Fujio Kojima

Other Decks in Technology

Transcript

  1. 1. 機械学習 (Machine Learning) とは 2. ニューラル ネットワークとは 3. デモ

     Microsoft Cognitive Services  C# / Python による機械学習  Azure Machine Learning Studio 本日ご紹介する内容 8
  2. 建築 AI - Google 検索  AIは建築設計者の敵か味方か | 日経 xTECH

     AIを活用した建築業界の技術を分かりやすく説明 | 世界の最新科学技術  AIが発達するこの先の未来における建築や都市計画の中で奪われる仕事、新たな職能 | ものまちぐらし  10+1 web site | 建築のAIはバベルの塔か | テンプラスワン・ウェブサイト  AI は、都市デザインを根本から変える<山梨知彦氏> | 建築×コンピュテーションのポータルサイト Archi Future Web  10年後に無くなる建築の仕事を考えてみた | あいつ、建築辞めるってよ。  AI (人工知能) で住宅建築の間取り設計はいつから自動化されるのか? 建築とAI 13
  3.  LIFULLのAI戦略、予測分析はマーケティングをどう変えるのか?  DataRobot シバタアキラ氏と大阪ガス 河本 薫氏が語る「AIの民主化」  ピザハット、宅配待ち時間削減へAIベンチャーのGAUSSとデータ解析の取り組みを開始 

    人工知能で記者が欲しい情報を表示、PR TIMESが「リリースAI受信」を提供開始  GMO NIKKO、アフィリエイト広告向けのアドベリフィケーション機能を開発  Adobe、人工知能で検索エンジンマーケティングのROIを改善する「Adobe Advertising Cloud Search」を提供  Appier、AIプラットフォーム「AIXON」にオーディエンスのセグメンテーション予測機能を追加 AI がビジネスを変える 14
  4. 人工知能の歴史 17 第1次 AIブーム 第3次 AIブーム 第2次 AIブーム 冬の時代 冬の時代

    シンギュラリティ の恐怖 ワトソン 将棋の電王戦 ディープ ラーニング 機械学習 1960年代 1970年代 1980年代 1990年代 2000年代 2010年代 『人工知能は人間を超えるか ディープラーニングの先にあるもの』(松尾豊)
  5.  アルゴリズムを自分で考えプログラミングを行うのではなく、 大きなデータから統計的に解を求める  例. 株価予想  通常の開発 株価予想アルゴリズムを考え、それをプログラミング 

    機械学習 たくさんの株価のデータ → 機械に学習させる ニューラルネットワークなどを使用 → 学習済みの機械が株価予想を行う 機械学習 21
  6. 機械学習でできること 27 回帰分析 (Regression) クラス分類 (Classification) クラスタリング (Clustering) 異常検知 (Anomaly

    Detection) 数値を予測 あらかじめ決められた 種類に分類 似たデータごとに分類 異常の検知 ・売上予測 ・手書き文字認識 ・スパムメール検出 ・市場調査 ・物体認識 ・橋やトンネル、電線、 配管の異常の検知 ・製品、農作物の異常を 検知
  7. 1. Python 2. Java 3. R 4. C++ 5. C

    6. JavaScript 7. Scala 8. Julia 機械学習で使われるプログラミング言語 30 What is the Best Programming Language for Machine Learning Tasks? | Machine Learning Ai Python Java Programming
  8. 参考: AI プロジェクトには、どんなロールが必要か 31 ロール名 ロール 必要なスキル 人材登用 AI ディレクター

    AI/MLをビジネスのどこに 活用するか ビジネス 社内 AI プロジェクト マネージャー データ分析の視点での戦略 ビジネス/IT/ データ分析 社内 シニア データ サイエンティスト 分析方法 データ分析 外部委託 | 社内育成 データ サイエンティスト ML を適用 データ分析/ プログラミング 外部委託 | 社内育成
  9. 例. Cognitive Services Fase API Cognitive Services で実現可能なシナリオ 34 顔検知

    顔照合 感情解析 来店者数 検知・識別 顧客層 要注意人物 新規/リピーター 接客 顧客の表情 シナリオ 店員配置最適化 品揃え最適化 万引き防止 リピート率把握 接客品質向上 顧客満足度評価
  10. Cognitive Services Face API を使った 「アロバビューコーロ」 売上データ、気象、曜日、ディスプレイ、男女比率、 入店率などのデータから、来客予測 例. 創業100年の老舗に学ぶAI活用の極意

    「Webiya System with Aroba View Koro」 35 リアル店舗の経営を コグニティブで科学する ~伊勢の老舗店「ゑびや」の挑戦~ | CNET Japan
  11. Speech to Text Speaker Recognition 音声文字起こし 話者識別/認証 Text to Speech

    Speech Translation テキスト読み上げ 音声の翻訳 Speech | 音声 37 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  12. Text Analytics Translator Text Bing Spell Check テキストの分析 テキストの翻訳 スペルチェック

    Content Moderator Language Understanding 不快感を与えるコンテンツの モデレート 言語理解 Language | 言語 38 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  13. 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 | 検索 40 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  14. Computer Vision Face Video Indexer 画像情報の読み取り 顔認識 ビデオ内のオブジェクト検出 Content Moderator

    Custom Vision 不快感を与える画像やビデオの モデレート 画像認識 Vision | 視覚 41 https://azure.microsoft.com/ja-jp/services/cognitive-services/
  15. Computer Vision API 44 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); } }); }
  16. Custom Vision API (JavaScript で利用) 49 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); } }); }
  17. Custom Vision API (C#で利用) 50 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:
  18. 神経細胞のネットワークを模倣 ニューラル ネットワーク 入力 入力 ・ ・ ・ 出力 出力

    ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ニューロン 入力層 中間層 出力層 54
  19. 今回のニューラル ネットワークの訓練 正解 ー 1. 重みの修正 2. 重みの修正 入力 入力

    ニューロン 入力層 中間層 出力層 バイアス 重み 出力 59
  20. 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# によるニューロンの実装 64
  21. C# によるニューラル ネットワークの実装 public class NeuralNetwork // ニューラル ネットワーク {

    // 各層 double[] inputLayer; Neuron[] middleLayer; Neuron outputLayer; // バイアス double inputLayerBias = 1.0; double middleLayerBias = 1.0; // 各層の重み // 入力層 → 中間層の重み double[,] inputWeight = new double[,] { { RandomWeight, RandomWeight }, { RandomWeight, RandomWeight }, { RandomWeight, RandomWeight } }; // 中間層 → 出力層の重み double[] middleWeight = new[] { RandomWeight, RandomWeight, RandomWeight }; 65
  22. 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; } 66
  23. 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); } 67
  24. 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] }); readonly static Random random = new Random(); const double weightRange = 10.0; static double RandomWeight => (random.NextDouble() - 0.5) * weightRange; } 68
  25. 69

  26. 2値による分類 (Classification) 75 Longitude 136 Latitude 36 Longitude Latitude ➢

    一般的なアルゴリズムで 解くことはむつかしい ➢ 二次元だとこんな感じ ➢ 二次元の線で分けられる ➢ N次元に一般化すると? ➢ N次元空間の面で分ける ➢ 数学的には、テンソル (N次元の値の集まり) の流れ (tensor flow) で考えることができる
  27. 機械学習のライブラリー 77 Google 製 ディープラーニング用 Preferred Networks (日本の企業) 製 ディープラーニング用

    BVLC (カリフォルニア大学) 製 ディープラーニング用 Google 製 機械学習一般用 Microsoft Cognitive Toolkit Microsoft 製 ディープラーニング用
  28. CPU と GPU 78 コア数 得意分野 本来の用途 CPU 2, 4,

    8, 16, … 直列処理 演算 GPU 数千 並列処理 画像処理 ディープラーニングは並列処理だらけ
  29.  「Microsoft Azure Machine Learning Studio による株価予想チュートリアル」 for Microsoft de:code

    2018 AI sessions https://github.com/Fujiwo/PredictStockPrice-AI-decode サンプル チュートリアルのご紹介 82
  30. 機械学習 (Machine Learning) 84 例. Azure SQL Database クラウドに保存 例.

    Azure Machine Learning Studio 機械学習で解析! データをクラウドに かき集める Python による データの最適化 API アプリケーションや Azure Functions などで利用
  31. 88

  32. 1. 機械学習 (Machine Learning) とは 2. ニューラル ネットワークとは 3. 実際の例

     Microsoft Cognitive Services  C# / Python による機械学習  Azure Machine Learning Studio まとめ: 本日ご紹介した内容 92
  33. 参考書籍 93 機械学習入門 ボルツマン機械学習から深層学習まで ¥2,484 あたらしい人工知能の教科書 プロダクト/サービス開発に必 要な基礎知識 ¥2,808 Pythonで動かして学ぶ!

    あたらしい機械学習の教科書 ¥2,894 詳解 ディープラーニング TensorFlow・Kerasによる時系 列データ処理 ¥3,672 ゼロから作るDeep Learning ―Pythonで学ぶディープ ラーニングの理論と実装 ¥3,672 Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴 量エンジニアリングと機械学習の基礎 ¥3,672 やさしく学ぶ 機械学習を理解するための数学のきほん ~ア ヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで ~ ¥2,786