NLP产品级系统设计模式

简介: 在本文中,作者从六个方面描述了一些生产NLP系统的常见设计和部署模式。这些是团队为了使产品开发与技术、业务、战略和操作目标保持一致而必须做出的选择或权衡。

摘要:在本文中,作者从六个方面描述了一些生产NLP系统的常见设计和部署模式。这些是团队为了使产品开发与技术、业务、战略和操作目标保持一致而必须做出的选择或权衡。

虽然构建NLP系统可能很复杂,但是在构建NLP系统时,重要的是要记住,构建的系统需要解决某一个任务,并且只是实现这个目标的一种方法。在系统构建过程中,工程师、研究人员、设计师和产品经理通常有多个选择。虽然我们的书主要集中在技术或基础构建块上,但是将这些构建块放在一起来设计复杂的结构来满足你的需求将需要一些模式思考。模式思维和描述模式的语言是“在专业领域中描述好的设计实践或有用的组织模式的方法”。这在许多学科中都很流行(Alexander, 1979),包括软件工程。因此我们主要从以下从六个方面来研究这些设计选择:

1在线系统和离线系统:在线系统是指需要实时或接近实时地进行模型预测的系统。有些任务,如打击垃圾邮件、内容审核等,本质上需要一个在线系统。另一方面,离线系统不需要实时运行。它们可以被构建并利用像Transductive Learning这样的方法同时在一批输入上高效运行。有些在线系统可能是被动的,甚至可以以在线方式(也就是在线学习)进行学习,但是许多在线系统是通过定期的离线模型构建来构建和部署的,并将其推向生产。使用在线学习构建的系统应该对敌对环境特别敏感。最近的一个例子是著名的Twitter聊天机器人Tay,一开始从通过网络进行在线学习。但是很快Tay就开始用攻击性的推特回应,其母公司微软在推出后不到一天就不得不关闭这项服务。系统构建的一个典型轨迹是首先构建一个离线系统,将其作为一个“在线”系统进行大量的工作,然后通过添加反馈循环并适当的改变学习方法使其成为一个“在线学习”系统。虽然这种方案在代码库中增加了不少的复杂性,但有的时候是非常有必要的。下图显示了“Facebook免疫系统”作为一个在线系统检测垃圾邮件的例子(大约2012年)。注意在线系统比类似的离线系统需要更多的工作。

2af69e70365b5fb3fd5acf9475bf3d77272f0e03 

2、交互系统与非交互系统:大多数自然语言系统都是非交互的,因为预测仅仅来自一个模型。实际上,许多产品级NLP模型都深入到数据处理的“Extract-Transform-Load”(ETL)管道的转换步骤中。因此在某些情况下,人类参与到预测的循环中可能会有帮助。下图展示了Lilt Inc.的一个交互式机器翻译接口示例,其中模型和人共同参与了所谓的“混合主动模型”(Green 2014)的预测制作。虽然交互式系统很难设计,但通过将人带入循环,仍然可以实现非常高的准确性。

d04bc0e3f9f260fdd3e29a19788bef9296bdf43c 

3、单模式系统与多模式系统:在学习和预测过程中合并多个模式可能会有帮助。例如,新闻转录系统不仅要使用音频流,还要使用视频帧作为输入。例如,谷歌最近的一项名为“Look to Listen”(Ephrat et al 2018)的工作,使用多模态输入来解决演讲者源分离的难题(又称鸡尾酒会问题)。多模态系统的构建和部署是昂贵的,但是对于将来自多个模态的输入组合在一起的困难问题,提供的信号在其他情况下是单模态无法实现的。我们在NLP中也看到了这样的例子。例如,在多模式翻译中,我们可以通过在可用的情况下合并来自多种源语言的输入来提高翻译质量。在为web页面生成主题(主题建模)时,可以将从其中包含的图像中提取的特性与页面上的文本合并在一起。

76318c9cbbe7edfa9af6e1d3f3a726b597f8615c 

4、端到端系统与分段系统:自深度学习问世以来,研究人员和工程师的另一个选择是构建一个复杂的NLP系统,要么作为不同单元的管道,要么作为一个整体端到端系统。端到端设计在机器翻译、总结和语音识别等许多领域都很有吸引力,在这些领域,精心设计的端到端系统可以显著地降低实现和部署的复杂性,当然还可以减少代码行数。分段系统将复杂的NLP任务分解为子任务,每个子任务分别进行优化,独立于最终的任务目标。分段系统中的子任务使它变得模块化,并且很容易“修补”生产中的某个特定问题,但通常伴随着一些“技术债务”。

