Adam那麼棒,為什麼還對SGD念念不忘?一個框架看懂深度學習優化算法

2021-03-02 機器學習研究組訂閱

機器學習界有一群煉丹師,他們每天的日常是:

拿來藥材(數據),架起八卦爐(模型),點著六味真火(優化算法),就搖著蒲扇等著丹藥出爐了。

不過,當過廚子的都知道,同樣的食材,同樣的菜譜,但火候不一樣了,這齣來的口味可是千差萬別。火小了夾生,火大了易糊,火不勻則半生半糊。

機器學習也是一樣,模型優化算法的選擇直接關係到最終模型的性能。有時候效果不好,未必是特徵的問題或者模型設計的問題,很可能就是優化算法的問題。

說到優化算法,入門級必從SGD學起,老司機則會告訴你更好的還有AdaGrad/AdaDelta,或者直接無腦用Adam。可是看看學術界的最新paper,卻發現一眾大神還在用著入門級的SGD,最多加個Moment或者Nesterov ,還經常會黑一下Adam。比如 UC Berkeley的一篇論文就在Conclusion中寫道:

Despite the fact that our experimental evidence demonstrates that adaptive methods are not advantageous for machine learning, the Adam algorithm remains incredibly popular. We are not sure exactly as to why ……

無奈與酸楚之情溢於言表。

這是為什麼呢?難道平平淡淡才是真?

1 一個框架回顧優化算法

首先我們來回顧一下各類優化算法。

深度學習優化算法經歷了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 這樣的發展歷程。Google一下就可以看到很多的教程文章,詳細告訴你這些算法是如何一步一步演變而來的。在這裡,我們換一個思路,用一個框架來梳理所有的優化算法,做一個更加高屋建瓴的對比。

首先定義:待優化參數: 

而後,開始進行迭代優化。在每個epoch

掌握了這個框架,你可以輕輕鬆鬆設計自己的優化算法。

我們拿著這個框架,來照一照各種玄乎其玄的優化算法的真身。步驟3、4對於各個算法都是一致的,主要的差別就體現在1和2上。

SGD

先來看SGD。SGD沒有動量的概念,也就是說:

代入步驟3,可以看到下降梯度就是最簡單的

SGD最大的缺點是下降速度慢,而且可能會在溝壑的兩邊持續震蕩,停留在一個局部最優點。

SGD with Momentum

為了抑制SGD的震蕩,SGDM認為梯度下降過程可以加入慣性。下坡的時候,如果發現是陡坡,那就利用慣性跑的快一些。SGDM全稱是SGD with momentum,在SGD基礎上引入了一階動量:

一階動量是各個時刻梯度方向的指數移動平均值,約等於最近 

也就是說,t時刻的下降方向,不僅由當前點的梯度方向決定,而且由此前累積的下降方向決定。 

SGD with Nesterov Acceleration

SGD 還有一個問題是困在局部最優的溝壑裡面震蕩。想像一下你走到一個盆地,四周都是略高的小山,你覺得沒有下坡的方向,那就只能待在這裡了。可是如果你爬上高地,就會發現外面的世界還很廣闊。因此,我們不能停留在當前位置去觀察未來的方向,而要向前一步、多看一步、看遠一些。

NAG全稱Nesterov Accelerated Gradient,是在SGD、SGD-M的基礎上的進一步改進,改進點在於步驟1。我們知道在時刻t的主要下降方向是由累積動量決定的,自己的梯度方向說了也不算,那與其看當前梯度方向,不如先看看如果跟著累積動量走了一步,那個時候再怎麼走。因此,NAG在步驟1,不計算當前位置的梯度方向,而是計算如果按照累積動量走了一步,那個時候的下降方向:

然後用下一個點的梯度方向,與歷史累積動量相結合,計算步驟2中當前時刻的累積動量。

AdaGrad

