[普通]nlp研究的三个层次

作者(passion) 阅读(1135次) 评论(0) 分类( 随笔)

写在前面的话:《凸优化》理论集成了矩阵论+泛函数分析,这门学科学好了可以使AI理论上升好几个层次。基础理论精进后就可以与物理学,计算机学以及神经生物学等学科结合搞AI基础研究---从0到1的研究,比如上个世纪的lasso成果。目前的AI基础研究切入点在突破现有深度学习的瓶颈,即如何突破深度学习对海量数据过度依赖的笨重式的感知智能,推动认知智能的前进,去年的谱卷积算子,拉普拉斯矩阵的特征值分解,图模型与联结主义的融合是一个开端。矩阵的特征值分解与CNN都是基础领域的研究。比如CNN的改进基本上从3方面入手,但是具体领域需要具体分析。研究基础领域的突破是真正的研究。理论创新带动应用创新,应用创新带动AI产业化。。。有几个论文需要深入精读:①去年DeepMind的图模型推理论文,需要深刻吸收论文的思想精华和想法,反思一下为什么国内不能搞出这样的研究②96年的lasso论文,虽然很老了,但是学术价值非常高,研究透了需要很深的数学功底,同时还可以得到很多启示③上个世纪pagerank和随机游走模型的提出,对推理有很高的启发,这个模型具有很强的解释性,可以和计算机科学结合解释成功和运气之间存在很强的相关性。以上的基础研究,除了数学外,还需要从物理学,生物学,进化论以及专业领域吸收灵感,比如DeepMind从弹簧系统的稳定性等物理现象中吸收灵感,甚至可以从哲学中吸收灵感,比如很多算法很好地解释了自然规律,这说明发现一个新的算法,除了纯数学外,更需要数学以外的东西,否则创新能力会大大降低。AI存在的意义是助推产业升级,否则就是鸡肋,单纯的互联网是没有前途的。nlp需要重新研究人脑对于文字理解的逻辑,这个明显不同于图像识别机制,不能照搬,必须修正,难度非常大。目前的机器人对于文字的理解仍然是以知识图谱和图模型以及统计学为主导,然后慢慢向认知智能过渡,让机器具备初步的逻辑推理能力,这一点单纯靠联结主义是不现实的。图谱的研究目前国内有点儿落后,比如知识的时空表示,CVT节点用于推理的研究等等。目前的图谱认知能力基本上停留在简单的线性关系,不能完成因果关系推理。为了研究因果关系推理,需要重塑或者拓展图谱理论,比如底层的知识表示,因为逻辑推理其实离不开有限的规则,然后规则通过组合泛化创造出无限多的表现形式。AI的本质就是发现并且为机器指定出这些规则以及规则的组合泛化规则,这样Ai才会真正向前推进。然而这一切都离不开最基础的研究,对于很多程序员认为"烂大街"的基础理论,我相信这些程序员从来没有系统深入地研究过这些基础理论,基本都是以代码为主理论上蜻蜓点水。这是态度有问题,我相信很多大家习以为常的理论,真正有深度有见解的一定是少数人。因为发现现有算法之间新的关联是很困难的事情,需要很深的功底。

本人的nlp学习和研究按照以下三个层次开展:

一、应用级别。大约花费10个月时间以上。本阶段主要扩展广度,大量接触各种应用论文,基础论文,学习和研究的突破点是语义相似度的研究。本阶段比较适合本科生和研究生,以应用为目标,能够熟练使用tensorflow等框架,看懂论文并且把论文的成果工程化。包括的基础理论:微积分,线性代数,统计学,计算机基础,数据结构与算法,基本的物理学知识,除此之外以下数学需要吸收60%左右:《矩阵论》+《实变函数与泛函数分析》+《凸优化》+《统计学》。AI方面主要包括:统计学派和联结主义学派。统计学派的经典著作:李航博士的关于图模型的论述共90页的pdf,宗成庆的《统计自然语言处理》。吴恩达03年的斯坦福公开课16讲,包括LR,SVM,PCA,SVD等。RNN,LSTM,CNN,word2vector等。另外关于基本的语言逻辑,语言学也要了解,包括知识图谱的基础知识。本阶段应读的论文包括96年的lasso必读,CRF等。编程主要以python或者C++为主,熟悉5折交叉验证理论,熟悉CUDA,遗传算法,神经网络参数优化。熟练一种中文分词,最好有开发中文分词的经历,比如本人之前改造过IK分词等。经过这个阶段的学习,可以满足绝大部分公司的AI应用需求。

