PyTorchを用いたディープラーニング実装の学習方法 (Part 1)

PyTorchを用いて画像処理から自然言語処理など、様々なDeepLearningの実装手法を学習する方法を解説します(Part 1)。( I introduce how to learn PyTorch Implementation for Japanese people).

本シリーズの内容

[1] 機械学習そのものが初心者の方へ
[2] これからPyTorchを学びはじめる方へ
[3] 画像分類の転移学習とファインチューニング
[4] 物体検出(SSD)
[5] セマンティックセグメンテーション(PSPNet)
[6] 姿勢推定(OpenPose)
[7] GANによる画像生成(DCGAN、Self-Attention GAN)
[8] GANによる異常検知(AnoGAN、Efficient GAN)
[9] 自然言語処理による感情分析(Transformer)
[10] 自然言語処理による感情分析(BERT)
[11] 動画分類(3DCNN、ECO)
[12] さらに発展した内容を学びたい方へ

※本記事(Part 1)では、[1]~[3]を解説します

[1] 機械学習そのものが初心者の方へ

はじめに、「ディープラーニングの実装技術を学びたいが、そもそも機械学習の実装技術もきちんと体系だって勉強したことがない・・・」そんな方への案内です。

私と同僚の清水さんとで、雑誌Software Desingで連載していた「scikit-learn で学ぶ機械学習アルゴリズム」シリーズをまとめた書籍、
「AIエンジニアを目指す人のための機械学習入門 実装しながらアルゴリズムの流れを学ぶ」をまずは手に取り、実装、学習してみてください。

本書では、

「教師あり学習:回帰」(最小二乗法、L1正則化とL2正則化)

「教師あり学習:分類」(ロジスティック回帰、サポートベクターマシン:SVC、決定木、ランダムフォレスト、Naive Bayes)

「教師なし学習」(主成分分析、k-means、ガウス混合モデル:GMM)

「発展編」(勾配ブースティング決定木:GBDT、t-SNE、異常検知:Novelty Detection、Outlier Detection、エルボー法とシルエット分析)

を取りあげ、すべての機械学習手法について、
1. アルゴリズムの基本的な流れ、概要
2. プログラムの実装と実行
3. アルゴリズムの詳細な解説(仕組み)

の順番に、実装・解説しています。

そして、本書の第5章では「機械学習システムの構築フローとモデルの性能評価」と題して、
・機械学習システムの一連の構築フロー
・クロスバリデーション
・前処理の概念と実装
・モデル評価の概念と実装
について解説しています。

ディープラーニングの学習の前に、種々の機械学習アルゴリズムについて各ハイパーパラメータの理解や実装に自信がない方はぜひ、ご覧ください。

[2] これからPyTorchを学びはじめる方へ

これからPyTorchに取り組まれる方は、まずは
「PyTorchでMNIST(手書き数字画像)の画像分類が実装できる」
状態を目指してください。

そのためには、PyTorchの公式チュートリアルhttps://pytorch.org/tutorials/index.html

も良いのですが、チュートリアルは英語版しかないので日本人にはとっつきづらいです。

私が執筆した書籍ではありませんが、私がおすすめするのは
「PyTorchニューラルネットワーク実装ハンドブック」です。

こちらのはじめから第4章の終わりまでを読み、実装してみることで、PyTorchの初心者レベルで学びたいことが学べます。

[3] 画像分類の転移学習とファインチューニング

PyTorchで簡単な画像分類ができるようになったら、より発展的な内容に挑戦してみましょう。

その際には拙著
「つくりながら学ぶ! PyTorchによる発展ディープラーニング」がおすすめです。

本書では、画像分類の転移学習にはじまり、物体検出、セマンティックセグメンテーション、姿勢推定、GANでの画像生成、異常画像検知、そしてBERTによる自然言語処理、動画のクラス分類などを、実装しながら解説しています。

まずは、第1章「 画像分類と転移学習(VGG)」に挑戦してください。

ビジネスの現場で画像分類を実装する際に、ディープラーニングモデルを0から学習させることはほとんどありません。

他の有名なタスク(ImageNetなど)で学習したディープラーニングモデルのパラメータを初期値にして、そこから自前のデータで学習させることが一般的です。

こうした別のタスクで学習したモデルから自前のモデルを作成する手法には、転移学習ファインチューニングがあります。

本書では、ベースとなるディープラーニングモデルとして、VGGモデルを使用します。このモデルは、オックスフォード大学のVGG:Visual Geometry Group、が作成したモデルなのでVGGモデルと呼ばれます。

第1章で使用するVGGモデルの解説

このVGGモデルに対して、ImageNetタスクで学習させた初期値を与え、そこから自前のデータ(本書ではPyTorch公式のアリとハチの画像分類します)を用意して、画像分類のディープラーニングを実施します。

本書では少しずつ実装と解説を繰り返しながら、段階的にディープラーニングの実装手法とアルゴリズム理解を目指します。

書籍は、図解、実装、文章の順番で解説する構成です

また、実装コードは全てGitHubにて公開されています。

第1章の最初の方は、Webブラウザから手軽にPyTorchを実行できる「Google Colaboratory」を使用します。

そして、第1章の後半からはディープラーニングの実装において重要となるGPUを使用した実装を行います。

このGPU環境を整える方法として、1.4節で、
「Amazon AWSのクラウドGPUマシンを使用する方法」
を解説します。本節の解説に従うことで、ものの数分でGPU環境を用意することができます。

GPU環境を使うと聞くとお金が心配ですが、本書では1時間あたり100円程度の計算マシンしか使用せず、連続使用時間も数時間程度です。

そのためあまりお財布には厳しくありません。
ですが、きちんと自分でクラウドでGPU計算環境の作れるようになります。

「画像分類の転移学習・ファインチューニング」を実装できるようになったあとは、物体検出(SSD)に取り組みます。

記事も長くなってきたので、[4] 物体検出(SSD)から、次の記事で解説します。

⇒⇒その2へ進む

https://www.amazon.co.jp/dp/4839970254/

--

--

小川 雄太郎(電通国際情報サービスISID)
PyTorch
Writer for

電通国際情報サービス(通称ISID)、AIトランスフォーメーションセンターに所属。AI系の研究・開発、コンサル、アジャイルでのソフトウェア開発に従事。Datascientist at Dentsu-ISID, Ltd. GitHub: https://github.com/YutaroOgawa/about_me