Trevor 项目如何利用 TensorFlow 评估 LGBTQ 青少年自杀风险
2020 年 12 月 15 日

作者:Wilson Lee(Trevor 项目机器学习工程经理)、Dan Fichter(Trevor 项目 AI 和工程主管)、Amber Zhang 和 Nick Hamatake(Google 软件工程师)


简介

Trevor 项目 的使命是结束 LGBTQ 青少年的自杀行为。除了通过我们最初的电话生命线(始于 1998 年)提供免费危机服务外,我们还扩展到数字平台,包括短信和基于 Web 浏览器的聊天。不幸的是,在数字平台上联系我们青少年的数量超过了咨询师数量的高峰期,青少年不得不等待咨询师有空。理想情况下,青少年应该根据其自杀企图的相对风险与咨询师联系,以便那些有立即伤害风险的青少年能够尽早与咨询师联系。

作为 Google AI 影响力挑战 的一部分,Google.org 向我们提供了 150 万美元的资助、云积分和 Google.org 奖学金,这是一个 ML、产品和 UX 专家团队,他们与 Trevor 项目的全职无偿工作了 6 个月。Google 的员工与 Trevor 项目的内部工程团队联手将自然语言处理应用于危机联系接收流程。结果,Trevor 现在能够更快地将青少年与他们需要的帮助联系起来。并且,我们的合作在新的 120 万美元资助以及一批新的 Google.org 奖学金获得者的支持下继续进行,他们将在 12 月之前在 Trevor 项目中帮助扩展 ML 解决方案。

ML 问题框架

我们将问题框架为一个二元文本分类问题。输入是青少年在联系我们时填写的信息表中的问题答案

  • 您之前尝试过自杀吗? 是/否
  • 您有自杀念头吗? 是/否
  • 您有多沮丧? [多项选择]
  • 发生了什么事? [自由文本输入]
AI Impact Challenge Product Demo

输出是一个二元分类:是否将青少年放入标准队列或优先队列。随着咨询师的空闲,他们会先与优先队列中的青少年联系,然后再与标准队列中的青少年联系。

数据

青少年与咨询师联系后,咨询师会进行临床风险评估并记录结果。风险评估结果可以映射到青少年是否应该被放入标准队列或优先队列。 (数字) 对话的完整记录也被记录下来,包括对信息表问题的答案。因此,用于训练的数据集包含自由格式文本、二元/多项选择特征和人工提供的标签。

幸运的是,与标准风险青少年相比,被归类为高风险的青少年相对较少。这导致了显著的类别 不平衡,在训练期间必须考虑这一点。另一个主要挑战是数据集中的低信噪比。不同的青少年可能会在信息表上提供非常相似的回答,然后由咨询师在完成深入对话后给出相反的分类。处理这些问题的各种方法将在后面详细介绍。

由于数据集的极度敏感性,采取了特殊措施来限制其存储、访问和处理。我们自动删除并用占位符字符串(如“[PERSON_NAME]”或“[LOCATION]”)替换了包含个人可识别信息 (PII) 的数据,例如姓名和位置。这意味着模型没有使用 PII 进行训练。对删除后的数据集的访问权限仅限于参与该项目的一小部分人,并且数据和模型严格保存在 Trevor 的系统内,Google 无法访问。

指标

对于二元分类任务,我们通常会优化精度和召回率等指标,或优化 F1 分数或 AUC 等派生指标。但是,对于危机联系分类,我们需要优化的是高风险青少年(应该被归类到优先队列中)在与咨询师联系之前等待的时间。为了估计这一点,我们构建了一个队列模拟系统,该系统可以根据类平衡的历史快照、随时间推移的接触量的定量流量、可用的咨询师数量以及预测模型的精度和召回率来预测平均等待时间。

模拟速度太慢,无法在梯度下降的更新步骤中运行,因此我们首先优化了代理指标,例如召回率为 80% 时的精度,以及召回率为 90% 时的精度。然后,我们在所得模型的精度-召回率曲线的各个点上运行模拟,以确定曲线上的最佳位置,以便最大限度地减少高风险青少年的等待时间。

同样重要的是要量化模型相对于联系 Trevor 的各种不同人口统计和交叉群体而言的公平性。对于每个最终模型,我们计算了超过 20 个人口统计类别(包括交叉性)的误报率和漏报率。我们确保模型没有过度偏袒或不利于任何人口统计群体。

模型选择

我们尝试了双向 LSTM 和基于 Transformer 的模型,因为它们已被证明在各种文本任务中提供最先进的结果。我们尝试使用 Glove、Elmo 和 通用句子编码器 嵌入文本输入。对于基于 Transformer 的模型,我们尝试了单层 Transformer 网络和 ALBERT(许多 Transformer 层使用来自网络的未标记文本进行预训练)。