本人这个阶段最具代表性的研究成果

1、语义运算(SIF,siamese lstm,hierarchical attention,self_attention)

实验背景联结主义的缺陷是显而易见的,语义表示的机械化,自适应能力差,目前仅能解决感知(归纳总结),如何让神经网络学习语言规则是重要的研究课题。w2v存在以下缺陷:①多义词的上下文重叠无法表达②语义表示的自适应能力差③语义无意义方向的倾斜问题。语义相似度在KB_QA等nlp场景中有着重要的作用。另外 2017年最新语义表示进展,提出了一个无监督的句子建模方法,目前本人已经熟悉了此方法(此方法深刻剖析了w2v的问题)。语义表示的丰富性,自适应性,可以大大提升语义理解的能力。深度学习更多地与传统领域结合是当下以及今后nlp的一个趋势。以下的实验,首先基于siamese lstm论文,击败了convnet,tree_lstm,cnn等方案,而后用self_attention_machism改进,达到了the state of art。

实验描述:核心是exp(-||x1  x2||1), 2015年国外学者提出了这个结构,颗粒度比CNN

要细。但是本人并没有停止研究的步伐!在结合了Hierarchical Attention的

论文后,重新整合了一个新的模型:siamese lstm + Hierarchical attention

model。(https://blog.csdn.net/randy_01/article/details/78369223)分别构建词级别和

句子级别的两个attention model,前者获取上下文的每个句子向量表示,后者

获取整个上下文的向量表示,然后计算中心句与上下文的相似度。预测时用以模

拟人脑在抽取文章中心句时的思考过程。(抽取式的文章摘要方案)

方案评估:这个方案实现了语义相似度的更细的颗粒度,但是仍然没有突破过去语义表示的瓶颈(用CNN或者LSTM,会丢失很多语义信息),后来的改进为:用多维度的矩阵碾平后表达句子语义(self_attention_machisn),实现语义更高精度的运算。

运用工具:word2vector,scipy,gensim,lstm,tensorflow,nltk,numpy,SICK(siamese lstm训练语料),Google News+SICK(w2v训练语料,原来的实验有问题,w2v训练时没有加入处理后的SICK)

实验细节:一、word2vector的语言模型采用skip_gram,优化方法采用NEG_SAMPLING

二、工程中解决的问题:未改进前:①实现句子的变长序列:这一点非常重要,每个句子长度是变化的。如果输入LSTM的序列是固定长度,会影响准确度并且需要引入辅助词。②获取批量文本时的内存优化③权重参数初始化方式:这个模型对参数初始化很敏感,forget_bias设置为2.5,随机高斯分布④结构改进:用BiLSTM改进效果并不是特别理想,这个场景不同于序列化标注问题,因此没有意义,适当地增加层数有一定的效果,但是层数多了,提升效果不是特别明显,这个机制明显不同CNN在图像识别中的原理。⑤dropout的引入适当地提升了准确率,但并不是绝对必须的。改进后BiLSTM + self_attention

    :①完全依赖于论文是不现实的(个别发论文的学者,存在数据造假嫌疑),每个业务都有最适合自己的算法需要研发人员个性化定制②虽然Adam或者Adadelta优化方法能够自适应学习速率,但不一定是最好的,SGD在好的初始化和学习率调度方案的情况下,结果更可靠③用dropout能提升准确率,但训练时间比不用稍长了一些,依据在论文中已经找到了④打分函数exp(-||h1-h2||1)的得来并非一蹴而就,衡量两个句子向量的差异可以采用L2范数,但是稳定性非常差,理论支持从BPTT可以找到,LSTM步数超过30记忆能力直线下降,由此进一步理解了从RNNLSTM的演化⑤最后一点,深度学习在语义理解上的机制,不能单靠小修小改,必须深入研究人脑对文字理解的生物学启发模型,比如Hierarchical attentionself_attention就是很好的改进方案,应用创新是每个AI从业人员必须具备的意识。

2、kmeans聚类算法改进

背    景: kmeans聚类算法(由EM算法推导)由于损失函数的非凸性很容易陷入局部最优解,聚类中心的选取方式以及k值的最优解需要改进。

实验成果:经过本人不懈的努力,终于改进成功。改进后的效果:①能够使聚类中心的选取更加合理化,能够确定k值的隐式最优解,k值可以外部设定也可以内部自动调整,聚类结果准确率高且稳定②增加数据归一化处理③增加了聚类结果连续存储的归类算法。链接地址:http://www.cnblogs.com/txq157/p/6067098.html

二、研究级别。主要精力花费在数学专业的研究上面,这是最重要的基础。至少需要花费1年时间深度钻研数学和AI的关系。本阶段的主要目标是成为一名研究过去的AI专家,重点任务是对现有算法的改进。最低要求是:对现有的所有成果,论文能够利用数学,物理学等基础学科进行解释,能够指导工业界的工程师学习,解决问题。能够提供解决方案,比如语义相似度方案,有确定的持久的研究兴趣和方向,能够对现有算法提出改进想法,对现有的论文进行深度评估。以下数学要至少吸收85%:《矩阵论》+《实变函数与泛函数分析》+《凸优化》+《统计学》。对第一阶段的学习重新深入整合并且反思,去伪存真(比如seq2seq的研究毫无意义,纯学术派的玩票儿)。必读的论文包括:①kb_qa方面:模板匹配,向量建模,语义解析,核心推导链儿。检索+seq2seq解决自由聊天,上下文建模,slot对话及对话状态跟踪②知识图谱:知识图谱的向量化transD以及改进方案,关系抽取③语义相似度:siamese lstm,SIF,融合图谱和深度学习的推荐算法④深度学习:self_attention,CNN的改进方案,语义丢失问题的缓解。能够提出"目前的深度学习高度依赖海量数据"问题产生的根本原因,能够用遗传算法或者模拟退火对神经网络参数优化⑤深度学习和统计学派的融合:图结构和神经网络融合的预研,比如谱卷积算法的改进研究,这个阶段可以指导AI工程师,确立研究方向,目前国内的专家绝大部分是属于这个层次。

三、引领级别。本阶段的主要目标是成为一名研究未来的AI专家。第二个阶段只是顺着原来的研究方向小修小改,这个阶段需要脑洞大开,另辟蹊径,研究“慢而无用”的东西,坐冷板凳,搞创新。第二个阶段的最后已经做了一些铺垫,比如联结主义和符号主义融合。神经规则推理和AutoML是这一阶段的研究对象,但不是全部。底层的基础知识包括拉普拉斯矩阵的研究,傅立叶变换在无向图模型方面的应用,谱卷积算子的研究。对神经网络能够提出新的理论解释,能够从物理学或者神经生物学中找到灵感提出新的理论:包括发现现有算法之间新的联系,提出知识的时空表示,能够解决实体,关系,规则三要素的统一问题,能够有效解决有向图的推理问题,能够提出"目前的深度学习高度依赖海量数据"问题的解决方案,能够研究人类在婴幼儿时期非依赖经验主义学习(也就是不过度依赖海量数据)的智能原理。

按照以上三个层次持续研究,孜孜不倦,最起码也能达到第二个层次,至于能不能达到最高境界,看资质了。不过按照国内应试教育的体系,很难出现第三个层次的人,不出国够呛。之前复旦大学的博导写过“无解的中国教育”系列,其中提到了目前的研究生普遍对研究不感兴趣,一味地责备学生也没用,是体制问题。学习兴趣被刷题和考试过早过度消费了,镀个金就高枕无忧了,这种想法的人非常多。

还有目前关于深度学习的研究有些泛滥,国内有些学者每隔几天就出一篇论文。我相信这样的论文根本不具备工业价值,和lasso以及DeepMind的论文无法比拟,是不务实的表现。有些论文都是套路,给人感觉好像创新就那么回事的误解。比如seq2seq的研究,坑了很多人,尤其是一些在校研究生。之前本人就提出过,机器翻译用seq2seq很勉强,根本不是真正语义级别的翻译,法律,文学方面机器翻都译望尘莫及……单纯的深度学习不可过度研究,因为目前它存在重大理论缺陷,重点研究应该是神经规则推理,知识图谱,这些都是未来的AI。

研究论文多了会发现,每次重大理论创新总是由国外提出,比如谷歌大脑,以色列特拉维夫大学等。论文脑洞大开,思维开阔,总是能够从物理学,神经生物学中吸收灵感。国内的数学教育注重的是解题,这个属于很低的层次了,并且从众心理很普遍,有点儿保守,而且有些研究生专业设置不合理,或者有些学校根本不具备开设的资格。知识学的多与少应该根据个人的意愿以及研究的深度而定,而并不是一味地拿到毕业证学完所有的东西。你创造多少新的东西,和知识储备不总是成正比。必须脱离应试教育的评价体系,避免短平快,摆脱浮躁从众的心态才能搞研究。


« 上一篇:fastlabel 最强版标注神器,想你所想,做你想做
« 下一篇:搜集的开源数据集
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img