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.

機械学習入門

クライアントDevDay @ 関西 (2018/06/16)
https://connpass.com/event/87879/
#DevDayKansai

  • Be the first to comment

機械学習入門

  1. 1. 機械学習入門 クライアントDevDay @ 関西 2018/06/16 小島 富治雄
  2. 2. 小島 富治雄 @Fujiwo 福井コンピュータホールディングス株式会社 Microsoft MVP (2005-2018) C#関連 自己紹介
  3. 3. 1. 機械学習 (Machine Learning) とは 2. ニューラル ネットワークとは 3. デモ  Microsoft Cognitive Services  Python/C#による機械学習  Azure Machine Learning Studio 本日ご紹介する内容
  4. 4.  LIFULLのAI戦略、予測分析はマーケティングをどう変えるのか?  DataRobot シバタアキラ氏と大阪ガス 河本 薫氏が語る「AIの民主化」  ピザハット、宅配待ち時間削減へAIベンチャーのGAUSSとデータ解析の取り組みを開始  人工知能で記者が欲しい情報を表示、PR TIMESが「リリースAI受信」を提供開始  GMO NIKKO、アフィリエイト広告向けのアドベリフィケーション機能を開発  Adobe、人工知能で検索エンジンマーケティングのROIを改善する「Adobe Advertising Cloud Search」を提供  Appier、AIプラットフォーム「AIXON」にオーディエンスのセグメンテーション予測機 能を追加 AI がビジネスを変える 3
  5. 5. 機械学習 (Machine Learning) とは
  6. 6. 人間の知能の一部をコンピュータで再現する技術 まず 人工知能 (Artificial Intelligence) とは
  7. 7. 人工知能の歴史 6
  8. 8. 人工知能の一分野 コンピュータプログラムが経験、 学習を行う 機械学習とは
  9. 9. 機械学習 (Machine Learning) ディープラーニング (深層学習: Deep Learning) 強化学習 (Reinforcement Learning) 深層強化学習 (Deep Reinforcement Learning) 機械学習の種類
  10. 10.  アルゴリズムを自分で考えプログラミングを行うのではなく、 大きなデータから統計的に解を求める  例. 株価予想  通常の開発 株価予想アルゴリズムを考え、それをプログラミング  機械学習 たくさんの株価のデータ → 機械に学習させる ニューラルネットワークを使用 → 学習済みの機械が株価予想を行う 機械学習 9
  11. 11. 機械学習の一種 通常のものと違って多層になった ニューラルネットワークを使用 画像解析や音声認識、自然言語理解、 翻訳など、複雑な処理にはこちら 作成のハードルは、かなり高い 高いコンピュータ パワーが求められるため、 CPUだけでなく GPUも利用 ディープラーニング (深層学習: Deep Learning)
  12. 12. ディープ ラーニング ニューラル ネットワーク ディープ ラーニング
  13. 13. 機械学習の一種 通常の機械学習では、たくさんのパラメーターと 正解をデータとして与え、それを統計的に解析 (学習) することにより、新たなパラメーターから 正解を導けるようになるが、強化学習は、 はっきりとした正解がないような場合に用いられる 強化学習 (Reinforcement Learning) 12
  14. 14. ディープラーニングを用いた強化学習 プロ棋士に勝ったことで有名な「アルファ碁」 などのゲームのAIや自動運転技術などで利用 深層強化学習 (Deep Reinforcement Learning) 13
  15. 15. 人工知能と機械学習 人工知能 (AI) 機械学習 (ML) Deep Learning
  16. 16. 数学 線形代数 統計 多変量解析 機械学習に必要な基礎知識 15
  17. 17. プログラミング言語 Python R言語 etc… 機械学習に必要な基礎知識 16
  18. 18. 1. Python 2. Java 3. R 4. C++ 5. C 6. JavaScript 7. Scala 8. Julia 機械学習で使われるプログラミング言語 17
  19. 19. Microsoft Cognitive Services Web API 経由で利用できる “人口知能パーツ“ ML のモデルを自作せずに、 成果を手軽に利用可 18
  20. 20. 19
  21. 21. 20
  22. 22. 21
  23. 23. 22
  24. 24. 23
  25. 25. 24
  26. 26. Computer Vision API Demo 25
  27. 27. Custom Vision Service Demo 26
  28. 28. ニューラル ネットワークとは
  29. 29. 神経細胞のネットワーク
  30. 30. 神経細胞のネットワークを模倣 ニューラル ネットワーク 入力 入力 ・ ・ ・ 出力 出力 ・・・ ・ ・・ ・ ・・ ・ ・・ ニューロン 入力層 中間層 出力層
  31. 31. 個々のニューロン ニューロン 出力 入力 入力 ・・ ・ 入力 バイアス
  32. 32. 神経細胞が入力の合計を出力 にするときの性質をモデル化 シグモイド関数
  33. 33. ニューラル ネットワークによる分類
  34. 34. 今回作成するニューラル ネットワーク 入力 入力 出力 ニューロン 入力層 中間層 出力層 バイアス 重み
  35. 35. 今回のニューラル ネットワークの訓練 正解ー 1. 重みの修正 2. 重みの修正 入力 入力 ニューロン 入力層 中間層 出力層 バイアス 重み 出力
  36. 36. Demo
  37. 37. 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# によるニューロンの実装
  38. 38. 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 };
  39. 39. 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; }
  40. 40. 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); }
  41. 41. 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] }); }
  42. 42. 実行結果 (シグモイド関数)
  43. 43. 実行結果 (座標データと訓練前)
  44. 44. 実行結果 (教師データと訓練後)
  45. 45. 訓練前の重みの値
  46. 46. 訓練後の重みの値
  47. 47. 機械学習用の ライブラリー 47 Microsoft Cognitive Toolkit
  48. 48. 機械学習のライブラリー 48 Google 製 ディープラーニング用 Preferred Networks (日本の企業) 製 ディープラーニング用 BVLC (カリフォルニア大学) 製 ディープラーニング用 Google 製 機械学習一般用 Microsoft Cognitive Toolkit Microsoft 製 ディープラーニング用
  49. 49. CPU と GPU 49 コア数 得意分野 本来の用途 CPU 2, 4, 8, 16, … 直列処理 演算 GPU 数千 並列処理 画像処理 ディープラーニングは並列処理だらけ
  50. 50. 機械学習とGPU 50 ○ GPU対応版あり ○ ライブラリーの導入で対応可 ○ ライブラリーの導入で対応可 × Microsoft Cognitive Toolkit ○ GPU対応版あり
  51. 51. Python のライブラリー scikit-learn を用いて、 株価の予想を行う 株価予想 (Python版) 51 Demo
  52. 52. Azure Machine Learning Studio 52
  53. 53. 機械学習 (Machine Learning) 53 例. Azure SQL Database クラウドに保存 例. Azure Machine Learning Studio 機械学習で解析! データをクラウドに かき集める Python によるデー タの最適化 API
  54. 54. Azure SQL Database 54
  55. 55. 55 Azure SQL Database
  56. 56. Azure Machine Learning Studio を用いて、 株価の予想を行う 株価予想 (Azure Machine Learning Studio版) 56 Demo
  57. 57. 「C# でニューラルネットワークをフルスクラッチで書いて機械学習の原理を理解しよう」 https://github.com/Fujiwo/CSharpNeuralNetworkSample-AI-decode サンプル ソース コードのご紹介
  58. 58. 「Microsoft Azure Machine Learning Studio による株価予想チュートリアル」 https://github.com/Fujiwo/PredictStockPrice-AI-decode 関連資料
  59. 59. 参考書籍 59 機械学習入門 ボルツマン機械学習から深層学習まで ¥2,484 あたらしい人工知能の教科書 プロダクト/サービス 開発に必要な基礎知識 ¥2,808 Pythonで動かして学ぶ! あたらしい機械学習の教科書 ¥2,894 詳解 ディープラーニング TensorFlow・Kerasによる時 系列データ処理 ¥3,672 ゼロから作るDeep Learning ―Pythonで学ぶディープ ラーニングの理論と実装 ¥3,672 Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量 エンジニアリングと機械学習の基礎 ¥3,672 やさしく学ぶ 機械学習を理解するための数学のきほ ん ~アヤノ&ミオと一緒に学ぶ 機械学習の理論と数 学、実装まで~ ¥2,786

×