消費財メーカーでは、製品開発の初期段階で製品の保存期間や長期安定性の不具合リスクを予測するための安定性予測モデルを開発することが重要です。タイムラプス撮影(TLP)は、液体消費財の物理的安定性を測定するための主要なツールとして確立されています。
以前、TLP画像から物理的安定性の欠陥モードを予測するために、Pythonを用いてAI/ディープラーニングモデルを開発しました。JMP Pro用の新しいTorch Deep Learningアドインが利用可能になったことで、プログラミングなしで画像から物理的安定性の欠陥を検出するAI/ディープラーニングモデルを迅速に開発できます。本プレゼンテーションでは、このアドインを画像分類問題に適用し、配合された消費者製品の物理的安定性の欠陥を検出する例を紹介します。
ファンギー・ルオと申します。プロクター・アンド・ギャンブル(P&G)で統計学者兼データサイエンティストとして働いています。本日はJMPのラス・ウォルフィンガー氏と共にポスター発表を行います。P&Gには約28年間在籍しており、現在は統計とデータサイエンスの手法を用いて製品とパッケージのイノベーションを加速させることに注力しています。ラスさん、簡単に自己紹介をお願いできますか?
はい。Fangyiさん、ありがとうございます。このプロジェクトで一緒に仕事ができることを嬉しく思います。ご存知の通り、AI機械学習は非常にホットな話題で、今回のような実用的なアプリケーションは大変気に入っています。これは今まさに大きな変化をもたらしていると思いますし、新しいTorchアドインを使った画像分類機能も素晴らしいと思います。これは非常に強力で実用的だと思います。今日、皆さんがどのようにこのアドインで進歩を遂げてきたのかをお話しできるのは、本当に素晴らしい経験になるでしょう。私自身、このプロジェクトが軌道に乗るのをとても楽しみにしています。このプロジェクトは数年かけて開発されてきましたが、ようやく軌道に乗り始めています。
ラスさん、ありがとうございます。今日は、JMPの新しいTorchディープラーニングアドインを使った画像分類問題をご紹介します。まずは、問題の背景についてお話しします。プロクター・アンド・ギャンブル(P&G)では、多くの消費者向け製品を製造しており、その中にはシャンプー、コンディショナー、液体洗剤、食器用洗剤など、液体製剤の製品もあります。
製品を市場に投入する前に、試作品で多くのテストを行う必要があります。タイムラプス撮影法と呼ばれる技術を用いて、試作品を様々な温度に置いた際の画像を経時的に追跡します。右側の画像では、液状の試作品における相分離やクリーム状など、安定性に問題が生じる様子が確認できます。表面に薄い層ができていますが、これは変動、ひび割れ、結晶化によるものです。
試作製品を何千個もテストしたからです。このデジタルカメラを使って、すべての試作製品を経時的に追跡しました。何百万枚もの画像を撮影しました。これらの画像を手作業で分類し、異なる故障モードに分類することは不可能でした。数年前、PNGでチームを結成し、Pythonで開発されたディープラーニングモデルを用いて、これらの画像を安定した故障モードと異なる物理的安定性の故障モードに分類するディープラーニングアルゴリズムを開発しました。
JMP Pro Torch Deep Learning が新たに利用可能になったので、これを画像分類の問題に適用してみたいと思います。
この画像分類を、画像を安定クラスと不安定クラスに分類する二値分類と、安定クラスと異なる物理的安定性の故障モードといった複数のクラスに分類する分類の両方を用いて、問題に適用してみました。これらの2種類の分類問題には、トップクラスのディープラーニングアドインを使用しました。トレーニングセットには約3,500枚の画像、テストセットには500枚以上の画像を使用しました。結果の一部をご紹介します。
このTorch Deep Learningアドインを二値分類に試した際、最初はTorch Deep Learningアドインのパラメータをデフォルト設定のまま使用し、ResNet-34という画像モデルを選択しました。すると、95%の予測検証精度を誇る非常に優れたモデルがすぐに作成できました。これは非常に迅速かつ容易でした。中央にはトレーニング履歴グラフの例が示されています。エポック数の増加、つまりトレーニングの反復回数の増加に伴う損失の減少を確認したいところです。私たちの目標は、95%の検証精度を達成するモデルを開発することです。この初期モデルは非常に優れていましたが、モデルの検証精度をさらに向上させることができるかどうかを確認したいと考えています。
私が試したのは、ハイパーパラメータのいくつかを手動で変更することだけでした。ResNet-50のようなより複雑な画像モデルを使用し、学習率を下げてエポック数を増やすことも試しました。数回試した後、検証精度99%の2クラス分類モデルをすぐに構築できました。この結果を見て、とても興奮しました。一方、JMP Torch Deep Learningアドインを使った多クラス分類では、少し時間がかかり、当初は良いモデルを構築できませんでした。
JMPのPeter Hirsch氏から、Torch Deep Learningアドイン用のハイパーパラメータ調整が可能なTorch Companionアドインがあると聞きました。このアドインもmarketplace.jmp.comからダウンロードできます。Torch Deep LearningアドインとTorch Companionアドインはどちらもダウンロード可能です。このアドインを試してみたところ、ハイパーパラメータの実験計画法(DOE)を作成できました。
20を使用しました。エポック数、学習率、バッチサイズ、レイヤー数、レイヤーサイズ、そして画像サイズが異なる20通りのハイパーパラメータの組み合わせが生成されました。このTorch Companionアドインを試したところ、この多クラス分類で得られた最良のモデルは約78%の検証精度でした。私たちの目標は約95%以上の検証精度を持つモデルを実現することなので、このモデルは不十分です。そこで、異なるハイパーパラメータを用いて手動でモデルを調整してみました。画像モデルも試してみました。ResNet-50も試しました。また、エポック数を増やしたり、学習率を下げたり、バッチサイズや画像サイズを変更したりしてみました。
多クラス分類では、実行にかなり時間がかかります。ここに、1日経過してもモデルがまだ実行されているスクリーンショットがあります。NVIDIA GPUのメモリ不足を警告されることもありましたが、それでも試行錯誤を繰り返し、何度か試行錯誤した結果、画像を安定モードやフェードモードなどの複数のクラスに分類できる非常に優れたディープラーニングモデルを構築することができました。検証精度は95%でした。結果には非常に満足しています。また、Russからは、メモリ使用量を削減するにはバッチサイズやエポック数を減らすという提案をもらいました。これは私たちが得た学びの一部です。それでは見ていきましょう。
話を戻しましょう。ご覧の通り、Torch Deep Learningアドインを使えば2値分類モデルを非常に簡単かつ迅速に開発できます。また、Torch Companionアドインを使えばハイパーパラメータの調整も可能です。さらに、ハイパーパラメータを手動で調整することで、多クラス分類問題に適したモデルを開発することも可能です。Russさん、何か付け加えたいことはありますか?
そうですね、Fangyiさん、素晴らしい進歩ですね。この方法を採用しているお客様もかなりいらっしゃると思います。これはJMPで慣れ親しんでいるような、いわゆるクイック分析とは違います。データ量が多く、計算負荷も非常に高いからです。NVIDIA GPUを使えるのは素晴らしいですね。Fangyiさん、そのGPUカードのメモリ容量は覚えていますか?
200、256ギガバイト以上あると思います。
通常、GPUは12GBか16GBくらいです。ここで言っているのはCPUではなく、GPUのメモリのことです。詳しく調べないと分かりませんが、NVIDIAには非常に多くの種類のカードがあることは知っています。一概には言えません。最近、どのカードを買うべきかとよく聞かれますが、NVIDIAは良いですね。彼らは非常に好調で、より安価で、より高性能なカードを次々と開発しています。新しいカードが出ると聞いています。より低価格で、よりパワフルになるので、実行時間も短縮されるはずです。特に大きな画像を扱う場合は、それが全てです。
結局、2枚から4枚に増やしたと思います。これは標準サイズです。それでも十分なサイズで、カードを最大限活用できるようになります。ただし、コストは高くなります。とにかく、だからこそ、私たちはアドインを用意しているのです。少しの忍耐と調整で、ハイエンドのコンピューティングパワーを活用できるのは素晴らしいことです。このアドインを提供してくれたPeter HirschとScott Allenに感謝します。このアドインの使い手は大勢います。Torch自体に追加できる本当に素晴らしいアドインで、より優れたモデルをより早く作成したり、いくつかの作業を自動化したりできます。
明らかに、非常に長い実行時間が必要なので、一晩放置して翌日に戻って確認する方が賢明です。自動化を活用しつつ、少し手動で調整したり、いくつか試してみるという点で、あなたは本当に正しいステップを踏んだと思います。これは多くの場合、最適なモデルを見つけるための方法であるだけでなく、問題についてより深く理解するのにも役立ちます。どの要因が実際に改善に役立っているのか、そしてどの要因がそれほど改善に役立っていないのかを見極めるためです。私が見てきた限りでは、多くの場合、判断は難しいです。ある画像モデルが画像の本質を捉えているように見え、他のモデルよりもはるかに優れた結果を出すこともあります。
時にはどれもほぼ同じ値になることもありますが、その場合は画像サイズやトレーニング方法に大きく左右されます。基本的には、とにかく実験をいくつか実行して試してみる必要があり、私たちはそのように設定しました。トレーニング損失曲線を示していただき、ありがとうございます。曲線が下降してから平坦化していることを確認するために、常に注意を払うことが重要です。これは良い曲線ですね。ただし、注意が必要です。曲線が下降してから再び上昇する2つのケース、特に実線のようなケースは、使用すべきではありません。
これは過剰適合を示している可能性があり、これは時々起こり得ます。また、もしそれが依然として着実に減少し続けるなら、通常は収束が進むまでエポック数を増やす必要があるでしょう。しかし、これらはすべて些細なこと、ちょっとしたコツであり、実際に使ってみれば分かるものです。私にとって、これは本当に楽しいです。なぜなら、これはノーコードインターフェースなので、Pythonコードを書いて手間取ったり、何か違うことを試したいたびにコードを変更したりすることなく、すぐにモデリングを始められるからです。Fangyiさん、これは本当に素晴らしいアプリケーションです。おめでとうございます。拝見できて本当に嬉しいです。
ラス、ありがとう。最後に、いくつか参考資料をご紹介します。これはJMP Torch Deep Learningアドインのドキュメントへのリンクと、Torch Companionアドインへのリンクです。また、数年前に統計学会、ASA、IMS、Spring Research Conferenceで、Pythonを使ってモデルを開発する際に似たような問題を発表したことがあります。
また、過去にこの問題に一緒に取り組んでくれたP&Gチームにも感謝したいと思います。また、Russが言及したように、ストレージコンパニオンアドインを共有してくれたPeter Hirschにも感謝したいと思います。以上です。ご質問がありましたら、Russか私までご連絡ください。RussからJMP Torchディープラーニングアドインを学ぶのは本当に楽しかったです。P&Gでは、このアドインをもっと活用できると思います。ありがとうございました。
素晴らしい仕事でした、ファンイー。ありがとう。