此前我們都沒有用到二階動量。二階動量的出現,才意味著「自適應學習率」優化算法時代的到來。SGD及其變種以同樣的學習率更新每個參數,但深度神經網絡往往包含大量的參數,這些參數並不是總會用得到(想想大規模的embedding)。對於經常更新的參數,我們已經積累了大量關於它的知識,不希望被單個樣本影響太大,希望學習速率慢一些;對於偶爾更新的參數,我們了解的信息太少,希望能從每個偶然出現的樣本身上多學一些,即學習速率大一些。

怎麼樣去度量歷史更新頻率呢?那就是二階動量——該維度上,迄今為止所有梯度值的平方和:

我們再回顧一下步驟3中的下降梯度:

可以看出,此時實質上的學習率由 

這一方法在稀疏數據場景下表現非常好。但也存在一些問題:因為

AdaDelta / RMSProp

由於AdaGrad單調遞減的學習率變化過於激進,我們考慮一個改變二階動量計算方法的策略:不累積全部歷史梯度,而只關注過去一段時間窗口的下降梯度。這也就是AdaDelta名稱中Delta的來歷。

修改的思路很簡單。前面我們講到,指數移動平均值大約就是過去一段時間的平均值,因此我們用這一方法來計算二階累積動量:

這就避免了二階動量持續累積、導致訓練過程提前結束的問題了。

Adam

談到這裡,Adam和Nadam的出現就很自然而然了——它們是前述方法的集大成者。我們看到,SGD-M在SGD基礎上增加了一階動量,AdaGrad和AdaDelta在SGD基礎上增加了二階動量。把一階動量和二階動量都用起來,就是Adam了——Adaptive + Momentum。

SGD的一階動量:

加上AdaDelta的二階動量:

優化算法裡最常見的兩個超參數 

Nadam

最後是Nadam。我們說Adam是集大成者,但它居然遺漏了Nesterov,這還能忍?必須給它加上,按照NAG的步驟1:

這就是Nesterov + Adam = Nadam了。

補充:指數移動平均值的偏差修正

前面我們講到,一階動量和二階動量都是按照指數移動平均值進行計算的:

實際使用過程中,參數的經驗值是

初始化:

這個時候我們看到,在初期, 

說到這裡,大概可以理解為什麼j經常有人說 Adam / Nadam 目前最主流、最好用的優化算法了。新手上路,先拿來一試,收斂速度嗖嗖滴,效果也是槓槓滴。

那為什麼Adam還老招人黑,被學術界一頓鄙夷?難道只是為了發paper灌水嗎?

請繼續閱讀:

2 Adam的兩宗罪

可以看到,一代又一代的研究者們為了我們能煉(xun)好(hao)金(mo)丹(xing)可謂是煞費苦心。從理論上看,一代更比一代完善,Adam/Nadam已經登峰造極了,為什麼大家還是不忘初心SGD呢?

舉個慄子。很多年以前,攝影離普羅大眾非常遙遠。十年前,傻瓜相機開始風靡,遊客幾乎人手一個。智慧型手機出現以後,攝影更是走進千家萬戶,手機隨手一拍,前後兩千萬,照亮你的美(咦,這是什麼亂七八糟的)。但是專業攝影師還是喜歡用單反,孜孜不倦地調光圈、快門、ISO、白平衡……一堆自拍黨從不care的名詞。技術的進步,使得傻瓜式操作就可以得到不錯的效果,但是在特定的場景下,要拍出最好的效果,依然需要深入地理解光線、理解結構、理解器材。

優化算法大抵也如此。在上一篇中,我們用同一個框架讓各類算法對號入座。可以看出,大家都是殊途同歸,只是相當於在SGD基礎上增加了各類學習率的主動控制。如果不想做精細的調優,那麼Adam顯然最便於直接拿來上手。

但這樣的傻瓜式操作並不一定能夠適應所有的場合。如果能夠深入了解數據,研究員們可以更加自如地控制優化迭代的各類參數,實現更好的效果也並不奇怪。畢竟,精調的參數還比不過傻瓜式的Adam,無疑是在挑戰頂級研究員們的煉丹經驗!