我们选择 ALBERT 是因为几个原因。它在我们最感兴趣的曲线的高召回率端显示出最佳性能。ALBERT 使我们不仅能够利用海量预训练数据,而且能够利用我们自己的未标记数据进行进一步预训练(稍后将详细介绍)。由于 ALBERT 在其 Transformer 层之间共享权重,因此该模型部署成本更低(这对非营利组织很重要),并且不太容易过度拟合(这对我们数据的噪声很大很重要)。

训练

我们通过三个步骤进行训练

  1. 预训练:ALBERT 已经使用来自网络的大量数据进行了预训练。我们只是使用 TF Hub 加载了预训练模型。

    有关加载用于文本分类的预训练模型的说明,请访问 此处

  2. 进一步预训练:由于 ALBERT 的语言模型基于通用的 Web 数据,因此我们使用我们自己的领域内未标记数据对其进行了进一步预训练。这包括来自聊天记录以及 TrevorSpace(Trevor 项目为 LGBTQ 青少年提供的安全社交网络网站)论坛帖子的匿名文本。尽管未标记数据没有标记自杀风险,但它来自我们目标人群中的真实青少年,因此在语言上更接近我们的标记数据集,而不是 ALBERT 的通用 Web 语料库。我们发现这显著提高了模型性能。

    有关检查点管理策略的说明,请访问 此处

  3. 微调:我们使用手工标记的训练数据对模型进行了微调。我们最初仅使用 ALBERT 来对“发生了什么事”的文本响应进行编码,并使用独热向量对二元和多项选择问题的响应进行编码。然后,我们尝试将所有内容转换为文本,并使用 ALBERT 对所有内容进行编码。具体来说,我们不是将对“您有自杀念头吗?”之类的问题的“是/否”答案编码为独热向量,而是将类似“ [咨询师] 您有自杀念头吗? [青少年] 否”的内容添加到对“发生了什么事?”的文本响应中。这在性能方面带来了显著的改进。

    有关使用 BERT 分词器进行编码的说明,请访问 此处

优化

我们进行了一些粗略的参数选择(学习率和批次大小),使用手动试验。我们还使用 Keras Tuner 进一步细化了参数空间。由于 Keras Tuner 与模型无关,因此我们能够对每个模型类别使用类似的调整脚本。对于基于 LSTM 的模型,我们还使用 Keras Tuner 来决定使用哪种嵌入。

通常,我们会使用尽可能大的批次大小来进行训练,该批次大小适合 GPU,但在这种情况下,我们发现相当小的批次大小 (~8 个示例) 可以获得更好的性能。我们推测这是因为数据存在大量噪声,因此倾向于自我调节。这种自调节效应在小批次中更为明显。

有关设置超参数试验的说明,请访问 此处

结论

我们训练了一个基于文本的模型,以优先考虑寻求危机服务的处于风险中的青少年。该模型优于仅使用几个多项选择信息表问题中的响应作为特征的基线分类器。NLP 模型还被证明比基线模型的偏差更少。最终模型中一些影响最大的因素是:1) 使用领域内未标记数据来进一步预训练现成的 ALBERT 模型,2) 将多项选择响应编码为完整文本,然后由 ALBERT 进行编码,以及 3) 使用对特定数据集的直觉以及标准搜索方法来调整超参数。

尽管该模型取得了成功,但也存在一些局限性。产生我们数据集的信息表问题与构成我们训练标签的专家风险评估结果的相关性并不强。这导致我们的训练数据集中信噪比低。将来可以做更多非 ML 工作来从信息表中获取更多高信号响应。

我们要感谢所有参与该项目的团队和个人:Google.org 和 Google.org 奖学金获得者、Trevor 项目的整个工程和数据科学团队,以及 Trevor 的危机服务和临床工作人员提供的许多小时的审查和意见。

您可以通过以下链接捐赠来支持我们的工作:TheTrevorProject.org/Donate。您的救命捐赠可以帮助我们扩大宣传工作,培训创纪录数量的危机咨询师,并全天候提供所有危机服务。

下一篇文章
How The Trevor Project assesses LGBTQ youth suicide risk with TensorFlow

由 Wilson Lee(Trevor 项目机器学习工程经理)、Dan Fichter(Trevor 项目人工智能和工程主管)、Amber Zhang 和 Nick Hamatake(Google 软件工程师)发布
简介Trevor 项目 的使命是结束 LGBTQ 青少年中的自杀现象。除了通过我们最初的电话生命线(始于 1998 年)提供免费的危机服务外,我们还……