最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

機(jī)器學(xué)習(xí)模型在同一數(shù)據(jù)集上訓(xùn)練產(chǎn)生不同結(jié)果的3個(gè)原因

2022-01-05 18:48 作者:深度之眼官方賬號(hào)  | 我要投稿

如果你正在學(xué)習(xí)機(jī)器學(xué)習(xí)模型(不論什么任務(wù)),在本地機(jī)器上研究開(kāi)發(fā)之后,能夠在測(cè)試集上運(yùn)行。卻發(fā)現(xiàn)模型在通過(guò)構(gòu)建管道部署時(shí)一直失敗,但是該模型是在本地開(kāi)發(fā)時(shí)使用的相同測(cè)試集上測(cè)試好的。


本文將解釋這種奇怪現(xiàn)象產(chǎn)生的原因,并提出如何檢測(cè)真實(shí)模型回歸的建議。


本文案例使用代碼鏈接:

https://github.com/hsm207/why_models_fail


從本地開(kāi)發(fā)階段開(kāi)始看

假設(shè)我們正在構(gòu)建一個(gè)模型來(lái)對(duì)MNIST數(shù)據(jù)集進(jìn)行分類(lèi)。目標(biāo)是構(gòu)建一個(gè)在測(cè)試集上準(zhǔn)確率至少為95%的分類(lèi)器。


幾次嘗試,終于實(shí)現(xiàn)了這一目標(biāo):


第一個(gè)超過(guò)95%準(zhǔn)確率的模型

但是,再次運(yùn)行訓(xùn)練和評(píng)估邏輯會(huì)產(chǎn)生不同的結(jié)果:


運(yùn)行相同的模型訓(xùn)練和測(cè)試代碼會(huì)產(chǎn)生不同的結(jié)果


結(jié)果略有不同,我們的目的就是想知道變化的原因。按道理來(lái)說(shuō),完全相同的代碼運(yùn)行多次應(yīng)該會(huì)產(chǎn)生相同的結(jié)果。


回顧發(fā)現(xiàn)在訓(xùn)練時(shí)開(kāi)啟了數(shù)據(jù)洗牌(data shuffling),這是構(gòu)建機(jī)器學(xué)習(xí)模型時(shí)的常見(jiàn)做法。也許如果你在訓(xùn)練中禁用隨機(jī)洗牌(random shuffling),那么在不同的訓(xùn)練中結(jié)果將會(huì)保持不變?


構(gòu)建機(jī)器學(xué)習(xí)模型時(shí)的常見(jiàn)做法相關(guān)解釋:

https://datascience.stackexchange.com/questions/24511/why-should-the-data-be-shuffled-for-machine-learning-tasks


這是在訓(xùn)練期間禁用隨機(jī)洗牌后第一次運(yùn)行的結(jié)果:


訓(xùn)練期間關(guān)閉數(shù)據(jù)shuffle后的首次運(yùn)行


這是第二次運(yùn)行的結(jié)果:


訓(xùn)練期間關(guān)閉數(shù)據(jù) shuffle 后的第二次運(yùn)行


結(jié)果還是不一樣!但至少現(xiàn)在差距變小了……


然后想起模型在訓(xùn)練開(kāi)始時(shí)隨機(jī)初始化它的參數(shù)!所以斷定,修復(fù)隨機(jī)種子肯定會(huì)解決這個(gè)問(wèn)題。


修復(fù)隨機(jī)種子知識(shí)點(diǎn):

https://github.com/tensorflow/tensorflow/blob/c256c071bb26e1e13b4666d1b3e229e110bc914a/tensorflow/python/framework/random_seed.py#L215-L216


將隨機(jī)種子設(shè)置為1時(shí),會(huì)發(fā)生以下情況:


在訓(xùn)練期間修復(fù)隨機(jī)種子并禁用數(shù)據(jù)洗牌后的首次運(yùn)行


第二次運(yùn)行:


在訓(xùn)練期間修復(fù)隨機(jī)種子并禁用數(shù)據(jù)洗牌后的第二次運(yùn)行


Ok現(xiàn)在結(jié)果是相同的,繼續(xù)構(gòu)建一個(gè)管道來(lái)訓(xùn)練模型并將其部署到生產(chǎn)中。


管道模型

從構(gòu)建管道中讀取日志:


來(lái)自構(gòu)建管道的訓(xùn)練和測(cè)試日志


隨機(jī)種子已固定為1,并且已禁用訓(xùn)練數(shù)據(jù)混洗,就像在本地機(jī)器上所做的一樣。但為什么結(jié)果不一樣呢?


管道模型和本地模型之間的差異真的很小,也許這可能是硬件浮點(diǎn)算法實(shí)現(xiàn)中的錯(cuò)誤。


好消息是這個(gè)“錯(cuò)誤”已經(jīng)在互聯(lián)網(wǎng)上被討論了很多。壞消息是它不是一個(gè)錯(cuò)誤。簡(jiǎn)而言之,機(jī)器之間的差異源于浮點(diǎn)規(guī)范的定義方式以及硬件供應(yīng)商如何實(shí)現(xiàn)它們。除了忍了這個(gè)差異沒(méi)有別的辦法。


舉個(gè)例子

