日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

2.9 迁移学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

發布時間:2025/4/5 卷积神经网络 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.9 迁移学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

←上一篇↓↑下一篇→
2.8 使用開源的實現方案回到目錄2.10 數據擴充

遷移學習 (Transfer Learning)

如果你要做一個計算機視覺的應用,相比于從頭訓練權重,或者說從隨機初始化權重開始,如果你下載別人已經訓練好網絡結構的權重,你通常能夠進展的相當快,用這個作為預訓練,然后轉換到你感興趣的任務上。計算機視覺的研究社區非常喜歡把許多數據集上傳到網上,如果你聽說過,比如ImageNet,或者MS COCO,或者Pascal類型的數據集,這些都是不同數據集的名字,它們都是由大家上傳到網絡的,并且有大量的計算機視覺研究者已經用這些數據集訓練過他們的算法了。有時候這些訓練過程需要花費好幾周,并且需要很多的GPU,其它人已經做過了,并且經歷了非常痛苦的尋最優過程,這就意味著你可以下載花費了別人好幾周甚至幾個月而做出來的開源的權重參數,把它當作一個很好的初始化用在你自己的神經網絡上。用遷移學習把公共的數據集的知識遷移到你自己的問題上,讓我們看一下怎么做。

舉個例子,假如說你要建立一個貓咪檢測器,用來檢測你自己的寵物貓。比如網絡上的Tigger,是一個常見的貓的名字,Misty也是比較常見的貓名字。假如你的兩只貓叫TiggerMisty,還有一種情況是,兩者都不是。所以你現在有一個三分類問題,圖片里是Tigger還是Misty,或者都不是,我們忽略兩只貓同時出現在一張圖片里的情況?,F在你可能沒有Tigger或者Misty的大量的圖片,所以你的訓練集會很小,你該怎么辦呢?

我建議你從網上下載一些神經網絡開源的實現,不僅把代碼下載下來,也把權重下載下來。有許多訓練好的網絡,你都可以下載。舉個例子,ImageNet數據集,它有1000個不同的類別,因此這個網絡會有一個Softmax單元,它可以輸出1000個可能類別之一。

你可以去掉這個Softmax層,創建你自己的Softmax單元,用來輸出Tigger、Mistyneither三個類別。就網絡而言,我建議你把所有的層看作是凍結的,你凍結網絡中所有層的參數,你只需要訓練和你的Softmax層有關的參數。這個Softmax層有三種可能的輸出,TiggerMisty或者都不是。

通過使用其他人預訓練的權重,你很可能得到很好的性能,即使只有一個小的數據集。幸運的是,大多數深度學習框架都支持這種操作,事實上,取決于用的框架,它也許會有trainableParameter=0這樣的參數,對于這些前面的層,你可能會設置這個參數。為了不訓練這些權重,有時也會有freeze=1這樣的參數。不同的深度學習編程框架有不同的方式,允許你指定是否訓練特定層的權重。在這個例子中,你只需要訓練softmax層的權重,把前面這些層的權重都凍結。

另一個技巧,也許對一些情況有用,由于前面的層都凍結了,相當于一個固定的函數,不需要改變。因為你不需要改變它,也不訓練它,取輸入圖像 XXX ,然后把它映射到這層(softmax的前一層)的激活函數。所以這個能加速訓練的技巧就是,如果我們先計算這一層(紫色箭頭標記),計算特征或者激活值,然后把它們存到硬盤里。你所做的就是用這個固定的函數,在這個神經網絡的前半部分(softmax層之前的所有層視為一個固定映射),取任意輸入圖像 XXX ,然后計算它的某個特征向量,這樣你訓練的就是一個很淺的softmax模型,用這個特征向量來做預測。對你的計算有用的一步就是對你的訓練集中所有樣本的這一層的激活值進行預計算,然后存儲到硬盤里,然后在此之上訓練softmax分類器。所以,存儲到硬盤或者說預計算方法的優點就是,你不需要每次遍歷訓練集再重新計算這個激活值了。

因此如果你的任務只有一個很小的數據集,你可以這樣做。要有一個更大的訓練集怎么辦呢?根據經驗,如果你有一個更大的標定的數據集,也許你有大量的TiggerMisty的照片,還有兩者都不是的,這種情況,你應該凍結更少的層,比如只把這些層凍結,然后訓練后面的層。如果你的輸出層的類別不同,那么你需要構建自己的輸出單元,Tigger、Misty或者兩者都不是三個類別。有很多方式可以實現,你可以取后面幾層的權重,用作初始化,然后從這里開始梯度下降。

或者你可以直接去掉這幾層,換成你自己的隱藏單元和你自己的softmax輸出層,這些方法值得一試。但是有一個規律,如果你有越來越多的數據,你需要凍結的層數越少,你能夠訓練的層數就越多。這個理念就是,如果你有一個更大的數據集,也許有足夠多的數據,那么不要單單訓練一個softmax單元,而是考慮訓練中等大小的網絡,包含你最終要用的網絡的后面幾層。

最后,如果你有大量數據,你應該做的就是用開源的網絡和它的權重,把這、所有的權重當作初始化,然后訓練整個網絡。再次注意,如果這是一個1000節點的softmax,而你只有三個輸出,你需要你自己的softmax輸出層來輸出你要的標簽。

如果你有越多的標定的數據,或者越多的Tigger、Misty或者兩者都不是的圖片,你可以訓練越多的層。極端情況下,你可以用下載的權重只作為初始化,用它們來代替隨機初始化,接著你可以用梯度下降訓練,更新網絡所有層的所有權重。

這就是卷積網絡訓練中的遷移學習,事實上,網上的公開數據集非常龐大,并且你下載的其他人已經訓練好幾周的權重,已經從數據中學習了很多了,你會發現,對于很多計算機視覺的應用,如果你下載其他人的開源的權重,并用作你問題的初始化,你會做的更好。在所有不同學科中,在所有深度學習不同的應用中,我認為計算機視覺是一個你經常用到遷移學習的領域,除非你有非常非常大的數據集,你可以從頭開始訓練所有的東西。總之,遷移學習是非常值得你考慮的,除非你有一個極其大的數據集和非常大的計算量預算來從頭訓練你的網絡。

課程板書



←上一篇↓↑下一篇→
2.8 使用開源的實現方案回到目錄2.10 數據擴充

總結

以上是生活随笔為你收集整理的2.9 迁移学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。