热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

情感计算是人机交互核心?谈深度学习在情感分析中的应用

除自然语言理解(NLU)外,情感计算(Affective Computing)也成为近年来 AI 领域热门的研究方向之一。其中针对中文语境里人机交互中的情感、情绪识别与理解,竹间智

除自然语言理解(NLU)外,情感计算(Affective Computing)也成为近年来 AI 领域热门的研究方向之一。其中针对中文语境里人机交互中的情感、情绪识别与理解,竹间智能已经做了许多有益的探索,特别是如何利用情感、情绪分析,来帮助机器人实现对「对话意图」与「深层语义」的更好理解。本文将梳理一下情感计算在人机交互中的价值,同时分享一些情感分析的工具与方法。希望对从事人机交互研究的朋友们有所启发。


情感计算在人机交互中的作用


在谈论情感计算之前,先来说说情感本身在人类信息沟通中的意义。


情感对于人类的智力、理性决策、社交、感知、记忆和学习以及创造都有很重要的作用,甚至有研究显示「人类交流中 80% 的信息都是情感性的信息」。但为什么不是内容,而是情感能传递最多的状态信息呢?其实从认知科学角度来看,情感本身是高级智能的一部分。作为大脑运行资源的调配者,情感状态的不同会导致大脑计算和分配资源的方式有巨大差异,思维执行路径也会完全不同。另外,人类进化使其情感判断的准确性不断提高,不断的正向反馈也使得我们越来越依赖用识别对方情感的方法来判断其行为倾向,甚至已经成为自动运行的认知方式了。


由于情感在人类信息沟通中的意义重大,所以情感计算是实现人性化的人机交互过程中必不可少的部分,情感识别与理解技术也是人机交互的基础性技术之一。在此基础上,「需求分析」、「深度用户建模」、「情感表达」、「人性化交互体验」等更深入的交互设计才能成为可能。


  • 拿深度建模来说,通过和人聊天,AI 可以用情感分析对实体进行高效率的自动化标注,实现专属的情感词典。了解用户的偏好甚至偏好程度,并利用这些信息进行建模,久而久之就能够实现「个性化」,而不是像 Siri 这种号称个人助手却实际上不够个性化的存在。

  • 对情感表达来说,可以实现人机对话系统对情感的诱导。在判断出情感之后就可以用不同的回复来改变情感倾向,比如对话系统能判断接下来的哪一句答复能让用户产生一个情感倾向,如高兴、惊讶或伤心等。事实上能够让人产生感受就是在进一步实现更人性化的交互。


人性化交互体验的应用方向是不言自明的,当智能体的「智商」没有过于显著的差别的时候,一个稍微有些情商的智能系统就会更容易被选择。当然这一点的实现需要一整套的情感分析系统。


从文本情感分析到多模态情感分析


一般情况下,我们探讨的情感分析多指文本中的情感分析,但多维度的情感分析,如文字+图片+表情+颜文字的综合分析,文本+语音+图像的综合,即多模态情感分析,是目前来说,比较前沿和更为重要的情感分析的研究方向。


对于多模态情感分析研究的必要性,这里需要提一个概念——「情感带宽」,即人类能表达的情感的信息量的大小和维度。比如面对面交流时,情感性的信息往往是从语音语调、面部表情、肢体等多个维度表达出来的。然而到了人机交互中,情感宽带的整个范式会发生较大的变化,如通过人机对话系统交流时,少了肢体这个维度,人类的情感带宽似乎瞬间骤降了。但实际上也增加了几个新的输出维度,如图片、表情包、回复时间的长短等。


除自然语言理解技术外,人机交互的另一困难就是信息维度的稀疏性。因此人机交互中情感分析应尽可能从多个维度入手,将缺失的情感带宽补上——多模态情感分析成为一个重要的研究方向。内部的多模态分析即 emoji+照片+表情包+文本长度等,外部的多模态即加入面部表情识别+提供的标签(性格,爱好,年龄等)+语音等。如竹间智能在构建基于自然语言理解技术的人机交互系统时,加入多模态情感分析技术(文字、语音、图像),打破了以往情感识别在单一文本维度上的局限性,让机器能进一步读懂、听懂、看懂人类,从而达到了更好的人机交互效果。


情感分析的工具和方法


深度学习在情感分析中的应用已经较为普遍了,如利用 LSTM 结合句法分析树、基于卷积神经网络和支持向量机等。一般情况下,对于各种方法的综合创新应用,能达到取长补短的效果,进而能够提高情感分析的准确率,另外还能从无标注的文本里学习到其中的隐藏特征,以实现端到端的分类。


文本情感分析最常见的 dataset 是 IMDB Movie Reviews,那么该如何入手与练习呢?下面以 python 为例,从简单的文本情感分析说起。


前置作业:


