一、Where does the error come from?[error due to bias and variance]

我們將尋找function看作是在打靶,靶的正中心為
f
^
\hat{f}
f^?,每次collect data訓練出來的
f
?
f^{*}
f?為打在靶上面的點
Variance取決于model的復雜程度和data的數量,而bias只取決于model的復雜成度
一個較為簡單的model,都是有比較小的Variance和比較大的bias,相當于
f
?
f^{*}
f?相對集中,但是他們平均起來距離
f
^
\hat{f}
f^?較遠,
一個復雜的model,都有著比較大的Variance和比較小的bias,相當于
f
?
f^{*}
f?相對分布的比較分散,但是他們平均起來距離
f
^
\hat{f}
f^?較近
若實際中error主要來源于variance很大,此時為overfitting
若實際中error主要來源于bias很大,此時為underfitting
Notes:如何判斷bias大和variance大呢?
1、如果model無法fit training data的examples(training data上面的error較大),此時bais較大,為underfitting,
2、如果model可以fit training data,但是在testing data上面得到很大的error,此時variance較大,為overfitting,
二、How to solve?
1、當我們遇到bias比較大時:
如果bias較大,則代表現在的model中根本就沒有包含target,
f
^
\hat{f}
f^?根本就不存在我們的function set中(model不好),所以此時我們就算再collect more data都毫無意義
解決方案:redsign,重新對model進行設計(增加更多的feature作為model的input或者讓model變得更加復雜)
2、當我們遇到Variance較大時:
解決的方案:
1、collect more datas(這是一個非常有效的手段,因為這個不會傷害我們的bias)
但是在很多情況下,我們是無法收集更多的資料,此時可以使用一些手段,generate更多“假“datas
2、Regularization(正則化)

1、藍色區域為剛開始的情況,model較復雜function set的空間較大(包括了target)因為data不多,variance較大,
f
?
f^{*}
f?較分散,
2、紅色的區域為regularization之后,此時function set 的space減小,variance減小,但是在這一縮小的程序中,space也未必能包括target,因此這時候bias還是有可能增大的
通過可視化regularization的程序我們可以發現,我們需要在減小variance的同時,讓它包括target,要做到bias和variance相平衡,
三、Model Selection(public set上的error才能真正反映在private set 上的error)

我們可以將training data分成training set和validation set(驗證集),先在training set上找出每個model最好的function
f
?
f^{*}
f?,然后用validation set上的data去choose model,得到public set上的error時(可能會很大),不建議回過頭去重新調整model的引數,(如果這么做就會把public set的bias也一起考慮進去了)
若少去根據public training set上的error去調整model這個程序的話,在private testing set上得到的error往往是很接近public testing set 的error,
四、conclusion
1、?般來說,error是bias和variance共同作用的結果
2、model比較簡單和比較復雜的情況:
當model比較簡單的時候,variance比較小,bias比較大,此時會比較集中,但是function set可能并沒有包含真實值 ;此時model受bias影響較大當model比較復雜的時候,bias比較小,variance比較大,此時function set會包含真實值 ,但是會比較分散;此時model受variance影響較大
3、區分bias大 or variance大的情況:
如果連采樣的樣本點都沒有大部分在model訓練出來的上,說明這個model太簡單,bias比較大,是欠擬合,如果樣本點基本都在model訓練出來的上,但是testing data上測驗得到的error很大,說明這個model太復雜,variance比較大,是過擬合
4、bias大 or variance大的情況下該如何處理:
當bias比較大時,需要做的是重新設計model,包括考慮添加新的input變數,考慮給model添加高次項;然后對每?個model對應的 計算出error,選擇error值最小的model(隨model變復雜,bias會減小,variance會增加,因此這里分別計算error,取兩者平衡點) 當variance比較大時,?個很好的辦法是增加data(可以憑借經驗自己generate data),當data數量足夠時,得到的實際上是比較集中的;如果現實中沒有辦法collect更多的data,那么就采用regularization正規化的方法,以曲線的平滑度為條件控制function set的范圍,用weight控制平滑度閾值,使得最終的model既包含 f ^ \hat{f} f^? ,variance又不會太大
5、如何選擇model
選擇model的時候呢,我們手頭上的testing data與真實的testing data之間是存在偏差的,因此我 們要將training data分成training set和validation set兩部分,經過validation挑選出來的model再用全部的training data訓練?遍引數,最后?testing data去測驗error,這樣得到的error是模擬 過testing bias的error,與實際情況下的error會?較符合
★ Gradient Desent演算法:
一、概念
在Gradient Desent中:梯度不一定是遞減的,但總沿著梯度下降的方向,LOSS一定在減小,當gradient=0時,LOSS下降到區域最小值,

