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.

学習モデルの検証

108 views

Published on

学習モデルの検証の概要についてまとめました

Published in: Technology
  • Be the first to comment

  • Be the first to like this

学習モデルの検証

  1. 1. 学習モデルの検証
  2. 2. Whoami 1 Name 栗原 健 Takeru Kurihara Ruketa From Okayama TwitterSNS Work Software Developper Field Language C++, C# CAD, CAM Hobby Running Trail Running Ruketa @kuripoon
  3. 3. システム内での検証工程 2 検証予測アプリケーション 学習 モデル ソース コード コンテナ イメージ CI / CD データ 開発者 モデル 利用ログ ユーザ登録データ・・・ 予測 結果 リクエスト 実行 アルゴリズム アルゴリズム アルゴリズム 入力 実行 監視 各データの管理、処理実行、 デプロイなど、ML以外を担当 ここ!!
  4. 4. 検証の役割 • モデルの良さを検証してモデル比較結果を出す 学習工程へフィードバックを与える 3 検証学習 アルゴリズム アルゴリズム データ アルゴリズム モデル 結果 モデル 問題
  5. 5. モデルとは • データと出力の関係性(関係性)を表現する関数 – 例:下図のデータ(青点)から関数を近似したい 4 • 関数を近似出来たらデータと出力の 関係が定式化できる Y = 𝐴𝑋 + 𝐶 • データと出力の関係を表す関数 >> モデル • データと出力から関数を近似する >> ①の「A」、「C」を推定する >> モデル化(赤線が分かる) • モデル化出来たらできること • データのない部分を予測(緑点) • データの分類(境界が分かるから) AX + C < 0 or ≧ 0 で分類可能 ・・・ ①
  6. 6. モデルの学習 • モデルのパラメータの最適な値を探すこと 5 Y = 𝐴𝑋 + 𝐶 モデル:アルゴリズム パラメータ:初期値は適当 データ:学習用データ 初期状態 Y = 1 10 𝑋 + 0.7 データ 学習済み Y = 3 5 𝑋 + 0.1 学習
  7. 7. モデルの良さ • 同じデータでもモデルは複数定義出来る – 様々なモデルの中で良いモデルを選択したい 6 どれがいいモデルかな? 何を基準に選べばいいのかな? どうやって選べばいいのかな? 万能なモデルはない 全部試して検証する 指標が必要 検証用データで実験 一番いいものを選ぶ
  8. 8. モデルの検証 7 • モデルの検証方法 – 学習用データを分割して検証用データとする – 分割後の学習用データで学習を行い、検証用データで推論を行う – 評価指標を計算して、モデルの推論性能を検証する – 検証結果を比較してモデルを選択する • データの種類 – 学習用:予め用意したデータ(データと結果のセット) – 検証用:学習用データを分割して取り出したデータ – 評価用:推論対象のデータ(未知のデータ) • 注意点 – 初めに学習用データを全て使って学習モデルを作ってはいけない – 性能を開発時に検証できない、モデルの選択ができない 任意の割合で分割
  9. 9. 検証方法 • ホールドアウト – 学習用データを学習・検証用に分割して学習モデルを作る • 全体を任意の割合で分割 • 欠点 – 学習・検証のデータセットが1セットだけ – 分割後のデータセットが元のデータと同じ分布でないと正しく検証 できない – 検証用データが偶然良い結果が出せる分割状態かも。を拭い去れない • 利点 – 学習・検証のデータセットが1セットで検証できる – データ数が多い場合でも1回の検証でよい 8 学習用 7 検証用 3学習用データ 例 7 : 3 で分割
  10. 10. 検証方法 • クロスバリデーション(交差検証) – 学習用データをK個に分割して1つのを検証用、K-1個を 学習用データとする • K個のデータグループでデータを入れ替えてK回の検証を行う • 欠点 – K回の学習、検証を行うため計算コストが高い – データ量が多く、計算量 >> 計算資源となると実質的に利用不可 • 利点 – 学習・検証のデータセットがK個できるので、K回の検証ができる – K回の検証の平均を結果とするので最もらしい結果が得られる 9 データ1 データ4学習用データ データ2 データ3 データ1 データ4データ2 データ3 データ1 データ4データ2 データ3 データ1 データ4データ2 データ3 分割 K=4 検証結果 検証結果 検証結果 検証結果 結果 平均
  11. 11. モデルの評価指標 • 分類タスクにおける評価指標 – 分類タスクの例:工場ラインの不良部品検知 – 評価指標 • 正解率(accuracy) • 適合率(recall) • 再現率(precision) • F1値(f1-measure) • etc … – 注意点 • 正解率は理解しやすいけど、良い指標ではない • 例えば:不良品率1%の場合、全てOKと判断すれば 正解率 = 99% になる OK NG 2値分類タスク
  12. 12. 混同行列(Confusion Matrix) • 例題:工場ラインの不良部品検知 – 問題設定 • 良品/不良品の仕分けを自動でやりたい • 不良品の出荷は避けたい – 実験内容 • 部品を製造ラインへ100個流した – 混同行列(結果) 11 OK NG 正常品と予測 不良品と予測 正常品 90(真陽性:TP) 5(偽陰性:FN) 不良品 1(偽陰性:FP) 4(真陰性:TN)
  13. 13. 混同行列(Confusion Matrix) • 例題:工場ラインの不良部品検知 – 混合行列(結果) 12 OK NG 正常品と予測 不良品と予測 正常品 90(真陽性:TP) 5(偽陰性:FN) 不良品 1(偽陽性:FP) 4(真陰性:TN) 精度 𝑇𝑃+𝑇𝑁 𝑇𝑃+𝐹𝑃+𝐹𝑁+𝑇𝑁 = 94% 全体の部品数 部品全体に対して どれだけ正しく判定できたか
  14. 14. 正常品と予測 不良品と予測 正常品 90(真陽性:TP) 5(偽陰性:FN) 不良品 1(偽陽性:FP) 4(真陰性:TN) 混同行列(Confusion Matrix) • 例題:工場ラインの不良部品検知 – 混合行列(結果) 13 OK NG 適合率 𝑇𝑃 𝑇𝑃+𝐹𝑃 = 99% 正常と判断した部品数 正常品と判断して 正しく正常品だった割合 正常品と判断しても、 1%間違えてる
  15. 15. 正常品と予測 不良品と予測 正常品 90(真陽性:TP) 5(偽陰性:FN) 不良品 1(偽陽性:FP) 4(真陰性:TN) 混同行列(Confusion Matrix) • 例題:工場ラインの不良部品検知 – 混合行列(結果) 14 OK NG 再現率 𝑇𝑃 𝑇𝑃+𝐹𝑃 = 94.7% 全正常品数 正常品の中で正しく正常と 判断された割合 正常品の5.3%を不良品と 判断する
  16. 16. 検証の流れまとめ 15 学習用データ 検証用データ 評価用データ 学習用データ サンプリング データ ラベル データ収集 学習 検証 予測 機械学習の流れ データ ・ログデータ ・ネットから集めた画像 ・アノテーション ・データ加工… 任意の割合で分割 学習用データ:モデル作成に使う 検証用データ:モデル検証に使う 評価指標 ・新たに収集する ・学習用データとは 違う未知のデータ ・評価指標の値によって モデルの性能確認 モデルの選択 などを行う ・評価指標の例: ・精度(正解率) ・再現率、適合率 ・二乗誤差
  17. 17. 実装 • 開発環境 – ライブラリ:pytorch、sklearn – ツール:mlflow >> https://mlflow.org/ – IDE : VS Code、Jupyter Lab • 処理の順番 • ソースコード – https://github.com/Ruketa/ML_Study/tree/master/Validation 16 データ 取得 データ 分割 モデル 定義 誤差関数 最適化 定義 学習 評価
  18. 18. さいごに • 学習モデル検証方法と関連用語を紹介しました – 検証の必要性、何をするのか、全体の流れが少しでも 伝われば嬉しいです • モデル検証まで是非実装してみてください – 機械学習の全体像が理解しやすくなるかも – 結局、手を動かさないと身につきません • これだけで検証は完璧? – まだまだやることたくさんあります • CIで評価処理を実行する基盤づくり • 評価結果の可視化 • 評価指標の検討(紹介した以外にも色々あるので)… 17
  19. 19. 参考文献 • 書籍 – 仕事で始める機械学習 – kaggleで勝つデータ分析の技術 – 東京大学のデータサイエンティスト育成講座 – 作りながら学ぶ! PyTorchによる発展ディープラーニング • データ分析コンペの参加 – Kaggle, Signate, atmaCup … 18
  20. 20. おわり 19

×