最近,不少paper開懟Adam,我們簡單看看都在說什麼:

Adam罪狀一:可能不收斂

這篇是正在深度學習領域頂級會議之一 ICLR 2018 匿名審稿中的 On the Convergence of Adam and Beyond,探討了Adam算法的收斂性,通過反例證明了Adam在某些情況下可能會不收斂。

回憶一下上文提到的各大優化算法的學習率:

其中,SGD沒有用到二階動量,因此學習率是恆定的(實際使用過程中會採用學習率衰減策略,因此學習率遞減)。AdaGrad的二階動量不斷累積,單調遞增,因此學習率是單調遞減的。因此,這兩類算法會使得學習率不斷遞減,最終收斂到0,模型也得以收斂。

但AdaDelta和Adam則不然。二階動量是固定時間窗口內的累積,隨著時間窗口的變化,遇到的數據可能發生巨變,使得 

這篇文章也給出了一個修正的方法。由於Adam中的學習率主要是由二階動量控制的,為了保證算法的收斂,可以對二階動量的變化進行控制,避免上下波動。

通過這樣修改,就保證了 

Adam罪狀二:可能錯過全局最優解

深度神經網絡往往包含大量的參數,在這樣一個維度極高的空間內,非凸的目標函數往往起起伏伏,擁有無數個高地和窪地。有的是高峰,通過引入動量可能很容易越過;但有些是高原,可能探索很多次都出不來,於是停止了訓練。

近期Arxiv上的兩篇文章談到這個問題。

第一篇就是前文提到的吐槽Adam最狠的 The Marginal Value of Adaptive Gradient Methods in Machine Learning 。文中說到,同樣的一個優化問題,不同的優化算法可能會找到不同的答案,但自適應學習率的算法往往找到非常差的答案。他們通過一個特定的數據例子說明,自適應學習率算法可能會對前期出現的特徵過擬合,後期才出現的特徵很難糾正前期的擬合效果。

另外一篇是 Improving Generalization Performance by Switching from Adam to SGD,進行了實驗驗證。他們CIFAR-10數據集上進行測試,Adam的收斂速度比SGD要快,但最終收斂的結果並沒有SGD好。他們進一步實驗發現,主要是後期Adam的學習率太低,影響了有效的收斂。他們試著對Adam的學習率的下界進行控制,發現效果好了很多。

於是他們提出了一個用來改進Adam的方法:前期用Adam,享受Adam快速收斂的優勢;後期切換到SGD,慢慢尋找最優解。這一方法以前也被研究者們用到,不過主要是根據經驗來選擇切換的時機和切換後的學習率。這篇文章把這一切換過程傻瓜化,給出了切換SGD的時機選擇方法,以及學習率的計算方法,效果看起來也不錯。

到底該用Adam還是SGD?

所以,談到現在,到底Adam好還是SGD好?這可能是很難一句話說清楚的事情。去看學術會議中的各種paper,用SGD的很多,Adam的也不少,還有很多偏愛AdaGrad或者AdaDelta。可能研究員把每個算法都試了一遍,哪個出來的效果好就用哪個了。

而從這幾篇怒懟Adam的paper來看,多數都構造了一些比較極端的例子來演示了Adam失效的可能性。這些例子一般過於極端,實際情況中可能未必會這樣,但這提醒了我們,**理解數據對於設計算法的必要性。**優化算法的演變歷史,都是基於對數據的某種假設而進行的優化,那麼某種算法是否有效,就要看你的數據是否符合該算法的胃口了。

算法固然美好,數據才是根本。

另一方面,Adam之流雖然說已經簡化了調參,但是並沒有一勞永逸地解決問題,默認參數雖然好,但也不是放之四海而皆準。因此,在充分理解數據的基礎上,依然需要根據數據特性、算法特性進行充分的調參實驗,找到自己煉丹的最優解。而這個時候,不論是Adam,還是SGD,於你都不重要了。

少年,好好煉丹吧。

