Qiita投稿練習のために良い題材がないか探していたところ,最近読んで良かった参考書があったので紹介させていただきます.
動機
大学の卒業研究のなかでPyTorchのコードを読む必要が生じた.
PyTorchとは
PyTorchとは、Pythonのオープンソース機械学習ライブラリ(Deep Learningライブラリ)です。
PyTorchで「パイトーチ」と読み、2016年1月15日、Facebookの人工知能研究グループにより初期開発されました。初版が公開された2016年から徐々に注目を集め、現在ではPythonの機械学習ライブラリとして高い人気を誇ります。
参考書
今回はこちらの参考書を使いました.
最短コースでわかる PyTorch &深層学習プログラミング
定価4070円.ページ数は567pあります.
しかしこのページ数にもかかわらず,かなりサクサク読み進めることができます.お値段も,この情報量を大学の講義で学ぶとなると半年はかかると思うので,コスパとしては十分良いと思います.
本書籍を読んだ感想
早速ですが,本書籍を読んだ所感は以下の通りです.
- Pythonの知識があれば1ヶ月かからず読める.
- 数式が少なく,数学が苦手でも取り組みやすい.
- 複雑なPyTorchのコードが理解できるようになる.
- 基礎的なCNNの構築ができるようになる.
- PyTorchの導入本としてかなり良い!
主に画像処理をメインとしており,前半は機械学習によるクラス分類,後半はCNNによる画像のクラス分類を取り扱っています.
読む前の私の学習状況
- Pythonのコードはある程度読める
- 深層学習についての知識が申し訳程度にある
- 基礎的な線形代数,微積分の知識がある
PyTorchを勉強する下地はある程度ありましたが,これらの知識を持っていたことによる利点は読み進めるスピードが速まったくらいです.
本書籍には,(付録として)numpyやmatplotlibだけでなくprint関数の使い方から記載されているので,pythonの知識がない方でも読むことができる本となっています.
特徴
本書籍の特徴には以下のようものが挙げられます.
1. 図解が多い
2. 自分で多層ニューラルネットワークを構築できるようになる
3. 比較的新しい
4. 初心者向け
1.図解が多い
本書籍の最大の特徴といえるのが,図やコードが豊富であることです.
本書籍では,アヤメの分類や,MNISTの手書き数字の分類など,有名なデータセットを使いながら,すべてのコードを順序通りに解説してくれるのでとにかく分かりやすいです.
また,これらのコードは著者のgithubからダウンロードすることで,Google Colab(ブラウザでPythonを実行できる環境)で実行できるため,参考書を片手に実行することでより深くコードを理解できます.
なお,本書籍の後半ではGPUが必須となるため,GPUを持っていない方はColabにて実行する必要があります(私もColabでコードを実行しましたが,特に問題なく動かせました).
2.自分でネットワークを構築できるようになる
本書籍ではコードの解説が丁寧に添えてあるので,ニューラルネットワークの構築を簡単に行うことができます.それも全結合層や畳み込み層,プーリング層といった基本構造だけでなく,ドロップアウトやバッチ正規化のようなチューニング技法も学ぶことができ,より本格的なネットワークを作成することができます.
また,終盤では事前学習済みモデルに対してfine-tuningや転移学習を行う方法についても紹介されており,かなり実用性もあると思います.
3.比較的新しい
これはプログラミングの参考書あるあるなのですが,参考書の執筆された年が古いと,自分の環境で動作しないということがあります.
参考書に記載されているコードが実行できないと,勉強をやめる理由ができてしまい挫折の原因となります.
この本の第一刷が発行されたのは2021年9月です.
時の流れが速いプログラミング界隈においてこれが新しいか古いかは微妙なところですが,少なくとも2023年2月時点で私が実行したときは滞りなく動作しました.
また,本書籍の著者は,本書籍の解説や補足情報をご自身のQiitaで随時更新しているので,急に実行できなくなるという心配はないと思います.
4.初心者向け
本書籍の難易度は,プログラミング言語の学習というジャンルにおいてはかなり易しく,567pというポケモンの攻略本くらいの分厚さにもかかわらず,一日1~2時間程度の勉強で,1ヶ月かからず読了することができました.
そのため機械学習についての知識がない方でも,モチベーションを保ったまま読み進めることができると思います.
一方,ニューラルネットワークとはなんなのかといった本質的なことを深掘りした本ではないため,本質的な理解というよりは,
- コードが読める
- 基礎的なネットワークを自分で設計し,実行できる
ということがメインの参考書となります.
まとめ
本書籍は深層学習をしっかり学ぶというよりは,PyTorchで動かすことをメインにした書籍です.
それゆえにストレスなく学習を進めることができ,参考書に苦手意識がある方にもオススメできる一冊です.
以上,PyTorchを参考書だけで学習した話でした.内容や表記法について良くない点があればご教授してもらえると嬉しいです.