日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
您如何判斷是否用足夠的數(shù)據訓練了模型?

深度神經網絡(DNN)需要大量訓練數(shù)據,即使微調模型也需要大量訓練數(shù)據。那么您如何知道是否已用了足夠的數(shù)據?如果是計算機視覺(CV)模型,您始終可以查看測試錯誤。但是如果微調BERT或GPT之類的大型transformer模型,又該如何?

  • 評估模型的最佳度量指標是什么?
  • 您如何確信已用足夠的數(shù)據訓練了模型?
  • 您的客戶如何確信?

WeightWatcher可助您一臂之力。

 
 
 
 
  1. pip install weightwatcher 

WeightWatcher是一種開源診斷工具,用于評估(預)訓練和微調的深度神經網絡的性能。它基于研究深度學習為何有效的前沿成果。最近,它已在《自然》雜志上刊登。

本文介紹如何使用WeightWatcher來確定您的DNN模型是否用足夠的數(shù)據加以訓練。

我們在本文中考慮GPT vs GPT2這個例子。GPT是一種NLP Transformer模型,由OpenAI開發(fā),用于生成假文本。最初開發(fā)時,OpenAI發(fā)布了GPT模型,該模型專門用小的數(shù)據集進行訓練,因此無法生成假文本。后來,他們認識到假文本是個好生意,于是發(fā)布了GPT2,GPT2就像GPT 一樣,但用足夠的數(shù)據來加以訓練,確保有用。

我們可以將WeightWatcher運用于GPT和GPT2,比較結果;我們將看到WeightWatcher log spectral norm和 alpha(冪律)這兩個度量指標可以立即告訴我們GPT模型出了岔子。這在論文的圖6中顯示;

 

圖 6

我們在這里將詳細介紹如何針對WeightWatcher冪律(PL)alpha度量指標執(zhí)行此操作,并解釋如何解讀這些圖。

建議在Jupiter筆記本或Google Colab中運行這些計算。(作為參考,您還可以查看用于在論文中創(chuàng)建圖解的實際筆記本,然而這里使用的是舊版本的WeightWatcher)。

出于本文需要,我們在WeightWatcher github代碼存儲庫中提供了切實有效的筆記本。

WeightWatcher了解基本的Huggingface模型。的確,WeightWatcher支持以下:

  • TF2.0/Keras
  • pyTorch 1.x
  • HuggingFace
  • 很快會支持ONNX(當前主干中)

目前,我們支持Dense層和Conv2D層。即將支持更多層。針對我們的NLP Transformer模型,我們只需要支持Dense層。

首先,我們需要GPT和GPT2 pyTorch模型。我們將使用流行的HuggingFace transformers軟件包。

 
 
 
 
  1. !pip install transformers 

其次,我們需要導入pyTorch和weightwatcher

 
 
 
 
  1. Import torch 
  2. Import weightwatcher as ww 

我們還需要pandas庫和matplotlib庫來幫助我們解讀weightwatcher度量指標。在Jupyter筆記本中,這看起來像:

 
 
 
 
  1. import pandas as pd 
  2. import matplotlib 
  3. import matplotlib.pyplot as plt  
  4. %matplotlib inline 

我們現(xiàn)在導入transformers軟件包和2個模型類

 
 
 
 
  1. import transformers 
  2. from transformers import OpenAIGPTModel,GPT2Model 

我們要獲取2個預訓練的模型,并運行model.eval()

 
 
 
 
  1. gpt_model = OpenAIGPTModel.from_pretrained('openai-gpt') 
  2. gpt_model.eval(); 
  3. gpt2_model = GPT2Model.from_pretrained('gpt2') 
  4. gpt2_model.eval(); 

想使用WeightWatcher分析我們的GPT模型,只需創(chuàng)建一個watcher實例,然后運行 ??watcher.analyze()。這將返回的Pandas數(shù)據幀,附有每一層的度量指標。

 
 
 
 
  1. watcher = ww.WeightWatcher(model=gpt_model) 
  2. gpt_details = watcher.analyze() 

細節(jié)數(shù)據幀報告可用于分析模型性能的質量度量指標——無需訪問測試數(shù)據或訓練數(shù)據。最重要的度量指標是冪律度量指標。WeightWatcher報告每一層 的。GPT模型有近50層,因此將所有層 alpha作為直方圖(使用pandas API)一次性檢查顯得很方便。

 
 
 
 
  1. gpt_details.alpha.plot.hist(bins=100, color='red', alpha=0.5, density=True, label='gpt') 
  2. plt.xlabel(r"alpha $(\alpha)$ PL exponent") 
  3. plt.legend() 

這繪制了GPT模型中所有層的值的密度。

圖2

從這個直方圖中,我們可以立即看到模型的兩個問題

?峰值高于充分訓練的模型的最佳值。

?有幾個異常值是,表明幾個層訓練欠佳。

所以對GPT一無所知,也從未見過測試訓練或訓練數(shù)據,WeightWatcher告訴我們這個模型永遠不該進入生產環(huán)境。

現(xiàn)在不妨看看GPT2,它有相同的架構,但使用更多更好的數(shù)據加以訓練。我們再次使用指定的模型創(chuàng)建一個watcher實例,然后運行 ??watcher.analyze()

 
 
 
 
  1. watcher = ww.WeightWatcher(model=gpt2_model) 
  2. gpt2_details = watcher.analyze() 

現(xiàn)在不妨比較GPT和GPT2的冪律alpha度量指標。我們就創(chuàng)建2個直方圖,每個模型1個直方圖,并疊加這2個圖。

 
 
 
 
  1. gpt_details.alpha.plot.hist(bins=100, color='red', alpha=0.5, density=True, label='gpt') 
  2. gpt2_details.alpha.plot.hist(bins=100, color='green', density=True, label='gpt2') 
  3. plt.xlabel(r"alpha $(\alpha)$ PL exponent") 
  4. plt.legend() 

GPT的層alpha顯示紅色,GPT2的層alpha顯示綠色,直方圖差異很大。對于GPT2,峰值$alpha\sim 3.5&bg=ffffff$,更重要的是沒有異常值$latex \alpha>6&bg=ffffff$。Alpha越小越好,GPT2模型比GPT好得多,原因在于它用更多更好的數(shù)據加以訓練。

圖3

WeightWatcher 有許多功能可以幫助您評估模型。它可以做這樣的事情:

  • 幫助您決定是否用足夠的數(shù)據對其進行了訓練(如圖所示)
  • 檢測過度訓練的潛在層
  • 用于獲取提前停止的標準(當您無法查看測試數(shù)據時)
  • 針對不同的模型和超參數(shù),預測測試精度方面的趨勢

等等

不妨試一下。如果它對您有用,請告訴我。


分享名稱:您如何判斷是否用足夠的數(shù)據訓練了模型?
網頁網址:http://www.dlmjj.cn/article/djgcgsp.html