nlp应用处理的主要范畴

  • 文本朗读(Text to speech)
  • 语音合成(Speech synthesis)
  • 语音识别(Speech recognition)
  • 中文自动分词(Chinese word segmentation)
  • 词性标注(Part-of-speech tagging)
  • 句法分析(Parsing)
  • 自然语言生成(Natural language generation)
  • 文本分类(Text categorization)
  • 信息检索(Information retrieval)
  • 信息抽取(Information extraction)
  • 文字校对(Text-proofing)
  • 问答系统(Question answering)
  • 机器翻译(Machine translation)
  • 自动摘要(Automatic summarization)
  • 文字蕴涵(Textual entailment)

问题 1:基于 CNN 与 LSTM 模型的问答模型经常在只“读到”问题的一半就收敛于一个预测出的答案。这意味着模型严重依赖于训练数据的表面相关性,缺乏组合性,导致结果出现偏差。

解决思路 1: 模型依赖训练数据的表面相关性,实质上是当前深度学习技术在序列建模过程中的共性问题,本质上属于模型的泛化性问题。

要克服这类问题,需要研究一个相对通用普适的语义模型,该模型具有较强的泛化能力,这样就可以让该语义模型作为核心基础,为各领域的特有模型提供语义支撑。要设计实现该类模型,需要解决无监督语义学习的问题,这类工作目前在学术界开始被关注,比如 ELMo、BERT 都是这类工作。(科大讯飞专家)

解决思路 2: 通用语义嵌入大规模预训练可能是预防过训练的一种方式。此外还需要新的合成模型。另一种方法是构建更多复杂、大规模、真实世界的任务,如开放对话或目标导向对话相关的复杂结构性任务,比如销售对话、客服对话。这些任务将促进更加普适、更综合的模型出现,因为在这些复杂的任务重中,表层相关模型的效果并不好,亟需合成信息模型。(京东专家)

解决思路 3: 首先通过训练集和测试集上的表现变化,判断模型是过拟合还是欠拟合。如果是欠拟合,说明模型没有很好地捕捉到特征,这种情况下应该在特征的层面进行加强,把模型加深;如果是过拟合,说明参数的复杂度超过了数据的复杂度,常见的做法包括数据增强、正则、模型简化、dropout、早停等。(腾讯专家)

解决思路 4: 具体来说,CNN 与 LSTM 模型建模问句时,很容易捕获跟答案直接相关的问句中靠前位置词语,如“type”和“topic”类型的词语,不管输入序列的长短,现有的 attention 模型或者 CNN 滤波都容易反复关注到这些词,造成只“读到”问题的一半就收敛于一个预测出的答案。

可能的解决方式包括:

尝试 coverage 的 attention,主要思想是别让某些词(如问句中靠前的词语)反复被关注到;

用 transformer 替换 CNN 或者 LSTM,transformer 的 self-attention 可以建模句子内部的依赖信息,也可以捕获长距离依赖,在绝大部分 NLP 任务上比 CNN、LSTM 效果好。(小米专家)

解决思路 5: 在文本处理中,CNN 网络更适合于短文本中的特征提取,LSTM 网络虽然在诞生之初为了解决长句子训练中的梯度爆炸和消失的问题,在相对较长的句子中其确实显示了很好的效果,但是对于问答类数据,文本过长导致 LSTM 在训练中遗忘句子之前的信息并且在训练中无法将问题的特征加到网络中一块训练,而导致效果不好。

目前对于问答模型更倾向利用基于注意力机制的网络,最典型的是 BERT 网络,完全依赖注意力机制, 另一种是依据记忆力网络的结构, 像 Deep Memory Network, 通过记忆力网络循环计算整个句子的注意力权重。(氪信专家)

问题 2:现代 NLP 技术在基准数据集上表现优良,但对于未知自然语言文本的语言理解与推理方面远不及人类的水平。

解决思路 1: 这与第一个问题类似,也是模型的泛化能力问题。除了尝试设计一个通用的无监督语义模型之外,还可以重点思考如何将各类人类知识引入到机器的建模学习过程中。人类知识相对稀疏和抽象,但却具备将各类概念和实体关联起来的作用,所以如果机器能具备对人类知识的学习能力,那么其在处理未知信号的时候,就会表现的更加智能。(科大讯飞专家)

