模型:
ctrl
CTRL模型是由Nitish Shirish Keskar、Bryan McCann、Lav R. Varshney、Caiming Xiong和Richard Socher于 CTRL: A Conditional Transformer Language Model for Controllable Generation 提出的。它是一个因果(单向)变换器,使用大约140GB的文本数据进行语言建模训练,其中第一个令牌被保留为控制码(如链接、图书、维基百科等)。该模型开发人员发布了一个CTRL模型卡,可在 here 上获得。
在他们的 model card 中,开发人员写道:
在本卡中分析的CTRL语言模型生成的文本是根据指定的控制码条件而产生的,这些控制码指定了领域、风格、主题、日期、实体、实体之间的关系、情节要点和任务相关行为。
该模型是一个语言模型,可用于生成文本。
在他们的 model card 中,开发者写道,主要的目标用户是一般观众和自然语言处理研究人员,主要的使用场景包括:
在他们的 model card 中,开发者写道:
大量研究探讨了语言模型的偏见和公平性问题(参见例如 Sheng et al. (2021) 和 Bender et al. (2021) )。模型生成的预测可能包含涉及受保护群体、身份特征以及敏感的社交和职业群体的令人不安和有害的刻板印象。
在他们的 model card 中,开发者写道:
我们认识到潜在的误用或滥用的可能性,包括恶意使用系统以生成文本,影响政治、经济和社会决策的情况。虚假归因也可能伤害个人、组织或其他实体。为了解决这些问题,该模型在发布之前经过了内部和外部第三方的评估,包括与合作伙伴AI的合作伙伴关系。
为了尽量减少潜在的误用,我们从不良来源中删除了所有可检测到的训练数据。然后,我们对模型进行了测试,发现负面表达通常被放置在可以识别出它们的上下文中。例如,在使用“新闻”控制码时,仇恨言论可以作为道歉的一部分嵌入其中(例如“政治家为[插入仇恨言论]的言论道歉”),这意味着这种言论是负面的。通过预先选择可用的控制码(从可用的领域中省略了Instagram和Twitter等),我们能够限制潜在的误用可能性。
通过发布我们的模型,我们希望将其交给研究人员和亲社会行为者,让他们努力控制、理解和潜在地应对此类模型的负面后果。我们希望CTRL能推动对各种类型虚假新闻和模型生成内容的检测的研究。我们相信这些模型应该成为研究人员的常用工具,以便他们能够设计方法来防止恶意使用,公众也熟悉它们的存在和行为模式。
有关有关语言模型的伦理讨论的进一步讨论,请参见 associated paper 。
在他们的 model card 中,开发者写道:
有关更多有关检测器模型的信息,请参见 CTRL-detector GitHub repo 。
在他们的 model card 中,开发者写道:
该模型训练数据来自多个领域的文本,总计约140GB,包括:维基百科(英语、德语、西班牙语和法语)、古登堡计划、来自45个子版块的提交、OpenWebText、大量新闻数据、亚马逊评论、来自WMT的欧洲议会和联合国数据(En-De、En-Es、En-Fr)、ELI5的问题-回答对(没有上下文文档),以及MRQA共享任务,其中包括斯坦福问题回答数据集、NewsQA、TriviaQA、SearchQA、HotpotQA和Natural Questions。有关训练数据的完整列表,请参见论文。
在 associated paper 中,开发者写道:
我们使用BPE(Sennrich等,2015)编码和fastBPE4对数据进行标记化处理,但我们使用大约250K个标记的大词汇表。这包括了处理罕见单词问题所需的子单词标记,但也通过包含最常见的词减少了生成长文本所需的平均标记数量。我们使用英语维基百科和我们收集的OpenWebText数据的5%进行BPE代码的学习。我们还引入一个未知标记,以便在预处理过程中过滤掉包含超过2个未知标记的序列。这样,加上用于高效训练的压缩存储(TFRecords)(Abadi等,2016),我们将训练数据从总共收集到的180GB减少到了140GB。
有关链接、引用和进一步详细信息,请参见论文。
在 associated paper 中,开发者写道:
CTRL具有模型维度d = 1280,内部维度f = 8192,48个层以及每层16个头。每层的残差连接后会应用概率为0.1的Dropout。令牌嵌入与最终输出嵌入层进行了绑定(Inan等,2016;Press&Wolf,2016)。
有关链接、引用和进一步详细信息,请参见论文。
在他们的 model card 中,开发者写道,模型性能的评估指标包括:
通过人工定性判断模型生成的文本是否符合所需领域。
可以使用 Machine Learning Impact calculator 中介绍的方法来估计碳排放量,该方法的详细信息来自 associated paper 。
在 associated paper 中,开发者写道:
CTRL是用TensorFlow(Abadi等,2016)实现的,并使用全局批量大小为1024在Cloud TPU v3 Pod的256个核心上进行了800k次迭代的训练。训练时间约为2周,使用Adagrad(Duchi等,2011)进行训练,线性从0到0.05进行了25k步。梯度的范数被剪切到0.25,与(Merity等,2017)中的方法相同。由于Adagrad累加器的单调特性,不需要学习率衰减。我们在训练规模较小的模型时与Adam优化器(Kingma&Ba,2014)进行了比较,但我们发现Adagrad具有相当的收敛速度和显著的内存节省。我们还尝试了包括SM3(Anil等,2019)、Adafactor(Shazeer&Stern,2018)和NovoGrad(Ginsburg等,2019)在内的显式节省内存的优化器,但效果不一。
有关链接、引用和进一步详细信息,请参见论文。
BibTeX:
@article{keskarCTRL2019, title={{CTRL - A Conditional Transformer Language Model for Controllable Generation}}, author={Keskar, Nitish Shirish and McCann, Bryan and Varshney, Lav and Xiong, Caiming and Socher, Richard}, journal={arXiv preprint arXiv:1909.05858}, year={2019} }
APA:
此模型卡是由Hugging Face团队编写的,参考了开发者发布的 model card 。
使用下面的代码来开始使用模型。有关更多信息,请参见 Hugging Face ctrl docs 。
单击展开>>> from transformers import CTRLTokenizer, CTRLModel >>> import torch >>> tokenizer = CTRLTokenizer.from_pretrained("ctrl") >>> model = CTRLModel.from_pretrained("ctrl") >>> # CTRL was trained with control codes as the first token >>> inputs = tokenizer("Opinion My dog is cute", return_tensors="pt") >>> assert inputs["input_ids"][0, 0].item() in tokenizer.control_codes.values() >>> outputs = model(**inputs) >>> last_hidden_states = outputs.last_hidden_state >>> list(last_hidden_states.shape)