學習深度學習過程中的筆記和大家分享。
訓練神經網路主要圍繞這四個方面:
1,層:神經網路的基本資料結構是層,它是乙個資料處理模組,將輸入張量轉換成輸出張量。不同的張量格式與不同的資料處理型別需要用到不同的層。簡單的向量資料儲存在(sample,features)的2d張量中,通常用全連線層(對應keras中dense類)。序列資料儲存在形狀為(sample,timesteps,features)的3d張量中,通常用迴圈層(對應於keras的lstm層)來處理。影象資料儲存在4d張量中,通常用二維卷積層(對應於keras的conv2d)來處理。
from keras import layers
layer = layers.dense(32,input_shape=(784,))
這裡我們建立了乙個層,可以看到該層只接受第乙個維度大小為784的2d張量(第0軸是批量維度,其大小沒有指定)的輸入。輸出的張量的第一維度變成了32。當然,我們構建網路時不是只建一層,接下來還有很多層,那麼接下來的層的輸入張量的維度該如何確定呢?其實不用擔心,使用keras時,第一層輸出的張量第一維是32,那麼第二層輸入張量自動與其匹配,也是第一維為32。向模型中新增的層都會自動匹配輸入層的形狀。
2,輸入資料和對應的目標:我們需要對資料進行劃分,劃分為訓練集(training set)和測試集(test set),訓練集裡要有訓練資料(train_data)和對應目標(train_labels),同樣測試集裡也要有測試資料(test_data)和對應目標(test_labels)。我們劃分訓練集和測試集的原因是訓練機器學習模型的同一批資料不能再用於測試模型,訓練模型會出現模型在訓練集上表現的很好,但在測試集上表現很糟糕的情況,我們一般稱這種情況為過擬合。
3,損失函式(又叫目標函式):損失函式是用於學習的反饋訊號。它是用來衡量輸出值與預期值之間距離的函式,在訓練過程中需要將其最小化,它也是用來衡量任務是否完成的重要指標。所以選擇正確的目標函式對解決問題是非常重要的。可以遵循一些簡單的指導原則來選擇正確的損失函式。例如:對於二分類問題,可以使用二元交叉熵(binary crossentropy)損失函式;對於多分類問題,可以使用分類交叉熵(categorical crossentropy)損失函式;對於回歸問題,可以用均方誤差(mean_squared error)損失函式;對於序列學習問題,可以用聯結主義時序分類(ctc)損失函式。
4,優化器:決定如何基於損失函式對網路進行更新,執行的是隨機梯度下降(sgd)的某個變體。接下來我們了解一下隨機梯度下降。首先,我們要知道每個神經層用什麼方法對輸入資料進行變換的:
output = relu(dot( w, input) + b )
這個式子中的dot是張量的點積,w和b都是張量,均是該層的屬性,它們就是該層的權重或可訓練引數,分別對應kernel和bias屬性。這些權重包含訓練資料中學到的資訊。一開始,這些權重矩陣取較小值,這一步叫做隨機初始化。這是乙個起點,下一步則是根據反饋訊號逐漸調節這些權重,這個逐漸調節的過程叫做訓練,也是機器學習中學習。最終調節結果得到一組合適的權重(或者合適的模型),使得網路在訓練資料上的損失非常小,即**值和預期目標之間的距離非常小。網路學會將輸入對映到正確的目標。那麼怎麼來調節權重值來使得損失減小呢?這裡我們給出一種演算法來調節權重:
首先,我們將訓練樣本和對應目標送入網路中,樣本在網路中執行得到乙個**值,然後進入損失函式中計算樣本的**值和對應目標的距離或者損失;之後利用損失函式計算損失相對於網路引數的梯度,將引數沿梯度的反方向移動一點,比如w = w - step * gradient,從而使得這批資料上的損失減少一點。step這裡又叫做學習率,可以理解為每次反向傳播後引數沿著導數的反方向移動的距離。這就是隨機梯度下降法。
這些是我學習神經網路的筆記和理解,如果文中有明顯錯誤,懇請指正,不勝感激。
深度神經網路 筆記(二)
cnn比多層感知器 mlp 表現更好,原因為 cnn 輸入層 隱含層 全連線層 mlp存在兩個問題 cnn可以接收矩陣作為輸入,卷積層儲存了空間結構。定義乙個卷積視窗,即濾波器或卷積核,在影象上滑動卷積核。影象為乙個從 彩色影象是乙個函式。每個 dropout在前向傳播時隨機關閉節點,從而避免權重收...
神經網路與深度學習筆記彙總二
結構化機器學習專案 將你可以調整的引數設定在不同的正交的維度上,調整其中乙個引數,不會或幾乎不會影響其他維度上的引數變化,這樣在機器學習專案中,可以讓你更容易更快速地將引數調整到乙個比較好的數值 是重複反饋過程的活動,其目的通常是為了逼近所需目標或結果。每一次對過程的重複稱為一次 迭代 而每一次迭代...
TensorFlow深度學習筆記 迴圈神經網路實踐
歡迎star,有問題可以到issue區討論 官方教程位址 text8中只包含27種字元 小寫的從a到z,以及空格符。如果把它打出來,讀起來就像是去掉了所有標點的wikipedia。用zipfile讀取zip內容為字串,並拆分成單詞list 用connections模組統計單詞數量並找出最常見的單詞 ...