導航:首頁 > 源碼編譯 > 深度學習演算法樣本數量

深度學習演算法樣本數量

發布時間:2024-04-20 06:21:53

❶ 深度學習演算法是什麼

深度學習演算法是學習樣本數據的內在規律和表示層次,這些學習過程中獲得的信息對諸如文字,圖像和聲音等數據的解釋有很大的幫助。它的最終目標是讓機器能夠像人一樣具有分析學習能力,能夠識別文字、圖像和聲音等數據。

深度學習是一個復雜的機器學習演算法,在語音和圖像識別方面取得的效果,遠遠超過先前相關技術。

區別於傳統的淺層學習,深度學習的不同在於:

(1)強調了模型結構的深度,通常有5層、6層,甚至10多層的隱層節點。

(2)明確了特徵學習的重要性。也就是說,通過逐層特徵變換,將樣本在原空間的特徵表示變換到一個新特徵空間,從而使分類或預測更容易。與人工規則構造特徵的方法相比,利用大數據來學習特徵,更能夠刻畫數據豐富的內在信息。

❷ N-Shot Learning:用最少的數據訓練最多的模型

作 者 | Heet Sankesara

翻 譯 | 天字一號(鄭州大學)、鄴調(江蘇 科技 大學)

審 校 | 唐里、Pita

如果將AI比作電力的話,那麼數據就是創造電力的煤。

不幸的是,正如我們看到可用煤是消耗品一樣,許多 AI 應用程序可供訪問的數據很少或根本就沒有數據。

新技術已經彌補了物質資源的不足;同樣需要新的技術來允許在數據很少時,保證程序的正常運行。這是正在成為一個非常受歡迎的領域,核心問題:N-shot Learning

1. N-Shot Learning

你可能會問,什麼是shot?好問題,shot只用一個樣本來訓練,在N-shot學習中,我們有N個訓練的樣本。術語「小樣本學習」中的「小」通常在0-5之間,也就是說,訓練一個沒有樣本的模型被稱為 zero-shot ,一個樣本就是 one-shot 學習,以此類推。

1-1 為什麼需要N-Shot?

我們在 ImageNet 中的分類錯誤率已經小於 4% 了,為什麼我們需要這個?

首先,ImageNet 的數據集包含了許多用於機器學習的示例,但在醫學影像、葯物發現和許多其他 AI 可能至關重要的領域中並不總是如此。典型的深度學習架構依賴於大量數據訓練才能獲得足夠可靠的結果。例如,ImageNet 需要對數百張熱狗圖像進行訓練,然後才能判斷一幅新圖像准確判斷是否為熱狗。一些數據集,就像7月4日慶祝活動後的冰箱缺乏熱狗一樣,是非常缺乏圖像的。

機器學習有許多案例數據是都非常稀缺,這就是N-Shot技術的用武之地。我們需要訓練一個包含數百萬甚至數十億個參數(全部隨機初始化)的深度學習模型,但可用於訓練的圖像不超過 5 個圖像。簡單地說,我們的模型必須使用非常有限的熱狗圖像進行訓練。

要處理像這個這樣復雜的問題,我們首先需要清楚N-Shot的定義。

對我來說,最有趣的子領域是Zero-shot learning,該領域的目標是不需要一張訓練圖像,就能夠對未知類別進行分類。

沒有任何數據可以利用的話怎麼進行訓練和學習呢?

想一下這種情況,你能對一個沒有見過的物體進行分類嗎?

