機械学習システムデザイン

―実運用レベルのアプリケーションを実現する継続的反復プロセス

[cover photo]
TOPICS
Data Science
発行年月日
PRINT LENGTH
408
ISBN
978-4-8144-0040-9
原書
Designing Machine Learning Systems
FORMAT
Print PDF EPUB
Ebook
4,840円
Ebookを購入する
Print
4,840円

ビジネスとしての機械学習システムの設計や運用についての解説書。本書では、機械学習の最前線で活躍する著者の豊富な経験と知識に基づき、エンド・ツー・エンドの機械学習システムを設計・構築するための基本原則を明らかにします。訓練データの処理方法、特徴の使い方、モデルを再訓練する頻度、監視すべき項目……このような設計上の決定がシステム全体の目的達成にどのように寄与するのかを、実際のケーススタディを通じて理解します。機械学習プロジェクトを成功に導く上で必要な信頼性、拡張性、保守性、およびビジネス要件の変化への適応性を備えた機械学習システムを設計する包括的なアプローチを本書で学ぶことができます。

関連ファイル

目次

賞賛の声
訳者まえがき
まえがき

1章 機械学習システムの概要
    1.1 機械学習を使うとき
        1.1.1 機械学習のユースケース
    1.2 機械学習システムの理解
        1.2.1 研究分野での機械学習と実現場での機械学習
        1.2.2 機械学習システム vs. 従来のソフトウェア
    1.3 まとめ

2章 機械学習システム設計の概要
    2.1 ビジネスと機械学習の目標
    2.2 機械学習システムの要件
        2.2.1 信頼性
        2.2.2 拡張性
        2.2.3 保守性
        2.2.4 適応性
    2.3 反復型プロセス
    2.4 機械学習の問題の組み立て
        2.4.1 機械学習のタスクタイプ
        2.4.2 目的関数
    2.5 マインド vs. データ
    2.6 まとめ

3章 データエンジニアリングの基礎知識
    3.1 データソース
    3.2 データフォーマット
        3.2.1 JSON
        3.2.2 行優先フォーマット vs. 列優先フォーマット
        3.2.3 テキスト形式 vs. バイナリ形式
    3.3 データモデル
        3.3.1 リレーショナルモデル
        3.3.2 NoSQL
        3.3.3 構造化データ vs. 非構造化データ
    3.4 データストレージエンジンと処理
        3.4.1 トランザクション型処理と分析型処理
        3.4.2 ETL:抽出(extract)、変換(transform)、格納(load)
    3.5 データフローの形態
        3.5.1 データベース経由のデータの受け渡し
        3.5.2 サービス経由のデータの受け渡し
        3.5.3 リアルタイム伝送経由のデータの受け渡し
    3.6 バッチ処理 vs. ストリーム処理
    3.7 まとめ

4章 訓練データ
    4.1 サンプリング
        4.1.1 非確率サンプリング
        4.1.2 シンプルなランダムサンプリング
        4.1.3 層化サンプリング
        4.1.4 重み付きサンプリング
        4.1.5 リザーバーサンプリング
        4.1.6 重点サンプリング
    4.2 ラベル付け
        4.2.1 手作業によるラベル
        4.2.2 天然のラベル
        4.2.3 欠損ラベルへの対処
    4.3 クラスの不均衡
        4.3.1 クラスの不均衡という問題
        4.3.2 クラスの不均衡への対処
    4.4 データオーグメンテーション
        4.4.1 ラベルを保ったシンプルな変換
        4.4.2 摂動
        4.4.3 データの合成
    4.5 まとめ

5章 特徴エンジニアリング
    5.1 特徴の学習と特徴エンジニアリング
    5.2 一般的な特徴エンジニアリングの活動
        5.2.1 欠損値の処理
        5.2.2 スケーリング
        5.2.3 離散化
        5.2.4 カテゴリー特徴のエンコード
        5.2.5 特徴交差
        5.2.6 離散的および連続的な位置埋め込み
    5.3 データリーク
        5.3.1 データリークの主な原因
        5.3.2 データリークの検出
    5.4 優れた特徴の設計
        5.4.1 特徴重要度
        5.4.2 特徴の汎化
    5.5 まとめ

6章 モデル開発とオフライン評価
    6.1 モデルの開発と訓練
        6.1.1 機械学習モデルの評価
        6.1.2 アンサンブル
        6.1.3 実験管理とバージョン管理
        6.1.4 分散訓練
        6.1.5 AutoML
    6.2 モデルのオフライン評価
        6.2.1 ベースライン
        6.2.2 評価手法
    6.3 まとめ

