CNCC2017和言语与听觉研究论坛

今年的计算机大会在福州召开,参会6000多,可谓各个方向的IT大聚会。 10月26日上午的大会报告上,微软副总裁沈向洋博士分享的报告为《理解自然语言:描述对话和隐喻》,AI最基本的两个要素分为感知和认知。过去几年里,视听觉感知技术突飞猛进。然而,在诸如自然语言理解和对话领域的认知研究方面,我们的进展还非常有限。沈博士认为在未来的十年中,自然语言处理会成为人工智能突破最重要的方向。所谓懂语言者得天下(这句话在会议期间刷爆朋友圈)。 同时,沈博士设想了三个层次来逐步让机器理解并掌握语言,从机器学习(表述),到机器智能(对话),再到机器意识(意境)。 第一个层次首先是建立客观的对观察到的或体验到的事物进行描述的能力。沈博士会用微软认知服务里面的CaptionBot为例,来展现通过机器学习对一幅输入图像内容产生客观描述的技术。第二个层次是建立持续对话的能力。因为在对话的过程中,机器要能答问题,还要能提问题。机器要理解上下文状况,常识,及情感来做出合理的判断和响应—所谓对话即智能。沈博士总结一下微软研究院在智能问答生成方面的一些最新研究工作, 以及其在微软小冰聊天机器人平均长达23轮对话中的应用。第三个层次是建立在有意识地思考之上的理解和表达隐喻的能力。尽管离建立完全的机器意识还很远,作为一个初步的尝试,沈博士展示一下微软小冰看图作诗的技术。 下面是几张PPT: 对话即智能 阅读文本及提问 端到端对话生成模型与记忆机制 小冰的聊天话题引导 理解和表达意境:有意识的脑补 微软对话式人工智能产品的布局 同时,微软仍在主推Image Caption,并发布了COCO这样的数据集,SeeingAI项目及http://captionbot.ai 平台。 斯坦福李飞飞老师演讲的题目为:A Quest for Visual Intelligence: Beyond Objects. 介绍了视觉对生物的重要性,以及计算机视觉在物体识别任务中的飞速发展。然后讨论了计算机视觉的下一步目标:复杂场景理解,以及计算机视觉与语言结合的任务。目前主推Image Reasoning, 并围绕CLEVER数据集进行视觉理解和推理。 10月27号下午参加的听觉论坛主要围绕如下几个问题讨论: 1)听觉场景的噪音问题; 2)ASR需求和实用性问题; 3)声音的多模态问题; 4)文字理解和自主学习问题; 5)听觉机理的科学问题。 包括李锦辉教授、蒙美玲教授等多名教授报告过程中不只一次提到其担心的问题:目前成熟的深度学习工具可能害了近些年的一代Ph.D,工具太好太成熟导致很多Ph.Ds对科学问题没有深入、缺乏工匠精神,不做细工。只知How,不知Why。 言语与听觉研究论坛的集体合影 今年的CNCC在福州召开。住在了鼓楼区,开会闲暇之余四处逛了一下。 宾馆附近就是国家5A级景区 三坊七巷 福州还有一个西湖公园哈哈。 =======嗯,这里有后记========= 在福州机场例行检查时一安检姑娘问我:你是来参加计算机大会的吧? 我:啊,这都能猜到,怎么看出来的? … 继续阅读

基于BP的有监督脉冲学习算法:SpikeProp

