為了解決這個問題,我們探索了機器學習和序列學習在配方優化中的應用,旨在提升產品品質。我們將實驗設計(DOE)與機器學習結合,從11種候選成分中篩選出最佳的一、二或三成分組合,並根據組合成分的數量調整每種成分的用量:單一成分0-1種,兩種成分0-0.5種,三種成分0-0.33種。在評估了所有12種成分的主要效果後,我們將研究範圍縮小到5種關鍵成分。我們對兩種成分的組合應用了全因子設計,同時收集了每種三成分組合在最大劑量下的一個數據點。我們使用空間填充設計進一步分析了三種有前景的組合,以探索完整的參數空間。
隨後,研究人員開發了機器學習模型來預測產品質量,並透過序列學習指導後續實驗,以優化特定配方組合的模型。此方法只需不到100次實驗室實驗即可確定最佳配方,充分證明了機器學習、序列學習和實驗設計相結合的有效性,它不僅能減少實驗工作量,還能有效識別高性能的原料組合。
大家好。今天,我們將探討如何利用機器學習、序列學習和實驗設計來優化配方。我是 Junaid Mehmood,目前在達能研發中心烏得勒支分部擔任製程技術員。
在正式討論主題之前,我想先簡單介紹一下達能。我們的使命是透過食品為盡可能多的人帶來健康。我們擁有多元化的產品組合,專注於健康理念,從當地市場採購原料,秉持永續發展和創新精神。您可能熟悉我們大部分的全球品牌,例如Activia、AptaMil、Evian和Apro,但我們也擁有龐大的本土品牌市場。
如果你仔細觀察,你會發現我們的大部分產品都由食品或食品衍生物組成,當然,也包括水。這意味著我們需要處理大量的配方。在達能,我們在進行配方研發與創新思考時,力求在保持卓越口感的同時,也兼顧產品的營養價值。我們希望根據消費者的需求和喜好,不斷進行創新。
這並非易事,因為在食品領域進行創新會面臨許多挑戰。首先,消費者的偏好可能每年都在改變。鑑於目前更加重視永續發展,這意味著我們需要不斷創新。
其次,我們需要遵守食品安全法規,這可能導致同一款產品在一個市場行之有效,但在另一個市場卻可能不被認可。此外,我們希望我們的產品本身就安全可靠,因為我們的大部分產品都針對嬰幼兒,有時甚至是針對無法經口進食的患者。
然後,我們希望平衡產品的成本。我們希望盡可能保持最高的質量,因為你可以買到質量非常好的產品,但如果價格太貴,就沒人會買了。
有鑑於此,通常情況下,我們在進行創新時,產品工作流程大致如下。這套流程相當通用,任何生產食品類產品的公司都會遵循類似的流程。首先,我們會構思新產品,或進行市場調查,並希望改變現有產品的某些特性。然後,基於此,我們會進行原料選擇和製程選擇。
原料選擇和加工流程密不可分。一種工藝可能適用於某種原料,但未必適用於另一種。這是一個循環過程,我們根據原料的營養價值來決定原料和加工流程。它們是否可持續?就加工製程而言,我們需要考慮其是否具有可擴展性、效率高,以及我們採用的製程是否不會增加產品本身的成本。
接下來是原型開發階段,我們主要在研發中心的實驗室進行這項工作。在這裡,我們會進行小規模的實驗室試驗,進行風味分析,優化某些製程,或重新回到第一步,選擇不同的原料。完成這些步驟後,我們會進入中試工廠,檢視產品的可擴充性。最後,我們會進行工廠試生產。所有這些步驟完成後,在產品上市前的最後一步是進行保質期和穩定性測試。某些類型的產品需要獲得監管部門的批准,但並非所有產品都需要,具體情況取決於產品的類型。
現在,無論是實驗室規模、中試規模或工廠規模,我們對產品的特性描述都基於其感官特性以及其他一些特性,例如黏度等加工性能。這些特性構成了我們的產品特性,我們以此為基礎優化製程。
今天我要討論的項目主要著重於實驗室規模的試驗,它包含三個主要部分:原料、製程和試驗本身。如果我們只關注原料和工藝,那麼我們關注的重點當然是微量和常量營養素。它們必須是產品的一部分,但產品本身也必須美味可口。
當然,我剛才討論的是保質期,接下來還有防腐劑和穩定劑,以及增稠劑,這些都能幫助產品……總的來說,當產品進入加工廠時,它們能使其更易於加工。當我們考慮製程選擇時,就需要考慮溫度控制、混合、加工速度以及所有其他不同的製程。
這些決定是在進行實驗室試驗之前預先做出的,或者在我們進行實驗室試驗時,我們會回到這些成分和選擇上,並根據典型產品的具體情況進行更改,使其更合理。
當我們考慮食材時,在測試這些食材時,我們會基於它們的功能性進行測試,例如它們對微量營養素的需求(例如添加某些礦物質或維生素),以及它們的感官特性(例如口感),還有監管要求。基於這些,我們可以確定每種配料的最低和最高用量。然後,在實驗室規模的試驗中,我們會測試每種食材如何影響產品的特性,這些特性包括:口感、質地和穩定性。
然而,對於任何配方中某些成分的最大限量,通常會受到監管要求的限制,尤其是香精、醣類和防腐劑,因此我們需要嚴格遵守這些規定……我們需要保持在一定的限量以下。
在這個專案中,我們結合使用了機器學習、序列學習和實驗設計(DOE),旨在優化產品的口感和質地。為此,我們研究了11種不同的原料,並希望找到單組分、雙組分或三組分的組合,以增強產品的口感和質地。
然後我們有七個不同的目標。其中三個是我們希望最小化的反應變量,兩個是我們希望最大化的反應變量,其餘的則是我們希望保持不變的反應變量,這樣即使我們加入這種成分組合,也不會改變這兩種特定分子。
此外,還有一些監管方面的要求,例如,如果只使用一種成分…在這11種成分中,如果我們只添加一種,那麼最多只能用1。這裡的1在我們術語中代表一個水平,如果我們從實驗設計(DOE)的角度來看,這意味著這是我們可以使用的該成分的最大用量。如果我們混合使用兩種成分,那麼最多只能使用0.5。同樣,如果我們混合使用三種成分,那麼最多只能使用0.33。我們需要在這些限制條件下,找出哪三種成分能帶來更好的口感或質地。
如果考慮所有可能的組合,兩種原料的組合總數為 55 種。那麼,如果有三種原料,可能的組合有 165 種,其中只有 11 種組合是可行的。如果把所有組合都算進去,總共有 231 種組合。要對每一種組合都進行實驗,工作量實在太大了。你不可能……也許你得花三、四年才能得出結論,但這顯然不是理想的做法。
為此,我們設計了一種循序漸進的方法。首先,我們從11種成分中篩選出5種,篩選過程僅基於其主要效果。然後,從這5種成分中,我們進一步篩選出兩種或三種成分的組合,以找出其中最有效的組合。接下來,在第三步驟中,我們選定了兩種或三種成分的組合,並進一步確定哪種組合效果最佳。最後,我們進入建模階段,利用模型預測結果來確定特定組合中每種成分的最佳用量。我們將詳細介紹每個步驟。
對於因子篩選,我們目前採用的是逐個因子進行篩選的方法。雖然在實驗設計(DOE)課程中,我們通常不建議這樣做,但在這個特定案例中,我們無法進行篩選設計。原因在於篩選設計本身存在一些固有的假設,即每個因子都可以獨立於其他因子而改變,並且每次實驗中所有因子都存在。然而,我們的案例並非如此。我們不能像其他方法一樣,將四、五種成分混合在一起。這意味著我們只能專注於一種成分。
其次,當我們考慮篩選設計建模時,我們通常只建立一個模型並查看參數值。但在這個特定案例中,這樣做行不通,因為一旦我們添加更多成分,就會偏離專案目標。
最後,我們在這個階段沒有考慮任何交互作用。首先,這只會大幅增加實驗次數。其次,食品配方和口腔對相互作用的感知方式與通常的加工條件截然不同。根據添加劑量,它們之間可能存在協同作用,也可能相互抑制。我們已經知道其中會存在一些非線性效應,因此在這個階段考慮這些效應毫無意義。
如果我們一次只考慮一個因素,那麼在這個例子中,我們分別在三個不同的層次上進行了實驗:0.33、0.67 和 1。基於此,我們總共進行了 33 次實驗,當然,其中有許多重複。但在整個演示過程中,當我專注於處理或實驗時,我不會將重複實驗納入。在這個例子中,我們有 33 次獨立的實驗。
完成這些實驗室試驗後,我們會根據每個反應的期望值建立一個相關矩陣。右側的內容只是為了幫助您更好地理解。對於其中三個反應,我們希望將其最小化;對於其中兩個,我們希望將其最大化;而對於另外兩個,我們希望保持不變。
這是相關性熱圖。 X 軸代表所有成分,Y 軸代表所有響應值。正如右上角所示,我們想要最小化其中三個反應值,可以看到,它們確實被最小化了。現在,我們需要確定哪個響應值最佳。接下來,我們希望最大化 Y₄ 和 Y₅,而 Y₆ 和 Y₇ 保持不變。
但相關性只能說明一半的問題,因為即使第一層或第三層的反應值變化不大,也可能得到非常好的相關性。因此,我們也查看了協方差熱圖。協方差實際上告訴我們反應變數相對於成分變數單位變化的相對變化。
結合這兩方面的信息,我們能夠從總共 11 種成分中剔除 6 種。如果我們只觀察剩下的成分,會發現我們想要最小化的三個反應變數與它們之間有強烈的負相關。這意味著我們想要最大化的反應變數要么沒有增加,要么已經達到了最大化。至於其餘的 Y₆ 和 Y₇,在本例中,它們的相關性並不強。這意味著它們保持不變。
這就是我們最終的決定。第一步,我們將食材從11種減少到5種。接下來,為了方便起見,我暫且把它們稱為1-5。它們和最初的1-5種配料有所不同,但為了方便接下來的討論,我還是把它們稱為X₁到X₅。
現在,我們想要評估所有可能的組合,並找出最好的組合。我們有兩種原料。如果考慮三種原料的組合,就有10種組合,也就是10種。總共有20種組合。如果我們現在想對主要二次效應和交互效應進行全因子設計,那將產生330次不同的運行。這已經太多了。
然後我們還有各個組成部分,這樣一來總共就有了340個重複項,也就是說,我們不想做這麼多實驗。這會耗費太多時間和資源。
為了解決這個問題,我們決定設計雙因素實驗,即只考慮兩種成分,然後將所有數據合併,得到三因素組合的設計矩陣。接下來我會詳細解釋它的結構。對於雙因素實驗,我們可以使用最大水準0.5;對於三因素實驗,我們將使用最大水準0.3。如果我們現在只考慮一個特定的組合X₁、X₂、X₃,那麼我們可以合併來自X₁、X₂、雙因素組合X₁、X₃以及X₂、X₃的所有資料。這意味著我們不必為所有三因素組合分別進行實驗。
如果我們更詳細地分析某個特定的組合,其方法如下。首先,我們使用空間填充設計來建立雙因子組合,並將其視為 0 到 0.5 之間的連續矩陣。然後,我們對三因子設計也進行了同樣的操作,但這次我們將其視為 0 到 0.33 之間的連續矩陣。接著,我們將所有雙因子和三因子運行的這些處理結果合併到一個表格中。最後,我們使用 JMP 自訂設計模組中的協變數因子函數來得到最終的設計。
讓我們詳細了解每個步驟。第一步,正如我之前所說,我們針對雙因子組合創建了 30 個不同的運行。這就是我們的參數空間。當然,它是一樣的。只有 X 和 Y 變數在 X₁ 和 X₂、X₁ 和 X₃ 以及 X₂ 和 X₃ 三種情況下會改變。我們試圖在這個特定情況下探索所有的參數空間。然後,我們對三因子組合做了同樣的操作,但這次我們的最大限制是 0.33,我們再次使用了空間填充設計。
現在我們可以把所有這些運行結果合併到一個表格裡。如果我們把這些結果視覺化,就能看到這120次運行的整體狀況。可以看到,表格的兩側是雙因素運行結果,中間部分(用紅點標示)是三因素運行結果。雙因素運行結果的範圍是0-0.5,三因素運行結果的範圍是0-0.33。
然後我們可以開啟 JMP 的自訂設計模組,並選擇「協變數因子」按鈕。我們可以選擇包含所有不同值的三列。然後,我們在這裡為自訂模組選擇的模型將包含主效應、二次效應和所有交互效應。
然後我們嘗試了不同的運行次數(16、19、22),並將它們相互比較,進行設計評估,以找出從這120次可能的運行中獲得最佳設計所需的最少運行次數,從而得到這個模型。我們發現,該設計確實能提供良好的最優性準則,且模型中不同項之間的相關性非常小。
仔細觀察,它與全因子設計非常相似,因為我們牆上的點(在本例中是雙因子組合)分佈在角落。然後,設計又增加了兩個點來表示三因子組合。然而,設計也增加了中心點。這是我們意識到在這種情況下可以使用全因子設計的第一個線索。事後看來,也許我們應該從這裡開始,但我只是在描述我們的工作流程。
因為它看起來像是全因子設計,所以我們實際上就回到了這裡。現在大家都知道,如果是全因子設計,設計矩陣看起來是這樣的,在這個例子中,最大值是0.5。如果是全因子設計,有三種組合,設計矩陣看起來是這樣的。
但是,正如我之前討論過的,全因子設計還有一個額外的點,我們自己也加入了這個點,那就是三因子組合的最大限制。
在本例中,這些實驗對於交互作用和二次效應至關重要。這些實驗中,每個因素只改變一個變因。但我們在第一步驟中已經進行過這些實驗,檢視了主效應。因此,我們無需重複這些實驗,只需在此基礎上擴充數據即可。這意味著在第二步中,我們只需要針對特定成分進行實驗,即改變兩種或三種成分。這大大減少了實驗總數。原本需要 340 次實驗,現在只需 60 次即可完成,我們可以同時評估所有 20 種不同的組合。
至關重要的是,如果全因子設計是正交的,那麼在這個特定案例中,正交性就不存在。這意味著我們在進行分析時需要牢記這一點。
第二步的運行次數減少到僅 50 次。在所有可能的組合都進行完所有運行後,我們進行了多目標評估,即計算與目標值的距離測量。我們的目標值是 Y₁、Y₂、Y₃、Y₄ 和 Y₅。我們希望最小化、最大化,並保持其中兩個值不變。然後,基於這個不同的度量,我們找出哪些組合最接近目標值,哪些組合與目標值相差甚遠。
我們篩選出最接近目標的前 10 個運行結果,找出其中最常見的分子組合。這些組合大致如下圖所示。我們找到了兩種分子組合和三種分子組合,它們最接近我們的專案目標。
儘管我們知道這個模型在這裡效果不佳(資料量不足,且不存在正交性),但我們仍然想看看模型在每種組合下的表現。對於我剛剛描述的這五種組合,以下是雙因子和三因子組合的 R² 值。
在這個模型中,我們有主效應、交互效應和二次效應。如果我們只關注其中一種雙因素組合,這張圖會顯示實際的p值。我們注意到,對於某些反應變量,p值…沒有參數顯著。對於某些反應變量,部分參數顯著,但這些參數在不同的反應變數中並不相同,即使在這種情況下我們獲得了較高的R²值。這是意料之中的,因為我們的資料集有限,而且我們的模型可能存在過擬合。
三因素組合的情況也類似。但我們發現,對於三因素組合,至少有一到兩個參數對所有反應都顯著。然而,並非所有參數都相同,並非所有參數對所有反應都顯著。這基本上是我們得出的第一個線索:每個參數都需要單獨建模。對於每個參數,我們需要找出哪些因素是顯著的。
為了更清楚地說明這一點,接下來,即使使用這個有限的資料集,當我們移除二次效應後,R² 值也變得非常低。這提示我們,二次效應對於某些參數很重要,我們需要將它們納入模型。在第三步驟中,在我們考察的五種組合中,現在我們只考慮包含三種成分的組合,因為我們不僅可以很好地對這些組合進行建模,而且我們的因子確實對這些參數有影響。現在我們需要找出哪些因子影響了哪些反應。
為了擴充這些特定組合的數據,我們使用 JMP 的 Augment Design 模組增加了五次運行,並採用了空間填充設計。現在,對於每種組合,我們至少有 20 個邊緣資料點,可以基於這些資料點評估模型。但正如我之前強調的,對於每個反應變量,模型都會有所不同。我們可以嘗試…對於每個模型,我們都能找到一個不錯的模型。但我們沒有這樣做,而是採用了一種機器學習方法,使用普通最小二乘法、LASSO 和 Elastic Net 對每個反應變數的不同模型進行評估。我們還添加了僅使用線性核和多項式核的支持向量回歸。
然後我們使用留一法進行交叉驗證。如果您不了解留一法,簡單來說,就是先用除一個資料點之外的所有資料點來擬合模型。然後,用這個被捨棄的數據點進行預測,並計算誤差。這個過程會重複進行,直到所有資料點都被捨棄。之後,您可以計算均方根誤差的平均值。基於這個誤差,您可以找出哪個模型是最佳的。這種方法的好處在於,它能有效防止過擬合,因為總是會留出一個數據點用於預測;同時,它又能從有限的數據集中選取足夠的數據點來擬合一個良好的模型。
應用此方法後,我們得到了 X₂、X₃ 和 X₄ 組合的良好模型,這些模型的均方誤差非常低,R² 值也相當高。由於我們預測該特定組合的能力良好,這表明該特定組合的未解釋誤差較小。因此,我們選擇該特定組合進行後續研究。下圖展示了實際值、實驗值和預測值之間的對比。可以看出,模型並非絕對真理,但它們足以對該特定組合進行預測。
下一步,我們使用這些模型運行蒙特卡羅模擬。透過蒙特卡羅模擬,我們再次計算…基於響應和距離度量,我們找出了最接近目標值的模擬結果。然後,我們對所有最接近目標值的模擬結果進行聚類,最終得到三個不同的運行結果,我們可以將這些結果帶回實驗室進行實驗。
在這三次運行中,只有一次達到了我們預期的目標。我們成功地最小化了 Y₁、Y₂ 和 Y₃,最大化了 Y₄ 和 Y₅,並保持了 Y₇ 不變。在這一步,我們實際上跳過了 Y₆ 的計算,因為即使經過所有這些運行,我們仍然無法準確預測 Y₆ 的值。
現在回到產品流程,這只是整個過程中的一個步驟。現在,我們已經完成了實驗室規模的研發。接下來將進入中試工廠。我們將測試其可擴展性,然後進行工廠生產,以及後續的各項工作。
這就引出了我的總結投影片。在這個案例中,我們採用了迭代式的實驗設計(DOE)方法,逐步進行,最終僅用了100次實驗就找到了最優組合,而傳統方法需要500次。然後,我們有效地運用空間填充設計結合機器學習來探索實驗空間。最後,我們發現,將機器學習能力與實驗設計資料和這種順序方法結合,即使最初的假設是錯誤的,也能找到更好的模型。在此,我謹表示感謝。