您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    您如何判别能否用足够的数据训练了模型?
    时间:2021-08-04 21:13 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    您如何判别能否用足够的数据训练了模型?

    【51CTO.com快译】深度神经网络(DNN)需求少量训练数据,即使微调模型也需求少量训练数据。那么您如何知道能否已用了足够的数据?假设是计算机视觉(CV)模型,您一直可以查看测试错误。但是假设微调BERT或GPT之类的大型transformer模型,又该如何?

    评价模型的最佳度量目的是什么?

    您如何确信已用足够的数据训练了模型?

    您的客户如何确信?

    WeightWatcher可助您一臂之力。

    pip install weightwatcher 

    WeightWatcher是一种开源诊断工具,用于评价(预)训练和微调的深度神经网络的功用。它基于研讨深度学习为何有效的前沿成果。最近,它已在《自然》杂志上刊登。

    本文引见如何运用WeightWatcher来确定您的DNN模型能否用足够的数据加以训练。

    我们在本文中思索GPT vs GPT2这个例子。GPT是一种NLP Transformer模型,由OpenAI开发,用于生成假文本。最后开发时,OpenAI发布了GPT模型,该模型专门用小的数据集停止训练,因此无法生成假文本。后来,他们看法到假文本是个好生意,于是发布了GPT2,GPT2就像GPT 一样,但用足够的数据来加以训练,确保有用。

    我们可以将WeightWatcher运用于GPT和GPT2,比较结果;我们将看到WeightWatcher log spectral norm和 alpha(幂律)这两个度量目的可以立刻通知我们GPT模型出了岔子。这在论文的图6中显示;

    您如何判别能否用足够的数据训练了模型?

    图 6

    我们在这里将详细引见如何针对WeightWatcher幂律(PL)alpha度量目的

    您如何判别能否用足够的数据训练了模型?

    执行此操作,并解释如何解读这些图。

    建议在Jupiter笔记本或Google Colab中运转这些计算。(作为参考,您还可以查看用于在论文中创立图解的实践笔记本,但是这里运用的是旧版本的WeightWatcher)。

    出于本文需求,我们在WeightWatcher github代码存储库中提供了实在有效的笔记本。

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

    TF2.0/Keras

    pyTorch 1.x

    HuggingFace

    很快会支持ONNX(以后主干中)

    目前,我们支持Dense层和Conv2D层。行将支持更多层。针对我们的NLP Transformer模型,我们只需求支持Dense层。

    首先,我们需求GPT和GPT2 pyTorch模型。我们将运用盛行的HuggingFace transformers软件包。

    !pip install transformers 

    其次,我们需求导入pyTorch和weightwatcher

    Import torch 

    Import weightwatcher as ww 

    我们还需求pandas库和matplotlib库来协助我们解读weightwatcher度量目的。在Jupyter笔记本中,这看起来像:

    import pandas as pd 

    import matplotlib 

    import matplotlib.pyplot as plt  

    %matplotlib inline 

    我们如今导入transformers软件包和2个模型类

    import transformers 

    from transformers import OpenAIGPTModel,GPT2Model 

    我们要获取2个预训练的模型,并运转model.eval()

    gpt_model = OpenAIGPTModel.from_pretrained('openai-gpt'

    gpt_model.eval(); 

    gpt2_model = GPT2Model.from_pretrained('gpt2'

    gpt2_model.eval(); 

    想运用WeightWatcher剖析我们的GPT模型,只需创立一个watcher实例,然后运转 ​​watcher.analyze()。这将前往的Pandas数据帧,附有每一层的度量目的。

    watcher = ww.WeightWatcher(model=gpt_model) 

    gpt_details = watcher.analyze() 

    细节数据帧报告可用于剖析模型功用的质量度量目的——无需拜访测试数据或训练数据。最重要的度量目的是幂律度量目的

    您如何判别能否用足够的数据训练了模型?

    。WeightWatcher报告每一层 的

    您如何判别能否用足够的数据训练了模型?

    。GPT模型有近50层,因此将一切层 alpha作为直方图(运用pandas API)一次性反省显得很方便。

    gpt_details.alpha.plot.hist(bins=100, color='red', alpha=0.5, density=True, label='gpt'

    plt.xlabel(r"alpha $(\alpha)$ PL exponent"

    plt.legend() 

    这绘制了GPT模型中一切层的

    您如何判别能否用足够的数据训练了模型?

    值的密度。

    您如何判别能否用足够的数据训练了模型?

    图2

    从这个直方图中,我们可以立刻看到模型的两个成绩

    (责任编辑:admin)