英文

控制

目录

  • 模型详情
  • 使用
  • 偏见、风险和局限性
  • 训练
  • 评估
  • 环境影响
  • 技术规格
  • 引用
  • 模型卡作者
  • 如何开始使用模型
  • 模型详情

    模型描述

    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 中,开发者写道,主要的目标用户是一般观众和自然语言处理研究人员,主要的使用场景包括:

  • 与人类协作生成人工文本,包括但不限于:
    • 创意写作
    • 自动化重复性写作任务
    • 格式化特定文本类型
    • 创建上下文相关的市场材料
  • 通过微调(在另一项任务或其他数据上进行微调,例如,将CTRL进行微调以学习新类型的语言,如产品描述)改进其他自然语言处理应用
  • 在自然语言理解领域中提供改进,以推动对人工文本生成的更好理解,包括如何检测并努力控制、理解和可能应对此类模型可能带来的负面后果。
  • 不在使用范围内

    在他们的 model card 中,开发者写道:

    • 不应在没有与人类的协作的情况下使用CTRL生成人工文本。
    • 不应用于做规范性或指导性声明。
    • 不应用于推销或从中获利的目的,包括但不限于:
      • 暴力、仇恨和分裂
      • 环境破坏
      • 侵犯人权
      • 破坏人们的身体和心理健康

    偏见、风险和局限性

    大量研究探讨了语言模型的偏见和公平性问题(参见例如 Sheng et al. (2021) Bender et al. (2021) )。模型生成的预测可能包含涉及受保护群体、身份特征以及敏感的社交和职业群体的令人不安和有害的刻板印象。

    在他们的 model card 中,开发者写道:

    我们认识到潜在的误用或滥用的可能性,包括恶意使用系统以生成文本,影响政治、经济和社会决策的情况。虚假归因也可能伤害个人、组织或其他实体。为了解决这些问题,该模型在发布之前经过了内部和外部第三方的评估,包括与合作伙伴AI的合作伙伴关系。

    为了尽量减少潜在的误用,我们从不良来源中删除了所有可检测到的训练数据。然后,我们对模型进行了测试,发现负面表达通常被放置在可以识别出它们的上下文中。例如,在使用“新闻”控制码时,仇恨言论可以作为道歉的一部分嵌入其中(例如“政治家为[插入仇恨言论]的言论道歉”),这意味着这种言论是负面的。通过预先选择可用的控制码(从可用的领域中省略了Instagram和Twitter等),我们能够限制潜在的误用可能性。

    通过发布我们的模型,我们希望将其交给研究人员和亲社会行为者,让他们努力控制、理解和潜在地应对此类模型的负面后果。我们希望CTRL能推动对各种类型虚假新闻和模型生成内容的检测的研究。我们相信这些模型应该成为研究人员的常用工具,以便他们能够设计方法来防止恶意使用,公众也熟悉它们的存在和行为模式。

    有关有关语言模型的伦理讨论的进一步讨论,请参见 associated paper

    建议

    在他们的 model card 中,开发者写道:

    • 实施通过开发模型来识别CTRL生成文本的建议。
    • 通过在CTRL界面中添加一个检查,禁止将某些负面输入插入到模型中,以进一步筛选输入和输出,这将有助于控制生成的输出。
    • 该模型只是在有限数量的语言上进行了训练,主要是英语和一些德语、西班牙语和法语。未来的研究领域建议是在更多语言上对模型进行训练。

    有关更多有关检测器模型的信息,请参见 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

    • 硬件类型:TPU v3 Pod。
    • 使用时间:大约336小时(2周)。
    • 云提供商:GCP。
    • 计算区域:需要更多信息。
    • 排放的碳量:需要更多信息。

    技术规格

    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:

    • Keskar, N. S., McCann, B., Varshney, L. R., Xiong, C., & Socher, R. (2019). Ctrl: A conditional transformer language model for controllable generation. arXiv preprint arXiv:1909.05858.

    模型卡作者

    此模型卡是由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)