小心深度學習這個“坑”(入門誤區詳細版)
定位:深層學習在哪
1、深層學習需要什麼?
數學
線性代數:是有關任意維度空間下事物狀態和狀態變化的規則。
概 率:是用來衡量我們對事物在跨時間後不同狀態的確信度。
程式設計
操作矩陣
實現數學想法
學習的難點
其實就是學習尋找關聯函式f的過程。
難點:需要在未見過的任務上表現良好
有一種極端情況:
記憶:記住所有的訓練樣本和對應標籤。
實際:無法被窮盡,各式各樣的變體。
關於函式f的尋找
維度的問題:
維度越大,我們越無法獲得所有的情況。
面臨沒見過的情況,一般是將左右的情況平均一下。但是這種方法在高維資料下並不適用。
分散式表達:
原本需要8個不同情況,現在只需要6個。因為8個變體是又3種因素組合而成的。
數字表示法:解決變化的因素。
橢圓這個factor實際上也是有變體的,可以以相同的思路繼續拆分,繼續降低訓練所需資料量。
No Free Lunch Theorem
任何兩個優化演算法是等價的,當它們的效能是在所有可能的問題的平均值。
深層VS淺層
分散式表達是將變體拆分成因素。但是如果用無限節點的淺層網路,所拆分的變體並不會在不同樣本之間形成共享。
而深層神經網路,由於拆分的變體可以在不同樣本間共享,在淺層網路中只負責學習自己的關聯,而在深層網路中,那些共用相同因素的樣本也會被間接的訓練到。換句話說,深層的優勢在於節省了訓練所需的資料量。
關鍵:因素的共享
深層神經網路
學習的過程是因素間的關係的拆分,關係的拆分是資訊的回捲,資訊的回捲是變體的消除,變體的消除是不確定性的縮減。
自然界兩個固有的先驗知識:
並行:新狀態是由若干舊狀態並行組合形成。
迭代:新狀態由已形成的狀態再次迭代形成。
應用:如何設計網路
拆分因素:將變體拆分成因素,降低訓練所需資料量。
因素共享:使所拆分的因素在不同的樣本之間形成共享,可以用等量的資料訓練出更好的模型。
每一層表示事物的一種狀態,設計神經網路時,要以“層”為單元。
誤區1:深層學習並非萬能,應用先驗知識的前提是資料可以以先驗知識的方式生成
誤區2:深層學習沒有固定形式,可以依據上兩個要點設計出各式各樣的網路。
神經網路變體
迴圈層:時間共享
如果用前饋層,每個圓圈表示100個節點,那麼前饋層處理時序相關性時就需要學習300個權重。
但如果知道不同權重在時間下是共享的,那麼就只需要學習200個權重。
卷積層:空間共享
如果用前饋層,那麼需要學習81個權重,但如果知道這些權重在空間下是共享的,那麼可能只需要學習9個權重。原本一張圖片在前饋層中只能用於學習一次權重,在卷基層中卻可以學習很多次。
設計自己的神經網路
兩個方向相加的 雙向迴圈層一般比相併的效果好
神經網路其實並不黑箱,真正黑箱的是你的Task。
設計神經網路就是尋找在你手頭的Task上利用因素拆分和因素共享的合理方式
可以先經過前饋層再經過雙向迴圈層再經過前饋層最終得到你的結果。
例子
一些技術
多工學習muti-task learning,利用的是因素共享,多個任務共享相同的知識,這樣就會更容易確定我們真正想要的關聯f,而排除掉那些只符合訓練資料集,而不符合測試資料集的關聯。
joint learning,end-to-end learning,是因素共享+因素拆分的聯合應用。通過縮減人工預處理和後續處理,儘可能使模型從原始輸入到最終輸出,給模型更多可以根據資料自動調節的空間,增加模型的整體契合度。
人工智慧對我們的影響
若有興趣,請去“計算機視覺戰隊”公眾平臺慢慢去欣賞
計算機視覺戰隊
最優秀的AI團隊
加入我們,一起學習,共同進步!
(向左滑動,有驚喜)
如果想加入我們“計算機視覺戰隊”,請掃二維碼加入學習群,我們一起學習進步,探索領域中更深奧更有趣的知識!