在前面的工作中[http://jacoxu.com/tempotron/]已经介绍过脉冲神经元的基本特性。脉冲神经网络难以进行有监督学习的原因是其脉冲的离散特性和脉冲神经元的不可连续和微分性。文献[1]采用误差反向传播[2]进行多层脉冲神经网络模型(Multilayer SNNs)的训练,该方法假定神经元内部状态值在神经元发放脉冲时是在一个极短时间内线性增加的过程,通过这种近似,避免了脉冲无可微分的问题。后续的各种变种工作,甚至包括二值神经网络[3,4]和量化网络模型[5]均是采用近似的方式解决有监督训练过程中不可微分的问题。 首先,文献[1]中给出神经元的内部状态变量\({x_j}(t)\): \[{x_j}(t) = \sum\limits_{i \in {\Gamma _j}} {{w_{ij}}\varepsilon (t - {t_i})} \] 其中,\(\varepsilon (t)\)为脉冲响应函数,\({w_{ij}}\)为突触连接权重。突触响应函数的定义如下: \[\varepsilon (t) = \frac{t}{\tau }{e^{1 - t/\tau }}\] 如果考虑两个神经元之间有多个不同延时\({d^k}\)的突触连接,如下图所示。 图(A)前馈的脉冲神经网络模型;(B)多延时突触末梢的连接示例。 那么,考虑了多延时突触末梢连接的神经元内部状态变量重新定义如下: \({x_j}(t) = \sum\limits_{i \in {\Gamma _j}} {\sum\limits_{k = 1}^m {w_{ij}^ky_i^k(t)} } \)   … 继续阅读

脉冲神经网络及有监督学习算法Tempotron

接下来一段时间开启脉冲神经网络模型的探索之旅。脉冲神经网络有更强的生物学基础,尽可能地模拟生物神经元之间的连接和通信方式。其潜在能力较强,值得踏进一步探索。 构建脉冲神经网络模型,至少需要考虑三点: 1. 外界刺激编码 2. 构建神经元模型 3. 制定学习规则 外界刺激的编码方式主要有Rate Coding和Temporal Coding等,这里不在细述。而Hodgkin和Huxley两位研究员早在1952年就提出了第一个神经元模型:HH[1]。随后陆续有各种神经元模型被提出,其中具有代表性的为Izhikevich模型[2]和LIF(Leaky-Integrate-and-Fire)模型[3]。 以LIF神经元模型为例,其数学表达形式如下: \[\tau \frac{{dV}}{{dt}} = - (V - {V_r}) + RI\] 其中,\(\tau = RC\)为膜时间常数,\(R\)为膜电阻,\(C\)为膜电导,\(V\)为膜电位,\(V_r\)为复位电位,\(I\)为注入电流。当膜电位超过一个固定的阈值时,神经元发放一个脉冲,并很快地降至复位电位并维持一小段时间,然后接受前段突触的输入脉冲重新升高膜电位。各种神经元模型均类似于此过程。 学习规则又分为无监督和有监督,其中无监督学习方法以STDP(Spike-Timing-Dependent Plasticity)[4,5]为代表,而有监督学习包括Tempotron[6],ReSuMe(Remote Supervised Method)[7]和SpikeProp[8]等。 以Tempotron为例,阈值下的后突触膜电位(PSPs, Postsynaptic Potentials)为所有输入脉冲的加权和: \[V(t) = \sum\limits_i {{\omega _i}\sum\limits_{{t_i}} {K(t – {t_i}) + … 继续阅读

WSJ0数据中的.wv1文件(sph)读取

WSJ0数据中语音文件都是.wv1格式,为sph文件,在Windows下无法正常读取,需要进行转换。 转换工具:sph2pipe_v2.5,如果安装过Kaldi的话,可以直接使用 $KALDI_ROOT/tools/sph2pipe_v2.5/sph2pipe,如果没有安装的话,可以单独下载:http://sourceforge.net/projects/kaldi/files/sph2pipe_v2.5.tar.gz 如果是在Windows环境下的话直接使用sph2pipe.exe即可,如果是在linux环境下的话,则需要进行GCC编码:gcc -o sph2pipe  *.c -lm 最简单使用方式为 sph2pipe -f wav filename.wv1 filename.wav      

Matlab处理log文件

一般文本类文件都用java或python处理方便很多,此处记录一下matlab 处理文本文件的一些语法。 例如,程序记录下的日志文件为:dl4ss_output.log_2017_03_10_210643,其部分内容为: [Epoch: 1] - SDR:1.308344, SIR:2.063156, SAR:-1.509836, NSDR:2.908430   Epoch 1/1   50/50 [==============================] - 178s - loss: 1.9203 - val_loss: 1.7383   Epoch 1/1   50/50 [==============================] - 176s - loss: 1.6208 - val_loss: 1.5113   Epoch 1/1   50/50 [==============================] - 176s - loss: 1.4212 - val_loss: 1.3334   Epoch 1/1   50/50 [==============================] - 175s - loss: 1.2612 - val_loss: 1.1911   Epoch 1/1   50/50 [==============================] - 176s - loss: 1.1320 - val_loss: 1.0740   [Epoch: 6] - SDR:2.128937, SIR:3.154744, SAR:0.774681, NSDR:3.729023   Epoch 1/1   50/50 [==============================] - 175s - loss: 1.0312 - val_loss: 0.9913   现在想对该日志文件进行处理,并将Epoch迭代过程中评估的结果值绘制成图,方法如下: clc    clear   colours = ’rbckgcmbkgcmbkgcmbgrcmykbgrcmykb’;  % ’bgrcmykw’ modified by jacoxu@msn.com    symbols = ’.x^os*.dvph><x+^os*.dvph><+’;  % ’.ox+*sdv^<>ph’ %参考 http://blog.sina.com.cn/s/blog_618af1950100kdi2.html    linetypes = {‘-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’};  % {‘-’,’:’,’-.’,’–’}    figureSize = [300,200,500,300];    lineWidth = 1.5;    para_list = {‘SDR’, ’SIR’, ’SAR’, ’NSDR’};       log_file = ’dl4ss_output.log_2017_03_10_210643′;    log_file_fd = fopen(log_file);    epoch_idx = 0;    … 继续阅读

Python下调用Matlab接口

1. 安装Matlab到目录$Matlab_Path 2. 安装Matlab Engine API for Python cd $Matlab_Path/extern/engines/python python setup.py install 3. 在Python中使用 (a). 加载库 import matlab.engine (b). 开启引擎 mat_eng = matlab.engine.start_matlab() (c). 把matlab文件放到当前工程目录下,如’./BSS_EVAL.m’ (d). 如有需要进行tpye转换,如 input = matlab.double(input) (d). 调用BSS_EVAL.m函数 params = mat_eng.BSS_EVAL(input)

三个短文本数据集及其分类聚类基准

【本文相关数据和代码】参见[Github, https://github.com/jacoxu/STC2] @article{xu2017self, title={Self-Taught Convolutional Neural Networks for Short Text Clustering}, author={Xu, Jiaming and Xu, Bo and Wang, Peng and Zheng, Suncong and Tian, Guanhua and Zhao, Jun and Xu, Bo}, journal={Neural Networks}, doi = “http://dx.doi.org/10.1016/j.neunet.2016.12.008“, year={2017} } 三个数据集分别来自SearchSnippets, StackOverflow和Biomedical. SearchSnippets: … 继续阅读

深度强化学习[Deep Reinforcement Learning]相关工作

此处列下要阅读学习的论文,待后续逐步增添其内容。 【0】. 强化学习经典教材 贡献:非常系统地介绍了强化学习的常用算法,在第二版最后章节添加了强化学习与心理学和神经学研究的关联性。 Sutton R S, Barto A G. Reinforcement learning: An introduction[M]. Cambridge: MIT press, 1998. 【1】. 2013年DeepMind团队Mnih等人在NIPS workshop上提出了深度强化学习的开创性工作DQN,在视频游戏领域取得突破。此工作使得DeepMind公司一战成名。 贡献:首次提出DQN,引起谷歌公司的注意并以4亿美元被其收购,致力于解决AI问题。 Mnih V, Kavukcuoglu K, Silver D, et al. Playing atari with deep reinforcement learning[C]//Proceedings of the NIPS Workshop on … 继续阅读

记录一段Shell脚本,文件/文件夹清空复制内容修改和创建

前几年写过一段shell脚本,大致的功能是完成制定目录下的文件夹/文件自动清空和复制工作,同时针对不同目录下复制的文件进行一些内容修改。并在另外一个文件中进行记录。主要涉及 if-then-fi, for, sed 等基本操作,这里记录下这段shell脚本以备查阅使用。 #!/bin/bash    #auther:Jacob Xu 20130811, create for Solr master indexing    echo “====================== choose the configure for user! ====================”   solrToolPath=/home/jacoxu/solrProject/solrTools/    creatIndexFolder=1    replaceSchame=0    replaceMasterConf=1    replaceSlaveConf=0    generateCoreMap=0    generateSolrXml=1       ################## configure the index folder for user!###################    rawFolder=$solrToolPath“collection1970_01_1″   destFolder=/home/jacoxu/solrProject/solrHome_NormSMS/multicore/    startDate=201001    endDate=201412    coreChildren=( 1 2 3 )    conf=conf    prefixPath=collection    … 继续阅读

自然语言处理与深度学习研讨会

上周末(2016/04/23)在所里(CASIA)听了一场研讨会报告,现在整理一下。原本以为这场研讨会报告只是几个青年学者(自动化所的张家俊老师,北大的万小军老师以及出门问问的技术经理李理)分享最近的工作。到了会场发现有很多圈内大佬都莅临指导,包括:自动化所的徐波所长,王飞跃老师,宗成庆老师,赵军老师,刘康老师;微软亚研的首席研究员周明,清华大学刘洋老师,北理工计算机学院院长黄河燕老师,中科院软件所孙乐老师,苏州大学张民老师,哈工大赵铁军老师,东北大学朱靖波老师等等。 首先是三位嘉宾做近期相关工作汇报。 一:张家俊老师汇报的题目为 神经网络机器翻译:寻找替身之旅 针对的问题是神经机器翻译(NMT)模型中集外词的问题。手段为寻找其集内词替身。 集外词问题在一些NLP词性标准等任务中,搜索空间是可猜测的,而在机器翻译(MT)任务中,搜索空间不可猜测。 MT需要双语翻译语料,传统统计翻译方法是 1. 先翻译词,2. 再结构化重组。而集外词问题会导致如下问题 1. 词无法获得准确的译文,2. 不精确语义编码影响了句子重组结构。 NMT进一步加重了集外词问题,1. 低频词的语义编码不准确,2. 解码空间V很大时,计算效率很低。因而需要限制源语言和目标语言的词规模。 如“悍然对南联盟实施轰炸”,其中“悍然”与“南联盟”为低频词,分别将其替换为高频词“突然”和“伊拉克”。 那么替换之旅的流程变为:1. 替换;2. 翻译;3. 恢复;(4. 保留UNK) 而针对具体情况,分别考虑了1. UNK -> UNK. 2. 集内 -> UNK. 3. UNK -> 集内. 4. NULL -> UNK. 5. UNK … 继续阅读