目錄卷積神經網絡參數解析 神經網絡中學習步長與學習速率一樣嗎 xgboost參數調優 神經網絡BP算法中,如何選擇網絡學習效率及閾值調整效率 Deep Learning 概念概覽
樓上說的很好,我補充一下 也可以扒碼結合優化算法 遺傳橡握算法 蟻群算法 優化出來初始值和隨機數以及春如哪 學習速率 可以加快收斂速度
學習要講究效率,提高效轎簡率,途徑大致有以下幾點:一、每天保證 8 小時睡眠。晚上不要熬夜,定時就寢。中午堅持午睡。充足的睡眠、飽滿的精神是提高效率的基本要求。二、學習時要全閉彎褲神貫注。玩的時候痛快玩,學的時候認真學。一天到晚伏案苦讀,不是良策。學習到一定程度就得休息、補充能量。學習之余,一定要注意休息。但學習時,一定要全身心地投入,手腦并用。 三、堅持體育鍛煉。身體是 " 學習 " 的本錢。沒有一個好的身體,再大的能耐也無法發揮。因而,再繁忙的學習,也不可忽視放松鍛煉。有的同學為了學習而忽視鍛煉,身體越來越弱,學習越來越感到力不從心。這樣怎么能提高學習效率呢?四、學習要主動。只有積極主動地學習,才能感受到其中的樂趣,才能對學習越發有興趣。有了興趣,效率就會在不知不覺中得到提高。有的同學基礎不好,學習過程中老是有不懂的問題,又羞于向人請教,結果是郁郁寡歡,心不在焉,從何談起提高學習效率。這時,唯一的方法是,向人請教,不懂的地方一定要弄懂,一點一滴地積累,才能進步。如此,才能逐步地提高效率。五、保持愉快的心情,和同學融洽相處鬧歷。 每天有個好心情,做事干凈利落,學習積極投入,效率自然高。另一方面,把個人和集體結合起來,和同學保持互助關系,團結進取,也能提高學習效率。六、注意整理。學習過程中,把各科課本、作業和資料有規律地放在一起。待用時,一看便知在哪。而有的學生查閱某本書時,東找西翻,不見蹤影。時間就在忙碌而焦急的尋找中逝去。我認為,沒有條理的學生不會學得很好。
一. 確定最佳決策樹數量
選擇較高的學習速率(learning rate)。一般情況下,學習速率的值為0.1。但是,對于不同的問題,理想的學習速率有時候會在0.05到0.3之間波動。選擇對應于此學習速率的理想決策樹數量。XGBoost有一個很枝此有用的函數“cv”,這個函數可以在每一次迭代中使用交叉驗證,并返回理想的決策樹數量。
先給定boosting主要參數一個初始值,后續再進行調優。
1、max_depth = 5 :這個參數的取值最好在3-10之間。我選的起始值為5,但是你也可以選擇其它的值。起始值在4-6之間都是不錯的選擇。
2、min_child_weight = 1:在這里選了一個比較小的值猛櫻迅,因為這是一個極不平衡的分類問題。因此,某些葉子節點下的值會比較小。
3、gamma = 0: 起始值也可以選其它比較小的值,在0.1到0.2之間就可以。這個參數后繼也是要調整的。
4、subsample,colsample_bytree = 0.8: 這個是最常見的初始值了。典型值的范圍在0.5-0.9之間。
5、scale_pos_weight = 1: 這個值是因為類別十分不平衡。
二. 主要參數調優
對于給定的學習速率和決策樹數量,進行決策樹特定參數調優(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。
這里通常使用GridSearch。可先尋找max_depth、min_child_weight,確定后,再對gamma、subsample等調優頌指。
三. xgboost的正則化參數的調優。(lambda, alpha)。這些參數可以降低模型的復雜度,從而提高模型的表現。
四. 降低學習速率,確定理想參數。
xgboost 中,objective 是模型學習任務參數(learning task parameters)中的目標參數,它指定訓練任務的目標。
objective參數默認值為reg:squarederror 。
https://zhuanlan.zhihu.com/p/29649128
[更新中...]
---------------------------------Reference---------------------------------
參考:
https://zhuanlan.zhihu.com/p/27186569
https://dvl.in.tum.de/teaching/i2dl-ss19/
---------------------------------目錄---------------------------------
(1) Neuron/神經元
(2) Machine Learning
(3) Basic classifier
(4) Cross Validation 6/2/2
(5) Linear Decision Boundaries
(6) Linear Regression
(7) Weights/權重
(8) Bias/偏移
(9) Affine function
(10) Activation Function
(10.a) Sigmoid函數
(10.b) 線性整流函數(ReLU-Rectified Linear Units)
(10.c) softmax函數
(11) Loss function
(11.a) [Regression] MSE
(11.b) [Regression] MAE
(11.c) Cross-entropy loss
(11.d) [Classification] MLE (Maximum Likelihood Estimation)
(12) 成本函數(cost function)
(13) Concept:Gradient VS Derivative
(13.a)Gradient: 導數
(13.b)Derivative/Nabla Operator(?): 偏導
(14) Optimization
(15) NN神經網絡
(16) Input/Output/Hidden Layer 輸入層/輸出層/隱藏層
(17) 多層感知器(MLP-Multi Layer Perceptron)
(18) 正向傳播(forward propagation)
(19) 學習速率(learning rate)
(20) 反向傳播(back propagation)
(21) 分批(Batches)
(22) 周期(epochs)
(23) Dropout方法
(24) 分批標準化(Batch Normalization)
(25) Regularization
(26) Precision and Recall
(27) Parametric Statistic
---------------------------------Basics---------------------------------
正如我們大腦中的基本組成單元,神經元是組成神經網絡的基礎結構。設想一下當接敏禪差觸到新的信息時,我們的身體會對其進行處理,最后產生一些橋皮特定的反應。
相似地,在神經網絡中,在襲含收到輸入的信號之后,神經元通過處理,然后把結果輸出給其它的神經元或者直接作為最終的輸出。
A way to make use of data:train/valid/test
決策邊界就是能夠把樣本正確分類的一條邊界,主要有線性決策邊界(linear decision boundaries)和非線性決策邊界(non-linear decision boundaries)。
Questionwhat’s the relationship between LDB and SVM?
AnswerSVM is an algorithm/method to find the best LDB (that’s why SVM is also called Large Margin Classifier)
支持向量機(Support Vector Machine, SVM)是一類按 監督學習 (supervised learning)方式對數據進行 二元分類 的廣義線性分類器(generalized linear classifier),其[決策邊界]( https://baike.baidu.com/item/%E5%86%B3%E7%AD%96%E8%BE%B9%E7
Suppose there are N observations and M features in training data set. A sample from training data set is taken randomly with replacement.%95%8C/22778546)是對學習樣本求解的最大邊距超平面(maximum-margin hyperplane) [1-3]。
SVM是一種優化的分類算法,其動機是尋找一個最佳的決策邊界,使得從決策邊界與各組數據之間存在 margin ,并且需要使各側的margin最大化。比較容易理解的是,從決策邊界到各個training example的距離越大,在分類操作的差錯率就會越小。因此,SVM也叫作Large Margin Classifier。
最簡單的情況是,在二維平面中的,線性可分情況,即我們的training set可以用一條直線來分割稱為兩個子集,如下圖所示。而在圖中我們可以看到,H2和H3都可以正確的將training set進行分類,但細細想來,使用H2進行分類的話,我們對于靠近藍線的幾個訓練樣例其實是不敢說100%的,但對于離藍線最遠的小球,我們卻很有把握。這也是H3這條SVM紅線出現的原因:盡量讓兩側的訓練樣例遠離決策邊界,從而讓我們的分類有把握對每個球Say Absolutely。
---------------------------------以下開始講 Linear Regression---------------------------------
當輸入信號進入到神經元后,會被乘以相應的權重因子。舉例來說,假設一個神經元有兩個輸入信號,那么每個輸入將會存在著一個與之相應的權重因子。在初始化網絡的時候,這些權重會被隨機設置,然后在訓練模型的過程中再不斷地發生更改。
在經過訓練后的神經網絡中,一個輸入具有的權重因子越高,往往意味著它的重要性更高,對輸出的影響越大。另一方面,當權重因子為0時意味著這個輸入是無價值的。
如下圖所示,假設輸入為a,相應的權重為W1。那么通過賦權節點后相應的輸入應變為a*W1。
除了權重之外,輸入還需要經過另外一種線性處理,叫做偏置。通過把偏置b與加權后的輸入信號a*W1直接相加,以此作為激活函數的輸入信號。
~ is a function between different affine space/仿射空間 .
Goal : after the transformation the data still has it's original characters!
Content : is a functioncomposed of a linear function+ a constant.
Graph : a straight line.
General equation : y = Ax + c.
對數據使用affine function后都滿足以下條件:
下文的u=∑w*x+b就是affine function
~ of a nodedefines the output of that node, given an/more input.
之前線性處理之后的輸入信號通過激活函數進行非線性變換,從而得到輸出信號。即最后輸出的信號具有f(a*W1+b)的形式,其中f()為激活函數。
在下面的示意圖中, 設X1…Xn等n個輸入分別對應著權重因子Wk1…Wkn以及相應的偏置b1…bn。我們把輸入Xi乘以對應的權重因子Wki再加上bi的結果稱為u。
u=∑w*x+b 這個激活函數f是作用在u上的,也就是說這個神經元最終的輸出結果為yk = f(u)
接下來我們講一講常用的一些激活函數:Sigmoid函數, 線性整流函數(ReLU) 和 softmax函數
作為最常用的激活函數之一,它的定義如下:
sigmoid函數為值域在0到1之間的光滑函數,當需要觀察輸入信號數值上微小的變化時,與階梯函數相比,平滑函數(比如Sigmoid函數)的表現更好。
近來的神經網絡傾向于使用ReLU替代掉sigmoid函數作為隱層的激活函數,它的定義如下:f(x) = max(x,0).
The rectified linear activation function is a piecewise linear function that will output the input directly if is positive, otherwise, it will output zero.
使用ReLU函數的好處是,對于所有大于0的輸入,導數是恒定的,這能夠加快訓練網絡的速度。
softmax激活函數通常應用在分類問題的輸出層上。
It′s a Multinomial Logistic Regression
它與Sigmoid函數相似,唯一的不同是softmax函數輸出結果是 歸一化 的。sigmoid函數能夠在雙輸出的時候奏效,但當面對多種類分類問題的時候,softmax函數可以方便地直接將各個分類出現的概率算出。
sigmoid()僅僅是二元,softmax可以多元
例子:
輸入向量[1,2,3,4,1,2,3]對應的Softmax函數的值為[0.024,0.064,0.175,0.475,0.024,0.064,0.175]。輸出向量中擁有最大權重的項對應著輸入向量中的最大值“4”。這也顯示了這個函數通常的意義:對向量進行歸一化,凸顯其中最大的值并抑制遠低于最大值的其他分量。
Normalization!
We use the following Loss Function to evaluate the loss , measures how good my model is.
or L2 loss, or mean squared deviation (MSD), or Linear Least Square.
Attention: From Normal-Expression to Matrix-notation it emit the (1/n), we are just looking for the minimal value so it doesn't matter!
or L1 loss
or log loss, measures the performance of a classification model whose output is a probability value between 0 and 1.
You can see from the graph, that cross-entropy penalizes both types of errors, but especially those predictions that are confident and wrong!(when predicted probability drops around 0.15)
是用來估計一個概率模型的 參數的一種方法。
Reference: https://www.youtube.com/watch?v=XepXtl9YKwc
--> The goal is to find the optimal way to fit the distributionof data.
For example, if it's normal distribution, then the parametersmean ,deviationcan be modify in order to fit the data better!
猜測分布函數的參數,以盡量多的涵蓋observation中的數據點(舉例:如果滿足normal distribution,那么這里的參數就指mean和standard deviation)。
為了找到使p最好的參數Theta.
例子:
Step 1: Maximum Likelihood for the Mean
The name of "likelihood" basically means, how like you are going to find data-points according to theestimated distribution>> And it stops when it finally find the highest likelihood >> where we should put our meanon it:
Cost function即loss的綜合,loss由loss function求的
在神經網絡的建造過程中,建造者們希望輸出的結果能夠盡可能地接近實際值,因此使用成本函數來描述網絡的這種準確性。
神經網絡的目標是增加預測的準確性從而減少誤差,即最小化成本函數。通常情況下,最優化的輸出結果往往對應著成本函數的最小值。
如果采用均方誤差作為成本誤差,即表示為C= 1/m ∑(y – a)2,其中m是訓練過程中輸入數據的個數,a是相應的預測值,y代表實際值。
模型學習的過程就是圍繞著最小化成本而進行的。
https://stats.stackexchange.com/questions/179026/objective-function-cost-function-loss-function-are-they-the-same-thing
Useful concepts: Component& Variable
Suppose there are N observations and M features in training data set. A sample from training data set is taken randomly with replacement.
Component:該matrix有幾行
Variable:x1,x2,,,共有幾個變量
舉例:
** 梯度下降(gradient descent)**
梯度下降是一種最小化成本函數的優化算法。
在梯度下降中,從起始點x開始,一次移動一點,比如說移動delta h,然后將位置信息更換為x-delta h,如此重復下去,直到達到局部的極小值,此時認為極小值就是成本最小的地方。
In order to find the minimal value of the Loss function , we need to use derivative .
Here are the common formulas:
Now through the review from loss function , I want to improve the Model, this process we call it Optimization
And the gradientis our tool to optimze the model
---------------------------------以下開始講 Neural Network---------------------------------
神經網絡是構成深度學習的框架。神經網絡的任務是找到一個未知函數的近似表達方式,它是由彼此相連的神經元所組成,這些神經元會在訓練網絡的過程中根據誤差來更改它們的權重和偏置。激活函數將非線性變化用線性變化的組合來表示,最終產生輸出。
關于神經網絡最好的定義是由Matthew Mayo給出的:
神經網絡是由大量彼此相連、概念化的人造神經元組成的,這些神經元彼此之間傳遞著數據,相應的權重也會隨著神經網絡的經歷而進行調整。神經元們有著激活的閾值,當它們遇到相應的數據以及權重時會被激活,這些被激活的神經元組合起來導致了“學習”行為的產生。
從名字中就能看出,輸入層代表接受輸入數據的一層,基本上是網絡的第一層;輸出層是產生輸出的一層,或者是網絡的最后一層,而網絡中間的處理層叫做隱藏層。
這些隱藏層對輸入的數據進行特定的處理,再將其輸入到下一層。輸入層和輸出層是可見的,而中間層通常是被隱藏起來的。
一個單一的神經元不能夠完成復雜的任務,因此需要將它們堆疊起來工作進而產生有用的輸出。
最簡單的神經網絡包括一個輸入層、一個隱藏層和一個輸出層。每一層都由多個神經元組成,每一層的每個神經元都與下一層中的所有神經元相連。這樣的網絡可以被稱為是全連接網絡。
正向傳播是指信號從輸入層經過隱藏層到輸出層的傳輸過程。在正向傳播中,信號是沿著單一方向進行傳播,即輸入層給隱藏層提供輸入,進而最終產生相應的輸出。
學習速率定義為在每次迭代過程中對 成本函數最小化 的次數 。簡單來說,學習速率就是指朝著成本函數最小值的 下降速率 。選擇學習速率需要很謹慎,過大會導致可能越過最優解,過小會導致收斂花費太多的時間。
在定義一個神經網絡的過程中, 每個節點會被隨機地分配權重和偏置。一次迭代后,我們可以根據產生的結果計算出整個網絡的偏差,然后用偏差結合成本函數的梯度,對權重因子進行相應的調整,使得下次迭代的過程中偏差變小。這樣一個結合成本函數的梯度來調整權重因子的過程就叫做反向傳播。
在反向傳播中,信號的傳遞方向是朝后的,誤差連同成本函數的梯度從輸出層沿著隱藏層傳播,同時伴隨著對權重因子的調整。
比如一共有10000條數據,分成10個batch,每個batch就是100條數據。
當在訓練一個神經網絡的時候,相對于一次性將所有的數據全輸入進去,有一個更好的方法:先將數據隨機地分為幾個大小一致的數據塊,再分批次輸入。跟一次性訓練出來的模型相比,分批訓練能夠使模型的適用性更好。
比如一共有10000條數據,分成10個batch,每個batch就是100條數據。正向,反向跑完所有10000條數據,即一個epoch。
一個周期表示對所有的數據批次都進行了一次迭代,包括一次正向傳播和一次反向傳播,所以一個周期/紀元就意味著對所有的輸入數據分別進行一次正向傳播和反向傳播。
訓練網絡周期的次數是可以選擇的,往往周期數越高,模型的準確性就越高,但是,耗時往往就越長。同樣你還需要考慮如果周期/紀元的次數過高,那么可能會出現過擬合的情況。
Dropout是一個可以阻止網絡過擬合(overfitting)的規則化方法(regularization)。就像它的名字那樣,在訓練過程中隱藏的某些特定神經元會被忽略掉(drop)。這意味著網絡的訓練是在幾個不同的結構上完成的。
這種dropout的方式就像是一場合奏,多個不同結構網絡的輸出組合產生最終的輸出結果。
分批標準化就像是人們在河流中用以監測水位的監察站一樣。這是為了保證下一層網絡得到的數據擁有合適的分布。在訓練神經網絡的過程中,每一次梯度下降后權重因子都會得到改變,從而會改變相應的數據結構。
但是下一層網絡希望能夠得到與之前分布相似的數據,因此在每一次數據傳遞前都需要對數據進行一次正則化處理。
Goal: Penalize the complexity of the model, avoid explicitly fitting the training-data.
Different regularization methods:
They are different ways to define the "complexity" of a model
參數統計 是 統計學 的一個分支,它假設樣本數據來自總體,而總體可以通過具有固定參數集的 概率分布 進行充分建模。 [1]相反, 非參數模型 的確切區別在于其參數集(或 機器學習 中的 特征集)不是固定的,如果收集到新的相關信息,則該參數集可能會增加甚至減少。 [2]
Example:
正態分布族 都具有相同的一般形態,并可以通過均值和標準差進行 參數化。這意味著,如果均值和標準差已知,并且分布是正態的,則任何將來觀察到的給定范圍內的概率都是已知的。
假設有一個存在99個測試分數的樣本,平均值為100,標準差為1。如果假設所有99個測試分數都是從正態分布中隨機觀察到的,那么我們預測第100個測試分數有1%的概率將高于102.33(即平均值加2.33標準偏差)。給定99個來自相同正態分布的 獨立 觀測值,可使用參數統計方法計算上述標準偏差值。
對同一事物的 非參數 估計是前99個分數中的最大值。不需要假設考試分數的分布情況就可以推斷出,在我們進行考試之前,最高分數會出現在前100個分數中。因此,第100個分數有1%的可能性高于之前的99個分數。
學習速率是一個超參數,它控制了我們在多大程度上調整了我們的網絡的權重,并對損失梯度進行了調整。值越低,沿著向下的斜率就越慢。雖然這可喚豎能是個好的辦法(使用低學習率),以確冊饑保我和姿大們不會錯過任何局部極小值,但這也可能意味著我們要花很長時間才會收斂——尤其是如果我們陷入了停滯不前的區域。