θ
?
=
arg
?
min
?
θ
L
(
θ
)
\theta^{*}=\arg \min _{\theta} L(\theta)
θ?=argminθ?L(θ) [L: loss function
θ
\theta
θ: paramers] (上表為第幾組,下標為這組引數的第幾個)
Suppose that
θ
\theta
θ has two variables
{
θ
1
,
θ
2
}
\left\{\theta_{1}, \theta_{2}\right\}
{θ1?,θ2?}(假設
θ
\theta
θ是引數的集合)
Randomly start at
θ
0
=
[
θ
1
0
θ
2
0
]
\theta^{0}=\left[\begin{array}{l}\theta_{1}^{0} \\ \theta_{2}^{0}\end{array}\right]
θ0=[θ10?θ20??] (隨機選取一組引數)
gradient: ? L ( θ ) = [ ? L ( θ 1 ) / ? θ 1 ? L ( θ 2 ) / ? θ 2 ] \nabla L(\theta)=\left[\begin{array}{l}\partial L\left(\theta_{1}\right) / \partial \theta_{1} \\ \partial L_{\left(\theta_{2}\right)} / \partial \theta_{2}\end{array}\right] ?L(θ)=[?L(θ1?)/?θ1??L(θ2?)?/?θ2??]
[ θ 1 1 θ 2 1 ] = [ θ 1 0 θ 2 0 ] ? h [ ? L 1 θ 1 0 ) / ? θ 1 ? L 1 θ 2 0 ) / ? θ 2 ] \left[\begin{array}{l}\theta_{1}^{1} \\ \theta_{2}^{1}\end{array}\right]=\left[\begin{array}{l}\theta_{1}^{0} \\ \theta_{2}^{0}\end{array}\right]-h\left[\begin{array}{l} \left.\partial L_{1} \theta_{1}^{0}\right) / \partial \theta_{1} \\ \left.\partial L_{1} \theta_{2}^{0}\right) / \partial \theta_{2}\end{array}\right] [θ11?θ21??]=[θ10?θ20??]?h[?L1?θ10?)/?θ1??L1?θ20?)/?θ2??]
[ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] ? η [ ? L ( θ 1 1 ) / ? θ 1 ? L ( θ 2 1 ) / ? θ 2 ] \left[\begin{array}{c}\theta_{1}^{2} \\ \theta_{2}^{2}\end{array}\right]=\left[\begin{array}{c}\theta_{1}^{1} \\ \theta_{2}^{1}\end{array}\right]-\eta\left[\begin{array}{l}\partial L\left(\theta_{1}^{1}\right) / \partial \theta_{1} \\ \partial L\left(\theta_{2}^{1}\right) / \partial \theta_{2}\end{array}\right] [θ12?θ22??]=[θ11?θ21??]?η[?L(θ11?)/?θ1??L(θ21?)/?θ2??]
二、Learning Rate存在的一些問題

gradient descent程序中,影響結果的一個很關鍵的因素就是learning rate的大小
1、如果learning rate剛剛好,就可以像上圖中紅色線段一樣順利地到達到loss的最小值
2、如果learning rate太小的話,像下圖中的藍色線段,雖然最后能夠走到local minimal的地方,但是它可能會走的非常慢,以至于你無法接受
3、如果learning rate太大,像下圖中的綠色線段,它的步伐太大了,它永遠沒有辦法走到特別低的地方,可能永遠在這個“山谷”的口上振蕩而無法走下去
4、如果learning rate非常大,就會像下圖中的黃色線段,一瞬間就飛出去了,結果會造成update引數以后,loss反而會越來越大,
面對這個問題,我們需要在不同learning rate下,把loss隨著update的次數的變化可視化,根據可視化影像,對learning rate進行調整,找到最合適的learning rate,
三、Adagrad Learning Rates(Adagrad演算法)
基本原則:Learning rate通常隨著引數的update越來越小,


四、Stochastic Gradient Desent(隨機梯度下降演算法)
五、Feature Scaling(特征縮放)

六、Gradient Descent的限制

綜上,gradient descent的限制是,它在gradient即微分值接近于0的地方就會停下來,而這個地方不一定是global minima,它可能是local minima,可能是saddle point鞍點,甚?可能是?個loss很高的plateau平緩高原
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295320.html
標籤:AI
