...訓練速度可提升數倍,如何用「稀疏學習」從頭開始訓練稀疏網絡?

2020-12-13 雷鋒網

雷鋒網 AI 科技評論:《從頭開始訓練稀疏網絡:在不損失性能的情況下加速訓練速度》這篇博文介紹的是我和 Luke Zettlemoyer 通過在整個訓練期間保持神經網絡的稀疏性從而加速訓練速度的一項工作。這項工作證明,通過完善稀疏動量算法,可以在短短一次訓練中用稀疏隨機權值來初始化一個神經網絡,並使其達到密集網絡的性能水平。

進一步,如果使用優化的稀疏卷積算法,我們能夠將對神經網絡的訓練速度加快至 VGG 網絡訓練速度的 3.5倍和寬殘差網絡(WRNs)訓練速度的 12 倍之間。這與一些需多次對卷積層進行剪枝和重新訓練且計算成本不菲的方法形成了鮮明的對比,比如 2019 年由 Frankle 和 Carbin 提出的「彩票假設」。

如此一來,我們證明了,將稀疏網絡訓練到密集網絡的性能水平並不需要「中獎的初始化彩票」,但是如果能夠結合「以一種明智的方法將權重移至周圍的網絡」這一方法,則能夠依靠隨機權重來實現這一點。我們稱保持稀疏的同時性能也能維持在密集網絡的水平的範式為「稀疏學習」。雖然這項工作表明了實現稀疏學習的可能性,但在下一步工作中,我們希望能夠在要求與當前密集網絡所需要的計算資源相同甚至更少的前提下,在更多的數據上訓練規模更大以及更深的網絡。雷鋒網

一、為什麼我們選擇使用稀疏學習?

計算資源的進步是推動深度學習進步的一個重要因素。從 2010 年到 2018 年,我們可以看到計算 GPU 的性能增加了 9700%。然而,由於達到了半導體技術的物理極限,我們可以預期在未來 5-8 年內,GPU的性能最多只會提高 80%。那麼,一個無法對計算能力進一步提高的研究世界將會是什麼樣子呢?

從自然語言處理(NLP)社區中可以看出這一點,在該社區中,由於 ELMO、GPT、BERT、GPT-2、Grover 和 XL-Net 等經過預訓練的語言模型在大多數NLP任務中效果優於其他方法,於是成為了整個領域的主導方法。

這些模型通常非常簡單:你在大量文檔上訓練它們,在給定一系列其他詞語後預測出某個詞語——這有點像做填空遊戲。那你可能會問,這有什麼不妥嗎?事實上,這些模型是如此之巨大,以至於它們需要耗費遠超100 GPUs小時的訓練時間。這對於那些想理解這些模型,但又缺乏大公司所擁有的計算資源而無法實現這一訓練的學術研究人員來說,尤其令人感到沮喪。要真正理解這些龐大的語言預訓練模型,首要目標應該是通過開發更加靈活的訓練程序來使這些模型的訓練過程更加的大眾化。

