1. 程式人生 > >sp3.1 Structuring Machine Learning Projects

sp3.1 Structuring Machine Learning Projects

分析與改進專案瓶頸:很多時候可能不知道下一步怎麼改善系統,錯誤的方法浪費大量時間 有這麼多策略 怎麼試   思維清晰知道要調整哪個引數 這些引數就像按鈕一樣啊 正交法:讓各種功能按鈕能夠分開 比如開車時候速度和方向 一個按鈕結合了其他按鈕的功能,很難調好。正交就是使得每個按鈕調整一個功能 一個維度調一個功能,但是要是幾個功能混到一起一個按按鈕來調節就很難     調整按鈕 確保4點: 1 至少訓練集上表現好,如果不好用更大網路或者優化演算法 2 驗證集表現好 ,正則化 更大訓練集 3測試集表現好 回頭用更大的驗證集 驗證集可能有問題 4實際運用 可能資料有問題 或者 代價函式不對
    單一數字評價指標:查準率查全率 F1score 查準率就是 TP 佔 整個正樣本個數(TP+FN) 查全率就是 TP 佔 整個判斷對的(TP+TN)     也要簡單直接算算平均值有時候   滿足和優化指標: 比如還有執行時間可以考慮 可以再規定一個滿足指標 時間內就行 如果有很多指標 選一個做優化指標 其餘的做滿足指標(重要度小)     這幾個集的指導原則: 訓練集:用來學習的樣本集,用於分類器引數的擬合。   驗證集:development set 用來調整分類器超引數的樣本集,如在神經網路中選擇隱藏層神經元的數量。開發集也叫交叉驗證集hold out cross validating set:是在使用訓練集訓練出模型後,對訓練出的模型的單獨的引數進行調整的資料集合。用開發集來單獨分別除錯超引數引數   測試集:僅用於對已經訓練好的分類器進行效能評估的樣本集。整體的引數   設立開發集 dev sets 測試集 要同一分佈,相當於也設個優化指標 假設現在分類貓 這些貓的圖片來自這麼多地區 按順序分不好 分佈不同 這樣訓練出來好比在實用的時候 把靶心換了個位置
      選擇能反應未來的集合 而不是最終靶子又換了     這些集合設定多大呢:       When to change dev/test sets and metrics 什麼時候需要更改評價指標 要是瞄準錯了目標位置,怎麼找新的位置 比如兩個演算法一個錯誤率5% 一個3% 但是3%會推送色情圖片 明顯公司會選5%的演算法 評估指標無法更好的判斷了 此時可能要找新的評估指標或者開發集測試集 誤差指標:修改原本的代價函式你畫,比如加個更大權重對色情圖片
  如果在測試時候表現很好,但是使用者用的時候表現不好 也要更改評價指標     Why human-level performance?比較機器學習和人的表現 以人為標杆 很多時候機器學習到達人類準確度速度很快 但是過後就會進展很慢 (貝葉斯最優誤差) 貝葉斯最優誤差 理論上最佳的X -》Y的對映 準確率不可能100% 可能人類在識別影象語音自然資料方面已經很優秀了距離貝葉斯最優的 當機器學習超過人類後 改善空間就小了 當機器學習沒超過人時可以考慮下面的方法   可避免偏差:對於第一個例子對比人類的誤差很小可以發現方法有問題 bias太大 需要改進 但對於第二個例子來說,人和訓練出來的差不多,說明是樣本本身問題,這時候bias偏差幾乎降低不了了(考慮到人已經接近貝葉斯最優誤差了),可以嘗試再降低點方差 把人和機器學習之間的差 成為可避免偏差(還有改善空間) 那個差值大優先優化哪個       human-level performance 把人的表現作為貝葉斯誤差的替代或估計值 比如醫生這個例子:哪個作為人類水平表現 以人類表現最佳的那個 就是一隊有經驗的醫生的綜合判斷 當然也可以以第二個 基本上就可以用了 如果按照貝葉斯的話 還是最佳的那個 ·       超過人類最佳表現:一般超過人類最佳表現 可能再優化的方向或工具就要自己摸索了現在超越人類的主要以下四個方面(結構化資料)大多不是自然感知方面 但現在也有超過了     整體指導方針: