PyTorchでディープラーニング実装入門!コードの構成を解説

こんにちは。制御機器メーカーでAI技術を用いた商品開発をしているToshifumi(@_kToshifumi_)と申します。

これまで、3回に渡ってStyleGANの理論や実装について解説してきました。この記事では、実装に用いたPythonの機械学習フレームワークであるPyTorchを用いたディープラーニング実装の流れを解説したいと思います。

過去記事はこちら
▷ リアルな人物画像を生み出す「StyleGAN」のしくみを解説!(1)
▷ リアルな人物画像を生み出す「StyleGAN」のしくみを解説!(2)
▷ リアルな人物画像を生み出す「StyleGAN」のコードを解説!【PyTorch】

PyTorchの人気が急上昇中!

現在、ディープラーニングで用いる言語は、Pythonがデファクトスタンダードとなっています。その理由は、ディープラーニング(DL)に適したフレームワークが充実しているからです。有名なものにGoolgeのTensorFlow、FacebookのTorch(Pytorch)、日本のPreferred Networks株式会社(以下、PFN)のChainer、などがあります。

しかし、2019年12月5日にPFNが「深層学習の研究開発基盤をPyTorchに移行」との発表を行いました。(該当記事はこちら)

自社開発のChainerの使用を諦め、他社製のDLフレームワークを使用するというのは大きな決断であったと思われます。こんな大きな決断をさせたのがPyTorchでした。現在世界で最も使用されているDLフレームワークはTensorFlowです。下図のGoogle Trendの図からもそれが分かるかと思います。

しかし、ここで注目したいのは、TensorFlowが2018年6月を境に減少傾向にある一方で、PyTorchは常に増加傾向にあるということです。

実際に私が様々な最新論文を読んだ際にも、PyTorchを使用した研究が増えており、論文著者がGithubで公開しているコードもPyTorchで実装したものが増えてきていると感じました。この調子が続くと今後、PyTorchユーザーがTensorFlowユーザーを上回るということが想定されます。おそらく、PFNも今後はPyTorchが主流になると読んだ上での決断だったのだと考えられます。

また、PyTorchの強みの一つとして、学習方式にDefine-by-Runを採用しているということがあります。こちらについては多くの方が解説されているので説明は割愛しますが、一言でいうと

「Define-by-Runは学習中にネットワークを変化させることができる」

という点が大きなポイントかと思います。

これまで解説させて頂いた「StyleGAN」も、8×8の画像の生成ができるようになったらネットワークを変化させて16×16の画像の生成ができるように学習、といった具合に、生成できる画像サイズが大きくなるようにネットワークを変化させながら学習進めていく必要があるため、Define-by-Runで学習していくことが必要となります。

TensorFlowには、このDefine-by-Runが基本実装されておらず、追加機能として存在しているため、Define-by-Runでの学習を行うためにはその指示文が必要となり、コーディングが煩雑になってしまいます。一方、PyTorchは元々Define-by-Run方式であるため、何も気にすることなく、直感的に分かりやすいコーディングを行うことが可能です。

これまで述べた内容をまとめると、以下のようになります。

・トレンドがTensorFlowは減少傾向、PyTorchは増加傾向にある
・最新の研究論文でPyTorchの採用数が増加傾向にある
・Define-by-Runであるため、分かりやすく直感的なコーディングが可能

こうした理由から、今からディープラーニングのフレームワークを選ぶのであれば、PyTorchが良いのではないかと考えています。

ディープラーニングの実装の流れ

このコンテンツを閲覧するには無料会員ログインが必要です。会員の方はログインして下さい。新規無料会員登録はこちら
※ログイン/初回登録後、下記ボタンを押してください。

業界から探す

PAGE TOP