
Torchをベースに開発されたPython用の深層学習フレームワークにPyTorchがあります。Facebook(元Meta)のAI Reserarch Lab(FAIR)が開発したことで注目を集めています。今回はこのPyTorchとはどのようなフレームワークであり、広く利用されているTensorFlowとはどう違うのかや、具体的に利用する事例などを解説します。
目次
PyTorchとは
最初に今回の説明対象である、PyTorchとはどのようなフレームワークであるのか理解を深めていきましょう。
PyTorchの起源
PyTorchは、Facebookの人工知能研究開発チームが、Torchを改良して開発を続けている、深層学習フレームワークです。Torchに対応しているのは、マルチパラダイムプログラミング言語である「Lua」だけであるため、これをPythonの環境下でも実行できるように修正しつつ、機能も改修されています。
なお、FacebookはPyTorchだけではなくConvolutional Architecture for Fast Feature Embedding(Caffe2)と呼ばれるフレームワークやモデルも管理していました。ただ、これらには互換性がなかったため、現在はPyTorchへと統合されています。結果、Caffe2の機能をPyTorchが持つようになり、非常に強力なフレームワークとなっています。
PyTorchが支持される理由
PyTorchが世界的に支持されている背景には「開発元」と「ベースになったフレームワーク」があると考えられます。
まず、PyTorchは世界的に有名なFacebookが中心となり、開発を続けているフレームワークです。これまでに、数多くの最新サービスを提供してきた実績があり、それは世界的に認められています。そのような実績に裏付けられる形で、PyTorchも支持されているのです。また、PyTorchは上記で解説したようにTorchをベースとして開発されています。そもそも、Torchは深層学習フレームワークとして多用されていたため、それを踏襲したPyTorchも広く支持されているのです。
もちろん、これら以外にも、根本的にPyTorchが利用しやすいフレームワークであることが挙げられます。その点については、後に記載するPyTorchの主な特徴を参照ください。
TensorFlowとの比較
PyTorchと比較されやすいフレームワークに「TensorFlow」があるため、こちらとの比較を進めていきます。
計算グラフ
計算に利用されるグラフを比較すると、TensorFlowは静的グラフであるのに対してPyTorchは動的グラフです。つまり、TensorFlowは事前にグラフを定義しておく必要がありますが、PyTorchは処理しながらグラフを定義してくれます。事前に定義しておく必要があるかどうかは、実装の柔軟性を左右するため、非常に重要な違いです。
一般的には、動的グラフを生成してくれるフレームワークの方が、柔軟な実装を実現しやすくPyTorchに優位性があります。ただ、特定の計算グラフを指定したいなど、静的グラフにこだわる際はTensorFlowも選択肢に挙がります。
パフォーマンス
IBM社や海外メディアなどのパフォーマンステストを参考にすると、TensorFlowはPyTorchよりも高パフォーマンスだとされています。具体的なテスト内容は割愛しますが、同等の処理を実行した際にPyTorchよりも早く結果を出せるのです。
ただ、比較するとTensorFlowの方が高速ではありますが、PyTorchも高パフォーマンスなフレームワークに分類されます。深層学習に関する他のフレームワークより、高速なものであるため、パフォーマンスに大きな差はないと考えても良いでしょう。
コミュニティの支援
TensorFlowは昔から開発が続いていることもあり、非常に大きなコミュニティがあります。エンジニアが多く活発に動いているだけではなく、過去の情報が蓄積されているのです。検索することで、自分が抱える問題などを解決しやすくなっています。
それに対して、PyTorchは新しいフレームワークであることから、コミュニティはTensorFlowより小さなものです。活発に動いていますが、蓄積されているナレッジなどは限られています。コミュニティの支援を求められますが、自力で解決する能力も求められます。
PyTorchの主な特徴
PyTorchの主な特徴をまとめると以下のとおりです。
利便性が高い
プログラミング言語の中でも、世界的に多用されているプログラミング言語であるPythonで実装されているため、利便性の高さが魅力です。そのため、既存のプログラミングスキルを活かして、PyTorchの開発に着手できます。
PyTorchは、2016年に公開されたため、機械学習ライブラリとしては後発組に分類されます。そのため、他のライブラリと比較するとエンジニアが少ない状態でスタートしました。しかし、言語がPythonであることや他のライブラリに類似していることから、利便性が高くエンジニアを急激に増やしています。
コードが理解しやすい
PyTorchは、これまで利用されていたPythonのライブラリに似ている部分が多くあります。そのため、コードが非常に理解しやすい点が特徴です。特に、Pythonの開発で多用される「NumPy」と似ていることは、大きな魅力だと考えられています。
既存のライブラリと似ている部分が多いため、今までPythonを扱ってきたエンジニアがそのスキルを活用できます。初見のフレームワークを新しく習得するとなると、学習コストが大きくなりやすいですが、PyTorchならすでにPythonを学習したことのある人なら理解しやすく学習コストがかかりづらいことが魅力的です。
クラウド環境との相性が良い
クラウド環境との相性が良いフレームワークであることが特徴です。AWSやAzureなど、主要なクラウドサービスであればスムーズに利用できます。Pythonで開発されたフレームワークであるため、これを実行できるサービスを利用すれば、PyTorchも簡単にデプロイできるのです。
主要なクラウドサービスを活用できるため、深層学習 を効率よく実施できます。例えば、簡単に実行環境を確保でき、データ量に応じてリソースの修正が可能です。一般的なパソコンやサーバでは制限がある部分でも、クラウドならばその制限を解消してくれます。
PyTorchでのネットワーク構築例
PyTorchには学習されたモデルが含まれていて、こちらを活用することでニューラルネットワークを構築できます。
画像・動画処理
PyTorchには画像分類用の畳み込みニューラルネットワークが用意されているため、転移学習を利用してモデルの訓練が可能です。学習させたい画像を大量に理解させることで「特定の画像がどれに分類されるか」を示せるようになります。
また、同様に大量のデータを学習させることによって、動画の処理も実現が可能です。動画の一部分に写っていたものが何か、事前に学習した内容から評価できます。
自然言語処理
Attention機構を備えたTransformerモジュールを使用して、 Sequence to Sequenceを活用した自然言語処理を実装できます。例えば、文字列の傾向を把握して、音節や単語に分類することが可能です。他にも、名前を姓と名に分類することもできます。
また、TorchTextと呼ばれる機能があり、これによりテキストを分類することが可能です。言語に関する処理であれば、大半のネットワークを構築できます。
音声認識
torchaudioを用いることで、音声コマンド認識のニューラルネットワークを構築できます。PyTorchからデータセットが提供されているため、これを利用することで音声認識を実装できる仕組みです。
音声認識においては、波形データやサンプリングレートなどを考慮する必要があります。ただ、PyTorchはある程度の誤差までカバーできるようになっているため、多くの音声から学習し分析まで対応が可能です。
PyTorchを活かした成功事例
PyTorchを活かした事例はいくつもあるため、それらの中でも成功事例を紹介します。
情報処理学会:人物検出向け深層学習の効率化
深層学習を活用することで、画像データなどから人物を検出できることは知られています。ただ、学習データの収集や教師ラベルの作成に時間とお金が必要となることが課題でした。
しかし、情報処理学会の研究では、PyTorchに実装されている「CycleGAN」を拡張することで、約93.8倍もの速度高速化が実現されています。また、画像認識の精度も高まっていて、PyTorchの良さを引き出せることが確認されました。深層学習は、データの準備モデルの学習が課題となりますが、PyTorchの活用でその課題を解決しやすくなっています。
パナソニックシステムデザイン株式会社:撮影した画像の認識
パナソニックでは、各種カメラの開発やそれに関連する子会社、関連会社を有しています。その中に、Vieurekaカメラと呼ばれるものが含まれ、PyTorchと組み合わせたAI推論の実装が可能です。
PyTorchには、「MobileNet」と呼ばれる学習済みの画像分類モデルが含まれています。これとカメラで取得した内容を連携させることで、撮影されたものの内容を、AIによって分類できる仕組みです。
事前にモデルが用意されているため、利用者はモデルとパラメーターを読み込み、画像を与えるだけで利用できます。Vieurekaは、インターネット経由で撮影した画像を保存することができ「画像を自動的にクラウドへアップロードし分析する」などのスキームで成功しました。
elastic:自然言語処理の導入
ElasticsearchにはPyTorchと接続するための仕組みが用意されていて、自然言語処理の活用が注目を集めています。本来は「全文検索エンジン」ですが、これに自然言語処理を導入することで、データをより活用できるようになるのです。
全文検索とPyTorchを組み合わせることで「質問と回答」の組み合わせを生成できるようになりました。また、大量の文書を学習させることで、書き手の感情を評価する仕組みをつくることができています。
AI開発のカギはデータ
AI開発を成功させたいならば、学習に利用するデータが「カギ」を握ると考えましょう。品質の高いデータを用意できなければ、AIを効率よく学習させることはできません。また、誤った知識を学習してしまう可能性があります。
そのため、AIの開発はもちろんのこと、それと同等かそれ以上に学習データに力を入れるべきです。どんなに素晴らしいアルゴリズムを発明しても、データの品質が悪いと高品質なAIモデルは完成しません。
AI開発用データ収集を効率的にするスクレイピング
繰り返しですが、AI開発を成功させるためには、学習データの品質を高めなければなりません。品質の高いデータの収集には時間を要しますが、効率よく実現する方法に「スクレイピング」があります。続いては、スクレイピングの概要から、AI開発用のデータとしてはどのような意識が必要なのか解説します。
スクレイピングとは
スクレイピングとは「かき集める」という意味の「scrape」に由来する言葉で、Webサイトのコンテンツから必要な情報だけを収集する技術や行為を指します。また、データを収集するだけではなく、必要な形式に加工する部分まで含めて、スクレイピングと呼ぶ場合もあります。Web上には、AI開発やAIモデルの学習に役立つデータが多数公開されています。例えば、Web上に公開されている非常に多くの写真から、画像生成AIのモデルを開発することが可能です。大量のデータから特徴を導き出させることで、AIモデルは適切な画像を生成できるようになります。
このような画像をひとつひとつ人手で収集することは現実的ではありません。上記の画像データならば、何万件もの画像データを収集する必要があります。このように大量のデータを収集する場合は、スクレイピングを活用することで、効率的にデータを収集することができます。
データのクリーニングと前処理の重要性
Web上のデータを収集するだけでも「スクレイピング」と呼びます。ただ、AI開発を目的としているならば、収集するだけではなくデータのクリーニングと前処理が重要です。これは、AI開発の一般論として唱えられている考え方です。
データのクリーニングと前処理を簡単に説明すると「必要なデータだけを加工すること」です。事前にAIが学習しやすいようなデータにしておかないと、誤った学習結果となり無駄に時間を要したりします。
このような状況に陥らないため、データをルールに沿って整えることが重要です。例えば、半角英数字と全角英数字が混在していると、AIは別物として判断する可能性があります。本来は同じデータとして扱うべきものが、異なったデータと認識されてしまうと、モデルの開発に大きな影響を与えてしまいます。
スクレイピングが未来のAI開発にもたらす重要性
スクレイピングは、未来のAI開発へ大きな影響を与えると考えられます。Webデータはこれからも増え続け、そのデータを活用することが求められます。AIは今後も多くのデータを必要とし、AIモデルの学習データを作成するために、Web上にある大量のデータを収集できるスクレイピングが非常に役立つでしょう。
また、クラウドサービスの普及によって、誰でも簡単に独自のAIモデルを作成できるようになりました。小規模なモデルから大規模なモデルまで、幅広く開発されるようになりつつあるのです。それらを学習させるために、スクレイピングで収集されたデータが重要となる時代がくると考えられます。
まとめ
PyTorchはPythonで書かれた深層学習のライブラリです。AIなどの開発で多用される言語で実装されているため、低いハードルで使いこなせます。ただ、PyTorchは「モデル」を作成するものであり、これとは別にAIを学習させるためのデータが必要です。
AIモデルの学習には、品質の高いデータを大量に準備しなければなりません。データが不足していると、思い描くAIモデルの生成は不可能です。それほどまでに、AI開発では学習データが重要視されています。大量の学習データを準備する方法としては、Web上から必要なデータを収集・加工するスクレイピングがおすすめです。目的に応じたデータを用意できるため、効率よくAIに学習してもらえます。
ただ、スクレイピングには専門的な技術や法律面の知識が必要です。PigDataはスクレイピングの実績が多数あり、AI向けのデータ収集からデータ整形にも対応できるため、AIの学習データとしてWebデータが必要な場合はご相談ください。