對於消費品公司而言,在產品開發的早期階段建立預測穩定性模型以預測產品保質期或長期穩定性失效風險至關重要。延時攝影(TLP)已被公認為測量液態消費品物理穩定性的主要工具。
之前我們曾使用 Python 開發過一個 AI/深度學習模型,從 TLP 影像中預測物理穩定性失效模式。現在,有了適用於 JMP Pro 的全新 Torch 深度學習插件,我們可以快速開發 AI/深度學習模型,無需任何編程即可從影像中檢測物理穩定性失效。在本次演講中,我們將分享該插件在影像分類問題中的應用,即檢測配方消費品的物理穩定性失效。
我叫羅芳怡,是寶潔公司的統計學家兼資料科學家。今天,我將與JMP公司的Russ Wolfinger一起展示一張海報。我在寶潔工作了大約28年,目前專注於運用統計學和數據科學方法加速產品和包裝創新。 Russ,能否簡單介紹一下自己?
是的,謝謝你,方義。很高興能和你一起合作這個計畫。你也知道,人工智慧機器學習是一個非常熱門的話題,我們很喜歡像這樣的實際應用,我認為它們現在真的產生了很大的影響,而且能夠使用新的 Torch 插件進行圖像分類,我覺得它非常強大且實用。今天我們將分享你們是如何取得進展的,這將會是一個非常精彩的故事。我個人非常期待看到它的發展。這個專案已經籌備了好幾年,現在終於開始取得一些進展了。
謝謝Russ。今天,我們將使用新的JMP Torch深度學習外掛程式來解決影像分類問題。首先,我將介紹一下問題的背景。寶潔公司生產許多消費品,其中一些是液體配方產品,例如洗髮精、護髮素、洗衣液、洗潔精等等。
在產品上市之前,我們必須對原型產品進行大量的測試。我們採用一種稱為縮時攝影的技術,來追蹤原型產品在不同溫度下隨時間變化的影像。在右側,您可以看到一些液態配方原型產品的穩定性失效模式,例如相分離和乳狀化。頂部有一層薄薄的薄膜。這代表波動、裂縫和結晶。
因為我們測試了數千種原型配方產品,所以我們使用這台數位相機追蹤所有原型產品隨時間的變化。我們拍攝了數百萬張影像。手動將這些影像分類到不同的失效模式是不可能的。幾年前,我們在PNG公司組建了一個團隊,並開發了一種深度學習演算法,利用Python開發的深度學習模型,將這些影像分類為穩定狀態和不同的物理穩定性失效模式。
隨著 JMP Pro Torch Deep Learning 的推出,我認為我們應該嘗試將其應用到我們的圖像分類問題中。
我們嘗試使用二元分類(將影像分為穩定和不穩定兩類)和多類分類(例如穩定狀態與不同的物理穩定性失效模式)來解決影像分類問題。我們使用了目前最優秀的深度學習外掛程式來處理這兩種分類問題。訓練集包含約 3500 張圖像,測試集包含 500 多張圖像。下面我將展示一些結果。
當我們嘗試將這個 Torch 深度學習插件應用於二元分類問題時,最初我使用了該插件的預設參數設置,並選擇了名為 ResNet-34 的圖像模型。很快,我就得到了一個預測驗證準確率高達 95% 的優秀模型,而且流程非常快速方便。中間部分展示了一個訓練歷史圖的範例,我們希望看到損失值隨著訓練輪數(epochs)的增加而降低,就像訓練迭代次數增加一樣。因為我們的目標是開發一個驗證準確率達到 95% 的模型。這個初始模型已經非常出色,但我們希望進一步提升模型的驗證準確率。
我嘗試手動調整一些超參數。我嘗試使用更複雜的圖像模型,例如 ResNet-50,並嘗試降低學習率和增加訓練輪數。經過幾次嘗試,我很快就得到了一個驗證準確率達到 99% 的二分類模型。看到這些結果我非常興奮。然而,使用 JMP Torch 深度學習外掛程式進行多分類則需要更多時間,而且一開始我沒能得到理想的模型。
我從 JMP 的 Peter Hirsch 那裡了解到,你們有一個 Torch Companion 插件,可以為 Torch Deep Learning 插件進行超參數調優。我也下載了這個插件,您可以在 marketplace.jmp.com 上找到它。您可以同時下載 Torch Deep Learning 外掛程式和 Torch Companion 外掛程式。我試用了這個插件,它能夠設計超參數的實驗方案。
我使用了 20 種組合。它產生了 20 種超參數組合,包括不同的訓練輪數、學習率、批次大小、層數、層大小以及圖像尺寸。我嘗試使用 Torch Companion 插件,但對於這個多分類問題,我能得到的最佳模型驗證準確率約為 78%。我們的目標是獲得一個驗證準確率在 95% 左右的模型,因此這個模型還不夠好。然後我嘗試手動調整模型,使用不同的超參數。我還嘗試了不同的圖像模型,例如 ResNet-50。此外,我還嘗試增加訓練輪數、降低學習率、改變批次大小或改變影像尺寸。
對於多分類任務,運行時間要長得多。這裡有一張截圖,顯示模型運行了一天後仍在運行。有時,它會提示我的 NVIDIA GPU 記憶體不足,但我堅持嘗試,經過多次嘗試,最終成功建立了一個非常優秀的深度學習模型,可以將影像分類到多個類別,例如穩定模式和不同褪色模式。驗證準確率達到了 95%。我對結果非常滿意。此外,Russ 建議我可以減少批次大小或訓練輪數來降低記憶體佔用。以上就是我們學到的一些經驗,讓我們拭目以待。
讓我回到正題。如你所見,使用 Torch 深度學習外掛程式開發二元分類模型非常簡單快捷,我們也可以使用 Torch Companion 外掛程式進行超參數調優。此外,透過手動調整超參數,我們還可以開發出適用於多類別分類問題的優秀模型。 Russ,你還有什麼要補充的嗎?
是的,方義,這真是個不錯的進展,我知道我們有不少客戶都在走這條路。這跟我們通常在JMP裡做的快速分析不一樣,因為資料量非常大,運算量也很大,你能用上NVIDIA的GPU真是太好了。方義,你還記得那張GPU的顯存容量是多少嗎?
我認為超過 200 到 256 GB。
通常來說,GPU的顯存容量大概在12GB到16GB之間。我指的是GPU的顯存,不是CPU的顯存。我們得查一下,但我知道NVIDIA有很多不同的顯示卡。很難說哪款比較好。現在很多人都在問我們該買哪一款顯示卡,好在NVIDIA發展勢頭很好,所以他們不斷推出性能更好、價格更低的顯示卡。我聽說他們即將推出一款新顯示卡,效能更強,價格更低,所以我們預計運行時間會縮短。這主要取決於你處理的圖像尺寸,尤其是在處理大型圖像時。
例如,我覺得你最終選擇了 2 到 4 倍的配置,這是標準配置。這個配置仍然相當不錯,你可以開始真正利用顯示卡的效能,當然,成本也會隨之增加。總之,這就是我們擁有這些顯示卡的原因。能夠利用高端運算能力,並且透過一些耐心和調整,這真的很棒。感謝 Peter Hirsch 和 Scott Allen 開發的這個插件,我知道很多人都在使用。它是一個非常出色的 Torch 插件,可以讓你更快地創建更好的模型,並實現一些自動化操作。
很明顯,問題就在於那些長時間的運行,有時最好讓它們運行一整夜,第二天再來看看結果。我覺得你在這方面做得非常正確,既使用了自動化功能,又進行了一些手動調整和嘗試,我認為這是明智之舉。這不僅往往是找到最佳模型的途徑,還能幫助你更深入地了解問題,從而判斷哪些因素真正推動了改進,哪些因素影響不大。我發現很多時候,你根本無法分辨。有時候,某個影像模型似乎能夠捕捉到影像的本質,並且往往比其他模型表現得更好。
有時候結果都差不多,但有時候結果比較取決於影像大小或訓練方案。基本上你需要做一些實驗來嘗試,而我們就是這樣設定的。很高興你展示了訓練損失曲線,因為密切注意它很重要,確保它先下降然後趨於平緩。這條曲線看起來不錯。不過要小心,例如有兩種情況你不應該使用它,那就是損失曲線先下降然後又回升的情況,尤其是實線部分。
這可能表示模型過度擬合,這種情況偶爾會發生。另一種情況是,如果模型持續穩定下降,通常需要執行更多輪次的訓練,直到模型進一步收斂。但這些都是一些小技巧,需要邊做邊學。對我來說,它真的很有趣,因為它提供了一個無需編寫程式碼的介面,讓你可以快速上手建模,而無需編寫大量的 Python 程式碼,也無需每次嘗試不同的東西時都修改程式碼。哇,這真是一個很棒的應用程序,方義。恭喜!我很高興看到它。
謝謝 Russ。最後,這裡有一些參考資料。這是 JMP Torch 深度學習插件的文檔鏈接,以及 Torch Companion 插件的連結。另外,幾年前在 ASA、IMS 和 Spring Research Conference 等統計會議上,我們在用 Python 開發模型時也遇到類似的問題。
此外,我要感謝寶潔團隊過去與我共同解決這個問題。正如Russ所提到的,我們也要感謝Peter Hirsch分享他的收納伴侶外掛。就這些了。所以,如果你們有任何問題,知道該聯絡誰。你們可以聯絡Russ或者我。從Russ學習JMP Torch深度學習插件真的很有趣,我認為它在寶潔還有更多應用前景。謝謝。
方義,幹得好!謝謝。