PyTorchとfastaiではじめるディープラーニング ―エンジニアのためのAIアプリケーション開発

Book description

本書は、ディープラーニングのトレーニングコースを提供するサイトfast.aiの創始者らが、PyTorchとその上に構築されたライブラリfastaiを用いてディープラーニングを行う方法を解説するものです。特別な訓練や数学の深い知識がなくても実践できるように、平易な言葉と数多くの図でていねいに説明しています。サンプルコードはすべてJupyterノートブックで提供されており、簡単に試すことが可能。元Kaggleトップの起業家、ジェレミー・ハワードと教育のプロ、シルヴェイン・ガガーによる渾身の一冊です。

Table of contents

  1. 表紙
  2. 序文
  3. まえがき
  4. 第Ⅰ部 ディープラーニングの実際
  5.  1章 ディープラーニングへの旅路
  6.   1.1 万人のためのディープラーニング
  7.   1.2 ニューラルネットワークの簡単な歴史
  8.   1.3 自己紹介
  9.   1.4 ディープラーニングの学び方
  10.    1.4.1 プロジェクトとマインドセット
  11.   1.5 ソフトウェア:PyTorch, fastai, Jupyter(そしてなぜこれらがどうでもいいか)
  12.   1.6 最初のモデル
  13.    1.6.1 ディープラーニング用GPUサーバの取得
  14.    1.6.2 最初のノートブックの実行
  15.    1.6.3 機械学習とは何か?
  16.    1.6.4 ニューラルネットワークとは?
  17.    1.6.5 ディープラーニングのジャーゴンを少し
  18.    1.6.6 機械学習の本質的限界
  19.    1.6.7 画像認識器の動作
  20.    1.6.8 画像識別器が学習したこと
  21.    1.6.9 画像識別器を画像以外のタスクに使う
  22.    1.6.10 ディープラーニング用語の復習
  23.   1.7 ディープラーニングは画像クラス分類だけのものではない
  24.   1.8 検証セットとテストセット
  25.    1.8.1 テストセットを定義する際の判断
  26.   1.9 「きみならどうする?」
  27.   1.10 問題
  28.    1.10.1 さらに詳しく
  29.  2章 モデルから実運用へ
  30.   2.1 ディープラーニングの実際
  31.    2.1.1 プロジェクトの開始
  32.    2.1.2 ディープラーニングの現状
  33.    2.1.3 ドライブトレインアプローチ
  34.   2.2 データの収集
  35.   2.3 データからDataLoadersへ
  36.    2.3.1 データ水増し
  37.   2.4 モデルの訓練と、それを用いたデータクリーニング
  38.   2.5 モデルをオンラインアプリケーションにする
  39.    2.5.1 モデルを推論に使う
  40.    2.5.2 モデルからノートブックアプリを作る
  41.    2.5.3 ノートブックから本物のアプリケーションへ変換
  42.    2.5.4 アプリのデプロイ
  43.   2.6 大惨事を避けるには
  44.    2.6.1 予期せぬ結果とフィードバックループ
  45.   2.7 書こう!
  46.   2.8 問題
  47.    2.8.1 さらに詳しく
  48.  3章 データ倫理
  49.   3.1 データ倫理の重要な例
  50.    3.1.1 バグと遡求権:医療手当アルゴリズムのバグ
  51.    3.1.2 フィードバックループ:YouTubeの推薦システム
  52.    3.1.3 バイアス:Latanya Sweeney教授「逮捕」
  53.    3.1.4 何がいけないんだ?
  54.   3.2 機械学習と製品設計の統合
  55.   3.3 データ倫理のトピック
  56.    3.3.1 遡求権と説明責任
  57.    3.3.2 フィードバックループ
  58.    3.3.3 バイアス
  59.    3.3.4 逆情報
  60.   3.4 倫理的な問題の特定と対応
  61.    3.4.1 対象となるプロジェクトの解析
  62.    3.4.2 実現するべきプロセス
  63.    3.4.3 多様性の力
  64.    3.4.4 公平性、説明責任、透明性
  65.   3.5 政策の役割
  66.    3.5.1 規制の効果
  67.    3.5.2 権利と政策
  68.    3.5.3 自動車:歴史上の前例
  69.   3.6 まとめ
  70.   3.7 問題
  71.    3.7.1 さらに詳しく
  72.   3.8 ディープラーニングの実際:まとめ
  73. 第Ⅱ部 fastaiのアプリケーションを理解する
  74.  4章 舞台裏:数字のクラス分類器
  75.   4.1 ピクセル:コンピュータビジョンの基礎
  76.   4.2 最初の試行:ピクセル類似性
  77.    4.2.1 NumPy配列とPyTorchテンソル
  78.   4.3 ブロードキャストを用いたメトリックの計算
  79.   4.4 確率的勾配降下法(SGD)
  80.    4.4.1 勾配の計算
  81.    4.4.2 学習率によるステップ
  82.    4.4.3 SGDによる訓練の例
  83.    4.4.4 勾配降下法のまとめ
  84.   4.5 MNISTのロス関数
  85.    4.5.1 シグモイド
  86.    4.5.2 SGDとミニバッチ
  87.   4.6 すべてをまとめる
  88.    4.6.1 最適化器の作成
  89.   4.7 非線形性を加える
  90.    4.7.1 さらに深く
  91.   4.8 用語の復習
  92.   4.9 問題
  93.    4.9.1 さらに詳しく
  94.  5章 画像クラス分類
  95.   5.1 犬と猫の識別から、品種の識別へ
  96.   5.2 プリサイズ
  97.    5.2.1 DataBlockのチェックとデバッグ
  98.   5.3 クロスエントロピーロス
  99.    5.3.1 活性値とラベルを見る
  100.    5.3.2 ソフトマックス
  101.    5.3.3 対数尤度
  102.    5.3.4 対数をとる
  103.   5.4 モデルの解釈
  104.   5.5 モデルの改良
  105.    5.5.1 学習率ファインダ
  106.    5.5.2 フリーズ解除と転移学習
  107.    5.5.3 個別学習率
  108.    5.5.4 訓練エポック数の選択
  109.    5.5.5 よりディープなアーキテクチャ
  110.   5.6 結論
  111.   5.7 問題
  112.    5.7.1 さらに詳しく
  113.  6章 他のコンピュータビジョン問題
  114.   6.1 マルチラベルクラス分類
  115.    6.1.1 データ
  116.    6.1.2 DataBlockの構築
  117.    6.1.3 バイナリクロスエントロピーロス
  118.   6.2 回帰
  119.    6.2.1 データの組み立て
  120.    6.2.2 モデルの訓練
  121.   6.3 結論
  122.   6.4 問題
  123.    6.4.1 さらに詳しく
  124.  7章 SOTAモデルの訓練
  125.   7.1 Imagenette
  126.   7.2 正規化
  127.   7.3 漸近的リサイズ
  128.   7.4 テスト時データ水増し
  129.   7.5 ミックスアップ
  130.   7.6 ラベル平滑化
  131.   7.7 結論
  132.   7.8 問題
  133.    7.8.1 さらに詳しく
  134.  8章 協調フィルタリングの詳細
  135.   8.1 データの概要
  136.   8.2 潜在因子の学習
  137.   8.3 DataLoadersの構築
  138.   8.4 協調フィルタリングを1から作る
  139.    8.4.1 重み減衰
  140.    8.4.2 Embeddingモジュールの自作
  141.   8.5 埋め込みとバイアスの解釈
  142.    8.5.1 fastai.collabの利用
  143.    8.5.2 埋め込みの距離
  144.   8.6 協調フィルタリングモデルの立ち上げ
  145.   8.7 ディープラーニングによる協調フィルタリング
  146.   8.8 結論
  147.   8.9 問題
  148.    8.9.1 さらに詳しく
  149.  9章 テーブル型データモデルの詳細
  150.   9.1 カテゴリ埋め込み
  151.   9.2 ディープラーニング以外の手法
  152.   9.3 データセット
  153.    9.3.1 Kaggleコンペティション
  154.    9.3.2 データを見る
  155.   9.4 決定木
  156.    9.4.1 日付の取り扱い
  157.    9.4.2 TabularPandasとTabularProcの利用
  158.    9.4.3 決定木の構築
  159.    9.4.4 カテゴリ変数
  160.   9.5 ランダムフォレスト
  161.    9.5.1 ランダムフォレストの構築
  162.    9.5.2 OOBエラー
  163.   9.6 モデルの解釈
  164.    9.6.1 決定木の分散による予測確信度
  165.    9.6.2 特徴量重要度
  166.    9.6.3 重要度の低い変数の削除
  167.    9.6.4 冗長な特徴量の削除
  168.    9.6.5 部分従属プロット
  169.    9.6.6 データリーク
  170.    9.6.7 決定木解釈器
  171.   9.7 外挿とニューラルネットワーク
  172.    9.7.1 外挿問題
  173.    9.7.2 ドメイン外データの検出
  174.    9.7.3 ニューラルネットワークの利用
  175.   9.8 アンサンブル
  176.    9.8.1 ブースティング
  177.    9.8.2 埋め込みと他の手法の組み合わせ
  178.   9.9 結論
  179.   9.10 問題
  180.    9.10.1 さらに詳しく
  181.  10章 自然言語処理の詳細:RNN
  182.   10.1 テキストの前処理
  183.    10.1.1 トークン分割
  184.    10.1.2 fastaiによる単語ベースのトークン分割
  185.    10.1.3 サブワードトークン分割
  186.    10.1.4 fastaiによる数値化
  187.    10.1.5 言語モデルの訓練のためにテキストをバッチに区切る
  188.   10.2 テキストクラス分類器の訓練
  189.    10.2.1 DataBlockを用いた言語モデル
  190.    10.2.2 言語モデルのファインチューン
  191.    10.2.3 モデルの保存とロード
  192.    10.2.4 テキストの生成
  193.    10.2.5 クラス分類器のためのDataLoadersの作成
  194.    10.2.6 クラス分類器のファインチューン
  195.   10.3 情報操作と言語モデル
  196.   10.4 結論
  197.   10.5 問題
  198.    10.5.1 さらに詳しく
  199.  11章 fastaiの中位APIによるデータマングリング
  200.   11.1 fastaiの多層APIの詳細
  201.    11.1.1 Transform
  202.    11.1.2 Transformを実装する
  203.    11.1.3 パイプライン
  204.   11.2 TfmdListsとDatasets:Transformed Collections
  205.    11.2.1 TfmdLists
  206.    11.2.2 Datasets
  207.   11.3 中位データAPIの適用:SiamesePair
  208.   11.4 結論
  209.   11.5 問題
  210.    11.5.1 さらに詳しく
  211.   11.6 fastaiのアプリケーションを理解する:まとめ
  212. 第Ⅲ部 ディープラーニングの基礎
  213.  12章 言語モデルを1から作る
  214.   12.1 データ
  215.   12.2 最初の言語モデルを1から作る
  216.    12.2.1 PyTorchでの言語モデル
  217.    12.2.2 最初の回帰型ニューラルネットワーク
  218.   12.3 RNNの改良
  219.    12.3.1 RNNの状態を維持する
  220.    12.3.2 教師信号を増やす
  221.   12.4 多層RNN
  222.    12.4.1 モデル
  223.    12.4.2 活性値の爆発と消失
  224.   12.5 LSTM
  225.    12.5.1 LSTMを1から作る
  226.    12.5.2 LSTMを用いた言語モデルの訓練
  227.   12.6 LSTMの正則化
  228.    12.6.1 ドロップアウト
  229.    12.6.2 活性値正則化と時間活性値正則化
  230.    12.6.3 LSTMの重み制約による正則化
  231.   12.7 結論
  232.   12.8 問題
  233.    12.8.1 さらに詳しく
  234.  13章 畳み込みニューラルネットワーク
  235.   13.1 コンボリューションの魔法
  236.    13.1.1 コンボリューションカーネルのマッピング
  237.    13.1.2 PyTorchによるコンボリューション
  238.    13.1.3 ストライドとパディング
  239.    13.1.4 コンボリューションの式を理解する
  240.   13.2 最初の自作コンボリューションニューラルネットワーク
  241.    13.2.1 CNNの構築
  242.    13.2.2 コンボリューションの計算を理解する
  243.    13.2.3 受容野
  244.    13.2.4 Twitterについて
  245.   13.3 カラー画像
  246.   13.4 訓練安定性の改善
  247.    13.4.1 シンプルなベースライン
  248.    13.4.2 バッチサイズを増やす
  249.    13.4.3 1サイクル訓練
  250.    13.4.4 バッチ正規化
  251.   13.5 結論
  252.   13.6 問題
  253.    13.6.1 さらに詳しく
  254.  14章 ResNet
  255.   14.1 Imagenette再訪
  256.   14.2 近代的なCNN:ResNet
  257.    14.2.1 スキップ接続
  258.    14.2.2 SOTAのResNet
  259.    14.2.3 ボトルネック層
  260.   14.3 結論
  261.   14.4 問題
  262.    14.4.1 さらに詳しく
  263.  15章 アプリケーションアーキテクチャの詳細
  264.   15.1 コンピュータビジョン
  265.    15.1.1 cnn_learner
  266.    15.1.2 unet_learner
  267.    15.1.3 Siameseネットワーク
  268.   15.2 自然言語処理
  269.   15.3 テーブル型データ
  270.   15.4 結論
  271.   15.5 問題
  272.    15.5.1 さらに詳しく
  273.  16章 訓練のプロセス
  274.   16.1 ベースラインの作成
  275.   16.2 汎用最適化器
  276.   16.3 モメンタム
  277.   16.4 RMSProp
  278.   16.5 Adam
  279.   16.6 重み減衰の分離
  280.   16.7 コールバック
  281.    16.7.1 コールバックの作成
  282.    16.7.2 コールバックの順番と例外
  283.   16.8 結論
  284.   16.9 問題
  285.    16.9.1 さらに詳しく
  286.   16.10 ディープラーニングの基礎:まとめ
  287. 第Ⅳ部 ディープラーニングを1から作る
  288.  17章 基礎からのニューラルネットワーク
  289.   17.1 ニューラルネットワーク層を1から作る
  290.    17.1.1 ニューロンのモデリング
  291.    17.1.2 行列演算を1から書く
  292.    17.1.3 要素ごとの演算
  293.    17.1.4 ブロードキャスト
  294.    17.1.5 アインシュタインの加法記法
  295.   17.2 順方向パスと逆方向パス
  296.    17.2.1 層の定義と初期化
  297.    17.2.2 勾配と逆方向パス
  298.    17.2.3 モデルのリファクタリング
  299.    17.2.4 PyTorchへ
  300.   17.3 結論
  301.   17.4 問題
  302.    17.4.1 さらに詳しく
  303.  18章 CAMを用いたCNNの解釈
  304.   18.1 CAMとフック
  305.   18.2 Grad-CAM
  306.   18.3 結論
  307.   18.4 問題
  308.    18.4.1 さらに詳しく
  309.  19章 fastai Learnerを1から作る
  310.   19.1 データ
  311.    19.1.1 Dataset
  312.   19.2 ModuleとParameter
  313.    19.2.1 シンプルなCNN
  314.   19.3 ロス関数
  315.   19.4 Learner
  316.    19.4.1 コールバック
  317.    19.4.2 学習率のスケジューリング
  318.   19.5 結論
  319.   19.6 問題
  320.    19.6.1 さらに詳しく
  321.  20章 おわりに
  322. 付録A ブログの作成
  323.  A.1 GitHub Pagesを用いたブログ
  324.   A.1.1 レポジトリの作成
  325.   A.1.2 ホームページの設定
  326.   A.1.3 記事の投稿
  327.   A.1.4 GitHubとローカルコンピュータの同期
  328.  A.2 Jupyterでブログ
  329. 付録B データプロジェクトチェックリスト
  330.  B.1 データサイエンティスト
  331.  B.2 戦略
  332.  B.3 データ
  333.  B.4 解析
  334.  B.5 実装
  335.  B.6 維持管理
  336.  B.7 制約
  337. 奥付