關於優化算法的選擇和tricks,歡迎繼續閱讀:

3 優化算法的選擇與使用策略

上文中,我們用一個框架梳理了各大優化算法,並且指出了以Adam為代表的自適應學習率優化算法可能存在的問題。那麼,在實踐中我們應該如何選擇呢?

下文介紹Adam+SGD的組合策略,以及一些比較有用的tricks。

不同優化算法的核心差異:下降方向

從第一篇的框架中我們看到,不同優化算法最核心的區別,就是第三步所執行的下降方向:

這個式子中,前半部分是實際的學習率(也即下降步長),後半部分是實際的下降方向。SGD算法的下降方向就是該位置的梯度方向的反方向,帶一階動量的SGD的下降方向則是該位置的一階動量方向。自適應學習率類優化算法為每個參數設定了不同的學習率,在不同維度上設定不同步長,因此其下降方向是縮放過(scaled)的一階動量方向。

由於下降方向的不同,可能導致不同算法到達完全不同的局部最優點。 An empirical analysis of the optimization of deep network loss surfaces這篇論文中做了一個有趣的實驗,他們把目標函數值和相應的參數形成的超平面映射到一個三維空間,這樣我們可以直觀地看到各個算法是如何尋找超平面上的最低點的。

上圖是論文的實驗結果,橫縱坐標表示降維後的特徵空間,區域顏色則表示目標函數值的變化,紅色是高原,藍色是窪地。他們做的是配對兒實驗,讓兩個算法從同一個初始化位置開始出發,然後對比優化的結果。可以看到,幾乎任何兩個算法都走到了不同的窪地,他們中間往往隔了一個很高的高原。這就說明,不同算法在高原的時候,選擇了不同的下降方向。

Adam+SGD 組合策略

正是在每一個十字路口的選擇,決定了你的歸宿。如果上天能夠給我一個再來一次的機會,我會對那個女孩子說:SGD!

不同優化算法的優劣依然是未有定論的爭議話題。據我在paper和各類社區看到的反饋,主流的觀點認為:Adam等自適應學習率算法對於稀疏數據具有優勢,且收斂速度很快;但精調參數的SGD(+Momentum)往往能夠取得更好的最終結果。

那麼我們就會想到,可不可以把這兩者結合起來,先用Adam快速下降,再用SGD調優,一舉兩得?思路簡單,但裡面有兩個技術問題:

什麼時候切換優化算法?——如果切換太晚,Adam可能已經跑到自己的盆地裡去了,SGD再怎麼好也跑不出來了。切換算法以後用什麼樣的學習率?——Adam用的是自適應學習率,依賴的是二階動量的累積,SGD接著訓練的話,用什麼樣的學習率?

上文中提到的論文 Improving Generalization Performance by Switching from Adam to SGD 提出了解決這兩個問題的思路。

首先來看第二個問題切換之後用什麼樣的學習率。Adam的下降方向是

而SGD的下降方向是

圖片來自原文,這裡p為Adam下降方向,g為梯度方向,r為SGD的學習率。

如果SGD要走完Adam未走完的路,那就首先要接過Adam的大旗——沿著 

這樣我們就知道該如何確定SGD的步長(學習率)了——SGD在Adam下降方向上的正交投影,應該正好等於Adam的下降方向(含步長)。也即:

解這個方程,我們就可以得到接續進行SGD的學習率:

為了減少噪聲影響,作者使用移動平均值來修正對學習率的估計:

這裡直接復用了Adam的 

然後來看第一個問題,何時進行算法的切換

作者的回答也很簡單,那就是當 SGD的相應學習率的移動平均值基本不變的時候,即:

優化算法的常用tricks

最後,分享一些在優化算法的選擇和使用方面的一些tricks。

