機械学習による実用アプリケーション構築

―事例を通じて学ぶ、設計から本番稼働までのプロセス

[cover photo]
TOPICS
Data Science
発行年月日
PRINT LENGTH
256
ISBN
978-4-87311-950-2
原書
Building Machine Learning Powered Applications
FORMAT
Print PDF EPUB
Ebook
3,080円
Ebookを購入する
Print
3,080円

機械学習は翻訳、推薦システム、異常および不正検出など、さまざまなアプリケーションで利用されており、今後も機能強化のために、機械学習を組み入れるサービスはますます増えていくと考えられています。しかし機械学習はモデルの学習や評価など、これまでのアプリケーションにはない処理が必要となるだけでなく、正常に動作しているかを単純なテストだけでは検証できないなど、特別な配慮が必要となります。本書は機械学習を利用するアプリケーションを設計、構築、デプロイするために注意すべき点をまとめました。繰り返しによりデータやモデルを漸進的に改善する方法、モデル性能の監視やモデルのデバッグを行う方法など、アプリケーションを構築、運用する上で、その品質を左右する一連のプロセスを詳しく解説します。

目次

訳者まえがき
まえがき

第Ⅰ部 適切な機械学習アプローチの特定

1章 製品目標からML の枠組みへ
    1.1 何が可能であるかを考える
        1.1.1 モデル
        1.1.2 データ
    1.2 ML エディタの構造
        1.2.1 すべてを行うML:エンドツーエンドのフレームワーク
        1.2.2 最も単純なアプローチ:人手のアルゴリズム
        1.2.3 折衷案:経験から学ぶ
    1.3 Monica Rogati インタビュー:どのようにML プロジェクトを選択し、優先順位を付けるか
    1.4 まとめ

2章 計画の作成
    2.1 成功度合いの測定
        2.1.1 製品メトリクス
        2.1.2 モデルメトリクス
        2.1.3 データの鮮度と分布の変化
        2.1.4 スピード
    2.2 スコープと課題の推定
        2.2.1 ドメインの専門知識を活用する
        2.2.2 巨人の肩に立つ
    2.3 ML エディタの計画
        2.3.1 エディタの初期計画
        2.3.2 常にシンプルなモデルから始める
    2.4 定常的な進歩のために:シンプルに始める
        2.4.1 シンプルなパイプラインから始める
        2.4.2 ML エディタのパイプライン
    2.5 まとめ

第Ⅱ部 機能するパイプラインの構築

3章 最初のエンドツーエンド パイプライン構築
    3.1 最もシンプルな足場
    3.2 ML エディタのプロトタイプ
        3.2.1 データのパースとクリーニング
        3.2.2 テキストのトークン化
        3.2.3 特徴量生成
    3.3 ワークフローのテスト
        3.3.1 ユーザエクスペリエンス
        3.3.2 モデリングの結果
    3.4 ML エディタのプロトタイプの評価
        3.4.1 モデル
        3.4.2 ユーザエクスペリエンス
    3.5 まとめ

4章 初期データセットの取得
    4.1 データセットの反復処理
        4.1.1 データサイエンスの実践
    4.2 初めてのデータセット探索
        4.2.1 効率的に、小さく始める
        4.2.2 洞察と製品
        4.2.3 データ品質規範
    4.3 データの傾向を見つけるためのラベル
        4.3.1 要約統計量
        4.3.2 効率的なデータ探索とラベル付け
        4.3.3 アルゴリズムとして振る舞う
        4.3.4 データの傾向
    4.4 特徴量とモデルの情報をデータから取り出す
        4.4.1 パターンから特徴量を構築
        4.4.2 ML エディタの特徴量
    4.5 Robert Munro インタビュー:データをどのように検索し、ラベルを付け、活用するのか
    4.6 まとめ

第Ⅲ部 モデルの反復