使用MNIST數(shù)據(jù)集,它有 60,000 個(gè)訓(xùn)練示例和 10,000 個(gè)測(cè)試示例??紤]到問(wèn)題的復(fù)雜性,這足以確保機(jī)器學(xué)習(xí)模型在每次運(yùn)行時(shí)都能訓(xùn)練到收斂。


  • 但實(shí)際上我們不太可能從如此大的數(shù)據(jù)集開(kāi)始。


  • 我們要提前考慮數(shù)據(jù)集大小對(duì)同一臺(tái)機(jī)器上運(yùn)行的變化的影響。


  • 現(xiàn)在我們只有1,000個(gè)訓(xùn)練樣例和500個(gè)測(cè)試樣例,則變化如下:


假設(shè)有1000個(gè)訓(xùn)練示例,測(cè)試準(zhǔn)確度的變化


在只有1000個(gè)訓(xùn)練示例的情況下,我們預(yù)計(jì)模型的表現(xiàn)相對(duì)于在整個(gè)訓(xùn)練集中進(jìn)行訓(xùn)練時(shí)較差。圖8證實(shí)了這一點(diǎn)(在整個(gè)測(cè)試集上測(cè)試時(shí)的中位數(shù)測(cè)試準(zhǔn)確度介于86.5%和87.0%之間,而在完整訓(xùn)練集上訓(xùn)練時(shí)的中位數(shù)為 97%)。


圖 8 還顯示,與在完整測(cè)試集上進(jìn)行評(píng)估相比,僅在 500 個(gè)測(cè)試示例上進(jìn)行評(píng)估時(shí),測(cè)試準(zhǔn)確性的變化要高得多。


有了正確的數(shù)據(jù)集,固定的隨機(jī)種子,沒(méi)有數(shù)據(jù)洗牌,你最終可以在你的500個(gè)樣本測(cè)試集上得到89%的測(cè)試精度,這并不是模型的真實(shí)性能的真實(shí)反映。因此,不應(yīng)該關(guān)閉來(lái)自隨機(jī)種子和數(shù)據(jù)洗牌的隨機(jī)性,以便我們可以估計(jì)模型性能的不確定性。


但是如何確保模型的后續(xù)工作(例如添加新特征、超參數(shù)調(diào)整)不會(huì)意外引入回歸?


如何檢查模型回歸


前面的部分已經(jīng)表明,在小數(shù)據(jù)集上訓(xùn)練和測(cè)試的模型的評(píng)估指標(biāo)可能會(huì)有很多變化。因此,如果您的模型具有 90% 的準(zhǔn)確率,那么下一次運(yùn)行可能會(huì)偶然返回 88% 的準(zhǔn)確率,這使得設(shè)置檢測(cè)回歸的最小閾值變得困難。


人們可能很想尋找一種隨機(jī)種子,這將使本地模型和管道模型的結(jié)果差異盡可能小,但我認(rèn)為這不是對(duì)時(shí)間的最佳利用。


相反,我建議在管道中運(yùn)行幾次訓(xùn)練和測(cè)試作業(yè),并計(jì)算運(yùn)行中評(píng)估指標(biāo)的均值和標(biāo)準(zhǔn)差。這些數(shù)字在機(jī)器上是穩(wěn)定的,因此可以用來(lái)可靠地確定是否引入了回歸。


結(jié)論


這篇文章描述了機(jī)器學(xué)習(xí)模型每次在同一數(shù)據(jù)集上訓(xùn)練會(huì)產(chǎn)生不同結(jié)果的 3 個(gè)原因,即:


  • 輸入:訓(xùn)練數(shù)據(jù)批處理并輸入模型的方式很重要


  • 模型架構(gòu):隨機(jī)權(quán)重初始化、隨機(jī)采樣和 dropout 等技術(shù)將通過(guò)設(shè)計(jì)將隨機(jī)性引入模型的輸出中


  • 硬件:不同的硬件可以不同地實(shí)現(xiàn)浮點(diǎn)運(yùn)算


本文還建議使用在一系列訓(xùn)練和測(cè)試運(yùn)行上計(jì)算出的評(píng)估指標(biāo)的均值和標(biāo)準(zhǔn)差作為檢測(cè)模型回歸的方法。


文章來(lái)源:

https://pub.towardsai.net/why-your-build-pipelines-always-fail-your-machine-learning-model-a09484d551f6

免責(zé)聲明:所載內(nèi)容來(lái)源互聯(lián)網(wǎng),僅供參考。轉(zhuǎn)載稿件版權(quán)歸原作者和機(jī)構(gòu)所有,如有侵權(quán),請(qǐng)聯(lián)系我們刪除。


關(guān)注公眾號(hào)更多人工智能干貨等你來(lái)!

如有問(wèn)題,溫柔的說(shuō),別直接噴/(ㄒoㄒ)/~~


機(jī)器學(xué)習(xí)模型在同一數(shù)據(jù)集上訓(xùn)練產(chǎn)生不同結(jié)果的3個(gè)原因的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
高雄市| 通城县| 宝清县| 贡嘎县| 长汀县| 台前县| 江北区| 柏乡县| 阳原县| 特克斯县| 贵德县| 正宁县| 连南| 甘洛县| 麻栗坡县| 平凉市| 长沙市| 三亚市| 城口县| 儋州市| 梅州市| 衡阳县| 赤壁市| 阳山县| 柘城县| 上栗县| 隆化县| 崇州市| 新密市| 五大连池市| 枝江市| 长汀县| 巴楚县| 友谊县| 通化县| 荣昌县| 湖南省| 凌源市| 梓潼县| 赤壁市| 日喀则市|