這份深度學習課程筆記獲吳恩達點贊

2021-08-20 08:45:36 字數 1639 閱讀 7200

所有輸入資料都有確定的對應輸出資料,在各種網路架構中,輸入資料和輸出資料的節點層都位於網路的兩端,訓練過程就是不斷地調整它們之間的網路連線權重。

列出了各種不同網路架構的監督學習,比如標準的神經網路(nn)可用於訓練房子特徵和房價之間的函式,卷積神經網路(cnn)可用於訓練影象和類別之間的函式,迴圈神經網路(rnn)可用於訓練語音和文字之間的函式。

分別展示了 nn、cnn 和 rnn 的簡化架構。這三種架構的前向過程各不相同,nn 使用的是權重矩陣(連線)和節點值相乘並陸續傳播至下一層節點的方式;cnn 使用矩形卷積核在影象輸入上依次進行卷積操作、滑動,得到下一層輸入的方式;rnn 記憶或遺忘先前時間步的資訊以為當前計算過程提供長期記憶。

nn 可以處理結構化資料(**、資料庫等)和非結構化資料(影象、音訊等)。

深度學習能發展起來主要是由於大資料的出現,神經網路的訓練需要大量的資料;而大資料本身也反過來促進了更大型網路的出現。深度學習研究的一大突破是新型啟用函式的出現,用 relu 函式替換sigmoid 函式可以在反向傳播中保持快速的梯度下降過程,sigmoid 函式在正無窮處和負無窮處會出現趨於零的導數,這正是梯度消失導致訓練緩慢甚至失敗的主要原因。要研究深度學習,需要學會「idea—**—實驗—idea」的良性迴圈。

logistic 回歸主要用於二分類問題,如圖中所示,logistic 回歸可以求解一張影象是不是貓的問題,其中影象是輸入(x),貓(1)或非貓(0)是輸出。我們可以將 logistic 回歸看成將兩組資料點分離的問題,如果僅有線性回歸(啟用函式為線性),則對於非線性邊界的資料點(例如,一組資料點被另一組包圍)是無法有效分離的,因此在這裡需要用非線性啟用函式替換線性啟用函式。在這個案例中,我們使用的是 sigmoid 啟用函式,它是值域為(0, 1)的平滑函式,可以使神經網路的輸出得到連續、歸一(概率值)的結果,例如當輸出節點為(0.2, 0.8)時,判定該影象是非貓(0)。

神經網路的訓練目標是確定最合適的權重 w 和偏置項 b,那這個過程是怎麼樣的呢?

損失函式值在引數曲面上變化的簡圖,使用梯度可以找到最快的下降路徑,學習率的大小可以決定收斂的速度和最終結果。學習率較大時,初期收斂很快,不易停留在區域性極小值,但後期難以收斂到穩定的值;學習率較小時,情況剛好相反。一般而言,我們希望訓練初期學習率較大,後期學習率較小,之後會介紹變化學習率的訓練方法。

總結整個訓練過程,從輸入節點 x 開始,通過前向傳播得到**輸出 y hat,用 y hat 和 y 得到損失函式值,開始執行反向傳播,更新 w 和 b,重複迭代該過程,直到收斂。

淺層網路即隱藏層數較少,如圖所示,這裡僅有乙個隱藏層。

這裡介紹了不同啟用函式的特點:

:為什麼要使用啟用函式呢?更準確地說是,為什麼要使用非線性啟用函式呢?

:如何初始化引數 w、b 的值?

神經網路的引數化容量隨層數增加而指數式地增長,即某些深度神經網路能解決的問題,淺層神經網路需要相對的指數量級的計算才能解決。

cnn 的深度網路可以將底層的簡單特徵逐層組合成越來越複雜的特徵,深度越大,其能分類的影象的複雜度和多樣性就越大。rnn 的深度網路也是同樣的道理,可以將語音分解為音素,再逐漸組合成字母、單詞、句子,執行複雜的語音到文字任務。

深度網路的特點是需要大量的訓練資料和計算資源,其中涉及大量的矩陣運算,可以在 gpu 上並行執行,還包含了大量的超引數,例如學習率、迭代次數、隱藏層數、啟用函式選擇、學習率調整方案、批尺寸大小、正則化方法等。

吳恩達深度學習課程筆記

一直以為機器學習的重點在於設計精巧 神秘的演算法來模擬人類解決問題。學了這門課程才明白如何根據實際問題優化 調整模型更為重要。事實上,機器學習所使用的核心演算法幾十年來都沒變過。什麼是機器學習呢?以二類分類監督學習為例,假設我們已經有了一堆訓練資料,每個訓練樣本可以看作n維空間裡的乙個點,那麼機器學...

吳恩達深度學習課程筆記 11

目標檢測 detection 其實是乙個非常困難的問題,一幅待檢測中可能包含許多目標,這些目標的類別多種多樣,同一類別的目標數目可能也不唯一。可以從乙個簡化的問題去入手,那就是分類定位 classification with location 這個問題只在影象分類任務上更進一步,不僅要分類,還要框出...

吳恩達深度學習筆記

2.02 紅色為小標題,藍色比較重要 第四講第二週 4.2.1 為什麼要進行例項 4.2.2 經典網路 lenet 5網路當時還沒有padding,所以在卷積過程當中越來越小 也沒有relu函式,當時這個例子用的是sigmoid函式。超級引數不是很多。這個典型的網路有padding,使用的是relu...