3 2 1 造成誤差的原因分析

2021-08-19 17:14:20 字數 985 閱讀 8600

比如說識別的機器學習演算法,可能會有一些被錯誤的識別了。我們要想提高準確率,可以先去分析一下到底有哪種被錯誤的的識別了。比如說有100張被錯誤的識別了,我們可以對這100張進行分類,看哪些被錯誤的識別成了貓哪些被錯誤的識別成了狗。或者是哪些,因為比較模糊兒被錯誤的識別。於是,我們就可以針對這些被錯誤識別的,進行個性化的優化來提高準確率。

這是對於提高準確率來說,十分重要的過程。

我們知道深度學習是一種監督學習演算法,這樣就會涉及到人工標註的資料集。如果人來操作,那麼就有可能資料標註錯誤。雖然是小概率事件,但是偶爾也會發生。如果用錯誤的資料集來訓練,是否會產生不良影響呢?

深度學習演算法對於這一點的魯棒性是比較強的。只要資料集夠大,即使有一點的資料標註錯誤也不會有太大影響。只要這些錯誤樣本離隨機錯誤不太遠,那麼放著這些錯誤不管可能也沒問題,而不要花太多時間修復它們。

我這裡先警告一下,深度學習演算法對隨機誤差很健壯,但對系統性的錯誤就沒那麼健壯了。所以比如說,如果做標記的人一直把白色的狗標記成貓,那就成問題了。因為你的分類器學習之後,會把所有白色的狗都分類為貓。但隨機錯誤或近似隨機錯誤,對於大多數深度學習演算法來說不成問題。

如果你還記得設立開發集的目標的話,開發集的主要目的是,你希望用它來從兩個分類器a和b中選擇乙個。所以當你測試兩個分類器a和b時,在開發集上乙個有2.1%錯誤率,另乙個有1.9%錯誤率,但是你不能再信任開發集了,因為它無法告訴你這個分類器是否比這個好,因為0.6%的錯誤率是標記出錯導致的。

現在如果你決定要去修正開發集資料,手動重新檢查標籤,並嘗試修正一些標籤,這裡還有一些額外的方針和原則需要考慮。首先,我鼓勵你不管用什麼修正手段,都要同時作用到開發集和測試集上,我們之前討論過為什麼,開發和測試集必須來自相同的分布。開發集確定了你的目標,當你擊中目標後,你希望演算法能夠推廣到測試集上,這樣你的團隊能夠更高效的在來自同一分布的開發集和測試集上迭代。

吳教主深度學習和神經網路課程總綱

suspend造成死鎖的例子和原因分析

今天loris分享了乙個關於使用suspend造成死鎖的例子,部分 如下 win32下的api基本都是執行緒安全的,因此api裡面有很多執行緒同步的地方,loadlibrary裡面有乙個臨界區,執行緒函式在執行到loadlibrary裡面之後,如果剛好走到loadlibrary的臨界區裡面,此時主線...

容易造成core的原因

類別 子類別描述 變數異常 陣列越界 字串異常結束 區域性變數過大 全域性變數執行緒不安全 陣列越界 使用陣列必須檢查下標越界 字串異常結束 使用char sss 100 類似的字串時,判斷 0 結束標誌,而不是判斷長度 區域性變數過大 分配很大空間的區域性變數導致棧溢位 全域性變數執行緒不安全 多...

造成高CPU消耗的原因

1.索引的缺失 根據執行計畫以及追蹤,確定缺少的索引,新增索引 2.統計資訊過時 統計資訊過時,執行計畫就會不是最優的,可能產生大量的表掃瞄,需要更新統計資訊 update statistics table or indexed view name 3.where子句中使用函式 where 子句中使...