實現這一目標的一個方法是從人腦中來尋找啟發。人腦消耗的能量是 GPU 的1/10,但功能卻是GPU的十的九次方倍。是什麼使大腦的計算效率如此之高?原因有很多(更多信息可參考:https://timdettmers.com/2015/07/27/brain-vs-deep-learning-singularity/),而其中一個原因便是大腦所具有的稀疏性。

研究發現,靈長目動物大腦中神經元的數量元越多,與其他神經元的連接就越少 (Herculano Houzel 等人,2010)。這與我們設計深層神經網絡的方式截然不同——深層神經網絡將網絡每一層中的每一個新神經元與前一層中所有的神經元連接起來。我們已經了解如何將經過充分訓練的密集卷積神經網絡壓縮為稀疏網絡(Han 等人,2015),但研究如何從一個稀疏網絡入手並在訓練期間保持網絡稀疏的情況下順利開展訓練的工作,目前還是比較少。那麼,我們該怎麼做呢?

二、稀疏動量:一種訓練稀疏網絡的有效方法

本節由直觀到完整的算法視角來介紹稀疏動量算法。

圖1:稀疏動量通過查看最近梯度(動量)的加權平均值來確定稀疏網絡中新權重的增長位置,從而找到同時減少誤差的權重和層。(1)根據平均動量量級確定各層的重要性。(2)在每一層中,我們去掉最小權值的50%。(3)然後,我們根據各層的重要性在層之間重新分配權重。在同一個層中,我們在動量量級較大的地方增加權重。

1、好的稀疏學習算法有什麼重要特性?

在稀疏學習中,最重要的事情便是儘可能有效地利用神經網絡中的每一個權值。如果把「有效性」定義為「減少誤差」,那麼我們對於如何推進稀疏學習就有了更加清晰的視角。我們需要找到一種度量方法來描述一個權重在減少誤差時的有效性,並去掉所有無效的權重。一旦我們去除了這些權重,我們希望在認為未來有望減少誤差的位置重新生成新的權重。

如果我們看權重所對應的誤差的梯度,實際上我們是有一個度量方法的。然而,如果連續觀察梯度的變化,我們發現梯度可以發生劇烈的波動。例如,如果你有一個將手寫數字集從0到9進行分類的神經網絡,並且這個權重可以很好地檢測到頂部的一條直線,它可能有助於減少對數字5、7的檢測誤差,但對0、1、2、3、6、8、9,它不但可能沒有幫助,甚至可能會適得其反。相反地,在右上角檢測曲線模式的權重可能對數字0、2、3、8、9的檢測有輔助作用,因此,我們希望該權重比「頂部直線」權重在減少誤差時更具有連續性。如何在神經網絡中自動檢測出這樣有效的權值呢?

2、動量:找到能持續減少誤差的權重

如果將北極看作局部最小值,將指南針指向局部最小值看作梯度,則可以通過瘋狂搖動來使指南針進行旋轉,從而模擬更新隨機梯度下降。隨著每一次指針正對北極,它會減慢速度,並越來越頻繁地指向北極方向,然而,由於旋轉慣性,它仍然會「越過」這個方向。因此,當北極針還在來回移動,從這兩三次的測量結果中你可能還不清楚北極到底在哪裡。然而,如果你取平均的方向——某一次指針位於北極方向偏左一些,另一次則偏右一些——那麼這些偏差就會消失,你會立刻得到一個非常接近真實中北極方向的指向。

這就是動量優化技術背後的主要思想:我們對連續梯度取平均值,以獲得對局部最小值方向的最優估計。與指南針類似,隨著時間的推移,指南針方向變化的速度越來越慢,於是我們希望用隨機梯度下降中更高的權重來衡量最近的梯度方向。其中一種方法是分配一個加權平均值,即給當前梯度分配一個更大的權重,給之前的梯度分配一個更小的權重——這也被稱為指數平滑。通過指數平滑權值的梯度,我們得到一個加權梯度矩陣,這個矩陣就是動量矩陣,通過它可以實現所謂的動量優化。通過這種方法,我們可以識別出哪些權重能夠持續地減小誤差。

3、權重重新分配:層的平均動量大小

從這裡開始,我們對稀疏動量算法進行第一個重要的觀察發現:如果一個權重的動量表示它所連續減少誤差值的大小,那麼網絡每層中所有權重的平均動量就表示每層平均誤差值減少的大小。我們之所以取這個量值是因為兩個不同的權重可能會連續朝著負方向或者正方向變化。我們通過計算各層平均動量,可以很容易地比較各層平均權重的有效性。

這就使得,比如說在降低誤差方面的效果,卷積層 A 的平均權重是全連接層 B 的平均權重的1/3,反之亦然。這種方法使我們能夠有效地對權重重新分配:如果我們發現「無用的」權重,我們現在就可以準確地知道應該將其放在哪一層。但究竟該將它們放在某一層中的哪個位置呢?

4、哪些權重應該被去掉?應該在何處重新賦值?

接下來的兩個問題更直接:哪些是最無用的權重?在一層中卷積層,應該在某一層中的哪個位置增加權重?

第一個問題是在神經網絡壓縮研究中的一個常見問題,針對這一問題,研究者普遍採取的方法是使用最小的動量大小來對權重剪枝。這有什麼意義呢?如果我們假設所有的權重都是將動量大小相似的輸入平均所得到的——在使用批量標準化時,這是一個合理的假設,那麼較小的權值對激活神經元的影響也是最小的。去掉這些無用的權重,能夠最小限度地改變神經網絡在預測方面的性能。

一旦我們去掉了無用的權重,並通過層的平均動量將其重分配到有效權重層,就需要決定在層內將它們確切地分布到哪個位置。如果有人問道:「將哪兩個處於非連接狀態的神經元連接起來能夠連續減少誤差?」 這個問題的答案再次指向動量大小。然而這一次,我們想研究下「缺失」或零值權重的動量大小,也就是說想觀察下那些之前被我們排除在訓練之外的權重。因此,我們在缺失的權重擁有最大動量的地方來增加權重。這就完成了稀疏動量算法,如圖1所示。

三、結果分析

在 MNIST 手寫數據集中使用稀疏動量與其他壓縮算法來進行比較,結果令人印象深刻。其中,稀疏動量優於其他大多數方法。考慮到從頭開始訓練一個稀疏網絡所使用的壓縮方法是從密集網絡入手並且往往需要分別進行重複訓練,這一結果可以說非常不錯了。

另一個令人印象深刻的發現則是:當網絡使用 20% 的權重(80%的稀疏度)時,其性能可與密集網絡持平甚至更優。

在 CIFAR-10 上,我們將其與單次網絡剪枝進行了比較:後者的設計是為了實現簡單的結構而不是性能的提高,因此,稀疏動量結果會更好也就不足為奇了。

然而,有趣的是,我們僅僅使用 5% 的權重就能夠將 VGG16-D(VGG16 的一個版本,具有兩個全連接層)和寬殘差網絡(WRN)16-10(具有16層結構深且非常寬的 WRN)訓練到密集網絡的性能水平。對於其他網絡,稀疏動量接近密集網絡的性能水平。此外,正如我稍後將要展示的,我們使用優化的稀疏卷積算法,將能夠在獲得相同的性能水平的前提下,將訓練速度提升到之前的3.0到5.6倍!

圖2:對LeNet-300-100和LeNet-5caffe在MNIST手寫數據集中分別使用稀疏動量與神經網絡壓縮算法進行訓練的結果對比圖

ImageNet下稀疏動量與相關方法的結果對比。在一個非全稀疏的模型中,第一層卷積層和所有下採樣殘差的連接從訓練開始都是密集的。在一個全稀疏的網絡設置中,所有層都是稀疏的。一般來說,稀疏動量比其他方法更有效,並且當所有權重都呈現為稀疏,與其他方法的效果相比,將幾乎不分上下。這表明稀疏動量在尋找需要具有高密度的重要卷積層時是很有效的。

在 ImageNet 上,我們無法達到密集網絡的性能水平,這表明稀疏動量的改善還有上升空間。然而,我們依舊可以證明在訓練過程保持稀疏權重時,稀疏動量與其他的方法相比有著明顯的優勢。

加速訓練

稀疏學習的一個主要功能是加速訓練——那我們成功了嗎?既是又不是。如果我們衡量的是稀疏卷積網絡可能實現的加速,則稀疏動量是能夠有效加速訓練進程的,然而如果僅僅最近才將稀疏網絡用於訓練,那對 GPU 而言,並不存在經優化的稀疏卷積算法,至少對於稀疏動量所表現出來的權重的細粒度稀疏格式而言是不存在的。

因此,我們將加速分成兩個部分:如果存在稀疏卷積算法,則可能實現加速,並且如今可以使用標準密集卷積算法來實現加速。那密集卷積如何幫助稀疏網絡加速訓練進程呢?

如果我們去看網絡的稀疏格式,我們會發現卷積通道是完全空的——一個完全為零的卷積濾波器!如果發生了這種情況,我們可以在不改變卷積結果的情況下從計算中去掉通道,從而實現加速。

稀疏動量可以用一小部分權重新複製一系列網絡的密集性能水平,從而實現加速。

然而,如果觀察各種不同的加速情況,我們會發現稀疏卷積加速和密集卷積加速之間存在顯著差異。這一點可以表明 GPU 還需要優化稀疏卷積算法。

四、為何稀疏學習有效?

使用稀疏動量訓練的一些稀疏網絡,其性能與權重僅為 5%的密集網絡訓練結果相一致。是什麼使這5%的權重如此有效,以至於它取得的效果與權重為其 20 倍的神經網絡旗鼓相當?

為了探討這個問題,我們比較了稀疏網絡的特徵與密集網絡的特徵。其中,低級特徵可能包括邊緣檢測器之類的東西,中級特徵可能是輪子、鼻子、眼睛、爪子,而高級特徵可能為汽車的「臉」、貓的臉、冰箱門等。

為了減少特徵數量,我們研究卷積通道(相當於卷積網絡中的「神經元」)以及該通道對數據集中的類有多大作用。邊緣檢測器幾乎對數據集中所有類都有效——換句話說,它們對於低級別的特徵具有特定對應的類;對於中級特徵,如眼睛,應該是對於比如貓,狗,和人類有用的類;而高級特性應該對一些選定的類有用,這些類都高度對應高級特徵。

圖 6: AlexNet、VGG16和WRN 28-2網絡對應稀疏和密集網絡的特化類直方圖

我們發現,大體來說,稀疏網絡可以學習對於更廣泛的類有用的特徵——不過更多情況下它們學習的是普遍的特徵。這可能解釋了為什麼稀疏網絡可以用 5%的權重來達到與密集網絡相一致的性能。

五、稀疏學習的未來展望

我相信稀疏學習有一個非常光明的未來,這是因為:(1)GPU 在未來幾年的性能將停滯不前;(2)用於稀疏工作負載的專用處理器 Graphcore 處理器即將問世。Graphcore 處理器將整個網絡存儲在它的300 MB緩存中,並將其加速大約 100 倍。

這意味著,如果我們可以在訓練期間將網絡壓縮到 300 MB,那麼我們的總體訓練速度將提高100倍。使用一個 Graphcore 處理器在 ImageNet 上訓練 ResNet-50 大約只需要15分鐘。通過稀疏學習,網絡大小為 300 MB的限制將不成問題。

我預測,第一個能夠在 Graphcore 處理器上成功訓練稀疏神經網絡的研究團隊,將開啟一個全新水平的人工智慧時代。

除此之外,另一個挑戰是將稀疏學習算法應用於自然語言處理(NLP)。不出所料,我在自然語言處理任務轉換器上的實驗表明,與計算機視覺相比,稀疏學習在自然語言處理中要困難得多——未來我們需要做的工作還有很多!

六、嘗試使用 10 行代碼親自寫稀疏動量模型!

圖7:一個通用的稀疏學習腳本示例,您可以將其用於自己的模型。使用sparselearning庫很容易使用稀疏動量:(1)導入庫,(2)添加解析器選項,(3)用Masking類包裝模型,(4)應用mask而不是優化器,(5)在迭代次數結束時應用稀疏動量。該庫還可以通過自己的稀疏學習算法輕鬆地進行擴展,以實現增長、修剪或重分配——完成這一切只需僅僅幾行代碼!

為了讓大家都能更深度地了解稀疏學習,我開發了一個稀疏學習的庫,它能夠讓你將現有的算法如稀疏動量輕易得應用到你自己的模型上,並且能夠用少於 10 行代碼完成。這個庫的設計還使得添加自己的稀疏學習方法變得非常容易。你可以通過以下地址前往GitHub查看這一開發庫:

https://github.com/TimDettmers/sparse_learning參考文獻

Frankle, J. and Carbin, M. (2019). The lottery ticket hypothesis: Finding sparse, trainable neural networks. In ICLR 2019.

Han, S., Pool, J., Tran, J., and Dally, W. (2015). Learning both weights and connections for efficient neural network. In Advances in neural information processing systems, pages1135—1143.

Herculano-Houzel, S., Mota, B., Wong, P., and Kaas, J.H. (2010). Connectivity-driven white matter scaling and folding in primate cerebral cortex. In Proceedings of the National Academy of Sciences of the United States of America, 107 44:19008—13.

via https://timdettmers.com/2019/07/11/sparse-networks-from-scratch/雷鋒網 AI 科技評論編譯

相關焦點

  • 如何解決稀疏獎勵下的強化學習?
    本文重點探討的就是在存在稀疏獎勵的情況下引導 agent 繼續學習或探索的強化學習問題。目前解決稀疏獎勵下的強化學習主要有兩類方法:一是,利用數據改進 agent 的學習 ,包括已有數據、外部數據等;二是,改進模型,提升模型在大狀態、大動作空間下處理複雜問題的能力。
  • 32分鐘訓練神經機器翻譯,速度提升45倍
    為此,我們使用神經機器學習(NMT)自動翻譯帖子和內容中的文本。我們之前關於這一課題的研究 fairseq 已經開源,這是一個序列到序列的學習庫,可供任何人訓練 NMT 模型,完成自動摘要或其他文本生成任務。
  • 3D U-Net:從稀疏注釋中學習密集的體積分割
    點擊上方「3D視覺工坊」,選擇「星標」乾貨第一時間送達論文連結:https://arxiv.org/abs/1606.06650代碼連結:https://github.com/zhengyang-wang/3D-Unet--Tensorflow主要思想本文介紹了一種從稀疏標註的體積圖像中學習的體積分割網絡
  • 阿里開源首個DL框架,新型XDL幫你搞定大規模稀疏數據
    XDL 團隊表示在淘寶原來的信息流廣告裡,他們需要 300 臺以上的機器才能支持模型訓練一次。但是這種結構化數據大大簡化了數據的表示,因此整個數據集減少了一百倍以上的硬碟存儲,計算速度也提升了十多倍。因此最後本來需要幾百臺機器的模型訓練,可以精簡到十臺機器左右就能完成訓練。
  • 圖神經網絡開發必備組件,NetworkX、稀疏矩陣、稀疏Tensor等
    【導讀】隨著圖卷積網絡、圖注意網絡等圖神經網絡研究的飛速發展,越來越多的工業應用開始引入圖神經網絡並取得了可觀的效果
  • Switch Transformer: 高效稀疏的萬億參數Transformer
    最近要開始使用Transformer去做一些事情了,特地把與此相關的知識點記錄下來,構建相關的、完整的知識結構體系。以下是要寫的文章,本文是這個系列的第二十七篇,內容較為深入,需要學習基礎的同學點擊連結進入文章列表查看基礎知識相關文章。
  • 單機訓練速度提升 640 倍!獨家解讀快手商業廣告模型 GPU 訓練平臺...
    本著不盲從、不抄襲、堅持原創技術路線的原則,快手西雅圖FeDA智能決策實驗室推出了名為"Persia"的基於GPU的廣告推薦訓練系統。以往需要50臺CPU機器訓練20小時的系統,如今只需要一臺普通的GPU機器在一到兩小時完成,單機效率提升高達640倍。這意味著:·以往使用五十臺計算機,一天只能嘗試一個新想法,新系統只需一臺計算機,一兩個小時就能嘗試一個新想法。
  • 深度學習算法(第30期)----降噪自編碼器和稀疏自編碼器及其實現
    (第29期)----可視化自編碼器和無監督預訓練今天我們一起學一下降噪自編碼器和稀疏自編碼器方面的知識。降噪自編碼器一般情況下,為了強制自編碼器去學習一些有用的特徵,往往會對輸入數據進行增加一些噪聲,然後訓練它去恢復原始沒有噪聲的數據。這就防止了自編碼器耍小聰明,去複製輸入到輸出。因此最終會尋找到輸入數據的特徵模式。
  • 提升12倍!香港浸會大學與MassGrid發布低帶寬高效AI訓練新算法
    允中 發自 凹非寺量子位 報導 | 公眾號 QbitAI隨著訓練數據量的增加和深度神經網絡(DNN)的日益複雜,分布式計算環境(如GPU集群)被廣泛採用,以加速DNN的訓練。分布式計算網絡在機器學習方面的瓶頸在於節點之間的數據傳輸效率,那如何在這一網絡下高效地進行AI訓練?
  • 從頭開始構建最先進的深度學習模型
    導讀:近日,Fast.ai 發布一門新課程——從零開始學深度學習(Deep Learning from the Foundations),該課程由 Jeremy Howard 教授,展示了如何從頭開始構建最先進的深度學習模型。
  • 滴滴研究院副院長葉傑平:大規模稀疏和低秩學習(下)
    以下內容是本次報告的下篇,主要講解優化的算法、稀疏篩選等問題。本文由雷鋒網夏睿和奕欣整理,已經由葉教授親自校正。上篇演講傳送門:滴滴研究院副院長葉傑平:大規模稀疏和低秩學習(上)但對於一般問題,用CD還要注意一下,它不一定會收斂。在什麼情況下收斂?如果目標函數是光滑而且凸的,就一定會收斂。但很多問題不光滑,比如Lasso就不光滑,那怎麼辦?如果是不光滑的,只要光滑部分可分就可以了。在很多稀疏問題上,CD是可以保證是收斂的。
  • 如何掩蓋稀疏的頭髮?
    可是一頭稀疏的頭髮對自信心的衝擊,卻比男人們嚴重的多。掉頭髮不可怕,可怕的是因此失去其它,今天我向大家分享幾招立竿見影的方法,掩蓋你稀疏的頭髮。 #1頭髮重築纖維,或叫密發纖維。 這是一瓶細小的粉末,看起來髒兮兮的,當你把它灑在稀疏的頭髮上,奇蹟發生了。
  • 一行代碼讓訓練速度提升2倍,飛槳自動混合精度技術詳解
    但是在深度學習領域,模型的參數、數據集的規模等等動輒就是以億為單位,甚至更大,因此當模型訓練成功之時,放一首張靚穎的「終於等到你」作為背景音樂實在是太應景了。那如果現在向你推薦一款神器,可以實現訓練速度翻倍,訪存效率翻倍,你心動嗎?
  • 神經網絡訓練trick
    相對Sigmoid優點:單側抑制;寬闊的興奮邊界;稀疏激活性;解決梯度消失初始化權重一般說隨機初始化為一些小的數,沒那麼簡單,一些網絡結構需要一些特定的初始化方法,初始化不好很可能得不到文章上的效果!開始一般用3-8層,當效果不錯時,為了得到更高的準確率,再嘗試加深網絡Hidden neurons的數量最好參考researcher在相似的任務上結構,一般256-1024太多:訓練慢,難去除噪聲(over-fitting)太少:擬合能力下降loss function
  • 分類機器學習中,某一標籤佔比太大(標籤稀疏),如何學習?
    過採樣是直接對樣本進行複製,導致訓練集重複樣本太多,而SMOTE則不是直接複製,而是生成與正樣本相似並且訓練集中沒有的樣本。具體做法:首先隨機選取一個正樣本,然後用K近鄰選取一個與其最相似的樣本,取兩樣本的中值或者均值,作為新樣本。這樣生成的樣本可一定程度降低模型過擬合的風險 (仍然可能過擬合) 。
  • 卷積神經網絡CNN如何訓練?
    於是,有人乾脆用Unity給它完整3D可視化了出來。還不光是有個架子,訓練過程也都呈現得明明白白。比如隨著epoch(迭代次數)的變化,訓練過程中各層出現的實時變化。如何用Unity搞出一個3D網絡在正式上手Unity前,作者先在Houdini軟體中,搭建了一個可視化的3D網絡原型。
  • 百度引入Ring Allreduce算法,大規模提升模型訓練速度
    ,這讓基於GPU訓練的神經網絡模型的訓練速度顯著提高。    高效並行訓練的需求隨著神經網絡參數越來越龐大,從幾億個參數與到數十億參數,所需的GPU運算節點也在增加。然而,節點數量越多,整個系統的效率就會降低。深度學習在多個GPU上訓練神經網絡通常比較困難,因為大家普遍採用的方法是,讓多個GPU把數據發送給一個reducer GPU上,這會造成一種通信瓶頸,整個訓練速度會因此拖慢。而
  • 康佳特聯手Hacarus 推出基於稀疏建模的AI嵌入式計算機工具組
    稀疏建模技術僅需少量訓練數據,即可完成高精確度的預測。這在基於視覺的檢查系統中是一大特殊優勢,因為在生產質量較高的同時,產品的不良率自然會降低。採用稀疏建模(Sparse Modeling),只需50張左右的影像圖片,便可創建全新的檢查模型,相較傳統AI所需的1000張或更多影像,大幅減少。Hacarus的稀疏建模工具組可獨立使用,也可加裝到現有的檢查系統中。
  • 【速覽】TIP 2020 |AMP-Net:一種針對圖像壓縮感知的深度學習型稀疏優化
    AMP-Net:一種針對圖像壓縮感知的深度學習型稀疏優化 張衷豪 大多數壓縮感知重建算法可以分為兩類,即基於模型的方法和深度網絡方法。通過將迭代優化算法展開成神經網絡,深度展開模型能同時具備基於模型的方法的解釋性和經典深度神經網絡方法速度快的特點。在本文中,為解決視覺圖像壓縮感知問題,我們提出了一種名為AMP-Net的深度展開模型。它將近似消息傳遞(Approximate Message Passing, AMP)算法的迭代去噪過程展開成多層網絡。
  • 推薦系統為什麼使用稀疏矩陣?使用python的SciPy包處理稀疏矩陣
    這意味著當我們在一個矩陣中表示用戶(行)和行為(列)時,結果是一個由許多零值組成的極其稀疏的矩陣。在真實的場景中,我們如何最好地表示這樣一個稀疏的用戶-項目交互矩陣?為什麼我們不能只使用Numpy數組或panda數據流呢?