805284e04b60c8ec9ef2c9125f99fc91a67d06c3 

5、封闭域与开放域系统:封闭域系统是为了单一目的而明确优化的,以便在该域中表现良好。例如,可以明确优化机器翻译系统使之与生物医学期刊一起工作——这需要对生物医学平行语料库进行训练。开放域系统旨在用于通用目的(例如Google Translate)。再举一个例子,考虑一个文档标记系统。如果系统只预测它所训练的许多类中的一个(典型的情况),那么它将导致一个封闭域系统。但是,如果系统被设计成在运行时发现新的类,那么它就是一个开放域系统。在翻译和语音识别系统中,封闭域系统也被称为“有限词汇”系统。

6、单语与多语系统:为使用单一语言而构建的NLP系统称为单语系统。建立和优化单语系统是很容易的。相反,多语言系统可以处理多种语言。当它们在一个不同语言的数据集上接受训练时,它们的结果是显而易见的。虽然构建一个多语言系统很有吸引力,但是专注于一个单语版本有它的优势。研究人员和工程师可以利用该语言中广泛且可用的资源和领域专业知识,以生产高质量的系统,而在一般的多语言系统中,这是不可能的。由于这个原因,我们经常发现许多单语系统集合的多语言产品被单独优化,并使用语言标识组件将输入分发给单语系统。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Design Patterns for Production NLP Systems

作者:Delip

译者:黄小凡,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
springboot基于人工智能和自然语言理解技术的医院智能导医系统源码
智能导诊系统可为患者提供线上挂号智能辅助服务,患者根据提示手动输入自己的基本症状,通过智能对话方式,该系统会依据大数据一步步帮助患者“诊断”,并最终推荐就医的科室和相关专家。患者可自主选择,实现“一键挂号”。这一模式将精确的导诊服务前置,从源头上让医疗服务更高效。
371 2
|
3月前
|
机器学习/深度学习 存储 人工智能
人工智能自然语言对话系统
人工智能自然语言对话系统
43 1
|
4月前
|
设计模式
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
|
1月前
|
机器学习/深度学习 自然语言处理
基于深度学习的自然语言处理技术在智能客服系统中的应用
【2月更文挑战第21天】随着人工智能技术的不断发展,自然语言处理(NLP)技术在各个领域得到了广泛应用。本文主要探讨了基于深度学习的自然语言处理技术在智能客服系统中的应用。首先介绍了深度学习和自然语言处理的基本概念,然后分析了智能客服系统的工作原理和技术要求,接着详细阐述了基于深度学习的自然语言处理技术在智能客服系统中的具体应用,包括语义理解、情感分析和问答系统等。最后对基于深度学习的自然语言处理技术在智能客服系统中的优势和挑战进行了总结。
48 1
|
4月前
|
设计模式
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
|
4月前
|
设计模式
二十三种设计模式全面解析-装饰器模式的高级应用:打造灵活可扩展的通知系统
二十三种设计模式全面解析-装饰器模式的高级应用:打造灵活可扩展的通知系统
|
4月前
|
自然语言处理
对于NLP自学习平台的使用,你需要首先开通自然语言服务,然后才能购买和使用NLP自学习平台的各类产品
对于NLP自学习平台的使用,你需要首先开通自然语言服务,然后才能购买和使用NLP自学习平台的各类产品
85 1
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
采用医疗AI、自然语言处理技术的智能导诊系统源码
随着人工智能技术的快速发展,语音识别与自然语言理解技术的成熟应用,基于人工智能的智能导诊导医逐渐出现在患者的生活视角中,智能导诊系统应用到医院就医场景中,为患者提供导诊、信息查询等服务,符合智慧医院建设的需求,增加患者服务渠道,改善患者就医体验。 智能导诊导医系统技术架构:springboot+redis+mybatis plus+mysql+RocketM
|
6月前
|
设计模式 网络协议 Java
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
65 0
|
7月前
|
设计模式 数据采集 搜索推荐
趣解设计模式之《小王设计的疫苗管理平台系统》
趣解设计模式之《小王设计的疫苗管理平台系统》
39 0