重溫深度學習

2021-09-03 07:01:19 字數 1996 閱讀 3779

神經網路的基本結構我們都很清楚,輸入層,隱藏層,輸出層。基本的神經網路結構接收的輸入是向量,所以如果是影象的話,我們需要將它reshape成vector,而卷積神經網路可以直接接收影象矩陣進行處理,這也是cnn的方便之處。對於基本的分類問題,在最早的感知機模型中,我們使用的是sign函式,所以輸出結果只能是yes和no兩種,並不存在maybe。而sigmoid函式把值的範圍限定在了0和1之間,那麼輸出值就能是0到1的任意乙個值,也就實現了maybe,但是它的問題就在於當函式值較大的時候,會出現飽和現象,用數學的話來解釋,函式值基本上不怎麼變化,那麼在接下來使用梯度下降法來調整引數的過程中就會很費力,因為發現引數值變化很不明顯。這也就是梯度消失現象,也是神經網路不容易訓練的原因。而隨後的relu函式的出現,減緩了梯度消失現象,使得網路更容易訓練。為什麼要使用非線性函式?神經網路廣義上是乙個函式,數學上的對映函式。如果不使用非線性啟用函式的話,那麼網路輸出的只能是線性加權計算的結果,無論神經網路有多少層,它始終都是線性函式,而非線性函式的使用增加了網路非線性表示的能力。神經網路的萬能近似定理告訴我們,通過非線性表示,神經網路的表示空間的能力被大大擴充套件,簡單來說,就是可以表示的範圍更廣了。

權重和偏置是神經網路中需要學習的引數,權重代表神經元之間連線的強弱,而偏置告訴我們當前的加權和是否合適,是否容易被網路啟用,當加權值或大或小的時候,我們通過偏置來進行調節。當我們在討論機器「學習」的時候,實質上指機器如何正確設定這些引數,為了達到這個目的,我們通過各種數學上優化的手段去解決這個問題。

向量化程式設計是gpu大行其道的重要原因,gpu的硬體機制使得它對於這種向量化運算的速度極快,它的硬體結構決定了當向量化程式設計來加快程式執行速度時,英偉達必然佔據市場的絕對制高點。

分層表示機制是深度學習的核心,通過簡單的概念來組合成複雜的事物。而這種機制,不正是我們人類學習知識的方法嗎,由簡單到複雜,目標分解,將複雜事物分解為簡單事物來進行學習。人類在面對複雜問題的時候所採用的解決辦法是相通的,目標分解屢試不爽。

神經網路學習的過程,就是最小化損失函式,進而達到調節引數的目的。神經網路通過大量的訓練資料來學習如何求解這個微積分問題,從數學上來講,很多的未知數就需要很多的方程來約束,這樣才能解這個方程。權重和偏置就是未知數,訓練資料就是解開這些未知數的乙個乙個方程。而這種方程的求解方法,並不是像正規方程一樣通過公式直接就能得到最終結果一樣,而是通過函式逼近的方法來解決問題,而損失函式和梯度下降法就是幫助我們解決問題的工具。梯度下降法解決的問題是找到函式的最小值反向傳播演算法解決的問題是如何計算引數的梯度值。

優化問題和正則化問題是深度學習中的兩大核心問題。最小化損失函式所牽涉到的問題都是函式優化問題,凸函式的性質,區域性最優與全域性最優問題,大致都屬於這個範疇裡面的內容。受制於我們的訓練資料,網路模型的可能會出現過擬合現象,因為正則化手段就是為了解決過擬合,對它進行限制,從而擁有更好的模型泛化能力。人在學習的過程中,受制於個人知識的侷限,會出現各種認知偏差行為,深度學習模型由於是基於資料訓練出來的,這些資料就是它獲得經驗知識的**,那麼它就會對這些知識產生嚴重依賴行為,在面對新的情況下,不見得表現很好,因此,既要通過資料讓它具備一定的知識水平,又不能讓它過度依賴這些知識,而是具有舉一反三的能力,這也就是深度學習模型中為什麼要正則化的原因,避免對已有知識的過度依賴。

最後,簡單總結一下個人的一些思考:

1、分層表示機制是深度學習的核心問題,分層讓深度學習模型從簡單到複雜去學習。正如人的學習過程,由簡單的概念構建起最終的乙個學科大廈。

2、對於乙個複雜的問題,將它拆解為簡單的問題去解決,當乙個乙個小問題解決了之後,這個複雜的問題也就解決了。目標拆解好像在做事中特別有用,科研也是如此。

計算機中的模組化思想,不也是目標拆解的一種體現嗎。

3、人類本身的認知水平就如同深度學習模型的過擬合現象一樣,我們學習某種知識,當我們感覺學的足夠好的時刻,同時也是被我們被這些所具有的知識進行束縛的時刻,我們需要避免對已有知識的嚴重依賴。

4、現代計算機的計算能力足夠強,我們不需要靠自己去解方程,因為計算機比我們做的要足夠好。知道具體的數學知識是用來解決什麼問題的,遇到問題的時候知道用哪種數學知識來解決眼下的問題遠遠比我們計算具體的方程如何求解更為重要,微積分,代數,統計學給我們提供了很棒的解決問題的工具與手段。

重溫C語言 讀C語言深度解刨有感

重溫c語言 讀c語言深度解刨有感 c基礎的溫習 可以這樣認為,很多語言都有c語言的影子。同樣除了組合語言,c語言是最靠近底層的語言。自我認為,程式設計師編寫程式或者設計架構的時候,一定得考慮程式執行的資源占用與釋放問題,畢竟絕大部分程式都是執行在作業系統上的。定義 如 int i 指編譯器建立乙個物...

深度學習(一)深度學習學習資料

持續更新 一 學習清單 1 收集了各種最新最經典的文獻,神經網路的資源列表 2 計算機視覺學習清單 3 機器學習學習清單 二 訓練資料 人臉資料 1 香港中文大學訓練資料集 此資料庫包含了20w張人臉,每張標註了5個特徵點 以及幾十種屬性 是否微笑 膚色 髮色 性別等屬性 2 68個人臉特徵點 3 ...

深度學習系列 深度學習簡介

機器學習 使用計算機系統利用經驗改善效能,是人工智慧領域的分支,也是實現人工智慧的一種手段。表徵學習關注如何自動找出表示資料的合適方式,以便更好地將輸入變換為正確的輸出。深度學習 具有多級表示的表徵方法,在每一級 原始資料開始 通過簡單的函式將該級的表示變換為更高階的表示。可以將深度學習看作多個簡單...