你得知道人類水平的表現是怎樣的,可以確切告訴你演算法在訓練集上的表現到底應該有多好,或者有多不好。
我們經常使用貓分類器來做例子,比如人類具有近乎完美的準確度,所以人類水平的錯誤是 1%。在這種情況下,如果您的學習演算法達到 8%的訓練錯誤率和 10%的開發錯誤率,那麼你也許想在訓練集上得到更好的結果。所以事實上,你的演算法在訓練集上的表現和人類水平的表現有很大差距的話,說明你的演算法對訓練集的擬合併不好。所以從減少偏差和方差的工具這個角度看,在這種情況下,我會把重點放在減少偏差上。你需要做的是,比如說訓練更大的神經網路,或者跑久一點梯度下降,就試試能不能在訓練集上做得更好。
假設人類水平錯誤實際上是 7.5%,也許你的資料集中的影象非常模糊,即使人類都無法判斷這張**中有沒有貓。這個例子可能稍微更複雜一些,因為人類其實很擅長看**,分辨出**裡有沒有貓。但就為了舉這個例子,比如說你的資料集中的影象非常模糊,解析度很低,即使人類錯誤率也達到 7.5%。在這種情況下,即使你的訓練錯誤率和開發錯誤率和其他例子裡一樣,你就知道,也許你的系統在訓練集上的表現還好,它只是比人類的表現差一點點。在第二個例子中,你可能希望專注減少這個分量,減少學習演算法的方差,也許你可以試試正則化,讓你的開發錯誤率更接近你的訓練錯誤率。
所以在之前的課程關於偏差和方差的討論中,我們主要假設有一些任務的貝葉斯錯誤率幾乎為 0。所以要解釋這裡發生的事情,看看這個貓分類器,用人類水平的錯誤率估計或代替貝葉斯錯誤率或貝葉斯最優錯誤率,對於計算機視覺任務而言,這樣替代相當合理,因為人類實際上是非常擅長計算機視覺任務的,所以人類能做到的水平和貝葉斯錯誤率相差不遠。根據定義,人類水平錯誤率比貝葉斯錯誤率高一點,因為貝葉斯錯誤率是理論上限,但人類水平錯誤率離貝葉斯錯誤率不會太遠。所以這裡比較意外的是取決於人類水平錯誤率有多少,或者這真的就很接近貝葉斯錯誤率,所以我們假設它就是,但取決於我們認為什麼樣的水平是可以實現的。
所以在之前的課程關於偏差和方差的討論中,我們主要假設有一些任務的貝葉斯錯誤率幾乎為 0。所以要解釋這裡發生的事情,看看這個貓分類器,用人類水平的錯誤率估計或代替貝葉斯錯誤率或貝葉斯最優錯誤率,對於計算機視覺任務而言,這樣替代相當合理,因為人類實際上是非常擅長計算機視覺任務的,所以人類能做到的水平和貝葉斯錯誤率相差不遠。根據定義,人類水平錯誤率比貝葉斯錯誤率高一點,因為貝葉斯錯誤率是理論上限,但人類水平錯誤率離貝葉斯錯誤率不會太遠。所以這裡比較意外的是取決於人類水平錯誤率有多少,或者這真的就很接近貝葉斯錯誤率,所以我們假設它就是,但取決於我們認為什麼樣的水平是可以實現的。
在這兩種情況下,具有同樣的訓練錯誤率和開發錯誤率,我們決定專注於減少偏差的策略或者減少方差的策略。那麼左邊的例子發生了什麼? 8%的訓練錯誤率真的很高,你認為你可以把它降到 1%, 那麼減少偏差的手段可能有效。而在右邊的例子中,如果你認為貝葉斯錯誤率是 7.5%,這裡我們使用人類水平錯誤率來替代貝葉斯錯誤率,但是你認為貝葉斯錯誤率接近 7.5%,你就知道沒有太多改善的空間了,不能繼續減少你的訓練錯誤率了,你也不會希望它比 7.5%好得多,因為這種目標只能通過可能需要提供更進一步的訓練。而這邊,就還(訓練誤差和開發誤差之間)有更多的改進空間,可以將這個 2%的差距縮小一點,使用減少方差的手段應該可行,比如正則化,或者收集更多的訓練資料。
所以要給這些概念命名一下,這不是廣泛使用的術語,就是把這個差值,貝葉斯錯誤率或者對貝葉斯錯誤率的估計和訓練錯誤率之間的差值稱為可避免偏差,你可能希望一直提高訓練集表現,直到你接近貝葉斯錯誤率,但實際上你也不希望做到比貝葉斯錯誤率更好,這理論上是不可能超過貝葉斯錯誤率的,除非過擬合。而這個訓練錯誤率和開發錯誤率之前的差值,就大概說明你的演算法在方差問題上還有多少改善空間。
可避免偏差這個詞說明了有一些別的偏差,或者錯誤率有個無法超越的最低水平,那就是說如果貝葉斯錯誤率是 7.5%。你實際上並不想得到低於該級別的錯誤率,所以你不會說你的訓練錯誤率是 8%,然後 8%就衡量了例子中的偏差大小。你應該說,可避免偏差可能在0.5%左右,或者 0.5%是可避免偏差的指標。而這個 2%是方差的指標,所以要減少這個 2%比減少這個 0.5%空間要大得多。而在左邊的例子中,這 7%衡量了可避免偏差大小,而 2%衡量了方差大小。所以在左邊這個例子裡,專注減少可避免偏差可能潛力更大。
正交化 人類表現 可避免偏差 方差
在優化演算法的迭代過程中,可能會存在很多個可以改善的方面。假設你同時修改多個進行優化,那麼不能直接從結果中看出。你要做的類似於控制變數法,一次修改乙個看看是否有用。在演算法的不斷改善的迭代過程中,存在這樣的情況 如果你的準確率劣於人類表現,那麼改善速度會很快。但是當超過人類表現後會變慢。誤差因為實際...
goto語句可釋放資源避免記憶體洩漏
程式異常判斷時,有問題,往往會使用return 雖然後面的程式執行過程被跳過了,但是後面的資源釋放的語句也被跳過了。在資源釋放的語句之前加個名稱 比如mylocation goto mylocation 語句直接跳過後面的語句,直接跳轉到mylocation位置,執行資源釋放的語句。執行效果類似於r...
InnoDB可重複讀隔離級別下如何避免幻讀
主要通過以下兩種情況避免幻讀 內在 next key鎖 行鎖 gap鎖 上了鎖,你別的操作不會修改我鎖定的區間了,我就不會幻讀 首先我們理解下面兩個概念,當前讀和快照讀 對主鍵索引或者唯一索引會用gap鎖麼?gap區間 開啟mysql官網,我們看看它對gap區間的描述,分段進行區間劃分 實戰驗證 建...