解决思路 2: 我们需要大规模、注意力具有结构化注意力机制、普适的语言理解模型,这是通向类人水平 NLP 智能的道路。我认为最近一些进展,如 HAN、BERT、Transformer、Elmo 也是解决这个问题的方向。(京东专家)

解决思路 3: 一方面机器语言理解确实还不及人类。人类在理解语言的时候会调用很多语言之外的信息,比如常识等,相当于海陆空联合作战,模型目前还只具备学习到怎么使用一把特定的手枪,我们对此也应该有正确的预期。另一方面,在相似的任务上和数据上,可以考虑迁移学习或者预训练模型来快速启动。(腾讯专家)

解决思路 4: 在基准数据集上表现优良并不代表在未知数据上表现好,这是机器学习领域的努力方向。现有 NLP 技术大都基于机器学习方法,因此,这也是 NLP 技术的努力方向之一。这个问题确实非常难,对于 NLP 而言,也许融合知识 (包括语言学知识、人类常识、领域知识等) 是一个缓解上述问题的方向。(小米专家)

解决思路 5: 这个问题不仅只限于 NLP 领域,在任何场景训练的模型如果迁移到新的未知领域,都会遇到模型性能剧烈下降的问题。我们需要构建一个可快速迭代的系统或者框架来解决未知领域的问题。预训练的模型先快速冷启动,收集样本,持续监控模型的性能,然后快速迭代模型。(氪信专家)

问题 3: 如何充分衡量模型在新的、从未见过的输入数据上的表现?或者说,如何衡量系统的泛化能力?以及如何处理未曾见过的数据分布和任务?

解决思路 1: 可以从模型在多个不同任务上的表现来衡量,即扩大评估集合;另一方面,还可以将模型应用到不同的系统中来评估。

严格来说,自然语言理解领域的未知数据,由于空间极为庞大,很难建模或者预设,因此不论是从模型评估来看,还是从模型训练来说,未知数据或信息的建模学习,都还是一个比较大的问题。(科大讯飞专家)

