作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
在构建深度学习自然语言处理(NLP)分类模型时,存在两个主要困难.
我们构建能够理解语言复杂性的复杂深度学习模型的能力通常需要在这些领域积累多年的经验. 你的问题越难, 你的产出就越多样化, 在这些步骤上花费的时间就越多.
数据收集是一项繁重、耗时、昂贵的工作,也是* * * * * * * * * * * * * * * * * * * * * * *的头号限制因素 成功的NLP项目. 准备数据, 建设弹性管道, 在数百种可能的准备方案中做出选择, 而“模特准备就绪”可能需要几个月的努力 优秀的机器学习工程师. 最后, 训练和优化深度学习模型需要直觉理解的结合, 专业技术, 以及坚持解决问题的能力.
在本文中,我们将介绍
当然,这个过程的优化从提高精度开始. LSTM(长短期记忆)网络彻底改变了许多NLP任务, 但他们曾经(现在也是)极度渴求数据. 在大型昂贵的机器上优化和训练这些模型可能需要几天或几周的时间. 最后,在生产环境中部署这些大型模型既昂贵又麻烦.
以减少这些复杂的创造因素, 计算机视觉领域很早就利用了迁移学习. 迁移学习是一种使用为不同但相似的任务训练的模型来加速解决新任务的能力. 重新训练一个已经可以对树木进行分类的模型比从头开始训练一个新模型来识别灌木丛要少得多的努力.
想象一下这样一个场景:一个人一生中从未见过灌木,但见过很多树. 你会发现,根据他们对树木的了解向他们解释灌木丛的样子要比从头开始描述灌木丛容易得多. 迁移学习是一种非常人性化的学习方式, 因此,这在深度学习任务中是可行的.
伯特意味着您需要更少的数据,更少的培训时间,并且您可以获得更多的业务价值. 任何企业都可以构建的NLP产品的质量已经成为世界级的.
伯特使用了所谓的转换器,并被设计用来产生句子编码. 本质上,伯特是一个基于特定深度学习模型的语言模型. 它是专门用来提供上下文的, 数字, 一个句子或一串句子的表示. 这种数字表示是浅层和简单模型的输入. 不仅如此, 但结果通常是优越的,并且需要一小部分输入数据来完成尚未解决的任务.
想象一下,用一天的时间收集数据,而不是一年的时间,并且能够围绕数据集构建模型,否则您永远不会有足够的数据来创建LSTM模型. NLP任务的数量将为企业开放, 之前, 负担不起开发时间和所需的专业知识是惊人的.
在传统的自然语言处理中,模型训练的起点是词向量. 词向量是一个数字列表[0].55, 0.24, 0.试图用数字来表达这个词的含义. 用数字表示, 我们可以在训练复杂模型时使用这些词, 用大的词向量, 我们可以将单词信息嵌入到我们的模型中.
伯特做了类似的事情(事实上, 它的起点是词向量), 但是它创建了一个完整的输入句子的数字表示。.
与LSTM模型相比,伯特做了很多不同的事情.
收敛速度很慢,伯特需要很长时间来训练. 然而,它学习文本中的上下文关系要好得多. 词向量是非常肤浅的表示,这限制了它们可以建模的复杂性——bert没有这种限制.
许多企业使用预先训练的LSTM模型,这些模型利用多个gpu,需要花费数天时间来训练它们的应用程序. 但与这些旧的预训练模型相比, 伯特允许团队将解决方案的速度提高十倍. 可以移动到确定业务解决方案, 建立一个概念验证, 最后在很短的时间内将这个概念投入生产. 也就是说, 在很少的情况下,现有的伯特模型不能在适当的地方使用,或者不能调优到特定的用例.
由于本文关注的是构建真实产品的业务和工程应用, 我们将创建和训练两个模型来更好地理解比较价值.
这个任务? 根据IMDB上的情节预测电影的起源. 我们的数据集涵盖了美国, 澳大利亚, 英国, 加拿大, 日本, 中国人, 韩国, 俄罗斯电影和其他16部电影,总共24部. 我们总共有不到35000个训练样本.
下面是一个情节的示例片段.
几千年前, Steppenwolf和他的超灵军团试图用三个母盒的联合能量接管地球. 他们被一支包括奥林匹斯众神在内的统一军队所挫败, 亚马逊女战士, 亚特兰提斯岛, 人类, 还有绿灯军团. 在击退了斯特彭沃夫的军队之后, 母盒被分开并隐藏在地球上的各个地方. 在现在, 人类在悼念超人, 他的死触发了母盒的重新激活,而草原狼为了重获主人的宠爱而回到了地球, Darkseid. Steppenwolf的目标是收集这些文物形成“统一”, 这将破坏地球的生态,并将其改造成……
如果你还没有猜到,这就是美国电影《欧博体育app下载》的情节.
我们训练了一组不同的参数,以了解结果如何响应不同数量的数据和模型大小. 正如我们所说,伯特最重要的附加价值是需要更少的数据.
对于LSTM模型, 我们在GPU上训练了最大的模型,并改变了词汇表的大小和单词长度,以找到表现最好的模型. 对于伯特模型,我们只有一个单层.
我们在所有这些样本中固定了测试集, 所以我们一直在给同一个训练集打分.
在这个任务中,使用伯特句子编码训练的模型达到了令人印象深刻的f1得分0.仅仅1000个样本. LSTM网络不会超过0.60. 更令人印象深刻的是 训练伯特模型平均花费了1/20的时间 而不是准备LSTM模型.
无论以何种标准衡量,这些结果都指向了NLP的一场革命. 使用少100倍的数据和少20倍的训练时间,我们取得了世界级的结果. 在几秒钟或几分钟内训练高质量模型的能力,而不是几小时或几天,在以前无法提供的领域开辟了NLP.
伯特有比这篇文章更多的用途. 有多语言模式. 它可以用来解决许多不同的NLP任务, 可以像这篇文章中那样单独使用,也可以同时使用多个输出. 伯特句子编码将成为未来许多NLP项目的基石.
这篇文章背后的代码可以在 Github. 我也鼓励读者去看看 Bert-as-a-service,这是本文构建伯特句子编码的基石.
迁移学习是机器学习中的一种方法,其中以一个任务为起点建立模型并进行训练. 它是一种机器学习方法,其中为一个任务开发的模型用作类似任务的起点, 相关问题(e).g.(从NLP分类到命名实体识别).
伯特是Google基于transformer架构开发的一个强大的深度学习模型. 伯特已经展示了最先进的结果和许多最常见的NLP任务,可以用作在许多领域构建NLP模型的起点.
伯特抽象了构建NLP的一些最复杂和最耗时的方面,有证据表明,伯特可以将训练高性能模型所需的数据量减少90%以上. 伯特还降低了生产复杂性、开发时间并提高了准确性.
开始使用伯特的最佳途径是熟悉伯特即服务. 这篇文章背后的代码可以在Github上找到,也可以用来启动一个新的NLP项目.
世界级的文章,每周发一次.
世界级的文章,每周发一次.