5章 モデルの学習と評価
    5.1 最も単純で適切なモデル
        5.1.1 単純なモデル
        5.1.2 パターンからモデルへ
        5.1.3 データセットの分割
        5.1.4 ML エディタのデータ分割
        5.1.5 パフォーマンスの評価
    5.2 モデルの評価:正解率の向こう側
        5.2.1 データと予測の対比
        5.2.2 混同行列
        5.2.3 ROC 曲線(ROC Curve)
        5.2.4 検量線(Calibration Curve)
        5.2.5 エラーの次元削減
        5.2.6 top-k メソッド
        5.2.7 他のモデル
    5.3 特徴量の重要度評価
        5.3.1 分類器から直接重要度を取得する
        5.3.2 ブラックボックス説明可能性ツール
    5.4 まとめ

6章 ML 問題のデバッグ
    6.1 ソフトウェアのベストプラクティス
        6.1.1 ML に特化したベストプラクティス
    6.2 配線のデバッグ:可視化とテスト
        6.2.1 1 つのサンプルから始める
        6.2.2 ML コードのテスト
    6.3 学習のデバッグ:モデルに学習させる
        6.3.1 課題の難易度
        6.3.2 最適化の問題
    6.4 一般化のデバッグ:モデルの有用性を高める
        6.4.1 データリーク
        6.4.2 過学習
        6.4.3 手元の課題を考える
    6.5 まとめ

7章 分類器を使用した提案の生成
    7.1 モデルから提案を抽出
        7.1.1 モデルを使わずにどこまでできるか
        7.1.2 全体的な特徴量の重要度抽出
        7.1.3 モデルスコアの活用
        7.1.4 個別の特徴量の重要度抽出
    7.2 モデルの比較
        7.2.1 バージョン1:レポートカード
        7.2.2 バージョン2:より強力だが不明瞭
        7.2.3 バージョン3:理解可能な提案
    7.3 文書作成提案の生成
    7.4 まとめ

第Ⅳ部 デプロイと監視

8章 モデルデプロイ時の考慮点
    8.1 データに関する懸念点
        8.1.1 データの所有権
        8.1.2 データの偏り(バイアス)
        8.1.3 構造的偏り
    8.2 モデリングにおける懸念点
        8.2.1 フィードバックループ
        8.2.2 包括的モデルパフォーマンス
        8.2.3 コンテキストの考慮
        8.2.4 敵対者
        8.2.5 不正利用の懸念とデュアルユース
    8.3 Chris Harland インタビュー:リリース実験
    8.4 まとめ

9章 デプロイオプションの選択
    9.1 サーバサイドデプロイ
        9.1.1 ストリーミングアプリケーションとAPI
        9.1.2 バッチ予測
    9.2 クライアントサイドデプロイ
        9.2.1 デバイスへのデプロイ
        9.2.2 ブラウザへのデプロイ
    9.3 連合学習(Federated Learning):ハイブリッドアプローチ
    9.4 まとめ

10章 モデルの保護手段の構築
    10.1 エラーにまつわるエンジニアリング
        10.1.1 入出力のチェック
        10.1.2 モデルがエラーとなる場合の対応
    10.2 パフォーマンスのためのエンジニアリング
        10.2.1 多数のユーザにスケールさせる
        10.2.2 モデルとデータのライフサイクル管理
        10.2.3 データ処理とDAG
    10.3 ユーザからのフィードバック
    10.4 Chris Moody インタビュー:データサイエンティストにモデルをデプロイさせる
    10.5 まとめ

11章 監視とモデルの更新
    11.1 監視による改善
        11.1.1 更新頻度を知らせる監視
        11.1.2 不正利用を検出するための監視
    11.2 監視対象の選択
        11.2.1 パフォーマンスメトリクス
        11.2.2 ビジネスメトリクス
    11.3 ML のCI/CD
        11.3.1 A/B テストと実験
        11.3.2 異なるアプローチ
    11.4 まとめ

付録A コードの実行(日本語版補遺)
    A.1 Python 実行環境の作成
    A.2 ノートブックのインストール
    A.3 ノートブックの実行
    A.4 外部サーバでJupyter 実行
    A.5 Anaconda と、ノートブックのインストール
    A.6 Jupyter の実行と、Jupyter への接続
        A.6.1 ssh のポートフォワードを利用する
        A.6.2 待ち受けIP アドレスの変更
    A.7 jupyter_notebook_config.py 設定ファイル

索引