hmm是一家零食公司。
HMM零食渴望突破简单的售卖,积极的在产品生产和研发以及包装销售过程中让客户参与其中,陪伴客户一起感知属于这个时代的最青春。始终提供超越用户想象的体验。 与传统的零食相比,更强调品牌人格化、供应商精选、双向运营、用户互动和体验。
扩展资料:
HMM在销售零食同时推广品牌IP:韩美美。HMM零食的品类涵盖25款SKU,从果干到梅干,一共9款单品。“我们每一次新产品上线都需要经过100名女性用户试吃体验,然后根据他们的意见作出修改。”
HMM零食积极的在产品生产和研发以及包装销售过程中让客户参与其中,陪伴客户一起感知属于这个时代的最青春。
参考资料来源:百度百科—HMM
隐马尔可夫模型(HMM)是指隐马尔可夫模型,是一种用于描述参数未知的马尔可夫过程的统计模型。困难在于从可观察的参数中确定过程的隐藏参数。这些参数然后被用于进一步的分析,例如模式识别。
隐马尔可夫模型最早是由伦纳德·鲍姆(Leonard E Baum)和其他作者在20世纪60年代下半叶的一系列统计论文中描述的。隐马尔可夫模型的最初应用之一是语音识别,始于20世纪70年代中期。
20世纪80年代后半期,隐马尔可夫模型开始应用于生物序列的分析,特别是DNA。自此,隐马尔可夫模型逐渐成为生物信息学领域不可或缺的技术。
扩展资料:
隐马尔可夫模型三大假设。
1)齐次马尔可夫假设。又叫一阶马尔可夫假设,即任意时刻的状态只依赖前一时刻的状态,与其他时刻无关。符号表示为:
2)观测独立性假设。任意时刻的观测只依赖于该时刻的状态,与其他状态无关。
3)参数不变性假设。上面介绍的三大要素不随时间的变化而改变,即在整个训练过程中一直保持不变。
参考资料来源:百度百科-隐马尔可夫模型
语音识别技术研究让人更加方便地享受到更多的社会信息资源和现代化服务,对任何事都能够通过语音交互的方式。 我整理了浅谈语音识别技术论文,欢迎阅读!
浅谈语音识别技术论文篇一语音识别技术概述
作者:刘钰 马艳丽 董蓓蓓
摘要:本文简要介绍了语音识别技术理论基础及分类方式,所采用的关键技术以及所面临的困难与挑战,最后讨论了语音识别技术的 发展 前景和应用。
关键词:语音识别;特征提取;模式匹配;模型训练
Abstract:This text briefly introduces the theoretical basis of the speech-identification technology,its mode of classification,the adopted key technique and the difficulties and challenges it have to faceThen,the developing prospect ion and application of the speech-identification technology are discussed in the last part
Keywords:Speech identification;Character Pick-up;Mode matching;Model training
一、语音识别技术的理论基础
语音识别技术:是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高级技术。语音识别以语音为研究对象,它是语音信号处理的一个重要研究方向,是模式识别的一个分支,涉及到生 理学 、心理学、语言学、 计算 机 科学 以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终目标是实现人与机器进行 自然 语言通信。
不同的语音识别系统,虽然具体实现细节有所不同,但所采用的基本技术相似,一个典型语音识别系统主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。此外,还涉及到语音识别单元的选取。
(一) 语音识别单元的选取
选择识别单元是语音识别研究的第一步。语音识别单元有单词(句)、音节和音素三种,具体选择哪一种,由具体的研究任务决定。
单词(句)单元广泛应用于中小词汇语音识别系统,但不适合大词汇系统,原因在于模型库太庞大,训练模型任务繁重,模型匹配算法复杂,难以满足实时性要求。
音节单元多见于汉语语音识别,主要因为汉语是单音节结构的语言,而 英语 是多音节,并且汉语虽然有大约1300个音节,但若不考虑声调,约有408个无调音节,数量相对较少。因此,对于中、大词汇量汉语语音识别系统来说,以音节为识别单元基本是可行的。
音素单元以前多见于英语语音识别的研究中,但目前中、大词汇量汉语语音识别系统也在越来越多地采用。原因在于汉语音节仅由声母(包括零声母有22个)和韵母(共有28个)构成,且声韵母声学特性相差很大。实际应用中常把声母依后续韵母的不同而构成细化声母,这样虽然增加了模型数目,但提高了易混淆音节的区分能力。由于协同发音的影响,音素单元不稳定,所以如何获得稳定的音素单元,还有待研究。
(二) 特征参数提取技术
语音信号中含有丰富的信息,但如何从中提取出对语音识别有用的信息呢特征提取就是完成这项工作,它对语音信号进行分析处理,去除对语音识别无关紧要的冗余信息,获得影响语音识别的重要信息。对于非特定人语音识别来讲,希望特征参数尽可能多的反映语义信息,尽量减少说话人的个人信息(对特定人语音识别来讲,则相反)。从信息论角度讲,这是信息压缩的过程。
线性预测(LP)分析技术是目前应用广泛的特征参数提取技术,许多成功的应用系统都采用基于LP技术提取的倒谱参数。但线性预测模型是纯数学模型,没有考虑人类听觉系统对语音的处理特点。
Mel参数和基于感知线性预测(PLP)分析提取的感知线性预测倒谱,在一定程度上模拟了人耳对语音的处理特点,应用了人耳听觉感知方面的一些研究成果。实验证明,采用这种技术,语音识别系统的性能有一定提高。
也有研究者尝试把小波分析技术应用于特征提取,但目前性能难以与上述技术相比,有待进一步研究。
(三)模式匹配及模型训练技术
模型训练是指按照一定的准则,从大量已知模式中获取表征该模式本质特征的模型参数,而模式匹配则是根据一定准则,使未知模式与模型库中的某一个模型获得最佳匹配。
语音识别所应用的模式匹配和模型训练技术主要有动态时间归正技术(DTW)、隐马尔可夫模型(HMM)和人工神经元 网络 (ANN)。
DTW是较早的一种模式匹配和模型训练技术,它应用动态规划方法成功解决了语音信号特征参数序列比较时时长不等的难题,在孤立词语音识别中获得了良好性能。但因其不适合连续语音大词汇量语音识别系统,目前已被HMM模型和ANN替代。
HMM模型是语音信号时变特征的有参表示法。它由相互关联的两个随机过程共同描述信号的统计特性,其中一个是隐蔽的(不可观测的)具有有限状态的Markor链,另一个是与Markor链的每一状态相关联的观察矢量的随机过程(可观测的)。隐蔽Markor链的特征要靠可观测到的信号特征揭示。这样,语音等时变信号某一段的特征就由对应状态观察符号的随机过程描述,而信号随时间的变化由隐蔽Markor链的转移概率描述。模型参数包括HMM拓扑结构、状态转移概率及描述观察符号统计特性的一组随机函数。按照随机函数的特点,HMM模型可分为离散隐马尔可夫模型(采用离散概率密度函数,简称DHMM)和连续隐马尔可夫模型(采用连续概率密度函数,简称CHMM)以及半连续隐马尔可夫模型(SCHMM,集DHMM和CHMM特点)。一般来讲,在训练数据足够的,CHMM优于DHMM和SCHMM。HMM模型的训练和识别都已研究出有效的算法,并不断被完善,以增强HMM模型的鲁棒性。
人工神经元 网络 在语音识别中的 应用是现在研究的又一 热点。ANN本质上是一个自适应非线性动力学系统,模拟了人类神经元活动的原理,具有自学、联想、对比、推理和概括能力。这些能力是HMM模型不具备的,但ANN又不个有HMM模型的动态时间归正性能。因此,现在已有人研究如何把二者的优点有机结合起来,从而提高整个模型的鲁棒性。
二、语音识别的困难与对策
目前,语音识别方面的困难主要表现在:
(一)语音识别系统的适应性差,主要体现在对环境依赖性强,即在某种环境下采集到的语音训练系统只能在这种环境下应用,否则系统性能将急剧下降;另外一个问题是对用户的错误输入不能正确响应,使用不方便。
(二)高噪声环境下语音识别进展困难,因为此时人的发音变化很大,像声音变高,语速变慢,音调及共振峰变化等等,这就是所谓Lombard效应,必须寻找新的信号分析处理方法。
(三)语言学、生 理学 、心理学方面的研究成果已有不少,但如何把这些知识量化、建模并用于语音识别,还需研究。而语言模型、语法及词法模型在中、大词汇量连续语音识别中是非常重要的。
(四)我们对人类的听觉理解、知识积累和学习机制以及大脑神经系统的控制机理等分面的认识还很不清楚;其次,把这方面的现有成果用于语音识别,还有一个艰难的过程。
(五)语音识别系统从实验室演示系统到商品的转化过程中还有许多具体问题需要解决,识别速度、拒识问题以及关键词(句)检测技术等等技术细节要解决。
三、语音识别技术的前景和应用
语音识别技术 发展 到今天,特别是中小词汇量非特定人语音识别系统识别精度已经大于98%,对特定人语音识别系统的识别精度就更高。这些技术已经能够满足通常应用的要求。由于大规模集成电路技术的发展,这些复杂的语音识别系统也已经完全可以制成专用芯片,大量生产。在西方 经济 发达国家,大量的语音识别产品已经进入市场和服务领域。一些用户交机、电话机、手机已经包含了语音识别拨号功能,还有语音记事本、语音智能玩具等产品也包括语音识别与语音合成功能。人们可以通过电话网络用语音识别口语对话系统查询有关的机票、 旅游 、银行信息,并且取得很好的结果。
语音识别是一门交叉学科,语音识别正逐步成为信息技术中人机接口的关键技术,语音识别技术与语音合成技术结合使人们能够甩掉键盘,通过语音命令进行 *** 作。语音技术的应用已经成为一个具有竞争性的新兴高技术产业。
参考 文献 :
[1]科大讯飞语音识别技术专栏 语音识别产业的新发展 企业 专栏通讯世界,20072:(总l12期)
[2]任天平,门茂深语音识别技术应用的进展科技广场河南科技,20052:19-20
[3]俞铁城科大讯飞语音识别技术专栏语音识别的发展现状企业专栏通讯世界,20062 (总122期)
[4]陈尚勤等近代语音识别西安: 电子 科技大学出版社,1991
[5]王炳锡等实用语音识别基础Practical Fundamentals of Speech Recognition北京:国防 工业 出版社,2005
[6](美)L罗宾纳语音识别基本原理北京:清华大学出版社,1999
点击下页还有更多>>>浅谈语音识别技术论文
在语音识别中,HMM的每个状态都可对应多帧观察值,观察值概率的分布不是离散的,而是连续的,适合用GMM来进行建模。HMM模块负责建立状态之间的转移概率分布,而GMM模块则负责生成HMM的观察值概率。
模型自适应: 由于各地口音、采集设备、环境噪声等音素的差异,已训练过的GMM-HMM很可能和新领域的测试数据不匹配,导致识别效果变差,需要做自适应训练。
MAP(最大后验概率估计): 算法本质是重新训练一次,并且平衡原有模型参数和自适应数据的估计。
MLLR(最大似然线性回归): 算法核心思想是将原模型的参数进行线性变换后再进行识别,其优点是使用少量语音即可以对所有模型进行自适应训练,只要得到线性变换矩阵即可。
每个音素(或三音素)用一个 HMM 建模,每个 HMM 状态的发射概率对应一个 GMM。GMM-HMM 的目的即是找到每一帧属于哪个音素的哪个状态。GMM-HMM 的训练使用自我迭代式的 EM 算法,更直接的方式是采用维特比训练,即把EM算法应用到GMM参数的更新上,要求显示的输入每一帧对应的状态,使用带标注的训练数据更新GMM的参数,这种训练方法比Baum-Welch算法速度更快,模型性能却没有明显损失。
1、首次对齐时把训练样本按该句的状态个数平均分段。
2、每次模型参数的迭代都需要成对的使用gmm-acc-stats-ali和gmm-est工具。
3、进行多轮迭代训练后使用gmm-align-compiled工具通过其内部的维特比算法生成对齐结果。
单因子模型的基本假设是:一个音素的实际发音,与其左右相邻或相近的音素(上下文音素)无法。三因子结构中的每一个音素建模实例,都由其中心音素及其左右各一个上下文音素共同决定。无论是单因子还是三因子,通常都使用三状态的HMM结构来建模。为了解决三因子模型参数爆炸问题,将所有的三因子模型放到一起进行相似性聚类(决策树),发音相似的三因子被聚类到同一个模型,共享参数。训练脚本:steps/train_deltassh,目标训练一个10000状态的三因子系统:
1、以单因子为基础,训练一个5000状态的三因子模型
2、用5000状态的模型重新对训练数据进行对齐,其对齐质量必然比单因子系统对齐质量高
3、用新的对齐再去训练一个10000状态的三因子系统
phone-id:音素的 ID,参见 data/lang/phonestxt,强制对齐的结果不含 0(表示<eps>)和消歧符 ID;
hmm-state-id:单个 HMM 的状态 ID,从 0 开始的几个数,参见 data/lang/topo;
pdf-id:GMM 的 ID,从 0 开始,总数确定了 DNN 输出节点数,通常有数千个;
transition-index:标识单个 Senone HMM 中一个状态的不同转移,从 0 开始的几个数;
transition-id:上面四项的组合 (phone-id,hmm-state-id,pdf-id,transition-index),可以涵盖所有可能动作,表示哪个 phone 的哪个 state 的哪个 transition 以及这个 state 对应的 pdf 和这个 transition 的概率,其中元组 (phone-id,hmm-state-id,pdf-id) 单独拿出来,叫 transition-state,与 transition-id 都从1开始计数。
关系:transition-id可以映射到唯一的transition-state,而transition-state可以映射到唯一的pdf-id,因此transition-id可以映射到唯一的pdf-id。pdf-id不能唯一的映射成音素,因此kaldi使用transition-id表示对齐的结果。
语音识别过程是在解码空间中衡量和评估所有的路径,将打分最高的路径代表的识别结果作为最终的识别结果。传统的最大似然训练是使正确路径的分数尽可能高,而区分性训练则着眼于加大这些路径之间的打分差异,不仅要使正确路径的分数仅可能高,还要使错误路径尤其是易混淆路径的分数尽可能低。
常用的区分性训练准则有最大互信息、状态级最小贝叶斯风险、最小音素错误。
分子:对于某条训练数据,其正确标注文本在解码空间中对应的所有路径的集合。
分母:理论上值整个搜索空间。通常会通过一次解码将高分路径过滤出来,近似整个分母空间,从而有效的减小参与区分性优化的分母规模。
词格(Lattice):分子、分母其实都是解码过程中一部分解码路径的集合,将这些路径紧凑有效的保存下来的数据结构就是词格。
语音识别框架中的经典的声学模型是:基于隐马尔可夫(HMM)的声学模型
本文总结GMM-HMM在声学模型的对应关系及作用,不对GMM和HMM做过多介绍。
一个声学模型是一组HMM
HMM参数:初始概率、转移概率、观察概率
基于HMM的声学模型需要人工定义的是:
1HMM中状态数
2初始概率(实践中一般令其恒等于1)
3转移概率(该项对识别结果影响很小,所以设为固定值,不在训练中更新)
4每个状态的概率分布函数(一个HMM状态下一个帧的特征的PDF,本节的PDF是GMM)
基于HMM的声学模型主要包含的信息是:状态的定义、各状态的观察概率分布,本文为GMM,因此声学模型也叫GMM-HMM模型。其他的如:使用神经网络对HMM的观察概率分布建模的被称为NN-HMM模型。
HMM状态的物理意义可以认为是:音素的发声状态,习惯上分为“初始态”、“稳定态”、“结束态”,因此可以用三个状态建模一个音素的发音。也可以使用两个状态来表示“起始帧”、“其他帧”。
声学模型可以计算某一帧特征对应某一状态的 声学分 ,也就是该帧对应该状态的对数观察概率,或对数似然值。
一个音素:多个连续的HMM状态,一个HMM模型
一帧特征:一个HMM状态
一个音素:多个帧特征
输入连续的语音帧的声学特征如MFCC,例:o1 o2 o3 on
识别过程:为特征序列匹配状态序列,例:s1 s2 s3 sn 其中不同的s可能为相同的状态。
声学模型作用就是计算声学分
输入:特征序列、特征序列对应的状态序列(每一帧对应一个状态)
输出:HMM的观察概率GMM模型的参数
优化算法:EM算法
GMM参数可使用EM算法迭代,但是在训练过程中也需要 特征序列和标注文本(音素、状态)的对应关系,因此,需要对特征序列和标注文本 对齐 。
对齐 : 通过特征序列和标注文本获取每个帧对应的状态
对齐的过程需要声学模型,而声学模型的训练也需要对齐结果,因此这也是一个迭代地过程。
Kaldi中第一次训练声学模型均等地把语音帧对应到相应的状态,训练几轮后,使用训练中的声学模型通过维特比算法生成对齐结果,然后不断迭代。
单音子模型:一个音素对应一个HMM模型
多音子模型(常为三音子、双音子):多个音素对应一个HMM模型
初入语音,如有错误,欢迎指出。
数据预处理
模型能聊的内容也取决于选取的语料。如果已经具备了原始聊天数据,可以用SQL通过关键字查询一些对话,也就是从大库里选取出一个小库来训练。从一些论文上,很多算法都是在数据预处理层面的,比如Mechanism-Aware Neural Machine for Dialogue Response Generation就介绍了,从大库中抽取小库,然后再进行融合,训练出有特色的对话来。
对于英语,需要了解NLTK,NLTK提供了加载语料,语料标准化,语料分类,PoS词性标注,语意抽取等功能。
另一个功能强大的工具库是CoreNLP,作为 Stanford开源出来的工具,特色是实体标注,语意抽取,支持多种语言。
下面主要介绍两个内容:
中文分词
现在有很多中文分词的SDK,分词的算法也比较多,也有很多文章对不同SDK的性能做比较。做中文分词的示例代码如下。
# coding:utf8
'''
Segmenter with Chinese
'''
import jieba
import langid
def segment_chinese_sentence(sentence):
'''
Return segmented sentence
'''
seg_list = jiebacut(sentence, cut_all=False)
seg_sentence = u" "join(seg_list)
return seg_sentencestrip()encode('utf8')
def process_sentence(sentence):
'''
Only process Chinese Sentence
'''
if langidclassify(sentence)[0] == 'zh':
return segment_chinese_sentence(sentence)
return sentence
if __name__ == "__main__":
print(process_sentence('飞雪连天射白鹿'))
print(process_sentence('I have a pen'))
以上使用了langid先判断语句是否是中文,然后使用jieba进行分词。
在功能上,jieba分词支持全切分模式,精确模式和搜索引擎模式。
全切分:输出所有分词。
精确:概率上的最佳分词。
所有引擎模式:对精确切分后的长句再进行分词。
jieba分词的实现
主要是分成下面三步:
1、加载字典,在内存中建立字典空间。
字典的构造是每行一个词,空格,词频,空格,词性。
上诉书 3 n
上诉人 3 n
上诉期 3 b
上诉状 4 n
上课 650 v
建立字典空间的是使用python的dict,采用前缀数组的方式。
使用前缀数组的原因是树结构只有一层 - word:freq,效率高,节省空间。比如单词"dog", 字典中将这样存储:
{
"d": 0,
"do": 0,
"dog": 1 # value为词频
}
字典空间的主要用途是对输入句子建立有向无环图,然后根据算法进行切分。算法的取舍主要是根据模式 - 全切,精确还是搜索。
2、对输入的语句分词,首先是建立一个有向无环图。
有向无环图, Directed acyclic graph (音 /ˈdæɡ/)。
图 3-2 DAG
DAG对于后面计算最大概率路径和使用HNN模型识别新词有直接关系。
3、按照模式,对有向无环图进行遍历,比如,在精确模式下,便利就是求最大权重和的路径,权重来自于在字典中定义的词频。对于没有出现在词典中的词,连续的单个字符也许会构成新词。然后用HMM模型和Viterbi算法识别新词。
精确模型切词:使用动态规划对最大概率路径进行求解。
最大概率路径:求route = (w1, w2, w3 ,, wn),使得Σweight(wi)最大。Wi为该词的词频。
更多的细节还需要读一下jieba的源码。
自定义字典
jieba分词默认的字典是:1998人民日报的切分语料还有一个msr的切分语料和一些txt小说。开发者可以自行添加字典,只要符合字典构建的格式就行。
jieba分词同时提供接口添加词汇。
Word embedding
使用机器学习训练的语言模型,网络算法是使用数字进行计算,在输入进行编码,在输出进行解码。word embedding就是编解码的手段。
图 3-3 word embedding, Ref #7
word embedding是文本的数值化表示方法。表示法包括one-hot,bag of words,N-gram,分布式表示,共现矩阵等。
Word2vec
近年来,word2vec被广泛采用。Word2vec输入文章或者其他语料,输出语料中词汇建设的词向量空间。详细可参考word2vec数学原理解析。
使用word2vec
安装完成后,得到word2vec命令行工具。
word2vec -train "data/reviewtxt" \
-output "data/reviewmodel" \
-cbow 1 \
-size 100 \
-window 8 \
-negative 25 \
-hs 0 \
-sample 1e-4 \
-threads 20 \
-binary 1 \
-iter 15
-train "data/reviewtxt" 表示在指定的语料库上训练模型
-cbow 1 表示用cbow模型,设成0表示用skip-gram模型
-size 100 词向量的维度为100
-window 8 训练窗口的大小为8 即考虑一个单词的前八个和后八个单词
-negative 25 -hs 0 是使用negative sample还是HS算法
-sample 1e-4 采用阈值
-threads 20 线程数
-binary 1 输出model保存成2进制
-iter 15 迭代次数
在训练完成后,就得到一个model,用该model可以查询每个词的词向量,在词和词之间求距离,将不同词放在数学公式中计算输出相关性的词。比如:
vector("法国") - vector("巴黎) + vector("英国") = vector("伦敦")"
对于训练不同的语料库,可以单独的训练词向量模型,可以利用已经训练好的模型。
其它训练词向量空间工具推荐:Glove。
Seq2Seq
2014年,Sequence to Sequence Learning with Neural Networks提出了使用深度学习技术,基于RNN和LSTM网络训练翻译系统,取得了突破,这一方法便应用在更广泛的领域,比如问答系统,图像字幕,语音识别,撰写诗词等。Seq2Seq完成了encoder + decoder -> target的映射,在上面的论文中,清晰的介绍了实现方式。
图 3-4 Seq2Seq, Ref #1
也有很多文章解读它的原理。在使用Seq2Seq的过程中,虽然也研究了它的结构,但我还不认为能理解和解释它。下面谈两点感受:
a RNN保存了语言顺序的特点,这和CNN在处理带有形状的模型时如出一辙,就是数学模型的设计符合物理模型。
图 3-5 RNN, Ref #6
b LSTM Cell的复杂度对应了自然语言处理的复杂度。
图 3-6 LSTM, Ref #6
理由是,有人将LSTM Cell尝试了多种其它方案传递状态,结果也很好。
图 3-7 GRU, Ref #6
LSTM的一个替代方案:GRU。只要RNN的Cell足够复杂,它就能工作的很好。
使用DeepQA2训练语言模型
准备工作,下载项目:
git clone >
DeepQA2将工作分成三个过程:
数据预处理:从语料库到数据字典。
训练模型:从数据字典到语言模型。
提供服务:从语言模型到RESt API。
预处理
DeepQA2使用Cornell Movie Dialogs Corpus作为demo语料库。
原始数据就是movie_linestxt 和movie_conversationstxt。这两个文件的组织形式参考READMEtxt
deepqa2/dataset/preprocesserpy是将这两个文件处理成数据字典的模块。
train_max_length_enco就是问题的长度,train_max_length_deco就是答案的长度。在语料库中,大于该长度的部分会被截断。
程序运行后,会生成dataset-cornell-20pkl文件,它加载到python中是一个字典:
word2id存储了{word: id},其中word是一个单词,id是int数字,代表这个单词的id。
id2word存储了{id: word}。
trainingSamples存储了问答的对话对。
比如 [[[1,2,3],[4,5,6]], [[7,8,9], [10, 11, 12]]]
1,2,3 12 都是word id。
[1,2,3] 和 [4,5,6] 构成一个问答。 [7,8,9] 和 [10, 11, 12] 构成一个问答。
开始训练
cp configsampleini configini # modify keys
python deepqa2/trainpy
configini是配置文件, 根据configsampleini进行修改。训练的时间由epoch,learning rate, maxlength和对话对的数量而定。
deepqa2/trainpy大约100行,完成数据字典加载、初始化tensorflow的session,saver,writer、初始化神经元模型、根据epoch进行迭代,保存模型到磁盘。
session是网络图,由placeholder, variable, cell, layer, output 组成。
saver是保存model的,也可以用来恢复model。model就是实例化variable的session。
writer是查看loss fn或者其他开发者感兴趣的数据的收集器。writer的结果会被saver保存,然后使用tensorboard查看。
Model
Model的构建要考虑输入,状态,softmax,输出。
定义损耗函数,使用AdamOptimizer进行迭代。
最后,参考一下训练的loop部分。
每次训练,model会被存储在 save路径下,文件夹的命名根据机器的hostname,时间戳生成。
提供服务
在TensorFlow中,提供了标准的serving模块 - tensorflow serving。但研究了很久,还专门看了一遍 《C++ Essentials》,还没有将它搞定,社区也普遍抱怨tensorflow serving不好学,不好用。训练结束后,使用下面的脚本启动服务,DeepQA2的serve部分还是调用TensorFlow的python api。
cd DeepQA2/save/deeplearningcobravulcan20170127175256/deepqa2/serve
cp dbsamplesqlite3 dbsqlite3
python managepy runserver 0000:8000
测试
POST /api/v1/question >
serve的核心代码在serve/api/chatbotmanagerpy中。
使用脚本
scripts/start_trainingsh 启动训练
scripts/start_tensorboardsh 启动Tensorboard
scripts/start_servingsh 启动服务
对模型的评价
目前代码具有很高的维护性,这也是从DeepQA项目进行重构的原因,更清晰的数据预处理、训练和服务。有新的变更可以添加到deepqa2/models中,然后在trainpy和chatbotmanagerpy变更一下。
有待改进的地方
a 新建models/rnn2py, 使用dropout。目前DeepQA中已经使用了Drop
b tensorflow rc012x中已经提供了seq2seq network,可以更新成tf版本
c 融合训练,目前model只有一个库,应该是设计一个新的模型,支持一个大库和小库,不同权重进行,就如Mechanism-Aware Neural Machine for Dialogue Response Generation的介绍。
d 代码支持多机多GPU运行。
e 目前训练的结果都是QA对,对于一个问题,可以有多个答案。
f 目前没有一个方法进行accuracy测试,一个思路是在训练中就提供干扰项,因为当前只有正确的答案,如果提供错误的答案(而且越多越好),就可以使用recall_at_k方法进行测试。
机器人家上了解到的,希望对你有用
有几个条件随机场的开源包,例如:CRF(>
以上就是关于hmm是什么意思全部的内容,包括:hmm是什么意思、HMM是什么意思、浅谈语音识别技术论文等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)