深度學習之Helloworld

2021-08-04 03:26:42 字數 2956 閱讀 5802

auc

為什麼要使用roc和auc?

潛在問題:欠擬合和過擬合

2. 機器學習的模型實現(提高深度學習模型**的準確性)

二、核心概念

特徵工程(feature engineering)

特徵學習(feature learning)

深度學習(deep learning)

三、基本概念

人工神經網路(aritificial neural network)

感知機

ai寒冬:

alexnet

隨機梯度下降(stochastic gradien descent)

誤差的反向傳播(backpropagation of errors)

誤差的反向傳播過程類似,只是從最後一層到第一層,基於如下規則:

為了計算梯度,我們用反向傳播規則2的中間結果,與爭先傳播規則2的中間結果,進行矩陣乘法。

修正線性函式(rectified linear unit,relu)

nesterov加速梯度

均方根傳播(root mean square propagation)

正則化方法

l1 regularization

l2 regularization(權重衰減)

四、卷積深度學習

池化/下取樣(pooling/sub-sampling)

inception

卷積神經網路(convolutional neural network, cnn)

②神經網路

這樣的函式曲線不是平滑的,而是非連續的,這會帶來很多數學處理上的問題,所以常用的還是連續函式,如s型函式(sigmoid function),最典型的sigmoid function是邏輯斯蒂函式(logistic function)。

輸出節點: 輸出節點(output node)呈現了啟用函式的結果。

偏置: 偏置(bias)可以認為是乙個值固定為1的輸入節點,它可以左右移動啟用函式,提高學習演算法效能。

注意,感知器只能處理數值資料,也就是說,需要把字元等資料都轉換為數值格式。現在你已經知道了,感知器控制的是閾值,那麼將其用作分類目的也就不遠了:高於特定閾值的輸出,表示樣本屬於某一類;而低於閾值就歸為另一類。輸出=閾值的直線就是兩個類別的決策邊界。

2.多層感知器

3.啟用函式:

3.1 logistic sigmoid

logistic函式比擬的是生物學神經元被輸入「啟用」的概率,也可以通過統計學上邏輯回歸(logistic regression)的最大似然解推導得出。計算logistic函式的導數利用了商數規則(quotient rule),並且有乙個小技巧,就是在分子上同時+1/-1。

g′logistic(z)其實就是原函式glogistic(z)乘以(1−glogistic(z)),這是乙個簡潔高效的梯度計算形式:無需再求一遍帶有指數的啟用函式。

3.2 hyperbolic tangent

與logistic相似,雙曲正切也是「s型」曲線,但是值域為(-1, 1),這樣絕對值很大的負值輸入,對映到的也是負值輸出,並且只有接近0的輸入對映的才是接近0的輸出,這在一定程度上降低了訓練中的阻滯風險。tanh函式的求導過程也用到了商數法則:

3.3 修正線性單元(relu)

4.反向傳播

尋找這個引數的方法是梯度下降——計算誤差相對所有引數的梯度——∂e/∂θ。

5.梯度下降

5.2 隨機梯度下降(stochastic gradient descent, sgd)

5.3 小批梯度下降(mini-batch gradient descent)

但即便是mini-batch演算法,仍然存在很多問題,比如上面公式中都出現的學習率ηη,這個引數其實很難確定,如果太小則收斂緩慢,但要是太大則很難收斂甚至會發散。在實踐當中往往會設計一套調整學習率的機制,開始設定較大,後來逐漸減小。不過這些調整方法只對一批資料有效,不具有普適性。另一方面,由於特徵具有稀疏性,同乙個學習率不一定適合所有特徵。

除此之外,梯度下降還面臨「區域性最小值」、「鞍點」等阻礙。「鞍點」就是近乎水平(梯度為0)的引數平面,這時優化器可能會被卡住,而找不到繼續優化的方向。為了解決這些問題,研究者提出了更高階的演算法。不同演算法在鞍點的表現如下圖所示,接下來我們將介紹一些改進型的梯度下降優化演算法。

5.4 動量(momentum)

形象的來說,momentum就是讓我們的動點具有了慣性,所以在梯度方向不變的維度上,收斂速度會持續增加;而梯度方向變化的維度上則會抵消。

5.5 nestrov加速梯度

5.6 adagrad

之前的方法裡,對每個θiθi所使用的學習率etaeta是相等的,而adagrad對第tt個時間步的每個引數θiθi,首先進行預更新,然後向量化。為了表達簡單起見,我們將目標函式的梯度寫作:

其中, gt是乙個對角矩陣,對角元素為t時間步中,相對 θ的梯度平方和。ϵ是個平滑項,為了防止分母為零,一般設為1e^−8。新的「學習率」————η/√(g(t,ii)+ϵ)對於梯度越大的引數θi就越小,反之亦然。

當然這個演算法仍然不完美,因為分母始終為正數,隨著迭代的進行,學習率總是衰減的,最終優化速度會越來越慢。

5.7 adadelta

這樣直接就連全域性的學習率這個引數都不需要了。

5.8 adam優化器

mtmt和vtvt分別估計梯度的平均值(一階)和方差(二階),由於初始化方法是設為全0向量,在初始的時間步時很難開啟局面,尤其是衰減係數較低的時候(β1和β2接近1)。

所以實際的公式應用做了如下的修正:

adam演算法的作者設定的預設值為β1=0.9,β2=0.999,ϵ=1e^−8

6.損失函式

交叉熵

kl散度(相對熵)

7.卷積神經網路(convolutional neural network)

7.2 池化層(pooling layer)

7.3 dropout

Qt學習筆記之Hello World

用qt的第乙個程式必然是怎樣輸出hello world 1 在命令列中顯示hello world 首先建立乙個控制台應用程式,其他都是預設設定balabala。新建完成後,在main.cpp中新增顯示輸出 具體 如下 中新增了這兩行 顯示輸出hello world 這裡遇到乙個小問題,如下 1 er...

一 Go學習之HelloWorld!

go 是乙個開源的程式語言,它能讓構造簡單 可靠且高效的軟體變得容易。go是從2007年末由robert griesemer,rob pike,ken thompson主持開發,後來還加入了ian lance taylor,russ cox等人,並最終於2009年11月開源,在2012年早些時候發布...

qt學習筆記(一)之Hello world

學習qt也一段時間了,今天又驚喜得到手了一本書。是時候開始記錄下自己的qt學習之路了,好久沒寫部落格了 學習的點點滴滴還是非常重要的。環境 qt sdk 1.1.3 qt版本是4.7.3 目前我對qt也不是很了解,部分細節之後會陸續介紹。每個程式的開始都是hello world,這裡我們也不例外 啟...