pythonは多様なライブラリ・フレームワークに対応しており、ディープラーニング・AI開発において、注目を集めているプログラミング言語です。
とくに、フレームワークを活用することで、開発工程を大幅に短縮できたり、セキュリティを向上できたりなどさまざまなメリットがあります。
中でも、pytorchはNumpyとデータ型が似ているため扱いやすく、コミュニティも活発であるため、機械学習・ディープラーニングのフレームワークとして近年人気が上昇しています。
とはいえ、世の中にはpytorchの学習教材が溢れており、何をどのような本で学習を始めてよいか迷っている方もいらっしゃるのではないでしょうか?
そこで本記事では現役データサイエンティストとして日々データ分析に携わっている経験をもとに、pytorchを学習する際のおすすめの参考書を詳しく解説をしていきます。
監修者
經田 原弘
東京大学大学院新領域創成科学研究科複雑理工学専攻修了。大学時代は3次元の医療データの平滑化処理を研究テーマとし、大学院時代はJAXAと協業し、月探査機かぐやの衛星データから、月面上の水の存否について調査していた。新卒では株式会社リクルートにてレコメンドシステムの開発等に従事し、現在は製造業系スタートアップにてデータサイエンティストとして勤務。応用情報技術者試験・E資格合格者。
pytorchとは?
まずpytorchとはどのようなフレームワークで、どのような場面で活用されているのかの確認から始めていきましょう。
pytorch(パイトーチ)はFacebook社が開発したオープンソースのディープラーニングフレームワークです。自動微分やLossの最適化や大量の行列演算ができるので、簡単にディープラーニングのモデルを構築することができます。
機械学習・ディープラーニングで活用されるフレームワークは主に以下の2つです。
フレームワーク | 主な特徴 |
---|---|
pytorch | ・動的な計算グラフを採用しており、グラフを構築する際に自由度が高いため、柔軟性に優れている ・Numpyとデータ型が似ており、学習しやすい |
TensorFlow | ・静的な計算グラフを採用しており、グラフを構築する際に最適化された計算グラフが 生成されるため、高速に処理することができる ・TensorFlowの構文やAPIを新たに学ぶ必要があり、学習コストがかかる |
これらの特徴から、pytorchは主に画像認識・自然言語処理・AI開発・ロボット制御など幅広い分野で活用されています。たとえば、以下のように活用されています。
活用例 | できること |
---|---|
画像認識 | 畳み込みニューラルネットワーク( CNN)を構築することができます。 たとえば、標準的な画像認識のデータセット(CIFAR-10、ImageNetなど) に対して、学習済みのモデルを簡単に使用することができます。 |
自然言語処理 | 再帰型ニューラルネットワーク( RNN)やTransformerモデルなどの 自然言語処理に適したニューラルネットワークを構築することができます。 たとえば、文章生成や言語翻訳などで活用されます。 |
AI開発 | 分散学習やハイパーパラメータの最適化など、大規模な深層学習システムの構築をすることができます。 たとえば、自動運転や画像・音声・自然言語処理によるAIアプリケーションの開発などで活用されます。 |
PyTorchはモジュール性が高く、柔軟性があるので、ほかにもさまざまな現場で機械学習・ディープラーニングのフレームワークとして活用されています。
pytorchを学習する参考書の選び方
pytorchを学べる本は非常に多く出版されています。
自分に適した参考書を見つけるために、「選び方」を確認しておきましょう。まずは参考書を選ぶ際に必ずチェックしておきたい「3つのポイント」をご紹介します。
- 自分のレベルに合っている
- 豊富なサンプルコードがある
- 数学知識も学習できる
ポイント①:自分のレベルに合っている
pytorchの学習本は数多くあり、超入門レベルから専門技術書レベルまでさまざまな本が売られています。
初学者向けと謳いながらも、高度なアルゴリズムの知識を要したり、専門的な説明が多い本もあり、自身のレベルと参考書のレベルとマッチしているかをよく吟味する必要があります。
自身のpytorchスキルを判断するヒントとして、編集部ではpytorchスキルを3段階に分けた表を作成しました。
pytorchのレベルとスキルセット
レベル | できること |
---|---|
初級レベル | ・損失関数の定義 ・GPUを用いた高速な演算処理 ・ニューラルネットワークの構築 ・バックプロパゲーションによる重み更新 ・テンソル(多次元配列)の生成、操作、変換 |
中級レベル | ・データの前処理、データ拡張の実装 ・転移学習、ファインチューニングの実装 ・様々な活性化関数、最適化手法、正則化の使用 ・非画像系データの処理(時系列データ、テキストデータなど) |
上級レベル | ・深層強化学習の実装 ・モデルの解釈、可視化 ・モデルの高速化、分散処理 ・ONNX形式へのエクスポート ・計算グラフの最適化、高速化 ・ほかのフレームワークとの連携 |
自身のpytorchレベルを確認しながら、ひとつひとつを正しい順番で段階的に学んでいくと学習効率がよくなることが期待できます。
たとえば、初心者はテンソルの基本的な操作とニューラルネットワークの考え方から学習した方がよいでしょう。一方、上級者はモデルの高速化や分散処理、ONNX形式へのエクスポートなどを学習すると、スキルアップができるでしょう。
まずは、上記表を参考に現在のpytorchスキルを把握して、適切なレベルの参考書を選びましょう。
ポイント②:豊富なサンプルコードがある
2つ目のポイントはサンプルコードが豊富に載っている参考書を選ぶことです。
フレームワークは多くの機能を組み合わせて使う必要があったり、APIを活用したりする必要があるため、学習内容が多岐に渡り、学習が難しいといわれています。
サンプルコードがあることで、概念やアルゴリズムの理解がしやすいというメリットがあります。
たとえば、最適化を学習したいとき、下記のようなサンプルコードがあることで、実際にコードを見て、それがどのように動作するのかを理解することができます。
import torch.optim as optim
# モデルの定義
model = ...
# 損失関数の定義
criterion = ...
# 最適化アルゴリズムの定義
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 学習ループ
for epoch in range(num_epochs):
for data in dataloader:
# データの取得
inputs, labels = data
# 勾配の初期化
optimizer.zero_grad()
# 順伝播
outputs = model(inputs)
# 損失関数の計算
loss = criterion(outputs, labels)
# 逆伝播
loss.backward()
# パラメーターの更新
optimizer.step()
これにより、それぞれのコードの意味がコードと対応してわかるので、最適化の理解が深まります。
さらに、サンプルコードがあることで、難しい内容でも具体的な活用イメージを持って学習できるため、知識が定着しやすくなります。
ポイント③:数学知識も学習できる
3つ目のポイントは数学知識も学習できることです。
フレームワークの学習に数学知識が必要かどうかは、使用するフレームワークやその目的によって異なりますが、pytorchでは微分や線形台数などの数学知識も必要となる処理が多いので、数学知識も併せて学習できる参考書がおすすめです。
たとえば、以下のようなとき数学知識を必要とします。
・テンソル演算
pytorchの基本的な機能はテンソル(多次元配列)です。このとき、行列積や線形代数の演算が必要になります。たとえば、以下のようなコードで線形代数を活用しています。
import torch
a = torch.randn(2, 3)
b = torch.randn(3, 4)
c = torch.mm(a, b) # aとbの行列積を計算
大量のデータの計算時にはパフォーマンスがよいので、pytorchのテンソル演算をよく活用します。
・自動微分
pytorchでは自動微分が実装されており、微分を計算するための関数が用意されています。たとえば、以下のようなコードで微分を活用しています。
mport torch
x = torch.tensor([2.0], requires_grad=True)
y = x ** 2
y.backward() # yをxで微分
print(x.grad) # xの微分係数を表示
自動微分を使うと、関数の勾配ベクトルを自動的に求めることができるので、勾配を使った最適化手法を容易に行えるようになります。
数学知識に不安のある方はpytorchの学習前に本書で数学知識を身に付けることがおすすめです。
本書はディープラーニングの学習に必要な数学5分野(微分積分・ベクトル行列・多変数関数・指数対数・確率)を網羅的に学習することができます。
数学知識がどのようにディープラーニングと関連するのかを知っていると、ディープラーニングの基礎理解と応用学習に大きく役立ちます。
たとえば、ニューラルネットワークの構築には線形代数や微分方程式の知識が必要です。畳み込み層やプーリング層は、行列演算やテンソル演算に基づいているため、数学知識を有していると理解が深まりやすいでしょう。
数学知識を身に付けたあとにpytorchの学習を行うと手戻りが少なくなるのでおすすめです。
pytorch学習おすすめ参考書6選
ここからは編集部が厳選したpytorchを学べる良書を紹介していきます。
【おすすめ】最短コースでわかる PyTorch &深層学習プログラミング
本書は計算グラフやアルゴリズムの仕組みなどpytorch独自の抽象的概念をイラストやフロー図を活用して解説しているので、初学者でもイメージが湧きやすく、簡単に理解することができます。
また、サンプルコードも汎用性を考えた実用的なコードであることに加えて、1行1行に対して詳しいコメントをつけているので、初学者でもコードを見ただけでその意味を理解することができます。
入門書であってもPythonやNumpyの基本文法など、読者にある程度の前提を課してしまうことが多いですが、本書ではPythonの基本文法やNumpyなど、重要知識はすべて解説しています。
そのため、本書1冊でディープラーニングプログラミングをするための必要な知識を網羅的にカバーすることができるので初学者に非常におすすめです。
【おすすめ】Python機械学習プログラミング[PyTorch&scikit-learn編]
本書は大きく ①基本的な機械学習ライブラリのscikit-learnを使った手法 ②pytorchによるディープラーニングの手法 の2つを学習することができるので、機械学習に欠かせないライブラリとフレームワークの知識を1冊で学習したい方におすすめです。
各手法の背景にある理論や数式も解説しており、原理から理解することができるので、機械学習の土台作りに最適です。
pytorchの仕組みを解説したあと、CNN/RNN/Transformerといったモデルの実装も学習できるので、敵対的生成ネットワークやグラフニューラルネットワークなどディープラーニングの知識まで身に付けることができます。
問題演習も随所にあり、実際に手を動かしながら、機械学習の知識を深めることができるので、初学者の方にも非常におすすめです。
PyTorch実践入門 ディープラーニングの基礎から実装へ
本書ではディープラーニングの基礎知識からpytorchを用いた実践的なコーディング手法までわかりやすく解説しているので、初学者に非常におすすめです。
たとえば、テンソルや畳み込み、バックプロパゲーションなどディープラーニングの基礎知識について学ぶことができます。
さらに、本書の最後では、本番環境へのさまざまなデプロイ方法についても学習することができ、実務ですぐに活用するスキルも身に付けることができます。
ただし、RNNについては解説がほぼないので、RNNも学習したいという方は注意が必要です。
現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装
本書はpytorchの基本から深層学習モデルの作成、そしてアプリケーション作成までを一気通貫で学習できます。これにより、理論だけではなく、実際の開発現場で役立つスキルを身につけることができるので、初学者に非常におすすめです。
また、豊富なコード例や図表を用いて、わかりやすく説明しており、コードの意味や難解な概念をイメージしやすく書かれているため、初学者でも手戻りなく学習することができます。
さらに、付録ではGoogle Colaboratoryの利用方法も学習できます。これを使えば、GPU環境がなくても無料で高性能のGPUを利用でき、ブラウザとネット環境があればすぐにプロジェクトを進めていくことができます。そのため、環境構築ができていない方にも本書は非常におすすめです。
PyTorchで作る!深層学習モデル・AI アプリ開発入門
本書では自動微分とDataLoader、CNN による画像認識、RNN による時系列データ処理を学習したのち、これらを利用したAI アプリの構築方法を学ぶことができ、本書1冊でpytorchの基礎からアプリ構築まで網羅的に学習することができます。
サンプルコードが豊富にあり、実際に手を動かしながらpytorchを学習できることに加えて、イラストや図も豊富にあり、ドロップアウトなど複雑な概念も直感的にイメージしやすいので、初学者に非常におすすめです。
各章の最後には演習問題もあるため、学んだ知識をすぐにアウトプットできる構成になっているので、知識が頭に定着しやすくなっています。
PyTorchではじめるAI開発
本書は画像認識・異常検出・物体検出・顔認証・文字認識・文章認識など実務の事例を活用してpytorchを学習することができるので、学んだ知識をそのまま実務に応用することができます。
また、ModelZOOやGitHub上で公開されているモデルが多く掲載されているので、ダウンロードしてすぐに活用することができます。そのため、実際に手を動かしながら学習したい方にも非常におすすめです。
ただし、本書はデータ処理の事例は少なく、画像処理に関連する解説が多い参考書なので、画像処理のディープラーニングを学びたい人には非常におすすめです。
まとめ
pytorchを学習する参考書の選び方のポイントやおすすめ参考書を紹介してきました。自分に合った参考書は見つかったでしょうか。
pytorchはディープラーニングや機械学習には欠かせないフレームワークなので、データサイエンティストを目指す方にpytorchの学習は非常に有益です。本記事が学習を始めるきっかけになれば幸いです。
編集部ではPythonに関連する記事も公開しています。Pythonに興味のある方はぜひこちらの記事もご覧ください。