前向傳播的最後一步就是完成誤差的計算
l = g(f_ (x), y)
從另乙個角度來理解神經網路,它完成的是特徵的維度變換的功能,比如 4 層的 mnist 手寫數字識別的全連線網路,它依次完成了784 → 256 → 128 → 64 → 10的特 徵降維過程。原始的特徵通常具有較高的維度,包含了很多底層特徵及無用資訊,通過神 經網路的層層特徵變換,將較高的維度降維到較低的維度,此時的特徵一般包含了與任務 強相關的高層抽象特徵資訊,通過對這些特徵進行簡單的邏輯判定即可完成特定的任務, 如的分類。
網路的參數量是衡量網路規模的重要指標。那麼怎麼計算全連線層的參數量呢?考慮 權值矩陣?,偏置向量?,輸入特徵長度為?in,輸出特徵長度為?out的網路層,?的引數 量為?in ∙ ?out,再加上偏置?的引數,總參數量為?in ∙ ?out + ?out。對於多層的全連線神經 網路,比如784 → 256 → 128 → 64 → 10,總參數量的計算表示式為:
256 ∙ 784 + 256 + 128 ∙ 256 + 128 + 64 ∙ 128 + 64 + 10 ∙ 64 + 10 = 242762
約 242k 個引數。
全連線層作為最基本的神經網路型別,對於後續的神經網路模型,例如卷積神經網路 和迴圈神經網路等,的研究具有十分重要的意義,通過對其他網路型別的學習,我們會發 現它們或多或少地都源自全連線層網路的思想。
我們來介紹神經網路中的常見啟用函式,與階躍函式和符號函式不同,這些函式都是平滑可導的,適合於梯度下降演算法。
sigmod函式
relu函式
在 relu(rectified linear unit,修正線性單元)啟用函式提出之前,sigmoid 函式通常 是神經網路的啟用函式首選。但是 sigmoid 函式在輸入值較大或較小時容易出現梯度值接 近於 0 的現象,稱為梯度瀰散現象。出現梯度瀰散現象時,網路引數長時間得不到更新, 導致訓練不收斂或停滯不動的現象發生,較深層次的網路模型中更容易出現梯度瀰散現 象。2012 年提出的 8 層 alexnet 模型採用了一種名叫 relu 的啟用函式,使得網路層數達 到了 8 層,自此 relu 函式應用的越來越廣泛。
relu 函式在? < 0時導數值恒為 0,也可能會造成梯度瀰散現象,
為了克服這個問 題,leakyrelu 函式被提出。
在機器學習中, 一般會將的畫素值歸一化到[0,1]區間,如果直接使用輸出層的值,畫素的值範圍會分 布在整個實數空間。為了讓畫素的值範圍對映到[0,1]的有效實數空間,需要在輸出層後添 加某個合適的啟用函式?,其中 sigmoid 函式剛好具有此功能。
softmax
每個值代表了當前樣本屬於每個類別的概率,概率值之和為 1
tensorflow 中提供了乙個統 一的介面,將 softmax 與交叉熵損失函式同時實現,同時也處理了數值不穩定的異常,一 般推薦使用這些介面函式,避免分開使用 softmax 函式與交叉熵損失函式。函式式介面為tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=false),其中 y_true 代表了 one-hot 編碼後的真實標籤,y_pred 表示網路的**值,當 from_logits 設定為 true 時, y_pred 表示須為未經過 softmax 函式的變數 z;當 from_logits 設定為 false 時,y_pred 表示 為經過 softmax 函式的輸出。為了數值計算穩定性,一般設定 from_logits 為 true,此時 tf.keras.losses.categorical_crossentropy 將在內部進行 softmax 函式計算,所以不需要在模型 中顯式呼叫 softmax 函式.
z = tf.random.normal([2,10]) # 構造輸出層的輸出
y_onehot = tf.constant([1,3]) # 構造真實值
y_onehot = tf.one_hot(y_onehot, depth=10) # one-hot編碼
# 輸出層未使用 softmax 函式,故 from_logits 設定為 true
# 這樣 categorical_crossentropy 函式在計算損失函式前,會先內部呼叫 softmax 函式
loss = keras.losses.categorical_crossentropy(y_onehot,z,from_logits=false)
loss = tf.reduce_mean(loss) # 計算平均交叉熵損失
TensorFlow 深度學習筆記
google 深度學習筆記 經常總結是個好習慣,筆記目錄奉上。歡迎star,有問題可以到issue區討論 官方教程位址 最近tensorflow團隊出了乙個model專案,和這個課程無關,但是可以參考 框架 tensorflow 谷歌出品的基於python的深度學習工具集 工具 ipython,py...
TensorFlow深度學習框架
tensorflow支援python和c 兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。tensorflow 是乙個採用資料流圖 data flow gr...
深度學習 初識TensorFlow
深度學習使用場景 影象理解 語音識別 自然語言處理 機器自主 無人駕駛 深度學習,如深度神經網路 卷積神經網路和遞迴神經網路已被應用計算機視覺 語音識別 自然語言處理 音訊識別與生物資訊學等領域並取得了很好的效果。深度學習在人工智慧領域的地位 深度學習框架 google brain計畫產物 應用於a...