1. 先安装 Keras (https://keras.io/),Keras 是一个 high-level networks API,底层使用了 Tensorflow, CNTK, 或 Theano 运算 (这取决于具体安装了哪一个)。

Keras 的安装指南: https://keras.io/#installation


情感计算是人机交互核心?谈深度学习在情感分析中的应用


2. 当 Keras 已安装完毕,则 IMDB 可由此方式入手 (https://keras.io/datasets/)。此 API 的底层:https://github.com/fchollet/keras/blob/master/keras/datasets/imdb.py

接下来,依序分享一下怎么用 LSTM, Bi-directional LSTM, CNN, CNN-LSTM 等 Neural Network 来解情感分析(sentiment analysis)的问题。


LSTM (long-short term memory)


LSTM 的详细原理,在此不加赘述,有兴趣的朋友,可以参考这篇文章:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 


以下会使用 RNN 的 concept 来解 sentiment analysis 的问题。


example: 假设,使用者输入:「我今天好伤心」,分词完的结果是「我 今天 好 伤心」,则我们希望 model 可以输出「难过」。model 里面的简单运算概念如下图所示。LSTM 会一直把资讯往后传,并拥有记忆功能,最后整合所有资讯后,再做出判断。

情感计算是人机交互核心?谈深度学习在情感分析中的应用

透过 Keras,可以快速建出上面的模型:


情感计算是人机交互核心?谈深度学习在情感分析中的应用


  • 完整代码:https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py

  • 详细的代码解说: http://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/


Bi-directional LSTM


Bi-directional LSTM 和 LSTM 非常类似,只是把句子透过两个不同方向来看,如下图所示:


情感计算是人机交互核心?谈深度学习在情感分析中的应用


这种做法有一个好处,以这句话「我今天好伤心」为例,重点刚好在句尾。但如果换一个句子,「真开心,明天要出去玩了」,此句的重点则在句首。因此,可以用 Bi-directional LSTM 来处理这种问题。


一样,透过 Keras,可以快速建出这种模型:


情感计算是人机交互核心?谈深度学习在情感分析中的应用


  • 只要在 LSTM 外面包上「Bidirectional」这个 wrapper,马上就能制作完成。

  • 完整代码:https://github.com/fchollet/keras/blob/master/examples/imdb_bidirectional_lstm.py


CNN


近年来 CNN 在影像领域大有突破,不过也有人把 CNN 的方法应用到文字处理上面。在此先分享一篇 arxiv 上的文章,「Recent Advances in Convolutional Neural Networks」,于 2017 年年初做了更新:https://arxiv.org/pdf/1512.07108.pdf。


里面对 CNN 做了 overview,同时在「5.10. Natural Language Processing」对 NLP 做了些整理。


情感计算是人机交互核心?谈深度学习在情感分析中的应用


然后我们回归主题,怎么使用 CNN 来做情感分类呢?


  • 详细的原理,可以参考这篇文献:https://arxiv.org/abs/1408.5882

  • 这篇则是知名的博客 WildML 写的介绍:http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/


不过,从实作面的角度来看,透过 Keras,CNN 的原理也不是太重要,只要找对 API 即可 (Conv1D)。在以下这个实作范例中,大约需要 20 行的代码,即可建出这个 model:


情感计算是人机交互核心?谈深度学习在情感分析中的应用


完整代码:https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py


CNN-LSTM


上面介绍完 LSTM & CNN,那是不是有办法可以把两者的特性结合起来,融合成一个 CNN-LSTM 的 model?透过 Keras,当然还是可以的!


情感计算是人机交互核心?谈深度学习在情感分析中的应用


完整代码: https://github.com/fchollet/keras/blob/master/examples/imdb_cnn_lstm.py

以上主要分享了比较普遍的实作面内容,也许能够帮助大家解决手头上的问题。不过上面用 LSTM 与 CNN 来解 sentiment analysis 的问题大约是近 5 年内发展的技术,不是最近最新的技术。


关于多模态情感分析:最直觉的做法,就是把文本、语音、图像的原始输入资料,利用深度学习的技术,映射到共同的 feature space 中。以文本的例子来说,原始输入的文字,使用分词(前处理)转成字符与字元后,透过一层 embedding layer 映射到向量空间,可以使用 CNN 去撷取里面的信息。同理,以图像为例子,原始输入的照片,利用影像前处理 (ex: whitening) 后,再使用 CNN 去撷取里面的讯息。


  • RNN 在语音和图像上的情感分析,可参考:http://www.professeurs.polymtl.ca/christopher.pal/RNN-emotions-kahou.pdf

  • 最新的 Deep Learning for NLP 的技术,可以参考由 NLP 大牛 Chris Manning 和 Richard Socher 在 Stanford 合开的课程: http://cs224d.stanford.edu/syllabus.html

  • 课程视频:https://www.you tu be.com/playlist?list=PL3FW7Lu3i5Jsnh1rnUwq_TcylNr7EkRe6 


推荐阅读
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 本文介绍了如何将PPT格式转换成PDF,并推荐了一款高效的PPT转换成PDF转换器。该转换器利用最新的超线程技术核心和多核心CPU性能,提高了转换效率和转换质量。同时,该转换器具备万能转换模式,可以轻松实现不同类型、不同内容和不同排版的PPT文件的转换。用户可以通过下载链接获取该转换器。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
author-avatar
蜡笔小昕廖廖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有