Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

エンジニアのための機械学習の基礎

5.888 Aufrufe

Veröffentlicht am

JAZUG 女子部 第13回勉強会の資料。
機械学習の基礎について説明します。
https://jazug.connpass.com/event/106003/

Veröffentlicht in: Technologie
  • Login to see the comments

エンジニアのための機械学習の基礎

  1. 1. #azurejp https://www.facebook.com/dahatake/ https://twitter.com/dahatake/ https://github.com/dahatake/ https://daiyuhatakeyama.wordpress.com/ https://www.slideshare.net/dahatake/
  2. 2. #azurejp 機械 学習 教師あり 学習 教師なし 学習 強化学習 決定木 線形回帰 SVM ロジスティック回帰 ニューラルネットワー ク クラスタリン グ 次元削減 K-mean法 主成分分析 正準相関分析 ディープ ニュー ラル ネットワーク 畳みこみニュー ラルネットワー ク 再帰的ニューラ ルネットワーク 回帰結合ニュー ラルネットワー ク Q学習 深層学習 画像解析, 音声認識, 自動生成 深層強化学習 自立学習型ロボット 自動運転車
  3. 3. 数値予測 回帰分析 Regression ・売上予測 ・需要予測 ・品質管理 ラベル予測 分類 Classification ・不良品分析 ・故障予測 ・チャーン分析 ・販促効果測定 ・与信分析 クラスタリング Clustering ・セグメンテーション ・顧客グルーピング ・メール キャンペーン
  4. 4. Class 1 Class 2 2つ以上でも良い
  5. 5. Is there a deer in the image? Where is the deer in the image? Where exactly is the deer? What pixels? Which images are similar to the query image? Image Classification Object detection Image segmentation Image Similarity Similar image Query imageYes
  6. 6. Cluster 1 Cluster 2 Cluster 3
  7. 7. Input data Data Transformation Train Model Algorithm Split Data Score Model Evaluate Model
  8. 8. プログラミング との 違い
  9. 9. #azurejp 汎用品 データが全て 精度の考え方
  10. 10. #azurejp 汎用品 データが全て 精度の考え方
  11. 11. 2 + 3 = 5
  12. 12. 2 + 3 = 5 簡単 大変…
  13. 13. 2 + 3 = 5 簡単 大変…
  14. 14. それぞれの写真: 猫? Yes/No
  15. 15. Program = Algorithm 人が書く タスクの仕様の定義 アルゴリズムは固定 アルゴリズムは容易に説明できる ソフトウェアが書く 目的: 汎化 アルゴリズムはデータに依存 アルゴリズムは時間とともに変わる
  16. 16. Program = Algorithm 人が書く タスクの仕様の定義 アルゴリズムは固定 アルゴリズムは容易に説明できる ソフトウェアが書く 目的: 汎化 アルゴリズムはデータに依存 アルゴリズムは時間とともに変わる 実世界の全てを想定して、 プログラミングするのは、難しい…
  17. 17. <Python> Modelの保存 出力された Model <C#>Model の読み込み <C#>Model の利用 (実行)
  18. 18. #azurejp 汎用品 データが全て 精度の考え方
  19. 19. 推論 デプロイメントデータの準備 モデル構築・学習 世界中の研究者が 論文として公表。 多くの実証コードも 公開される。 最新の技術を利活用 んなデータを整備するか? 競争力のための 自社にしかないデータが 活用できるか? ビジネスフロー全体の中の どこでモデルを 利用すべきか?
  20. 20. Alpha Go Zero
  21. 21. 独占 権威
  22. 22. 変革の速度 競争領域
  23. 23. • 強い因果関係と説明責任が必要 • 想定外の事態での危機管理 な ど • 因果関係が必要な予測 • 人間の予測と機械学習の予 測の両方を使う • 相関関係が分かればいいことの 予測 • 誰が正しいのか議論しても あまり意味がないもの
  24. 24. http://tylervigen.com/spurious-correlations
  25. 25. Kate Crawford’s NIPS 2017 Keynote presentation: Trouble with Bias
  26. 26. #azurejp 汎用品 データが全て 精度の考え方
  27. 27. ①True Positive(真陽性) : 100%に近いほど良好 ⇒A/(A+C) ②False Positive(偽陽性) : 0%に近いほど良好 ⇒B/(B+D) ③True Negative : 100%に近いほど良好 ⇒D/(B+D) ④False Negative : 0%に近いほど良好 ⇒C/(C+D) ⑤Accuracy(正解率) : 100%に近いほど良好 ⇒「○」「×」を正しく予測できた割合 ⇒(A+D)/(A+B+C+D) : 100%に近いほど良好 ⑥Precision(適合率) : 100%に近いほど良好 ⇒A/(A+B) ⑦Recall(再現率) : 100%に近いほど良好 ⇒①に同じ ⑧F1 Score :1.0に近いほど良好 ⇒⑥、⑦の複合指標 ⇒2×(⑥×⑦)/(⑥+⑦) 検証用データ 予測で得たクラス ○ × 正解の クラス ○ A件 C件 × B件 D件 正解が「○」 のデータ 推測で「○」と されたデータ A件C件 B件 D件 予測結果例 主な評価指標
  28. 28. karugamoが写っているの に、 モデルは推定できなかっ た ▶モデルの見逃し あり[予 測] なし[予 測] あり[正 解] XX XX なし[正 解] XX XX
  29. 29. Karugamo でないもの に、 Karugamo と推定 ▶モデルの過検知? あり[予 測] なし[予 測] あり[正 解] XX XX なし[正 解] XX XX
  30. 30. 再現率(Recall) 適合率 (Precision) ヒット数↑ ノイズ ↑ 精度↑ 漏れ↑ 再現率、適合率の最適な ブレイクポイント
  31. 31. プログラミング 機械学習 アプローチ 演繹的 帰納的。つまりブラックボック スは残る 機能保証 (≒ 精度): Function Test 可能 訓練データ次第。ただ、統計の 域を出ない 性能保証: Performance Test 可能 可能 妥当性確認試験: Validation Test 可能 やってみないと、わかならい
  32. 32. トレーニング済みのモデル ビジネスロジックにMLをアタッチ Azure Databricks VMs Deep Learning Framework Deep Learning モデルの作成 TensorFlow KerasPytorch Azure Machine Learning LanguageSpeech … SearchVision On-premises Cloud Edge 生産性の高いサービス データサイエンティストと開発チームの生産性を上げる パワフルな Compute Deep Learning の学習と推論の加速 柔軟な推論環境の選択肢 Cloud と Edge へのモデル展開と管理 Chainer
  33. 33. Automated Machine Learning Hyper parameter tuning Distributed Deep Learning New FPGA-powered models Python SDK Azure Notebook 連携
  34. 34. My Computer Experiment Docker Image Data Store Compute Target Azure ML Workspace
  35. 35. 次のボーナ ス2018/12
  36. 36. Source: http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
  37. 37. Mileage Condition Car brand Year of make Regulations … Parameter 1 Parameter 2 Parameter 3 Parameter 4 … Gradient Boosted Nearest Neighbors SVM Bayesian Regression LGBM … Mileage Gradient Boosted Criterion Loss Min Samples Split Min Samples Leaf Others Model Which algorithm? Which parameters?Which features? Car brand Year of make
  38. 38. Criterion Loss Min Samples Split Min Samples Leaf Others N Neighbors Weights Metric P Others Which algorithm? Which parameters?Which features? Mileage Condition Car brand Year of make Regulations … Gradient Boosted Nearest Neighbors SVM Bayesian Regression LGBM … Nearest Neighbors Model 繰り返し Gradient BoostedMileage Car brand Year of make Car brand Year of make Condition
  39. 39. Mileage Condition Car brand Year of make Regulations … Gradient Boosted Nearest Neighbors SVM Bayesian Regression LGBM … Gradient Boosted SVM Bayesian Regression LGBM Nearest Neighbors Which algorithm? Which parameters?Which features? 繰り返し Regulations Condition Mileage Car brand Year of make
  40. 40. データセット 目標設定 学習の一貫性 出力入力 学習を並列処理 Compute リソース管理 ベストなモデルの選択 Optimized model
  41. 41. from azureml.train.automl import AutoMLConfig ##Local compute 'classification' 'AUC_weighted' 12000 20 3 0.9985 'kNN' 'LinearSVM'
  42. 42. #azurejp 大量のデータ データ に対する知見 データ分析の 知識・経験 データ分析 ツール・基盤× × × 大量の分析用データを 保持している 分析用データの中身を 理解している 分析内容やデータ に適してアルゴリ ズムを把握してい る 大量データを分 析できるツール を持ち 使いこなせる 最も重要
  43. 43. #azurejp
  44. 44. © 2018 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  45. 45. #azurejp ドアの後ろに人がいます 入ってくる人は、男性 / 女性 のどちらで しょうか? 既知の情報は以下のみ 年齢: 35歳 年収: 600万円 有給残数: 12日 F (性別) = (0.03 * 年齢) + (0.07 * 年収) – (0.04 * 有給残数) + 0.05 = (0.03 * 3.5) + (0.07 * 6.0) – (0.04 * 1.2) + 0.05 = 0.41 0.5 よりも小さいから = 女性
  46. 46. トレーニングデー タ 独立したデータ, 特徴, シグナル, 属 性 “Predict したい分類, クラス, ラ ベル, 依存しているデータ
  47. 47. 35 49,000 M 3.5 4.9 -1.0 1.0 0.0 0.23 Age Income Sex 0.15 Republican0.62 Education 可能性 inpu t hidd en outp ut High
  48. 48. Activate Function Input Layer Hidden Layer (妥当な数で) 重み (Weight)
  49. 49. 入力層 隠れ層 出力層 𝑦1 𝑤11 𝑦2 𝑤12 𝑏1 𝑦 = 𝑓 𝑦1 𝑤11 + 𝑦2 𝑤12 + 𝑏1 𝑦: 出力 𝑤: 重み 𝑏: バイアス 𝑓 𝑥 : 活性化関数 パラメータ更新:誤差逆伝播法(Back Propagation) → 全ての「重み」と「バイアス」を調整する Loss Function (実際値と予測値の差を計算)
  50. 50. Dense ( 全 結 合 層 ) ReLU Dense ReLU Dense Softmax Input Layer Hidden Layer Output LayerHidden Layer
  51. 51. Convolution ReLU Pooling Convolution ReLU Pooling Convolution ReLU Pooling Dence(Affine) None CNNの処理フロー Cognitive Toolkitを使った実装例 Dence(Affine) None
  52. 52. 学習用データ Input Layer Hidden Layer Output Layer 直線がない 直線がある 計算していく
  53. 53. 学習用データ Input Layer Hidden Layer (妥当な数で) Output Layer 直線がない 直線がある 結果が違う場合は、 勾配法で最適化
  54. 54. 1. 課題の特定 2. データの取得と加工 3. モデルの設計 4. モデルの学 習 5. モデルの テストと評価 a. 初期化 b. データセットからミニバッチ データ取得 c. 損失(差分)を計算d. 最適化: 損失(差分)の最小 化 e. 重みづけの更新 y =Wx + b loss = |desired – actual outcome|δ 6. 展開と推論
  55. 55. 整理 しましょう
  56. 56. 最適化 (Optimization) とは、関数やパラメータなどを最適な状態に近づ けること 最適化 (Optimization) とは、誤差を最小化(または最大化)するための 最適化対象となるパラメータを探索手法を用いて最適化(探索)すること 言いかえると
  57. 57. ニューラルネットワークにおける学習とは、 モデルの予測値と実際の値との誤差から、パラメータ(重み)を適切に更新する こと 損失関数 最適化最適化対象 重要なのはこの3つ 「損失関数」、 「最適化対象」、 「最適
  58. 58. • 各層間の「重み」と 「バイアス」 • 平均二乗誤差 (Mean Squared Error / Classification Error) • 交差エントロピー誤差 (Cross-Entropy Error) • 勾配法 (Gradient method) 最適化対象 (Optimization Target) 損失関数 (別名:目的関数 - loss function) 最適化手法 (別名:探索、Optimizer, Learner) ニューラルネットワークにおける学習とは、 モデルの予測値と実際の値との誤差から、パラメータ(重み)を適切に更新する こと
  59. 59. 学習用データ Input Layer Hidden Layer (妥当な数で) Output Layer 直線がない 直線がある 入力データを計算していく
  60. 60. 平均二乗誤差 (Mean Squared Error / Classification Error) 回帰や二項分類でよく使われる 交差エントロピー誤差 (Cross-Entropy Error) 多項分類でよく使われる σ(z) がsigmoid 関数の場合、0,1近傍 で微分が≃0となってしまい、コスト 関数の 変化(学習)が止まってしまう 差が大きくなればなるほど、コスト 関数の 変化も大きくなる Cross-entropyが使われることが多いが、Cognitive Toolkit のチュートリアルでは両方使っている。
  61. 61. Activate Function Input Layer Hidden Layer (妥当な数で) ↑学習対象 These are target Activate Function
  62. 62. 恒等写像(identity mapping) ReLU シグモイド関数(Sigmoid) ソフトマックス関数(Softmax) x f(x)
  63. 63. Input Layer Hidden Layer Output Layer 直線がない 直線がある 総和 1
  64. 64. 入力画像データ Input Layer Hidden Layer (妥当な数で) Output Layer 直線がない 直線がある
  65. 65. 学習用データ Input Layer Hidden Layer (妥当な数で) Output Layer 直線がない 直線がある 結果が違う場合は、 勾配法で最適化 計算していく
  66. 66. SGD MomentumSGD • 色々な勾配法 - Gradient Descent - SGD - MomentumSGD - AdaGrad - AdaDelta - Adam - RMSpropGraves - NesterovAG 学習率 (Learning Rate) 学習率 モーメンタム (Momentum) 「学習率」を ハイパーパラメータとして指定 「学習率」と「モーメンタム」を ハイパーパラメータとして指定
  67. 67. 勾配消失問題 (Vanishing Gradient) 過学習 (Overfitting) モデルの学習では重みの勾配 (精度に与える影響 度)を 求める必要があるが、その勾配が 「0」 になって しまうこと 過学習 (Overfitting) とは、学習データに対して学 習されているが、未知のデータに対して適合でき ていない (汎化できていない)状態。 特にニューラルネットは複雑なモデルのため 過学習に陥りやすい • Batch Normalization • Dropout • Regularization • Expanding the training data 内容 解決策課題 引用元: http://qiita.com/supersaiakujin/items/935bbc9610d0f87607e8 https://arxiv.org/pdf/1512.03385v1.pdf
  68. 68. https://deepage.net/deep_learning/2016/10/26/batch_normalization.html http://akimacho.hatenablog.com/entry/2016/07/02/001202
  69. 69. Mini-batch単位で違うネットワークを内部的に育成する効果があり、 L2+Dropoutは多くの領域でNeural netsの改善をもたらす
  70. 70. L1 regularization L2 regularization Cost function(C0) にL1正規化項を追加 ※λ:正規化パラメータ wが大きい: L1 shrinks the weight much less than L2 does. wが小さい: L1 shrinks the weight much more than L2 does. Cost function(C0) にL2正規化項を追加 ※λ:正規化パラメータ →The effect of regularization is to make it so the network prefer to learn small weight Wight decay it makes weight smaller lower complexity reduce overfitting 引用例:http://sig.tsg.ne.jp/ml2015/ml/2015/06/29/techniques-of-learning.html
  71. 71. learner = C.momentum_sgd( tl_model.parameters, lr_schedule, mm_schedule, l2_regularization_weight=0.0005 )
  72. 72. 元データ ずらしたり 広げたり 回転させたり さらに回転させたり !? “Is algorithm A better than algorithm B??” “What training data set are you using?”
  73. 73. • uniform • normal • xavier • glorot_uniform • glorot_normal • he_uniform • he_normal • bilinear • initializer_with_rank • truncated_normal Xavierの初期値 Heの初期値 Glorotの初期値
  74. 74. Learning rate η? Hidden Layer の数は? Mini-batchはどのくらい必要? Cost functionをどうする? 何epochでやるの? Weight initializationはど うする? Regularization parameter λ?
  75. 75. Cost function epoch η= 2.5 η= 0.025 η= 0.25
  76. 76. パラメータチューニングに正解はないので、 Try-and-Errorでやっていきましょう。 または、先人の設定から学びましょう。
  77. 77. Automated Machine Learning Hyper parameter tuning Distributed Deep Learning New FPGA-powered models Python SDK Azure Notebook 連携
  78. 78. Number_of_ hidden_layers Number_of_ nodes_in_layer Input layer Hidden layer 1 Hidden layer 2 Output layer E.g. Learning_rate Batch_size
  79. 79. Challenges • 探索箇所が広大 • 低密度の中での、最適な値の組み合 わせ • 評価までのリソースが膨大(時間、人、 カネ) 例えば.. • Number_of_layers と learning_rate の最適値 • Number_of_layers – [2, 4, 8] • learning_rate – 0 から 1 の間の あらゆる値
  80. 80. #1 #2 #𝑝 𝑟𝑢𝑛1 𝑟𝑢𝑛2 𝑟𝑢𝑛 𝑝 … Hyperparameter Tuning runs in Azure ML 𝑟𝑢𝑛𝑗 𝑟𝑢𝑛𝑖 𝑟𝑢𝑛 𝑘 (B) 起動中のジョブの管理 • どれくらいの間実行してい るのか? ??? (A) 新規ジョブ起動 • 探索する、Parameter を設 定 𝒓𝒖𝒏 𝟏= {learning rate=0.2, #layers=2, …} 𝒓𝒖𝒏 𝟐= {learning rate=0.5, #layers=4, …} 𝒓𝒖𝒏 𝒑= {learning rate=0.9, #layers=8, …}
  81. 81. Early terminate poorly performing runs
  82. 82. ## エスティメーターの作成 from azureml.train.dnn import TensorFlow script_params = { '--data-folder': ws.get_default_datastore().as_mount(), '--batch-size': 50, '--first-layer-neurons': 300, '--second-layer-neurons': 100, '--learning-rate': 0.01 } estimator = TensorFlow(source_directory=script_folder, script_params=script_params, compute_target=compute_target, entry_script='tf_mnist.py', use_gpu=True)
  83. 83. ## 探索空間の設定 from azureml.train.hyperdrive import GridParameterSampling param_sampling = GridParameterSampling( { "num_hidden_layers": choice(1, 2, 3), "batch_size": choice(16, 32) } ) ## 探索空間の設定 from azureml.train.hyperdrive import MedianStoppingPolicy early_termination_policy = MedianStoppingPolicy(evaluation_interval=1, delay_evaluation=5) ## Hyperparameter Search 設定 from azureml.train.hyperdrive import HyperDriveRunConfig hyperdrive_run_config = HyperDriveRunConfig(estimator=estimator, hyperparameter_sampling=param_sampling, policy=early_termination_policy, primary_metric_name=’accuracy’, primary_metric_goal=PrimaryMetricGoal.MAXIMIZE, max_total_runs=100, max_concurrent_runs=4)

×