解决思路 2: 对于神经网络而言,现在还没有比较好的理论指导。ICLR`17 的最佳论文给了“Understanding Deep Learning Requires Rethinking Generalization”也说明了学界对深度学习的泛化能力的关注和讨论,这篇文章做了大量的实验,表明深度神经网络一定程度上“记忆”了输入样本。这篇文章同时也认为经典统计机器学习理论和正则策略难以解释深度网络的泛化能力,目前来看,仍然还没有公认的答案。(腾讯专家)

解决思路 3: 目前来看非常困难,对于未曾见过的数据分布和任务,可以尝试采用迁移学习等方法来将在其他数据上得到的规律迁移到新数据或者新任务上来。(小米专家)

解决思路 4: 首先得有一个非常合理和直观的评价指标,其次需要在跨时间窗口或者跨场景的多批数据上充分测试,避免过拟合的现象。(氪信专家)

问题 4: 机器翻译模型的训练,我们使用诸如交叉熵或预期句子级别 BLEU 之类的损失函数训练模型。这些函数已经被证明存在偏好,而且与人类判断不充分相关。强化学习似乎是 NLP 的一个完美选择,因为它允许模型在模拟环境中通过反复试验来学习类似人类的监督信号(“奖励”)。但是,强化学习也无法完全解决 NLP 的所有问题,强化学习在进行 NLP 时的问题主要是什么?怎么解决?

解决思路 1: 强化学习在 NLP 领域的应用,最主要的问题是 reward 信号的确定问题。由于自然语言非常稀疏,属于非连续信号,如何定义奖励函数一直是自然语言处理领域的普遍难题。包括机器翻译的 BLEU 分,文档摘要的 ROUGE 分,虽然属于相对客观的指标,但还是无法直接代表人类的语义评价。因此这个问题本质上,是如何客观评估或者定义语义的问题。我个人认为强化学习在 NLP 领域暂时还不能有很好的应用。(科大讯飞专家)

解决思路 2: 强化学习在 NLP 领域是一个非常强大,且具有潜力的工具,但不可以解决所有的 NLP 问题。如强化学习不能告诉你最好的损失函数是什么,因为它必须是语言 / 任务相关。而且经典的 RL 算法需要进行拓展去解决语言问题,比如说如何处理一个接近无限的行动空间(如语言空间),如何处理一个无法简单模仿环境的开放系统,如何在不同的对话任务中定义奖励,如何用少量样本有效训练 RL,如何为语言建模让训练迅速收敛等。(京东专家)

解决思路 3: 强化学习的序列决策特点和 NLP 的一些任务非常契合,如对话生成、摘要、翻译等等。在 NLP 中使用强化学习,首先要看适不适合转化为一个强化学习的问题,能否定义好 agent, environment, action, reward 这些基础要素。另外在训练的时候,强化学习比较不稳定,要时刻保持对算法学习过程的关注,是否在合理的状态。在不确定的时候,可以适当对交互环境、reward 函数做简化,甚至可以先观察随机策略在一个具体的 setting 下会如何工作。剩下的就是一些具体的技巧了,比如尝试多个随机数种子,做数据标准处理等。(腾讯专家)

解决思路 4: 强化学习的一个主要难点在于奖励函数的定义,对 NLP 也是如此。人类善于定性式评判,但是机器在学习时需要定量,定性到定量的转变十分困难。要解决这个问题,还是要从评价函数上多下功夫。(小米专家)

解决思路 5: 强化学习的范式对于 NLP 里面机器翻译、序列生成、对话系统、聊天机器人等传统损失函数有缺陷,但又比较容易定义奖励函数的动态系统有比较好的应用效果。但是强化学习自身的一些问题,譬如样本利用效率低,对环境过拟合和训练效果不稳定等问题也是在 NLP 里应用强化学习的痛点。(氪信专家)

问题 5: 为什么 NLP 模型在处理简单的常识性日常场景时那么困难?应该怎么改善?

解决思路 1: 这其实并不是 NLP 模型独有的问题,即使是语音、图像等,在一些日常场景中依然无法做到很好的模式识别。我们认为日常场景简单主要是因为我们从小到到大积累的各类生活经验、常识、专业知识,但机器或者单一的模型或者系统所“见过”或者训练所用到的信息非常少,导致处理日常场景比较困难。如何赋予机器常识推理的能力,是人工智能领域但共同目标,需要解决如何定义或者构建常识知识,如何让机器理解常识并学会灵活推理等一系列问题。(科大讯飞)

解决思路 2: 这是因为我们缺乏常识性数据库、好的常识表示,以及常识在具体领域中的语义理解,因此会影响决策。此外,现在大部分 NLP benchmark 评估标准并不包括常识。因此,学习常识最好的办法是使用更复杂、大规模、现实世界的任务来促进研究和技术进步,激励研究者发明可以从良好常识模型中受益的算法。(京东专家)

解决思路 3: 有些日常性场景已经做得比较好,比如情感分类、开放领域的知识型问答等。当然,通识的全能的 NLP 模型现在还没有,也不大可能有,个人的看法还是需要一个任务一个任务地去做好。(腾讯专家)

解决思路 4: 日常场景背后包含各种复杂的上下文特征 (如天气、位置、时段、人的情绪等),机器难以很好地形式化描述。人类的推理机制十分复杂,机器目前还很难模拟。可能的改善方法一是大量增加训练数据,另外可以考虑融合知识和数据进行理解和推理。(小米专家)

解决思路 5: 日常场景的口语化和开放性特征在自然语言处理中都是非常具有难度的。首先,口语化的句子一般语法结构不规整,语气助词较多,分析和建模难度增大;其次,日常场景开放性大,没有足够大的知识库来支持日常场景的建模。在相关产品或者系统的开放上需要针对这两点下功夫:加强对口语化语句的 text normalization 的工作,以及通过流程引导和产品设计减少场景的开放性。

此外,自然语言处理领域其他亟待解决的问题还有任务驱动对话系统、语言资源不足和偏见、预估最坏情况案例性能、领域适应、有意义的文本和对话生成、迁移学习、拥有长期的目标 / 任务导向的人机对话、收集数据的方法、指代消解、词义消歧、文本摘要、民主化等,这些都是业界比较关心的话题,解决了这些技术上的问题,商业化应用才能更加顺利地开展。