首先,各大算法孰優孰劣並無定論。如果是剛入門,優先考慮 SGD+Nesterov Momentum或者Adam.(Standford 231n : The two recommended updates to use are either SGD+Nesterov Momentum or Adam)選擇你熟悉的算法——這樣你可以更加熟練地利用你的經驗進行調參。充分了解你的數據——如果模型是非常稀疏的,那麼優先考慮自適應學習率的算法。根據你的需求來選擇——在模型設計實驗過程中,要快速驗證新模型的效果,可以先用Adam進行快速實驗優化;在模型上線或者結果發布前,可以用精調的SGD進行模型的極致優化。先用小數據集進行實驗。 有論文研究指出,隨機梯度下降算法的收斂速度和數據集的大小的關係不大。(The mathematics of stochastic gradient descent are amazingly independent of the training set size. In particular, the asymptotic SGD convergence rates are independent from the sample size. [2])因此可以先用一個具有代表性的小數據集進行實驗,測試一下最好的優化算法,並通過參數搜索來尋找最優的訓練參數。考慮不同算法的組合。 先用Adam進行快速下降,而後再換到SGD進行充分的調優。切換策略可以參考本文介紹的方法。數據集一定要充分的打散(shuffle)。 這樣在使用自適應學習率算法的時候,可以避免某些特徵集中出現,而導致的有時學習過度、有時學習不足,使得下降方向出現偏差的問題。訓練過程中持續監控訓練數據和驗證數據上的目標函數值以及精度或者AUC等指標的變化情況。對訓練數據的監控是要保證模型進行了充分的訓練——下降方向正確,且學習率足夠高;對驗證數據的監控是為了避免出現過擬合。制定一個合適的學習率衰減策略。 可以使用定期衰減策略,比如每過多少個epoch就衰減一次;或者利用精度或者AUC等性能指標來監控,當測試集上的指標不變或者下跌時,就降低學習率。

這裡只列舉出一些在優化算法方面的trick,如有遺漏,歡迎各位在評論中補充,我將持續更新此文。提前致謝!

神經網絡模型的設計和訓練要複雜得多,initialization, activation, normalization 等等無不是四兩撥千斤,這些方面的技巧我再慢慢寫,歡迎關注作者的知乎專欄和微信公眾號(Julius-AI),一起交流學習。

參考文獻:

[1] CS231n Convolutional Neural Networks for Visual Recognition

[2] Stochastic Gradient Descent Tricks.

[3] Efficient BackProp