7章 モデルのデプロイと予測サービス
    7.1 機械学習におけるデプロイの誤解
        7.1.1 誤解1:一度にデプロイする機械学習モデルはひとつか2つしかない
        7.1.2 誤解2:何もしなければモデルのパフォーマンスは変わらない
        7.1.3 誤解3:モデルを頻繁に更新する必要はない
        7.1.4 誤解4:大抵の機械学習エンジニアはスケールを気にする必要がない
    7.2 バッチ予測 vs. オンライン予測
        7.2.1 バッチ予測からオンライン予測へ
        7.2.2 バッチパイプラインとストリームパイプラインの統合
    7.3 モデル圧縮
        7.3.1 低ランク分解
        7.3.2 知識蒸留
        7.3.3 枝刈り
        7.3.4 量子化
    7.4 クラウドとエッジでの機械学習
        7.4.1 エッジデバイス向けのモデルのコンパイルと最適化
        7.4.2 Webブラウザでの機械学習
    7.5 まとめ

8章 データ分布のシフトと監視
    8.1 機械学習システムの障害の原因
        8.1.1 ソフトウェアシステムの障害
        8.1.2 機械学習特有の障害
    8.2 データ分布のシフト
        8.2.1 データ分布のシフトの種類
        8.2.2 一般的なデータ分布シフト
        8.2.3 データ分布シフトの検出
        8.2.4 データ分布シフトへの対処
    8.3 監視と可観測性
        8.3.1 機械学習特有の指標
        8.3.2 監視ツールボックス
        8.3.3 可観測性
    8.4 まとめ

9章 実現場での継続学習とテスト
    9.1 継続学習
        9.1.1 ステートレス再学習 vs. ステートフル学習
        9.1.2 継続学習の必要性
        9.1.3 継続学習の課題
        9.1.4 継続学習の4つのステージ
        9.1.5 モデルを更新する頻度
        9.1.6 データの鮮度の価値
    9.2 実環境でのテスト
        9.2.1 シャドウデプロイ
        9.2.2 A/Bテスト
        9.2.3 カナリアリリース
        9.2.4 インターリービング試験
        9.2.5 バンディット
    9.3 まとめ

10章 MLOpsにおけるインフラとツール
    10.1 ストレージとコンピューティング
        10.1.1 パブリッククラウド vs. プライベートデータセンター
    10.2 開発環境
        10.2.1 開発環境の構築
        10.2.2 開発環境の標準化
        10.2.3 コンテナ:開発環境から本番環境へ
    10.3 リソース管理
        10.3.1 cron、スケジューラー、オーケストレーター
        10.3.2 データサイエンスのワークフロー管理
    10.4 機械学習プラットフォーム
        10.4.1 モデル開発
        10.4.2 モデルストア
        10.4.3 特徴ストア
    10.5 構築するか購入するか
    10.6 まとめ

11章 機械学習の人的側面
    11.1 ユーザー体験
        11.1.1 ユーザー体験の一貫性の確保
        11.1.2 「ほぼ正しい」予測との戦い
        11.1.3 スムーズな失敗
    11.2 チーム構成
        11.2.1 機能横断的なチームのコラボレーション
        11.2.2 エンド・ツー・エンドなデータサイエンティスト
    11.3 責任あるAI
        11.3.1 無責任なAI:ケーススタディ
        11.3.2 責任あるAIのフレームワーク
    11.4 まとめ

付録A 機械学習システムを外部に提供する
    A.1 はじめに
    A.2 取り上げる事例
        A.2.1 AIを通じた問題解決の道筋について仮説を立てる
        A.2.2 顧客の状況を理解して最初の提案を行う
        A.2.3 分析の結果を受けてシステム化の提案を受け入れてもらう
        A.2.4 既存システムに機械学習システムを組み込む提案を行う
        A.2.5 データパイプラインの設計例
        A.2.6 システムの運用を開始し、モデルの改善を続けながら契約を維持する
    A.3 外部提供する際に特に心がけておくべきこと
        A.3.1 対顧客に対する価値を「ビジネス文脈」で捉えられるようにする
        A.3.2 契約の集合が本体であることを意識する
        A.3.3 コンプライアンスの遵守は当然の前提であるという意識を持つ
        A.3.4 顧客側と知見と感情が真っ二つになっている状態から始まっていることを認識する
        A.3.5 用語集を整備する
        A.3.6 顧客側の利害関係者を早い段階で特定しておく
        A.3.7 先に伝えなければデータは集まらないことを認識する
        A.3.8 「PoCゾンビ」に注意する
        A.3.9 「データサイエンティストならなんとかしてくれる」症候群を避ける
    A.4 おわりに

あとがき
索引

コラム目次
    機械学習リーダーボードの批判
    NumPy vs. pandas
    宣言的データシステムから宣言的機械学習システムへ
    さまざまな種類のユーザーフィードバック
    適合率・再現率・F値
    埋め込み
    訓話:Kaggleコンペティションでのデータリーク
    機械学習モデルのデバッグ
    機械学習モデル開発の4つのフェーズ
    ケーススタディ
    エッジケースと外れ値
    テレメトリー
    用語の揺らぎ
    バンディットアルゴリズム
    マルチクラウド戦略について
    株式会社JDSCについて