Product information

  • Title: PyTorchとfastaiではじめるディープラーニング ―エンジニアのためのAIアプリケーション開発
  • Author(s): Jeremy Howard, Sylvain Gugger, 中田 秀基
  • Release date: May 2021
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119427

You might also like

book

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

by Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。

book

機械学習システムデザイン ―実運用レベルのアプリケーションを実現する継続的反復プロセス

by Chip Huyen, 江川 崇, 平山 順一

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

book

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

by Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし

今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。

book

仕事ではじめる機械学習 第2版

by 有賀 康顕, 中山 心太, 西林 孝

2018年の発行以来、多くの読者に支持された書籍を全面改訂! 不確実性の高い機械学習プロジェクトについて、「仕事で使う」という観点から整理するコンセプトはそのままに、初版の発行後に登場した概念や課題を取り上げます。「機械学習でいい感じにしてくれ」と突然上司に言われたとき、本書で学んだことが読者の力になるはずです。本書で得た知識は読者が「いま」困っている問題を解決する助けとなるでしょう。 第2版では、機械学習システムの開発と運用の統合する「ML Ops」、機械学習モデルを解釈し、その妥当性や根拠を明らかにする「機械学習モデルの検証」、ユーザーの行動を学習しながら予測を進める「バンディットアルゴリズム」、意思決定における予測システムの役割や意思決定のデザインを扱う「オンライン広告での機械学習」といった新章を追加しています。