相關焦點

  • Adam 那麼棒,為什麼還對 SGD 念念不忘?一個框架看懂深度學習優化算法
    這是為什麼呢?難道平平淡淡才是真?1 一個框架回顧優化算法首先我們來回顧一下各類優化算法。在這裡,我們換一個思路,用一個框架來梳理所有的優化算法,做一個更加高屋建瓴的對比。因此我們常常根據下式進行誤差修正:說到這裡,大概可以理解為什麼j經常有人說 Adam / Nadam 目前最主流、最好用的優化算法了。新手上路,先拿來一試,收斂速度嗖嗖滴,效果也是槓槓滴。那為什麼Adam還老招人黑,被學術界一頓鄙夷?難道只是為了發paper灌水嗎?
  • 使用Numpy進行深度學習中5大反向傳播優化算法的性能比較
    在本文中,我們將通過計算二次凸函數的最優點來數值比較主要的深度學習優化算法的性能。簡介深度學習被稱為人工智慧的未來。現在,神經網絡被稱為通用函數逼近器,也就是說,它們有能力表示這個宇宙中任何複雜的函數。計算這個具有數百萬個參數的通用函數的想法來自優化的基本數學。
  • 深度學習框架哪家強?國產框架OneFlow做了一份測評報告
    數據顯示,OneFlow 在 4 機 32 卡下的 ResNet50-v1.5 和 BERT-base 兩個模型中,無論是 Float32 類型還是自動混合精度,在同樣的算法和硬體條件下,吞吐率及加速比均優於其他深度學習框架。
  • 深度學習框架竟然這麼簡單?
    打開APP 深度學習框架竟然這麼簡單? 01 發 展 而深度學習作為人工智慧的核心技術,近年來無論是學術、還是工業領域,均發揮著愈加重要的作用。 過去十年,深度學習領域湧現了大量算法和應用。在這些深度學習算法和應用湧現的背後,是各種各樣的深度學習工具和框架。
  • 讓大規模深度學習訓練線性加速、性能無損,基於BMUF的Adam優化器...
    導語:深度學習領域經典的 Adam 算法在大規模並行訓練的情況下會導致模型性能損失。為了解決這一問題,微軟亞洲研究院採用 BMUF 框架對 Adam 算法進行了並行化,並在微軟大規模 OCR 和語音產品數據集上進行了測試,使其在並行訓練中幾乎實現了線性加速的同時,模型性能基本無損。
  • 曠視開源深度學習框架天元!動靜合一,訓推一體,落地邊緣設備
    現在,這套深度學習框架終於開源啦!這也是本月繼清華Jittor之後,又一個開源的國產深度學習框架。作為曠視絕對招牌之一,MegEngine是什麼,有何特點?天元MegEngine深度學習框架官方網站:https://megengine.org.cn/簡單回想一下人工智慧發展初期,想要訓練出一個AI模型,至少需要一兩個月,而且開發者要通過手敲代碼完成計算過程,深度學習社區基本上被TensorFlow和PyTorch壟斷。
  • 引入Powerball 與動量技術,新SGD優化算法收斂速度與泛化效果雙...
    隨機梯度下降(Stochastic Gradient Descent)作為深度學習領域內第一種被廣泛用於優化訓練的方法,通過其計算小批量數據的目標損失,並向負梯度方向迭代更新模型參數。目前,基於SGD方法已衍生出許多用於更加高效訓練神經網絡的優化方法。在這篇論文中,我們提出了一種新的基於SGD的優化方法(pbSGD)用於訓練神經網絡。
  • TensorFlow和Caffe、MXNet、Keras等其他深度學習框架的對比
    目前原生支持的分布式深度學習框架不多,只有 TensorFlow、CNTK、DeepLearning4J、MXNet 等。不過目前 TensorFlow 的設計對不同設備間的通信優化得不是很好,其單機的 reduction 只能用 CPU 處理,分布式的通信使用基於 socket 的 RPC,而不是速度更快的 RDMA,所以其分布式性能可能還沒有達到最優。
  • 工程之道,深度學習推理性能業界最佳優化實踐
    深度學習是一個端到端的自動化系統,在數據驅動之下,算法歷經訓練測試、工程部署、推理實現三個環節。深度學習技術能否最終落地為產品,細粒度滿足不同場景需求,深度學習框架的推理性能優化是一個關鍵變量。針對不同硬體設備對性能的苛刻要求,業界一般做法是開發一套推理專用框架,不足是造成了訓練與推理的分裂。
  • 飛槳& 英特爾聯合,優化AI算法CPU部署性能,推動產業低成本智能化升級
    然而,深度學習算法往往需要較高性能的計算晶片,以滿足大計算量、高推理速度等產業需求。這帶來一個問題,如果對前期大批量投入的低性能設備進行升級甚至更換,都將是一筆非常大的費用,從而提升了產業智能化升級時前期投入的硬體成本。比如,在工業界,產線上已有的工控機大多只配備了CPU,而深度學習涉及海量計算需要運算速度更快的GPU來處理,而GPU的價格非常昂貴,如果全部升級為高性能GPU,成本非常高。
  • 飛槳深度學習開源框架2.0搶先看:成熟完備的動態圖開發模式
    允中 發自 凹非寺量子位 編輯 | 公眾號 QbitAI百度飛槳於近期宣布,深度學習開源框架2.0搶先版本正式發布,進入2.0時代。其中一項重大升級,就是推出更加成熟完備的命令式編程模式,即通常說的動態圖模式。
  • 你真的了解深度學習框架Caffe嗎?
    Caffe是由伯克利大學的賈楊清等人開發的一個開源的深度學習框架,採用高效的C++語言實現,並內置有Python和MATLAB接口,以供開發人員使用Python或MATLAB來開發和部署以深度學習為核心算法的應用。Caffe適用於網際網路級別的海量數據處理,包括語音,圖片,視頻等多媒體數據。
  • 李沐深度學習經典英文版更新:伯克利大學教材《動手學深度學習》
    本書首先,對深度學習相關的基礎和計算知識、預備知識、以及最基礎的概念和技術進行介紹;接著,對深度學習計算的重要組成部分做了深入淺出的介紹,著重對深度學習領域非常重要的兩個網絡「卷積神經網絡」和「循環神經網絡」進行講解;然後還講到了優化算法和計算性能;最後介紹了計算機視覺、NLP,並通過Kaggle實戰案例為大家提供實際項目的練習機會。
  • 天才黑客George Hotz開源了一個小型深度學習框架tinygrad
    天才黑客George Hotz開源了一個小型深度學習框架tinygrad 人工智慧與大數據 發表於 2020-12-16 09:36:56 最近,天才黑客
  • 深度學習CPU加速方案,飛槳全流程開發工具PaddleX 打通OpenVINO...
    現如今,深度學習技術為工業質檢、安防巡檢、金融、醫療、能源等各行各業降本增效的效果已被廣泛驗證。然而,深度學習算法往往需要較高性能的計算晶片,以滿足大計算量、高推理速度等產業需求。這帶來一個問題,如果對前期大批量投入的低性能設備進行升級甚至更換,都將是一筆非常大的費用,從而提升了產業智能化升級時前期投入的硬體成本。
  • 聯邦學習開源社區FATE年末升級:首度支持縱向聯邦神經網絡算法
    而FATE作為聯邦學習全球首個工業級開源框架,支持聯邦學習架構體系,為機器學習、深度學習、遷移學習提供了高性能聯邦學習機制。此外,其自身還支持多種多方安全計算協議,如同態加密、秘密共享、哈希散列等,具有友好的跨域交互信息管理方案。正文:近日,FATE 1.2版本正式發布。
  • 2020年深度學習發展大盤點及對2021年深度學習的未來展望|極客雲算
    深度學習框架作為AI底層工具,對個人而言是進入深度學習世界的一把鑰匙,掌握深度學習框架並不等於理解了深度學習,要在AI開發中有所作為,關鍵還是要真正理解框架背後的技術、實踐和生態。隨著近年來的人工智慧發展,2020年深度學習依然是發展最快的領域之一,直奔未來工作。其發展是多方面的,而且是多方位的。
  • 深度學習論文TOP10,2019一季度研究進展大盤點
    過去的100多天裡,在深度學習領域,每天都有大量的新論文產生。所以深度學習研究在2019年開了怎樣一個頭呢?Open Data Science對第一季度的深度學習研究進行了盤點總結,推出了這一季度的十佳論文。一起來看看,TOP10都花落誰家吧。
  • PyTorch & 分布式框架 Ray :保姆級入門教程
    使用 PyTorch 和 Ray 進行分布式機器學習入門,Ray 是一個流行的分布式Python 框架,可以與 PyTorch 搭配,快速擴展機器學習應用。來源:官方博客翻譯:PyTorch 開發者社區(微信公眾號)今天的機器學習需要分布式計算。
  • 十行代碼就能搞定深度學習?飛槳框架高層API,輕鬆玩轉AI
    機器之心發布機器之心編輯部嚮往深度學習技術,可是深度學習框架太難學怎麼辦?百度傾心打造飛槳框架高層 API,零基礎也能輕鬆上手深度學習,一起來看看吧?為了簡化深度學習的學習過程、降低深度學習的開發難度,百度飛槳框架歷經近一年的打磨,不斷地優化深度學習 API,並針對開發者的使用場景進行封裝,在飛槳框架的最新版本中,推出了高低融合、科學統一的飛槳全新 API 體系。飛槳框架將 API 分為兩種,基礎 API 和高層 API。