前言:本文是团员haiqiao的第3篇输出,后续还会有他的多篇输出文章,敬请期待!也欢迎更多团员来分享你的干货心得:)
对AI技术基础知识系统化概括一些浅显的基础认知,结合一些产品视角和项目案例延伸思考,目的在于加深对AI技术体系化的理解同时,为日后AI项目实践提供指导,迭代更新。浅显输出,仍有不完善之处,还望大家指导交流。
目录
一、AI技术认知的框架
二、以产品视角理解AI技术实现的基础逻辑
三、简述AI产品经理需了解的数据相关知识体系
四、简述AI产品经理需了解的机器学习和算法知识体系
五、简述AI产品经理需了解的AI通用技术知识
以下AI技术框架图,来自于我对AI技术学习后加以理解,将黄钊前辈分享的《人工智能产品经理的新起点》(公众号hanniman后台回复“200”,可返回下载链接)里的产业结构图做了一些补充
让这个图的每个模块的边界清晰,知彼此间联系,梳理AI技术知识体系便有条理、知晓学习的知识主次(优先级)。
作为AI产品经理除了对技术边界有基础认知以外,最重要是理解底层的逻辑,目前市面上AI产品绝大部分是模仿人类设计,是人类思维的产物,所以PM在需求调研、分析(拆解、抽象、重构)、定义边界时,把底层的逻辑想清楚,具体技术的实现逻辑和构造就会很好理解,也便于跟研发童鞋沟通。
也是本文给大家分享总结的主要内容。
所以对于我个人而言,从互联网PM转型AIPM,入门的技术认知重点主要集中在数据层、算法层、通用技术层;下文的主要具体内容也从这三个方面展开。
想偏向于技术型(算法型)产品经理可以深入了解算力、框架和算法具体推演。或者偏硬件的产品经理可以深入了解硬件的设计原理和构造等等从个人实际情况出发。
人工智能的三要素是算法(机器学习)、数据、算力,这个大家可能都知道了,三要素很大程度上是模仿人类大脑认知处理的过程而抽象演化的,来看下面这张图即可一目了然人工智能的原理。
结合上图,我尝试从产品视角拆解三要素,以便对AI技术实现的深入理解,其次明确需求目标的定义。
对于好的程序来讲,需要明确的输入和准确的输出。 假设人工智能就是一个高级的计算机程序, 那么数据就是输入,算法模型的计算结果即输出。那么中间的机器学习(算法的实现过程)是个技术黑盒子。
所以,人工智能产品设计和研发过程中,主要基于以下三个基本点展开技术项目实现:
数据的质量决定和影响算法模型的效果,所以在人工智能产品项目工作中,很多基础性研发项目都是从这个基本点出发。
例如:
a.项目数据采集阶段:
比如,从传感器的数据采集入库,在数据定义时,需要考虑硬件的属性、生态环境影响因素(光、声音、温度等),可控参数尽量在入库前定义边界,不可控的属性参数则设计技术方案应变。
再比如,要定义哪些数据是对于程序来说有效的,提取哪些参数可能是对算法模型效果最好的,关联度高(影响大)的,主要是确保数据高质量,后面工程实现的模型得到一个好的效果。
还有,定义好数据规范,可在研发工程实现前减少数据处理工作量。
b.数据标注阶段:
在这项工作中,需要产品经理重度参与数据标注工具的设计或者跟踪数据标注质量(目的是得到高质量的数据,在算法模型输出时有一个好的效果)、为什么要做程序自动标注(目的是得到实时性的高质量数据输入)。
c.数据维护阶段:
模型部署上线后,需要产品经理提需求给研发持续优化数据:补充语料库,维护语料库、丰富对话库等等,都是为了算法模型输入时有好的数据质量。
算法的效能:这里的算法效能=算法的实际价值-成本投入。考量的是算法实现的成本投入(时间、服务器(等软件成本)、算力(AI芯片等硬件成本)、研发人力等)和实际项目中输出的价值(例如模型上线后的精确程度、可用程度、复用程度、响应速度等)。
例如:
算法工程实现过程中,
a.为什么要做数据归一化处理?(为了提高模型训练效率,缩短研发时间成本)
b.为什么要设计算法模型自动做特征变量提取(同上);
c.为什么要机器要深度学习(深度学习可以处理复杂量级参数,为了更好的拟合,输出结果的精确度)
d.模型训练时为什么要采用梯度下降法(提高求最优解的效率,考虑的算法工程的时间成本)
e.为什么优化算法框架,采用技术框架考虑什么(主要是考虑算法输出的响应速度是否够快,算法是否能复用(模块化)等等)
f.在做计算机视觉相关需求时(比如自动驾驶汽车对路况识别),我们需要对AI芯片(GPU等硬件)进行严格挑选调试。(主要评估项目所需的算力,AI芯片是否满足项目的计算能力,其次考虑投入成本)
当然,评估算法效能的指标有很多,不同算法指标也不同,这里不展开,在下文提及。
a.这里“信息传达”的定义
这里信息传达指的是算法模型输出结果后,需要由机器(如手机、电脑、机器人等)展示给用户所看到、听到、肢体接触到、感受到等等的信息。
b.“信息传达”的结果与第二点的算法输出结果有什么不同
“信息表达”的结果是直接跟用户交互的结果(可以理解为表现层)即用户能从机器中看到、听到、感受到等的信息。而第二点是算法模型输出结果,更多是隐藏在程序内部(可以理解为信息架构层)。
因为算法直接输出的结果,不一定能很好地表达给用户,没有很好的体验,所以需要产品经理定义给研发具体用户体验边界(即第三点输出结果),进行优化。
c.上面理解比较抽象,我们举个具体的例子:
比如:假设百度搜索的输入框是算法模型根据用户在百度输入框输入的内容,在数据库查询相关匹配内容,这个模型是输出的结果是一个字符串的list,包含每条数据的匹配度(值)。那么这就是第二点算法模型输出的结果。至于我们在网页看到的内容,则是第三点所陈述的“信息表达”的结果。即百度产品经理需要定义拿到【上面的字符串list】展示规则,例如数据排序、展示条数/页、每条数据展示内容、点击跳转规则等等。(如下图)
d.信息传达的准确度和良好体验如何量化
信息传达的准确度,主要依赖于机器自动标注数据结果和接收用户主动反馈和评价。关于用户体验方面的评价,目前行业内并未有很好的量化标准。下文在产品指标模块我详细展开描述。
前面提到人工智能的三要素,数据输入是基础,数据的质量直接影响模型的效果。那么,AI产品经理在哪个项目环节中需要介入做哪些数据相关的工作?下面简单陈述:
1)分析AI需求需要什么样的特征数据?(依据业务目标);
2)数据从哪来、怎么定义数据需求给相关部门或者研发、怎么评估数据质量;
3)数据标注的作用、标注方式、类型、平台和工具设计或选择、工作流程、怎么评估标注质量;
4)维护数据库(标签系统数据库、业务知识库、语料库等等);
一般的AI项目数据相关的工作内容包含:从数据的构建到数据标注到后期维护管理等。如下图,罗列关于产品经理需要了解的数据相关认知,但AI产品经理入门,侧重点在数据采集、数据标注、数据维护。(下图建议在网页版打开)
AI开发项目与数据相关的流程大概有以下:
注意:一般在数据未产生且亦可通过程序自动标注的情况:数据采集和数据标注合并需求方案会在一起定义输出文档给研发同事。
以上关于AI产品经理需要知晓的数据相关详细知识内容,会在我后续文章《产品视角的数据构建及管理》中详细分享。
机器学习及算法是实现人工智能的技术方法,那么作为AI产品经理,要具备哪些机器学习及算法基础认知呢?
概括为如下几大方面内容:
首先:理解机器学习和算法基本原理、解决问题的分类、边界;
其次:理解算法工程实现的流程及跟踪协助;
最后:了解算法模型的效果评估指标并协助研发完成。
下面一张图给大家概括下,详见《 产品视角的机器学习基础认知》以及后续将分享的《产品视角的14种常见算法简单总结》。
语音识别(ASR)、自然语言处理(NLP)、语音合成(TTS)、计算机视觉(CV)、知识图谱(KG)、即时定位与地图构建(SLAM)等等AI通用技术分支。
那么,产生一个问题:他们是基于什么标准划分出来的?搞清楚这个问题是为了方便理解技术边界、分析业务问题可以用什么AI通用技术解决方案解决。
a.语音识别技术(ASR):就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术;
b.自然语言处理(NLP):实现人机间自然语言通信意味着要使计算机既能理解自然语言文本的意义,也能以自然语言文本来表达给定的意图、思想等;
c.语音合成(TTS):又称文语转换(Text to Speech)技术,能将任意文字信息实时转化为标准流畅的语音朗读出来,相当于给机器装上了人工嘴巴;
d.计算机视觉(CV):计算机视觉是使用计算机及相关设备对生物视觉的一种模拟。它的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样;
e.知识图谱(KG):用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系;
更多的就暂不列举了...
从上面蓝色加粗的表述,总结得出都包含“任务+对象”两个元素,故这里暂且总结为划分标准是机器学习技术用于处理什么类型任务及对象。若日后有新的提炼总结,再更新。
1)技术核心概念:(what)
2)工作原理:(how)
工作原理和分工(处理哪些子任务)、业界机器学习的解决方案是什么?优缺点?
3)瓶颈和机会(what)
因为文章篇幅有限,暂且先从我感兴趣的对话系统领域出发总结概括语音识别(ASR)、自然语言处理(NLP)、语音合成(TTS)这三个分支的基础认知,其他领域另择日分享。先画一张语音交互流程图:
从上图我们得知,在语音识别(ASR)之前需要做声音采集,故我们先讲讲部分。
1)任务目标:确保采集声音数据质量(毕竟前面我们提到,数据质量直接影响算法模型效果,所以我们尽量优化需求,确保声音质量符合要求)。
2)影响声音质量主要因素:
第一:环境(场景、声源、噪音等 )
第二:智能硬件(麦克风、网络响应能力(本地/离线)、唤醒响应能力等)
第三:说话人本身(声量、发音清晰度等等因素这里暂忽略)
3)确保声音采集质量的方式是:确定目标声源,且对目标声做优化;那么,实现路径是从上面的环境和智能硬件两大影响因素进行着手,例如语音激活检测、语音唤醒、麦克风阵列、全双工等,下面一一讲解:内容主要来自整理提炼黄钊前辈分享的干货《一文看懂“语音识别ASR” | AI产品经理需要了解的AI技术概念》。
A)语音激活检测(voice active detection,VAD)
a.场景问题:远场识别场景下,用户不能用手接触设备,这时受噪声影响比较大,信噪比(signal to noise ratio, SNR)较低,声音信号不清晰,使用VAD可以优化这个问题;
b.问题本质:让机器识别到有效的声音信号(声音采集的开始及结束时间节点);
b.解决方法:VAD 通过对语音起始点帧位置”截取出来的有效语音片段。
B)语音唤醒(keyword spotting,简称KWS;或voice trigger,VT)
a.场景问题
远场识别时,需要在VAD检测到人声之后,那么多个声源的声音信号,到底采集哪个是对话的声音(类似黑屋子里人群中10个人的声音,哪个才是真正跟你对话的那个)
b.问题本质:确定对话对象(即目标声源)
c.解决方法:
第一:赋予机器名字(激活词),相当于“称呼一个人,确定接下来对话的对象”。这就是通过语音唤醒,确定后续的目标声源的识别;否则,不进行识别。
第二:那么要是“10个人同时喊激活词”的情况呢,我觉得解决方案有2个:麦克风阵列(见下文)、声纹识别(这里暂不展开)
d.唤醒模式
-传统模式:先唤醒设备,等设备反馈后(提示音或亮灯),用户认为设备被唤醒了,再发出语音控制命令,缺点在于交互时间长;
-One-shot:直接将唤醒词和工作命令一同说出,如“小雅小雅,我想听周杰伦的歌”;
-Zero-shot:将常用用户指令设置为唤醒词,达到用户无感知唤醒,例如直接对车机说“导航到XX大厦”。
-多唤醒:主要满足用户个性化的需求,给设备起多个名字。
e.唤醒的评估指标
唤醒率、误唤醒率、唤醒响应时长。会进一步拆分为:安静环境下、噪音环境下、AEC环境下,用户端正常唤醒,快读唤醒,One-shot唤醒,分别去看以上3个指标。
f.优化的维度
-唤醒词的音节长度:一般技术上要求,最少3个音节,如果音节太短,一般误唤醒率会比较高
-唤醒响应时间:目前业界能做到响应时间1.5秒-3秒,大部分3秒以上(来自傅盛的文章)
-功耗(要低)。跟芯片硬件和算法配合优化,这里暂不展开
C)麦克风阵列(Microphone Array)
a.场景问题
在会议室、户外、商场等各种复杂环境下,会有噪音、混响、人声干扰、回声等各种问题,影响了对目标声源的语音质量。
b.问题本质:处理干扰声、提纯目标声源
c.解决方法:
利用麦克风阵列(一定数目的声学传感器组成),用来对声场的空间特性进行采样并处理,如下:
-语音增强(Speech Enhancement):当语音信号被各种各样的噪声(包括语音)干扰甚至淹没后,从含噪声的语音信号中提取出纯净语音的过程。
-声源定位(Source Localization):使用麦克风阵列来计算目标说话人的角度和距离,从而实现对目标说话人的跟踪以及后续的语音定向拾取。
-去混响(Dereverberation):声波在室内传播时,要被墙壁、天花板、地板等障碍物形成反射声,并和直达声形成叠加,这种现象称为混响。
-声源信号提取/分离:声源信号的提取就是从多个声音信号中提取出目标信号,声源信号分离技术则是将需要将多个混合声音全部提取出来。
关于麦克风的分类和要求、全双工(Full-Duplex)具体概念,详见上文黄钊前辈的分享,这里不多展开。
1)语音识别(Automatic Speech Recognition,ASR)是将声音转化为文本的过程,类似人类的耳朵。
2)语音识别简易流程图:
(配图来自《一文看懂“语音识别ASR” | AI产品经理需要了解的AI技术概念》)
3)预处理模块
主要整理自《AI产品经理需了解的技术知识:语音识别技术(1)》
原始语音信号传入预处理模块的目的:是为了压缩原始语音数据,提取出有代表性的特征来做后续的识别,主要分为三部分:预加重、分帧加窗、端点检测。
A)预加重
在语音识别过程中,经常会遇到原始语音数据因为噪音、背景音或次要信息的影响导致识别效果变差。
a.目的:为了提高语音质量,从含有噪声语音的信号中,尽可能提取纯净的原始语音信号。
b.方法:具体如:谱减法、自适应滤波法、小波去噪法等可详见上面的文章
B)分帧加窗
a.基本思路:保持语音信号基本不变,把语音信号分隔为一些音频段再加以处理
a.目的:提高语音信号预处理的质量和效率
b.方法:对音频每一帧处理的结果,可以看作是一个新的依赖于时间的序列,且这个序列可用于描述语音信号特征。
例如:原始语音采样序列为x(m),那么分段后的序列可以理解为x(m)乘以窗函数w(n-m)得到的。窗函数越宽,对信号的平滑作用越明显,反之,对信号几乎没有任何平滑作用。
C)端点检测:我个人理解,实质就是上文的VAD,故不赘述
4)特征提取(编码)
下面内容主要整理自《一文看懂“语音识别ASR” | AI产品经理需要了解的AI技术概念》
对于得到语音信号的每一帧,可以通过某种规则(如依照人耳听声特点提出的MFCC规则),提取信号中的特征,将其变成一个多维向量。向量中的每一个维度可以看作描述了这帧信号中的一项特征。
(配图来自《一文看懂“语音识别ASR” | AI产品经理需要了解的AI技术概念》)
5)解码
解码则是将编码得到的向量变成文字的过程,其中需要用到两个模型:声学模型和语言模型。
A)声学模型
a.基本思路:给出语音属于某个声学符号的概率
b.具体方法:通过处理编码得到的向量,将相邻的帧组合起来变成音素(如拼音中的声母韵母等),再组合起来变成单个的单词或汉字,语音输入转换成声学表示的输入。
B)语言模型
a.基本思路理解为消解多音字问题,在声学模型给出发音序列后,从候选的文字序列中找出概率最大的字符串序列;
b.目的:用来调整声学模型所得到的不合逻辑的字词,使识别结果变得正确通顺
声学模型和语言模型都需要用大量的语音和语言数据来训练。
(配图来自《一文看懂“语音识别ASR” | AI产品经理需要了解的AI技术概念》)
无论是编码过程中的特征提取规则,还是解码过程中的声学模型与语言模型,都有很多不同的种类。而“传统”识别方式与“端到端”识别方式的主要差异就体现在声学模型上。“传统”方式的声学模型一般采用隐马尔可夫模型(HMM),而“端到端”方式一般采用深度神经网络(DNN)。对于“端到端”的识别方式,声学模型的输入通常可以使用更原始的信号特征(减少了编码阶段的工作),输出也不再必须经过音素等底层元素,可以直接是字母或者汉字。在计算资源与模型的训练数据充足的情况下,“端到端”方式往往能达到更好的效果。
6)语音识别的评价指标-识别率
看纯引擎的识别率,以及不同信噪比状态下的识别率(信噪比模拟不同车速、车窗、空调状态等),还有在线/离线识别的区别。
实际工作中,一般识别率的直接指标是“WER(词错误率,Word Error Rate)”计算公式为:
7)瓶颈和机会
A)语音识别的瓶颈
比如说话场景中声源要靠近,人发音要标准,环境要安静,持续对话不能打断等等语音识别上的交互体验不够好。
B)机会
需要AI产品经理结合不同的麦克风阵列结构、模型更好的建模解决混响、噪声及回声环境问题和说法人移动分离和打断场景等交互体验,让用户感觉上等待的时间变短;降噪、优化远场识别,提高用户体验及粘性。
1)自然语言处理的定义
自然语言处理(Natural Language Processing,NLP)是理解和处理文字的过程,相当于人类的大脑。
2)自然语言处理的分工
自然语言处理(NLP)主要分为自然语言理解(Natural Language Understanding,NLU)、对话管理(Dialogue Management)、自然语言生成(Natural Language Generation,NLG)三大模块。
这么划分,我个人认为还是以“任务+对象”两个元素为标准,模拟人类大脑处理信息的分工来划分的,如下:
a.自然语言理解(NLU):对语音识别(ASR)的结果即文本信息进行分析理解,简单来说就是将用户语音输入理解分析后输出意图,故机器词、句、语义、情感等分析等确定用户意图,并表示语义给人机对话系统。
b.对话管理(DM):主要对对话过程中,上下文意图的处理,输出“执行结果”给自然语言生成(NLG)。
c.自然语言生成(NLG):对话管理机制(DM)的作用下生成找到对应要输出的自然语言文本信息。
3)NLU、DM、NLG具体如何实现
A)自然语言理解(NLU)
自然语言理解(NLU)主要包含词法分析、句法分析、语义分析、情感分析四个层面:
a.词层面的 NLU 领域包括分词(汉语、缅甸语、泰语等非拉丁语系语言需要)、词性标注(名词、动词、形容词等)、命名实体识别(人物、机构、地点等)和实体关系提取(例如人物-出生地关系、公司-所在地关系、公司收购关系等);
b.句子层面的 NLU 领域包括句法结构解析(获取句子的句法结构)和依存关系解析(获取句子组成部分的依赖关系);
c.语义层面的 NLU 领域包含语义分析(语义角色标注和语义依存关系);
d.情感分析:分析一篇文档的情感倾向。
第一:词法分析(中文词法分析)
词法分析是自然语言处理的技术基础,也是自然语言理解过程的第一层,因此词法分析的结果直接影响到后面句法和语义分析的成果。主要包括自动分词、词性标注、中文命名实体识别与抽取、消除歧义四方面内容。
详细分析内容和案例分析可参见: 《AI产品经理需了解的技术知识:自然语言理解技术NLU》、 《自然语言处理中“中文分词”技术中“自动切分”的几点理解》两篇文章。
第二:句法分析
句法分析基本任务是确定句子的句法结构。 其实说简单点, 我的理解是,中文分词是把一句话拆分成 word1, word2, word3,那么句法分析就是把一句拆分成主语,谓语,宾语….。通过句法分析,能够更快的理解一句话,比如在理解英文对话的时候,虽然有些形容词看不懂,但是我们找到动词和主语或宾语后,能够大致知道这句话的意思。
常见的句法分析:如依存关系语法:直观来讲,依存句法分析识别句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分之间的关系。同样分为基于规则和基于统计的两种方法,基本自然语言的技术中,很多都是基于“词典/规则”+“统计”的方法。
举个例子:类似讯飞开放平台的依存句法分析接口开发文档,识别句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分之间的关系。下图附其《依存句法分析标注关系》表,表中第一列是句子中的词语间的依存关系,第二列是关系的英文标注,第三列是类型的描述,第四列是示例。
例如:句子“国务院总理李克强调研上海外高桥时提出,支持上海积极探索新机制。“
依存句法分析结果:
(配图来自《依存句法分析与语义依存分析的区别》)
从分析结果中我们可以看到,句子的核心谓词为“提出”,主语是“李克强”,提出的宾语是“支持上海…”,“调研…时”是“提出”的 (时间) 状语,“李克强”的修饰语是“国务院总理”,“支持”的宾语是“探索 新机制”。
有了上面的句法分析结果,我们就可以比较容易的看到,“提出者”是“李克强”,而不是“上海”或“外高桥”,即使它们都是名词,而且距离“提出”更近。
第三:语义分析
语义分析主要是语义词义消歧、语义角色标注和语义依存关系分析。
词义消歧
词义消歧可以看作分类问题。一个词W有K个含义,对W消歧就是确定W在特定句子中究竟使用了哪一个含义,即把W分到K类中的一个。分类的依据则是和W邻近的词,即W的上下文C。
歧义可以分为两类:一类是词的语义有多种,如“bank”,可以是银行,也可以是河岸;另一类是词本身的词性也是多样的,如predicate,既能作为名词,也能作为动词。对于前者,可能需要与W相隔较远的其他词参与消歧,而对于后者,往往通过邻近的词汇就能确定W的词性了。
词义消歧方法分为有监督的消歧方法和无监督的消歧方法,详细方法可参见文章:《语义歧义消除》
语义角色标注
根据讯飞开放平台开发接口文档的定义,语义角色标注(Semantic Role Labeling, SRL) 是一种浅层的语义分析技术,标注句子中某些短语为给定谓词的论元 (语义角色),如施事、受事、时间和地点等。其能够对问答系统、信息抽取和机器翻译等应用产生推动作用。具体语义角色标注方法参考(算法):《语义角色标注》
语义依存关系分析
语义依存分析(Semantic Dependency Parsing, SDP),分析句子各个语言单位之间的语义关联,并将语义关联以依存结构呈现。使用语义依存刻画句子语义,好处在于不需要去抽象词汇本身,而是通过词汇所承受的语义框架来描述该词汇,而论元的数目相对词汇来说数量总是少了很多的。语义依存分析目标是跨越句子表层句法结构的束缚,直接获取深层的语义信息。
上面理解摘录文章,详细内容可看文章:《依存句法分析与语义依存分析的区别》
情感分析
情感分析是一种常见的自然语言处理(NLP)方法的应用,特别是在以提取文本的情感内容为目标的分类方法中。通过这种方式,情感分析可以被视为利用一些情感得分指标来量化定性数据的方法。尽管情绪在很大程度上是主观的,但是情感量化分析已经有很多有用的实践,比如企业分析消费者对产品的反馈信息,或者检测在线评论中的差评信息。
主要分析方法:基于情感词典和基于机器学习的方法,具体可参考详细内容《人工智能技术落地:情感分析概述》
B)对话管理(DM)
人与机器的多轮对话,模拟于真实的人与人的多轮对话,下面举个例子,理解对话管理在人机对话交互是怎么工作的:
1)假设:我们人类是如何在现实生活中完成一次多轮对话的
假设甲乙两个人,甲要解决个问题,想通过咨询乙得到解决方案?大字母表示信息,小写字母表示行为。
第一步:甲提问的一个问题(信息A)
第二步:乙理解信息A,并且做出判断在自己大脑里的信息是否满足能马上给答案(a)?
第三步:乙开始找答案(信息B对应信息A)
a.假设乙判断可以马上回答甲答案(b),就开始组织答案(c)(信息B)
b.假设乙判断暂时无法给出答案(d),需要更多补充信息辅助给出正确的答案,
那么乙就会通过各种方式找需要补充信息(e)(可能问甲确认(f),又或者可能通过各种方式查询信息(g),给出答案)
第四步:根据上面第三步若是第1种情况,则乙需要回答甲即可,那么一个多轮对话基本结束了。(暂不讨论甲对答案是否满意,延伸问题)
若是上面第三步的情况2,则乙需要做以下几件事:
第一:判断哪些信息需要补充(h),比如信息点C,信息点D,信息点E,
第二:判断信息点C.D.E是否都需要一定知道(i)?从哪里获取(j)?哪些是需要再找甲再对话来确认,哪些信息通过查询资料获得(k)?
第三:乙假设信息点C.D都是通过问甲获得,那么需要判断先问信息点C再问信息点D,也就是确认询问的顺序(l)。
第四:处理意外情况:比如出现乙在询问甲时,判断甲答非所问或者切换主题跳跃去另外的问题(m),这时候乙怎么应对(n)。
第五:当信息点C.D.E均满足条件,乙需要把信息B(方案)整理出(o),反馈给甲,结束对话。
2)抽象对话的实体与事件关系
a.分类实体
b.归纳概括实体角色作用
第一:判断信息是什么,是否满足当前对话状态需要:a、b、d、i、m
第二:决策接下来执行什么行为动作:c、e、f、g、h、j、k、l、n、o
3)抽象定义:对话管理的功能模块
根据第二点的总结,在DM中,如下人机对话示意图:
、 需要对话系统两大功能模块来提供较好的人机对话体验,即对话管理中包含的DST(对话状态维护)以及 Policy(动作候选排序)两大模块;
DST即Dialog state tracking(对话状态维护)来判断之前得到的信息state来确定这个slot填了还是没填,还差什么slot(即上方提到的“是否满足对话状态所需的信息点”);得到state后, Dialog Policy负责决策,执行下个动作(action),这个action交付给自然语言生成(NLG)模块来生成一句话回复用户。
那么slot是什么,是词槽。介绍词槽与接口槽:参考《填槽与多轮对话 | AI产品经理需要了解的AI技术概念》
将“利用用户话中关键词填写的槽”叫做词槽,“利用用户画像以及其他场景信息填写的槽”叫做接口槽。
举个例子:『我明天要坐火车去上海』。其中,分别将『明天』、『上海』填入名为『出发时间』、『目的地』的词槽中,而我当前所在的位置,则填入到了名为『出发地』的接口槽中。
4)怎么通过填槽完成“多轮对话”的?
了解前面的关于槽、槽类型、槽组、槽位等概念后;我们可以尝试来的梳理出完整的多轮人机对话是如何实现的。
实际业务场景中,完整的多轮对话过程通常会以树的形式存在,每个节点存在一个或多个槽组,用于获取一种或多种信息,节点间的槽组为依赖关系,节点内的槽组为平级关系。树中包含多个节点,代表处理这件事情的一个步骤。
下面我们将人机多轮对话进行复杂化,示意图如下:
上图将多轮对话定义为一件事情的处理,槽组/槽定义为一种信息的获取,槽位定义为信息的一种获取方式,多轮对话树结构中的一个节点也可定义为处理事情的一个步骤,一件事情的处理包含多个步骤,每个步骤中需要补全一种或多种信息,每种信息存在一种或多种获取方式。
5)填槽的过程机器学习算法怎么实现的?
简单介绍任务型和闲聊型的基本实现思路,具体详细内容见文章:《一文读懂智能对话系统》对对话系统算法实现的整理的内容:
C)NLG
自然语言生成(NLG)是自然语言处理(NLP)的一部分,将非语言格式的数据自动生成人类可以理解的自然语言格式。通俗来说,“翻译成人能理解的语言”
自然语言生成系统框架及实现逻辑:
自然语言生成系统主要的框架可以分为管道型和一体化型两种,一体化型的自然语言生成系统更符合人脑的思维过程,但实现较为困难;常用的还是流线型的自然语言生成系统包括文本规划,句子规划,句法实现三个模块,文本规划决定说什么?句法实现决定怎么说,句子规划则负责让句子更加连贯。
1)下图:流线型的自然语言生成系统简易框架图
2)根据上图的系统框架,给出在大致流线型自然语言生成的6个步骤:
下面总结摘录自《一文看懂自然语言生成 - NLG(6个实现步骤+3个典型应用)》
a.文本规划模块:
第一步:文本内容确定 – Content Determination
作为第一步,NLG 系统需要决定哪些信息应该包含在正在构建的文本中,哪些不应该包含。通常数据中包含的信息比最终传达的信息要多。
b.句子规划模块:
第二步:文本结构 – Text Structuring
确定需要传达哪些信息后,需要合理的组织文本的顺序。例如在报道篮球比赛时,会优先表达「什么时间」「什么地点」「哪2支球队」,然后再表达「比赛的概况」,最后表达「比赛的结局」。
第三步:句子聚合 – Sentence Aggregation
不是每一条信息都需要一个独立的句子来表达,将多个信息合并到一个句子里表达可能会更加流畅,也更易于阅读。
c.句法实现模块:
第四步:语法化 – Lexicalisation
当每一句的内容确定下来后,就可以将这些信息组织成自然语言了。这个步骤会在各种信息之间加一些连接词,看起来更像是一个完整的句子。
第五步:参考表达式生成 – Referring Expression Generation|REG
这个步骤跟语法化很相似,都是选择一些单词和短语来构成一个完整的句子。不过他跟语法化的本质区别在于“REG需要识别出内容的领域,然后使用该领域(而不是其他领域)的词汇”。
第六步:语言实现 – Linguistic Realisation
最后,当所有相关的单词和短语都已经确定时,需要将它们组合起来形成一个结构良好的完整句子。
D)NLP的难度及优化路径
自然语言处理的难点主要因人的表述具有随机性、非理性性、歧义性以及对话场景(业务)极具复杂性特点,导致人机对话在应用场景下面临着各种各样的瓶颈,
总结如下挑战:
1)表述多样性及多变性:包括话题切换、表达歧义不清、鲁棒性
2)业务复杂性
3)回复人性化和个性化体验
针对以上的挑战,目前的解决思路如下:
a.从算法模型及框架方面解决:
例如解决“多样性”问题
通过深度学习RNN/LSTM将上下文(所有之前的话语和当前消息的连接)和候选响应分别编码到上下文向量和回复向量中,然后根据这两个向量计算出匹配度分数。目前业界通过基于检索的对话框架进一步改进了话语关系和上下文信息的利用,通过将上下文中的语句与卷积神经网络的不同层级进行匹配,然后通过一个递归的神经网络在时间序列中堆积这些向量,以建立对话之间的关系。
b.优化知识库方面解决:
例如解决“业务复杂性”和“回复个性化”问题
提高召回率和准确率,需要完善知识库。人工补充知识库是非常困难的,机器人需要有自动学习能力,根据历史对话数据,自动总结及挖掘不在知识库内的高频问句,补充和完善知识库。
1)定义
通俗来说,让机器说话,类似“人类用嘴说话”。 TTS技术(Text-To-Speech,语音合成),是将文字(text)转化为声音(波形信号)
2)语音合成主要技术实现方法
a.拼接法
基本思路:事先录制大量语音,选择基本发音单位拼接而成(比如百度用郭德纲的声音)
特点:成本高(上百万)、语音质量较高(相对参数法)、数据库要求大。
b.参数法
基本思路: 使用统计模型产生语音参数转化为波形
特点:成本相对较低(几十万);发音自然度没拼接法好(可用DeepMind的WaveNet训练优化);数据库要求较小;
3)TTS的评估
a.主观指标:自然度为主
让不同用户、专家试听评测:声音的自然度;ABtest对比。
b.客观指标
发音的准确度、实时率、响应时间、内存指标等
4)TTS的技术边界、瓶颈
a. 边界
b. 瓶颈
以上内容总结自黄钊前辈分享的文章《语音合成 TTS | AI 产品经理需要了解的 AI 技术概念》,非常全面且深度的TTS领域的认知,建议详细看。
但,我个人还建议看下以下两篇文章:
1.了解语音合成技术的发展历史,目的一方面了解技术原理的演化,另一方面方便日后在产品体验设计中可以找到优化方向和灵感。
2. 了解业界常用的深度学习如WaveNet在语音合成中应用基础认知,方便知道技术边界及原理,日后可以跟研发有效沟通。
团员haiqiao历史文章汇总
-END-
以上内容,来自饭团“AI产品经理大本营”,点击这里可关注:http://fantuan.guokr.net/groups/219/ (如果遇到支付问题,请先关注饭团的官方微信服务号“fantuan-app”)
---------------------
作者:黄钊hanniman,图灵机器人-人才战略官,前腾讯产品经理,7年AI经验,10年互联网背景,微信公众号/知乎/在行ID“hanniman”,饭团“AI产品经理大本营”,分享人工智能相关原创干货,200页PPT《人工智能产品经理的新起点》被业内广泛好评,下载量1万+。