<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 如何評估深度學習模型的性能 > 原文: [https://machinelearningmastery.com/evaluate-skill-deep-learning-models/](https://machinelearningmastery.com/evaluate-skill-deep-learning-models/) 我經常看到從業者對如何評估深度學習模型表示困惑。 從以下問題中可以看出這一點: * 我應該使用什么隨機種子? * 我需要隨機種子嗎? * 為什么我在后續運行中得不到相同的結果? 在這篇文章中,您將發現可用于評估深度學習模型的過程以及使用它的基本原理。 您還將發現有用的相關統計數據,您可以計算這些統計數據以顯示模型性能的技巧,例如標準偏差,標準誤差和置信區間。 讓我們開始吧! ![How to Evaluate the Skill of Deep Learning Models](https://img.kancloud.cn/3b/cd/3bcddf1ae672376afaa818a26657638a_640x427.png) 照片由 [Allagash Brewing](https://www.flickr.com/photos/allagashbrewing/14612890354/)提供,并保留所屬權利。 ## 初學者易犯的錯誤 您將在訓練數據集上擬合您的模型并且在測試數據集上評估您的模型,然后做出模型特性的報告。 也許您會使用 k 折交叉驗證來評估模型,報告關于改進模型性能的技巧。 這是初學者常犯的錯誤。 看起來你做的是正確的事情,但有一個關鍵問題是你沒有考慮到: **深度學習模型是隨機的。** 人工神經網絡在擬合數據集時是隨機性的,例如在每個迭代期間隨機清洗數據,每個隨機梯度下降期間隨機初始化權重。 這意味著每次相同的模型擬合相同的數據時,它可能會給出不同的預測,從而具有不同的性能。 ## 評估模型的技巧 (_模型方差控制_) 我們可能沒有所有的數據,如果有,我們就不需要做出預測。 通常情況下,我們有一個有限的數據樣本,我們需要利用這些數據擬合出最好的模型。 ### 使用訓練測試拆分 我們通過將數據分成兩部分來做到這一點,在數據的第一部分擬合模型或特定模型配置,并使用擬合后的模型對其余部分做出預測,然后評估這些預測的性能,這中技巧被稱為訓練測試分割,我們使用該技能評估模型對新數據進行預測時在實踐中的性能。 例如,這里有一些用于使用訓練測試分割來評估模型的偽代碼: ```py train, test = split(data) model = fit(train.X, train.y) predictions = model.predict(test.X) skill = compare(test.y, predictions) ``` 如果您有大量數據或需要對非常慢的模型進行訓練,訓練測試分割是一種很好的方法,但由于數據的隨機性(模型的方差),模型的最終性能分數會很混亂。 這意味著擬合不同數據的相同模型將給出不同的模型性能分數。 ### 使用 k-fold 交叉驗證 我們通常可以使用 k-fold 交叉驗證等技術來加強這一點,并更準確地估計模型行性能,這是一種系統地將可用數據分成 k 重折疊,在k-1折上訓練數據以擬合模型,在保持折疊上進行評估模型,并對每個折疊重復此過程的技術。 這導致 k 個不同的模型具有 k 個不同的預測集合,并且反過來具有 k 個不同的性能分數。 例如,這里有一些使用 k 折交叉驗證評估模型的偽代碼: ```py scores = list() for i in k: train, test = split_old(data, i) model = fit(train.X, train.y) predictions = model.predict(test.X) skill = compare(test.y, predictions) scores.append(skill) ``` 技能分數更有用,因為我們可以采用均值并報告模型的平均預期表現,這可能更接近實際模型的實際表現。例如: ```py mean_skill = sum(scores) / count(scores) ``` 我們還可以使用 mean_skill 計算標準偏差,以了解 mean_skill 周圍的平均分數差異: ```py standard_deviation = sqrt(1/count(scores) * sum( (score - mean_skill)^2 )) ``` ## 評估隨機模型的性能 (_控制模型穩定性_) 一些隨機模型,如深度神經網絡,增加了一個額外的隨機源。 這種額外的隨機性使得模型在學習時具有更大的靈活性,但也可能會使模型更不穩定(例如,當在相同數據上訓練相同模型時會有不同的結果)。 這與模型方的差不同,模型的方差通常是當在不同數據上訓練相同模型時,模型方差給出不同的結果。 為了得到隨機模型性能的可靠估計,我們必須考慮這個額外的方差來源并且我們必須控制它。 ### 固定隨機種子 一種方法是每次模型擬合時使用相同的隨機數,我們可以通過固定系統使用的隨機數種子然后評估或擬合模型來做到這一點。例如: ```py seed(1) scores = list() for i in k: train, test = split_old(data, i) model = fit(train.X, train.y) predictions = model.predict(test.X) skill = compare(test.y, predictions) scores.append(skill) ``` 這在每次運行代碼或都需要相同的結果時,非常適合教程和演示。 這中做法是不穩定的,不建議用于評估模型。 如下文章所示: * [在機器學習中擁抱隨機性](http://machinelearningmastery.com/randomness-in-machine-learning/) * [如何使用 Keras](http://machinelearningmastery.com/reproducible-results-neural-networks-keras/) 獲得可重現的結果 ### 重復評估實驗 更強大的方法是重復多次評估非隨機模型的實驗。 例如: ```py scores = list() for i in repeats: run_scores = list() for j in k: train, test = split_old(data, j) model = fit(train.X, train.y) predictions = model.predict(test.X) skill = compare(test.y, predictions) run_scores.append(skill) scores.append(mean(run_scores)) ``` 注意,我們計算估計的平均模型技能的平均值,即所謂的[宏均值](https://en.wikipedia.org/wiki/Grand_mean)。 這是我推薦的評估深度學習模型技能的程序。 因為重復通常次數>=30,所以我們可以很容易地計算出平均模型性能的標準誤差,即模型性能得分的估計平均值與未知的實際平均模型技能的差異(例如,mean_skill 的差值會有多大) ```py standard_error = standard_deviation / sqrt(count(scores)) ``` 此外,我們可以使用 standard_error 來計算 mean_skill 的置信區間,假設結果的分布是高斯分布,您可以通過查看直方圖,Q-Q 圖或對收集的分數使用統計檢驗來檢查。 例如,計算95%左右的間隔是平均性能的指標(1.96 *標準誤差)。 ```py interval = standard_error * 1.96 lower_interval = mean_skill - interval upper_interval = mean_skill + interval ``` 與使用大均值的標準誤差相比,還有其他可能在統計上更穩健的計算置信區間的方法,例如: * 計算[二項式比例置信區間](https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval)。 * 使用自舉到[估計經驗置信區間](https://en.wikipedia.org/wiki/Bootstrapping_(statistics)#Deriving_confidence_intervals_from_the_bootstrap_distribution)。 ## 神經網絡有多不穩定? 這取決于您的問題,網絡和配置。 我建議進行敏感性分析以找出答案。 在同一數據上多次(30,100 或數千)評估相同的模型,只改變隨機數生成器的種子。 然后檢查所產生性能分數的均值和標準差,標準偏差(分數與平均分數的平均距離)將讓您了解模型的不穩定程度。 ### 多少次重復? 我建議至少 30,也許 100,甚至數千,僅限于你的時間和計算機資源,以及遞減的回饋(例如,mean_skill 上的標準誤差)。 更為嚴格地說,我建議進行一個實驗,研究對估計模型技能的影響與重復次數的影響以及標準誤差的計算(平均估計性能與真實基本總體平均值相差多少)。 ## 進一步閱讀 * [在機器學習中擁抱隨機性](http://machinelearningmastery.com/randomness-in-machine-learning/) * [如何訓練最終機器學習模型](http://machinelearningmastery.com/train-final-machine-learning-model/) * [比較不同種類的交叉驗證](http://appliedpredictivemodeling.com/blog/2014/11/27/vpuig01pqbklmi72b8lcl3ij5hj2qm) * [人工智能的經驗方法](http://www.amazon.com/dp/0262032252?tag=inspiredalgor-20),Cohen,1995。 * 維基百科上的[標準錯誤](https://en.wikipedia.org/wiki/Standard_error) ## 摘要 在這篇文章中,您發現了如何評估深度學習模型的技能。 具體來說,你學到了: * 初學者在評估深度學習模型時常犯的錯誤。 * 使用重復 k 倍交叉驗證來評估深度學習模型的基本原理。 * 如何計算相關的模型技能統計數據,例如標準差,標準誤差和置信區間。 您對估算深度學習模型的技能有任何疑問嗎? 請在評論中發表您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看