Meta人工智能團(tuán)隊(duì)早前開源了一個(gè)可微分非線性最小二乘(NLS)的優(yōu)化技術(shù)庫(kù)Theseus。據(jù)介紹,Theseus基于PyTorch,適用于機(jī)器人和計(jì)算機(jī)視覺(jué)等用例,允許研究人員能夠輕松地將專家領(lǐng)域知識(shí)融入現(xiàn)代AI架構(gòu)。它將knowledge表示為優(yōu)化問(wèn)題,并在基于梯度的學(xué)習(xí)過(guò)程中將其作為模塊化“優(yōu)化層”添加到架構(gòu)之中。這個(gè)domain knowledge與訓(xùn)練數(shù)據(jù)不同,它可以幫助模型實(shí)現(xiàn)更為準(zhǔn)確的預(yù)測(cè)。例如,為了確保機(jī)器人的運(yùn)動(dòng)平穩(wěn),研究人員可以將機(jī)器人的實(shí)現(xiàn)方式和運(yùn)動(dòng)模式的knowledge作為一個(gè)層,同時(shí)對(duì)機(jī)器人進(jìn)行端到端的運(yùn)動(dòng)訓(xùn)練。
Theseus是一個(gè)為可微非線性優(yōu)化提供跨應(yīng)用框架的庫(kù)。Theseus非常高效,可通過(guò)支持批處理、GPU加速、稀疏解算器和隱式微分來(lái)加速計(jì)算和內(nèi)存。Meta宣稱,它比谷歌基于C++的Ceres Solver(不支持端到端學(xué)習(xí))快四倍。
Theseus融合了將prior knowledge注入人工智能系統(tǒng)的兩種主流方法的最佳方面。在深度學(xué)習(xí)出現(xiàn)之前,研究人員使用更簡(jiǎn)單、獨(dú)立的AI優(yōu)化算法來(lái)解決機(jī)器人中的單個(gè)問(wèn)題。通過(guò)計(jì)算手動(dòng)選擇的因素組合的最小值,機(jī)器人系統(tǒng)學(xué)會(huì)了執(zhí)行命令的最佳方式。這種方法有效但不靈活。特定于應(yīng)用的優(yōu)化算法通常難以適應(yīng)新的系統(tǒng)或環(huán)境。
另一方面,深度學(xué)習(xí)方法的可擴(kuò)展性要高得多,但它們需要大量的數(shù)據(jù),會(huì)產(chǎn)生有效但在training domain之外脆弱的解決方案。
為了訓(xùn)練特定應(yīng)用的深度學(xué)習(xí)模型,研究人員使用精心選擇的損失函數(shù)來(lái)衡量模型預(yù)測(cè)數(shù)據(jù)的效果。但要通過(guò)反向傳播更新模型權(quán)重,每個(gè)層必須是可微分,允許誤差信息通過(guò)網(wǎng)絡(luò)流動(dòng)。傳統(tǒng)的優(yōu)化算法不是端到端可微分,所以研究人員面臨著一個(gè)權(quán)衡:他們可以放棄優(yōu)化算法,轉(zhuǎn)而進(jìn)行專門針對(duì)特定任務(wù)的端到端深度學(xué)習(xí),并有可能失去優(yōu)化的效率及其泛化能力。
或者,他們可以離線訓(xùn)練深度學(xué)習(xí)模型,并在推理時(shí)將其添加到優(yōu)化算法中。第二種方法的優(yōu)勢(shì)是將深度學(xué)習(xí)和prior knowledge相結(jié)合,但由于深度學(xué)習(xí)模型是在沒(méi)有預(yù)存在信息或特定任務(wù)的錯(cuò)誤函數(shù)的情況下訓(xùn)練,所以其預(yù)測(cè)可能不準(zhǔn)確。
為了融合相關(guān)策略,減輕它們的弱點(diǎn)并利用它們的優(yōu)勢(shì),Theseus將優(yōu)化結(jié)果轉(zhuǎn)換為一個(gè)可以插入任何神經(jīng)網(wǎng)絡(luò)架構(gòu)的層。這樣,修改可以通過(guò)優(yōu)化層反向傳播,從而允許研究人員對(duì)最終任務(wù)損失的特定domain knowledge進(jìn)行微調(diào),并作為端到端深度學(xué)習(xí)模型的一個(gè)組成環(huán)節(jié)。
Theseus(綠色)如上所示, objective由上游神經(jīng)模型的輸出張量(灰色)和prior knowledge(橙色)組成。Theseus層的輸出是最小化 objective的張量。
工作原理
NLS測(cè)量一個(gè)非線性函數(shù)與它要預(yù)測(cè)的實(shí)際數(shù)據(jù)之間的差異。較小的值意味著函數(shù)非常適合數(shù)據(jù)集。從映射和估計(jì)到規(guī)劃和控制,NLS在機(jī)器人和視覺(jué)問(wèn)題的表述中非常普遍。例如,機(jī)器人朝向目標(biāo)的路線可以表述為NLS優(yōu)化問(wèn)題:為了繪制最快的安全軌跡,系統(tǒng)會(huì)尋找一個(gè)可以最小化行程時(shí)間和不必要行為的sum-of-costs objective,比方說(shuō)急轉(zhuǎn)彎或與環(huán)境中的障礙物碰撞。sum-of-costs objective同時(shí)可以捕獲傳感器測(cè)量誤差,從而優(yōu)化機(jī)器人或camera的過(guò)去軌跡。
通過(guò)令NLS可微分,Theseus提供了可微非線性優(yōu)化,并作為研究人員可以插入神經(jīng)網(wǎng)絡(luò)的層。輸入張量定義了加權(quán)平方和objective函數(shù),輸出張量是產(chǎn)生objective最小值的參數(shù)。通過(guò)優(yōu)化器進(jìn)行微分,可以保留端到端計(jì)算梯度的能力。
這將優(yōu)化器和已知先驗(yàn)集成到深度學(xué)習(xí)訓(xùn)練循環(huán)中,允許模型對(duì)domain knowledge進(jìn)行編碼,并學(xué)習(xí)實(shí)際的任務(wù)損失。同時(shí),深度學(xué)習(xí)模型將從訓(xùn)練過(guò)程中的感知或語(yǔ)言教學(xué)中提取更大的objective。這樣,研究人員可以在訓(xùn)練循環(huán)中使用已知的運(yùn)動(dòng)學(xué)模型來(lái)開發(fā)objective預(yù)測(cè)模型。這種將已知先驗(yàn)與神經(jīng)組件模塊化混合的技術(shù)可以提高數(shù)據(jù)效率和泛化能力。
為了提高效率,Theseus集成了對(duì)稀疏解算器、自動(dòng)矢量化、批處理、GPU加速和帶隱式微分的梯度計(jì)算的支持。正如autodiff和GPU加速推動(dòng)了PyTorch在NumPy的發(fā)展一樣,稀疏性和隱式微分推動(dòng)了Theseus的發(fā)展,與通常只支持稀疏性的Ceres等解算器形成對(duì)比。
對(duì)于標(biāo)準(zhǔn)GPU,使用稀疏解算器的Theseus要比使用密集解算器快得多,所需內(nèi)存同樣要少得多。另外,Ceres的GPU支持有限,不支持分批或端到端學(xué)習(xí)。最后,隱式微分比標(biāo)準(zhǔn)展開產(chǎn)生更好的梯度。隱式差異同時(shí)具有恒定的內(nèi)存和計(jì)算占用空間。
為何重要
Theseus提供了一個(gè)可以利用傳統(tǒng)技術(shù)、視覺(jué)方法和深度學(xué)習(xí)的互補(bǔ)優(yōu)勢(shì)的通用框架??晌⒎謨?yōu)化作為歸納先驗(yàn),提高數(shù)據(jù)效率和泛化能力。
現(xiàn)有的實(shí)現(xiàn)是特定于任務(wù),通常效率低下。Theseus可以跨應(yīng)用,所以AI社區(qū)可以通過(guò)訓(xùn)練在多個(gè)任務(wù)和環(huán)境中表現(xiàn)出色的精確模型來(lái)取得更快的進(jìn)展。
相關(guān)論文:Theseus: A Library for Differentiable Nonlinear Optimization
Theseus目前已經(jīng)開源。具體源代碼請(qǐng)?jiān)L問(wèn)這里,而項(xiàng)目頁(yè)面請(qǐng)?jiān)L問(wèn)這里。