夜空中的仙後座(圖源:https:// www .star-registration .com /constellation/cassiopeia)

是的,如果你對這個物體的外表、屬性和功能有充足的信息的話,你是可以實現的。想一想,當你還是一個孩子的時候,是怎麼理解這個世界的。在了解了火星的顏色和晚上的位置後,你可以在夜空中找到火星。或者你可以通過了解仙後座在天空中"基本上是一個畸形的'W'"這個信息中識別仙後座。

根據今年NLP的趨勢,Zero-shot learning 將變得更加有效(https://blog.floydhub .com /ten-trends-in-deep-learning-nlp/#9-zero-shot-learning-will-become-more-effective)。

計算機利用圖像的元數據執行相同的任務。元數據只不過是與圖像關聯的功能。以下是該領域的幾篇論文,這些論文取得了優異的成績。

在one-shot learning中,我們每個類別只有一個示例。現在的任務是使用一個影像進行訓練,最終完成將測試影像劃分為各個類。為了實現這一目標,目前已經出現了很多不同的架構,例如Siamese Neural Networks(https:// www .cs.cmu.e/~rsalakhu/papers/oneshot1.pdf),它帶來了重大進步,並達到了卓越的結果。然後緊接著是matching networks(https://ar xi v.org/pdf/1606.04080.pdf),這也幫助我們在這一領域實現了巨大的飛躍。

小樣本學習只是one-shot learning 的靈活應用。在小樣本學習中,我們有多個訓練示例(通常為兩到五個圖像,盡管上述one-shot learning中的大多數模型也可用於小樣本學習)。

在2019年計算機視覺和模式識別會議上,介紹了 Meta-Transfer Learning for Few-Shot Learning(https://ar xi v.org/pdf/ 181 2.02391v3.pdf)。這一模式為今後的研究開創了先例;它給出了最先進的結果,並為更復雜的元遷移學習方法鋪平了道路。

這些元學習和強化學習演算法中有許多都是與典型的深度學習演算法相結合,並產生了顯著的結果。原型網路是最流行的深度學習演算法之一,並經常用於小樣本學習 。

在本文中,我們將使用原型網路完成小樣本學習,並了解其工作原理。

2. 原型網路背後的思想

上圖為原型網路函數的示意圖。編碼器將圖像進行編碼映射到嵌入空間(黑圈)中的矢量中,支持圖像用於定義原型(星形)。利用原型和編碼查詢圖像之間的距離進行分類。圖源:https:// www .semanticscholar.org/paper/Gaussian-Prototypical-Networks-for-Few-Shot-on-Fort//figure/1

與典型的深度學習體系結構不同,原型網路不直接對圖像進行分類,而是通過在度量空間(https://en.wikipedia.org/wiki/Metric_space)中尋找圖像之間的映射關系。

對於任何需要復習數學的人來說,度量空間都涉及"距離"的概念。它沒有一個可區分的"起源"點。相反,在度量空間中,我們只計算一個點與另一個點的距離。因此,這里缺少了矢量空間中加法和標量乘法(因為與矢量不同,點僅表示坐標,添加兩個坐標或縮放坐標毫無意義!)請查看此鏈接,詳細了解矢量空間和度量空間之間的差異:https://math.stackexchange .com /questions/1 149 40/what-is-the-difference-between-metric-spaces-and-vector-spaces。

現在,我們已經學習了這一背景,我們可以開始了解原型網路是怎樣不直接對圖像進行分類,而是通過在度量空間中尋找圖像之間的映射關系。如上圖所示,同一類的圖像經過編碼器的映射之後,彼此之間的距離非常接近,而不同類的圖像之間具有較長的距離。這意味著,每當給出新示例時,網路只需檢查與新示例的圖像最近的集合,並將該示例圖像分到其相應的類。原型網路中將圖像映射到度量空間的基礎模型可以被稱為"Image2Vector"模型,這是一種基於卷積神經網路 (CNN) 的體系結構。

現在,對於那些對 CNN 不了解的人,您可以在此處閱讀更多內容:

簡單地說,他們的目標是訓練分類器。然後,該分類器可以對在訓練期間不可用的新類進行概括,並且只需要每個新類的少量示例。因此,訓練集包含一組類的圖像,而我們的測試集包含另一組類的圖像,這與前一組完全不相關。在該模型中,示例被隨機分為支持集和查詢集。

很少有鏡頭原型ck被計算為每個類的嵌入式支持示例的平均值。編碼器映射新圖像(x)並將其分類到最接近的類,如上圖中的c2(圖源:https://ar xi v.org/pdf/ 1703 .05 175 .pdf)。

在少鏡頭學習的情況下,訓練迭代被稱為一個片段。一個小插曲不過是我們訓練網路一次,計算損失並反向傳播錯誤的一個步驟。在每一集中,我們從訓練集中隨機選擇NC類。對於每一類,我們隨機抽取ns圖像。這些圖像屬於支持集,學習模型稱為ns-shot模型。另一個隨機采樣的nq圖像屬於查詢集。這里nc、ns和nq只是模型中的超參數,其中nc是每次迭代的類數,ns是每個類的支持示例數,nq是每個類的查詢示例數。

之後,我們通過「image2vector」模型從支持集圖像中檢索d維點。該模型利用圖像在度量空間中的對應點對圖像進行編碼。對於每個類,我們現在有多個點,但是我們需要將它們表示為每個類的一個點。因此,我們計算每個類的幾何中心,即點的平均值。之後,我們還需要對查詢圖像進行分類。

為此,我們首先需要將查詢集中的每個圖像編碼為一個點。然後,計算每個質心到每個查詢點的距離。最後,預測每個查詢圖像位於最靠近它的類中。一般來說,模型就是這樣工作的。

但現在的問題是,這個「image2vector」模型的架構是什麼?

論文匯總 Image2Vector 向量的結構

對於所有實際應用中,一般都會使用 4-5 CNN 模塊。如上圖所示,每個模塊由一個 CNN 層組成,然後是批處理規范化,然後是 ReLu 激活函數,最後通向最大池層。在所有模塊之後,剩餘的輸出將被展平並返回。這是本文中使用的網路結構(https://ar xi v.org/pdf/ 1703 .05 175 v2.pdf),您可以使用任何任何你喜歡的體系結構。有必要知道,雖然我們稱之為"Image2Vector"模型,但它實際上將圖像轉換為度量空間中的 64 維的點。要更好地了解差異,請查看 math stack exchange(https://math.stackexchange .com /questions/ 64 5672/what-is-the-difference-between-a-point-and-a-vector)。

負log概率的原理,圖源:https://ljvmiranda921.github.io/notebook/2017/08/13/softmax-and-the-negative-log-likelihood/#nll

現在,已經知道了模型是如何工作的,您可能更想知道我們將如何計算損失函數。我們需要一個足夠強大的損失函數,以便我們的模型能夠快速高效地學習。原型網路使用log-softmax損失,這只不過是對 softmax 損失取了對數。當模型無法預測正確的類時,log-softmax 的效果會嚴重懲罰模型,而這正是我們需要的。要了解有關損失函數的更多情況,請訪問此處。這里是關於 softmax 和 log-softmax 的很好的討論。

Omniglot數據集中的部分示例(圖源:https://github .com /brendenlake/omniglot)

該網路在 Omniglot 數據集(https://github .com /brendenlake/omniglot)上進行了訓練。Omniglot 數據集是專門為開發更類似於人類學習的演算法而設計。它包含 50個不同的字母表,共計1623 個不同的手寫字元。為了增加類的數量,所有圖像分別旋轉 90、 180 和 270 度,每次旋轉後的圖像都當做一個新類。因此,類的總數達到 了 64 92(1,623 + 4)類別。我們將 4200 個類別的圖像作為訓練數據,其餘部分則用於測試。對於每個集合,我們根據 64 個隨機選擇的類中的每個示例對模型進行了訓練。我們訓練了模型 1 小時,獲得了約 88% 的准確率。官方文件聲稱,經過幾個小時的訓練和調整一些參數,准確率達到99.7%。

是時候親自動手實踐了!

您可以通過訪問以下鏈接輕松運行代碼:

代碼地址: https://github .com /Hsankesara/Prototypical-Networks

運行地址: https://floydhub .com /run?template=https://github .com /Hsankesara/Prototypical-Networks

讓我們深入學習一下代碼!(向左←滑動可查看完整代碼)

以上的代碼是 Image2Vector CNN結構的一個實現。它的輸入圖像的維度為28*28*3,返回特徵向量的長度為 64 。

上面的代碼片段是原型網中單個結構的實現。如果你有任何疑問,只需在評論中詢問或在這里創建一個問題,非常歡迎您的參與和評論。

網路概述。圖源:https://youtu.be/wcKL05DomBU

代碼的結構與解釋演算法的格式相同。我們為原型網路函數提供以下輸入:輸入圖像數據、輸入標簽、每次迭代的類數(即 Nc )、每個類的支持示例數(即 Ns )和每個類的查詢示例數(即 Nq )。函數返回 Queryx ,它是從每個查詢點到每個平均點的距離矩陣, Queryy 是包含與 Queryx 對應的標簽的向量。 Queryy 存儲 Queryx 的圖像實際所屬的類。在上面的圖像中,我們可以看到,使用3個類,即 Nc =3,並且對於每個類,總共有5個示例用於訓練,即 Ns =5。上面的s表示包含這15個( Ns * Nc )圖像的支持集, X 表示查詢集。注意,支持集和查詢集都通過 f ,它只不過是我們的「image2vector」函數。它在度量空間中映射所有圖像。讓我們一步一步地把整個過程分解。

首先,我們從輸入數據中隨機選擇 Nc 類。對於每個類,我們使用random_sample_cls函數從圖像中隨機選擇一個支持集和一個查詢集。在上圖中,s是支持集,x是查詢集。現在我們選擇了類( C1 、C2 和 C3 ),我們通過「image2vector」模型傳遞所有支持集示例,並使用get_centroid函數計算每個類的質心。在附近的圖像中也可以觀察到這一點。每個質心代表一個類,將用於對查詢進行分類。

網路中的質心計算。圖源:https://youtu.be/wcKL05DomBU

在計算每個類的質心之後,我們現在必須預測其中一個類的查詢圖像。為此,我們需要與每個查詢對應的實際標簽,這些標簽是使用get_query_y函數獲得的。 Queryy 是分類數據,該函數將該分類文本數據轉換為一個熱向量,該熱向量在列點對應的圖像實際所屬的行標簽中僅為「1」,在列中為「0」。

之後,我們需要對應於每個 Queryx 圖像的點來對其進行分類。我們使用「image2vector」模型得到這些點,現在我們需要對它們進行分類。為此,我們計算 Queryx 中每個點到每個類中心的距離。這給出了一個矩陣,其中索引 ij 表示與第 i 個查詢圖像對應的點到第 j 類中心的距離。我們使用get_query_x函數構造矩陣並將矩陣保存在 Queryx 變數中。在附近的圖像中也可以看到同樣的情況。對於查詢集中的每個示例,將計算它與 C1、C2 和 C3 之間的距離。在這種情況下, X 最接近 C2 ,因此我們可以說 X 被預測屬於 C2 類。

編程方式,我們可以使用一個簡單的ARMmin函數來做同樣的事情,即找出圖像被預測的類。然後使用預測類和實際類計算損失並反向傳播錯誤。

如果你想使用經過訓練的模型,或者只需要重新訓練自己,這里是我的實現。您可以使用它作為API,並使用幾行代碼來訓練模型。你可以在這里找到這個網路。

3. 資源列表

這里有些資源可以幫你更全面的了解本文內容:

4. 局限性

盡管原型網路的結果不錯,但它們仍然有局限性。首先是缺乏泛化,它在Omniglot數據集上表現很好,因為其中的所有圖像都是一個字元的圖像,因此共享一些相似的特徵。然而,如果我們試圖用這個模型來分類不同品種的貓,它不會給我們准確的結果。貓和字元圖像幾乎沒有共同的特徵,可以用來將圖像映射到相應度量空間的共同特徵的數量可以忽略不計。

原型網路的另一個限制是只使用均值來確定中心,而忽略了支持集中的方差,這在圖像有雜訊的情況下阻礙了模型的分類能力。利用高斯原網路(https://ar xi v.org/abs/ 1708 .02 73 5)類中的方差,利用高斯公式對嵌入點進行建模,克服了這一局限性。

5. 結論

小概率學習是近年來研究的熱點之一。有許多使用原型網路的新方法,比如這種元學習方法,效果很好。研究人員也在 探索 強化學習,這也有很大的潛力。這個模型最好的地方在於它簡單易懂,並且能給出令人難以置信的結果。

via https://blog.floydhub .com /n-shot-learning/

本文由雷鋒字幕組成員翻譯,雷鋒字幕組是由AI愛好者組成的字幕翻譯團隊;團隊成員有大數據專家、演算法工程師、圖像處理工程師、產品經理、產品運營、IT咨詢人、在校師生;志願者們來自IBM、AVL、Adobe、阿里、網路等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。了解字幕組 請加 微信 ~

閱讀全文

與深度學習演算法樣本數量相關的資料

熱點內容
linux關閉java進程 瀏覽:884
想學編程報什麼專業 瀏覽:21
阿里雲伺服器帶寬哪裡看 瀏覽:17
python怎麼驗證等式 瀏覽:563
喋血劫花磁力下載 瀏覽:37
房地產開發管理pdf 瀏覽:794
日韓美女網站。 瀏覽:502
舞會電影未刪減版 瀏覽:988
什麼中web伺服器 瀏覽:801
php開發實戰權威指南光碟 瀏覽:947
永新優品app怎麼找不到 瀏覽:245
海外伺服器如何找客戶 瀏覽:579
單片機學51 瀏覽:158
自助審核系統源碼 瀏覽:383
python小數矩陣 瀏覽:599
安卓微信拍了拍功能怎麼打開 瀏覽:48
求個最新的網址誰知道 瀏覽:29
bl耽美電影大尺度 瀏覽:275
編程里的塊和函數的關系 瀏覽:372
大齡程序員自由職業現狀 瀏覽:17