北大AI第八讲 李航 自然语言处理的现实与挑战

自然语言处理的十个发展趋势 记者 | 优快云 苏靖芝7 月22 - 23 日,由中国人工智能学会、阿里巴巴集团 & 蚂蚁金服主办,优快云、中国科学院自动化研究所承办的第三届中国人工智能大会(CCAI 2017)在杭州国际会议中心盛大开幕。本次大会的第一场分论坛讨论是关于语言智能领域的八大问题。讨论期间,哈尔滨工业大学刘挺教授对自然语言处理的发展趋势做了一次精彩的归纳,他把这里的趋势分成了十个方面:趋势1:语义表示... 阅读详情

视频地址
课程介绍
“人工智能前沿与产业趋势”课程由北京大学开设,并面向公众开放。课程由人工智能创新中心主任雷鸣老师主持,共14节,每节课邀请一位人工智能领域顶级专家和行业大咖作为主讲嘉宾,就人工智能和一个具体行业的结合深度探讨,分析相应技术的发展,如何影响产业,现状及未来趋势、对应挑战和与机遇。所有课程相关信息、通知都会在下方的公众号发布(在视频中有)。

对于自然语言理解,有两种定义。第一种是计算机能够将所说的语言映射到计算机内部表示;另一种是基于行为的,你说了一句话,计算机做出了相应行为,就认为计算机理解了自然语言。后者的定义,更广为采用。

为什么自然语言理解很难?其本质原因是语言是一种复杂的现象。自然语言有5个重要特点,使得计算机实现自然语言处理很困难:

  • 语言是不完全有规律的,规律是错综复杂的。有一定的规律,也有很多例外。因为语言是经过上万年的时间发明的,这一过程类似于建立维基百科。因此,一定会出现功能冗余、逻辑不一致等现象。但是语言依旧有一定的规律,若不遵循一定的规范,交流会比较困难;
  • 语言是可以组合的。语言的重要特点是能够将词语组合起来形成句子,能够组成复杂的语言表达;
  • 语言是一个开放的集合。我们可以任意地发明创造一些新的表达。比如,微信中“潜水”的表达就是一种比喻。一旦形成之后,大家都会使用,形成固定说法。语言本质的发明创造就是通过比喻扩展出来的;
  • 语言需要联系到实践知识;
  • 语言的使用要基于环境。在人与人之间的互动中被使用。如果在外语的语言环境里去学习外语,人们就会学习得非常快,理解得非常深。

这些现象都说明,在计算机里去实现与人一样的语言使用能力是一件非常具有挑战性的事情。首先,语言的不完全规律性和组合性,就意味着如果在目前的计算机上去实现,会产生组合爆炸;还有,如果需要语言做比喻,去联系到实践环境,就意味着要做全局的、穷举的计算。如果通过现代计算机来做,非常复杂,几乎不太可能。所以,如果想让计算机像人一样使用语言,原理上需要完全不同的、与人脑更接近的计算机体系架构。

其本质原因是,目前在计算机上去实现东西一定需要数学模型。换句话说,计算机能够做的事情要通过数学形式化。但是,到目前为止,语言的使用还不清楚是否能够用数学模型去刻画。人工智能的终极挑战就是自然语言理解。现实当中,不能因为自然语言理解非常困难就放弃。我们还是希望能够使计算机越来越智能化,能够部分使用语言。因此,就形成了所谓自然语言处理这一领域。我们叫自然语言处理,而不是自然语言理解,因为真正的理解是太难了。

自然语言处理做的第一件事情就是把问题简化。比如,知识问答中,问姚明身高是多少?朋友告诉你是2米26。这是人与人之间的知识问答。那么,这其中有哪些步骤呢?首先是听,然后去理解问题,然后去做一定的推理,然后再去做信息检索,最后判断怎么去做回答,整个过程相当复杂。我们现在做自然语言处理时,也做这种知识问答,包括有名的IBM的Watson,其整个步骤也是简化了自然语言处理的过程。一般而言,就是这几个步骤,先分析一下问句,接着去检索相关的知识或者信息,然后产生答案。

目前,所有的自然语言处理的问题都可以分类成为五大统计自然语言处理的方法或者模型,即分类、匹配、翻译、结构预测,马尔可夫决策过程。各种各样的自然语言处理的应用,都可以模型化为这五大基本问题,基本能够涵盖自然语言处理相当一部分或者大部分的技术。主要采用统计机器学习的方法来解决。第一是分类,就是你给我一个字符串,我给你一个标签,这个字符串可以是一个文本,一句话或者其他的自然语言单元;其次是匹配,两个字符串,两句话或者两段文章去做一个匹配,判断这两个字符串的相关度是多少;第三就是翻译,即更广义的翻译或者转换,把一个字符串转换成另外一个字符串;第四是结构预测,即找到字符串里面的一定结构;第五是马可夫决策过程,在处理一些事情的时候有很多状态,基于现在的状态,来决定采取什么样的行动,然后去判断下一个状态。我们也可以采用这样的模型,去刻画自然语言处理的一些任务。

  • 分类主要有文本分类和情感分类,匹配主要有搜索、问题回答、对话(主要是单轮对话);翻译主要有机器翻译,语音识别,手写识别,单轮对话;结构预测主要有专门识别,词性标注,句法分析,文本的语义分析;马可夫决策过程可以用于多轮对话。我们可以看到,自然语言处理里面有很多任务,在现实中我们已经开始使用最基本这五种最基本的模型它都去可以去刻画的。
  • 语言处理,在一定程度上需要考虑技术上界和性能下界的关系。现在的自然语言处理,最本质是用数据驱动的方法去模拟人,通过人工智能闭环去逼近人的语言使用能力。但是,这种技术并没有真正实现人的语言理解机制。可能会有这样的情况,这个技术的准确率(绿线)画了一个上界。比如,语音识别的上届是95%,我们希望不断把这个技术做好,比如通过人工智能闭环,更好的深度学习方法,从而使得上界不断提高。但是,不可能一下子达到百分之百对,或者达到完全与人一样的水平。每个应用,对于下界的要求是不一样的。比如,在葡萄牙问路,对方也不会英语,我也不会葡萄牙语,交流非常困难,在这种环境下我其实就是听懂几个单词,让机器翻译给我翻译几个单词就行了,对性能的要求其实是比较低的,不需要去翻译一大段话。我们可以看到,不同的应用,用户对使用性能的要求不同,如果下界达到这个水平,用户就用了。再比如互联网搜索中排序第一的准确率不高,60%多-70%多,大家往往觉得,互联网搜索引擎已经达到要求了。当然因为搜索的时候,通过排序展示给用户多个结果,用户可以去逐个去看,一定程度上解决一些问题,这时候对性能要求下界相对就比较低。如果,现在的技术上届达到了用户要求的下界,就能够使用。所以,哪些自然语言处理的技术未来能够起飞,能够真正实用化,就可以通过这种关系来看。还是要看具体的应用的场景。在一些特定场景下,准确率达到99%都不行。我们相信,自然语言处理的技术会不断提高,但是是不是都能够达到我们每一个应用要求的性能的下界,就不好说了,要看未来的发展了。这是自然语言处理技术整个发展情况。

下面,给大家一起看一下我们自然语言处理领域里面都有哪些技术,有代表性的技术都大概达到什么样的水平,都是什么样的一些基础。假设大家对深度学习有一定的了解,如果这方面的知识还不够也没关系,过后你可以去再去看书看论文,去了解一些相关的技术情况。

刚才,我介绍到站在一个很抽象的角度来看,自然语言处理就是五个问题。如果用各种方法包括深度学习把这五个问题做好了,就能够把自然语言做得很好。现实当中,我们就是通过深度学习,达到自然语言处理技术比较好的水平。

首先,问答系统有很多,包括 IBM 的 Watson 也是一个问答系统,有大量的知识或者信息放在知识库。典型的办法就是把问答用FAQ索引起来,与搜索引擎相似,如果来了一个新问题,有一大堆已经索引好的FAQ,然后去做一个检索(字符上的匹配),之后逐个去做匹配,判断问句与回答的匹配如何。往往匹配的模型有多个,再去将候补做一个排序,把最有可能的答案排在前面,往往就取第一个作为答案返回给用户。

这里面牵扯到几个技术,我们在在线的时候要做匹配和排序,现在最先进的技术都是用机器学习,用深度学习技术。就是把问句和回答的可能的候选,用向量来表示,问句的每一个单词都可以用向量来表示。每一个词的语义都可以用一个实数值向量赖表示,问句和候补都是实数值向量的序列。然后,用一个二维的卷积神经网络来判断两句话在语义上是不是相关,候选是否是很好的答案。通过二维卷积神经网络,可以判断两句话里面哪一些词语、词组是可以相互对应,最后可以做一个判断这两句话是不是相关的。整个模型的学习通过大量的数据、句对,去训练。如果卷积神经网络的参数学好,就可以判断任何给定的两句话是不是能够构成一轮问答。

这样的模型不仅仅可以用到文本问答(知识问答)上,也可以用到图像检索上面。给大家演示一个demo。

这种模型,可以跨模态的把文本和图片联系起来。在深度学习技术出现之前的话,这件事情是不可能的。因为他们是不同的模态。一个是符号表示的信息,一个是像素表示的信息,那么我们可以用深度学习的模型去做这种跨模态的匹配。比如,左边有一个卷积神经网络,他能够抽出左边图片的语意表示,表示成一个向量;右边也是一个卷积神经网络,能够把一段文字的内容抽取出来,表示成为一个向量,还有一个网络判断这两个向量在语义上是否能够匹配。这个模型可以通过大量的数据去训练。假设每一个照片有3到5个人给出描述。我们用大量这样的数据就可以学这样的神经网络,神经网络可以帮助我们,就是说任何给定的一句话,要去查找一个图片的内容,它就可以在这个图片库里帮你去匹配到最相关的图片,给你返回来。这个技术也是在深度学习出现之前应用的,因为我们不知道怎样把图片和文字匹配到一起。有了深度学习技术,我们可以做这样的事情。

自然语言对话是用另外一种技术,用生成式的模型去做自然语言对话。大量的聊天系统是这么做的,输入一句话,里面准备了大量的FAQ,搜索到一个最相关的回答,反馈给你。这叫做基于检索的自然语言问答系统。

我们这里看到是一种产生式,经过大量数据训练之后,输入一句话系统自动的产生一个回复,理论上产生出无穷多的不同的回复。下面先看一个实际系统的录像。

这个系统,我们在微博上爬了四百万的微博数据,微博数据可以看作是一种简单的单轮对话。我们用400万数据训练了这样一个系统能够去自动产生对话。(系统演示)

理论上它可以回答任何你输入的对话。用400万的微博数据就可以训练这样一个模型。系统产生一句话的比例是96%,真正形成一个有意义的单轮对话的比例是76%左右。这个系统的一大特点是,可以回答没有见过的一句话。

第二个特点是能够记住训练数据。发现深度网络有一个共同的特点就是能够记住训练数据,同时也有去泛化的能力,能针对未知的新见到的东西去自动组织出一句话,并返回给你。这种能力很令人惊叹,是否实用并不清楚。在一个很固定的场景里,比如话务中心,如果话务员跟客户之间的交互都是简单的重复,大量的类似数据可以构建一个产生自动的回复系统,而且跟人的回复非常接近。

大家如果熟悉深度学习的话,刚才说自然语言处理有很多问题都是翻译的问题,即把一个文字的字符翻译成另外一个文字字符,那么单轮对话的产生也可以看成是机器翻译。序列对序列学习,sequenceto sequence learning,可以用到这种单轮对话中。每个单词其实是用一个实数值向量表示,就是编码,之后用实数值向量分解成一个回复的一句,叫做解码。通过这种编码、解码这两个过程的话,我们把原始的数据转化成中间表示,再把中间表示,转换成为应该回复的话,可以产生对话系统。

谷歌的神经机器翻译系统是一个非常强大的系统,需要很多训练数据和强大计算资源。这个seqto seq模型有八层的编码器和八层的解码器,整个网络非常深。它还用了各种这个新的技术,比如注意力技术,并行处理技术,还有模型分割和数据分割等。目前,翻译的准确率已经超过了传统的统计机器翻译。

下面,再看一下未来自然语言处理技术发展的前景和趋势。刚才我们看到技术上界和用户对于性能要求的下界,碰到一起就看到技术的使用化。那么,就预测一下未来自然语言处理技术的发展。目前,几个最基本的应用,包括语音识别,就是一个序列对序列学习的问题,就是翻译的问题,目前准确率是95%左右,那么已经比较实用了。单轮对话往往可以变成一个分类问题,或者结构预测问题,就是通过手写一些规则或者建一些分类器,可以做的比较准。很多手机上应用或者是语音助手像siri,就是用这样的技术;多轮对话还很不成熟,准确率还远远达不到一般期待的要求,只有在特定场景下能做的比较好。单轮问答已经开始实用化,准确率一般来百分之七十八十,自动问答系统没有超过80%的这个准确率的情况。去年,我有一个报告就讲鲁棒的自动问答或者知识问答,并不要求准确率是百分之百。单轮自动问答会马上越来越实用化,因为我们看到很多成功的例子包括Alexa往往都是用单轮对话技术来做的。文本的机器翻译水平在不断提高,深度学习在不断进步,越来越接近人的专业水平,但只是在一些特定场景下。完全去替代人,还是不太可能。人的语言理解是一个非常复杂的过程,序列对序列实际上是一种近似,现在这种技术能够去无穷尽的逼近人,但是本质上还是跟人的做法不一样的。即使是这样,准确率可以达到百分之七八十。在某些场景下,用户对性能要求并不是特别高。

总而言之,语音识别、机器翻译已经起飞,大家现在开始慢慢在用,但是真正对话的翻译还很困难,还有很长的路要走,但是也说不定能够做得很好。并不是说序列对序列就没有问题需要解决了,还有细致的问题。一个典型的问题就是长尾现象。不常用的单词、语音识别、翻译还是做得不是很好。比如用中文语音输入,人名、地名这种专有名词识别率一下就下降,特殊的专业术语识也不好,讲中文中间夹杂一些英文单词也是一种长尾现象。因为现在机器学习的方法是基于统计的,原则上就是看到数据里面的规律,掌握数据的规律。需要看到甚至多次重复看到一些东西,才能够掌握这些规律。这块相信有很多技术能帮助解决一些问题,使得机器翻译或语音识别技术不断提高,但是完全彻底的解决还是比较困难,因为这是这种方法带来的一个局限性。

单轮的问答,特别是场景驱动的单轮的问答,可能慢慢会开始使用。但是多轮对话技术还是比较难。马尔可夫决策过程实际上是还是个统计学习模型,本质特点就是需要有大量的数据去学习。其实我们人在做多轮对话的时候,并不需要重复才能掌握这种天生能力。这些是否能够用马尔科夫决策过程去模拟或者近似还不是很清楚。还有一个重要的问题就是多轮对话的数据不够,不能够很好地去学习这样的模型,去研究这些问题。即使是特定任务,多轮对话还比较困难,如果是任务不特定,比如聊天机器人就更难了,我们都不知道该怎么去做,马尔科夫决策过程都用不上。现实当中的一些聊天机器人就是用单轮技术堆起来,但是形成不了一个很自然合理的多轮对话,变成大家用起来觉得很奇怪的东西。总结起来就是多轮对话,在任务驱动的简单场景,有了更多的数据,我们是有可能做的越来越好。

给今天的讲座大概做一个总结,自然语言理解很难,自然语言处理现在用数据驱动的办法去做,有五个最基本的问题,即分类、匹配、翻译、结构预测和马尔可夫决策过程。在具体的问题上,有了数据就可以跑AI的闭环,就可以不断提高系统的性能、算法的能力。深度学习在我刚说的五个大任务里的前四个都能做得很好,特别是运用seq toseq的翻译和语音识别。单论对话也能做的越来越好,但是多轮对话需要去研究和解决。

自然语言概括的那部分其实我也写过一些文章,大家感兴趣的话也可以去看一看,网上也能搜得到,然后还有就是我们相关的工作论文,包括谷歌的工作论文,我在这里列出来了。

最后,欢迎大家加入我们的实验室。方向有语音、语言处理、推荐搜索、大数据分析、智能通讯网络、计算机视觉、物联网、智能城市、智能终端。谢谢大家。

北大AI公开课第八课--自然语言对话的现状与未来by今日头条李航 最近坚持学英语,感觉还是挺不错的,推荐大家一个新的比较好玩的应用:喜马拉雅,上面有很多免费的资源,可以用来学习消遣都行,和得到差不多,但是比起得到,免费的内容更多,而且确实也挺方便的。我现在最爱的就是用它来订阅一些日常英语的节目,每天学习半个小时英语,可以在路上听、睡觉前听,挺享受的,也把碎片时间利用了一下,当然要提醒大家的是,也不能指望这个APP能帮你得道升天,毕竟一些专业的知识、硬技能,我们还... 阅读详情

相关推荐

(整理)学习NLP的资源

本文是对网上NLP推荐资源的一个整理,有资源就要开始实践,加油!(以后还会继续更新的) 0 前期基础 自然语言处理和深度学习密切联系,应将两者结合一起学习。参考华为李航(北大AI第八讲 李航 自然语言处理的现实与挑战)。深度学习是机器学习,机器学习基于统计,所以数学和机器学习的基础知识也要扎实。数学包括微积分,统计与概率,线性代数,凸优化。 微积分会求偏导就行了,概率推荐《统计学完全教程》。...

鱼与橙的诱惑 833

四、自然语言处理的主要挑战

1.自然语言处理的主要挑战 1.1 自然语言处理的主要挑战包括 基本问题 主要困难 NLP的研究内容有5大难点:没有规律、自由组合、开放集合、知识依赖和上下文信息。 2 NLP的基本问题 2.1 基本问题之一:形态学习问题 研究词有意义的基本单位——词素的构成问题 单词的识别/汉语的分词问题 词素:词根、前缀、后缀、词尾 例如:人,老虎=老+虎,图书馆=图+书+馆 2.2基本问题之二:句法问题 研究句子结构成分之间的相关关系和组成句子序列的规则 为什么一句话可以这么说也可以那么说? 如何建立快速

GUANGZHAN的专栏 5198

华为诺亚方舟实验室主任李航:迎接自然语言处理新时代

作者简介:李航,华为技术有限公司诺亚方舟实验室主任。主要研究方向为信息检索、自然语言处理、机器学习等。 本文经李航博士授权发布,未经作者允许不得转载。 欢迎人工智能领域技术投稿、约稿、给文章纠错,请发送邮件至heyc@youkuaiyun.com 人类的语言具有什么特性?下面是几位最权威学者的看法。语言是草根现象,它像是维基百科,聚集了数以十万计的人的贡献。当人们要找到更好的表达自己思想方式...

优快云 人工智能 1604

国内外自然语言处理(NLP)研究组

*博客地址http://blog.youkuaiyun.com/wangxinginnlp/article/details/44890553 *排名不分先后。收集不全,欢迎留言完善。 中国大陆地区: 腾讯人工智能实验室(Tencent AI Lab) https://ai.tencent.com/ailab/nlp/ 苏州大学自然语言处理实验室 http:/...

自然语言处理大菜鸟--HsingWang 5万+

第21课:中文自然语言处理的应用、现状和未来

自然语言理解和自然语言生成是自然语言处理的两大内核,机器翻译是自然语言理解方面最早的研究工作。自然语言处理的主要任务是:研究表示语言能力和语言应用的模型,建立和实现计算框架并提出相应的方法不断地完善模型,根据这样的语言模型设计有效地实现自然语言通信的计算机系统,并研讨关于系统的评测技术,最终实现用自然语言与计算机进行通信。目前,具有一定自然语言处理能力的典型应用包括计算机信息检索系统、多语种翻译系...

春华秋实 2588

差分信号_差分信号的原理及其在PCB的设计

差分线是 PCB 设计中非常重要的一部分信号线,信号处理要求也是相当严谨,今天为大家介绍下差分信号的原理以及其在 PCB 设计中的处理方法。 什么是差分信号 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相差 180 度,极性相反。在这两根线上传输的信号就是差分...

weixin_31849185的博客 1812

【NLP 自然语言处理】自然语言处理技术难点和挑战

一、**NLP 技术对标注数据依赖性较高,难以在标注数据稀缺的任务、语言或领域内发挥作用。**此前小米首席 NLP 科学家王斌在接受 InfoQ 采访时也曾表 示,获得大规模的高质量标注数据永远是个难题。当前主流方法的效果取决于标注数据的规模和质量。为解决这一问题,可以采用基于大规模无监督数据的预训练模型,或者尝试半监督或无监督的方法,包括零样本学习(Zero-Shot Learning)或小样本学习(Few-Shot Learning)方法。 二、第二是轻量级优质模型问题。当前的主流模型需要消耗大量资源进

赖德发的博客 6756

EMC辐射发射测试:垂直与水平极化测试原理与实战指南

电磁兼容(EMC)测试是确保电子设备在复杂电磁环境中稳定运行的关键环节,其核心在于评估设备产生的电磁干扰(EMI)强度。辐射发射测试作为EMC测试的重要组成部分,通过测量设备向空间辐射的电磁噪声,判断其是否符合国际标准限值。测试原理基于电磁波的极化特性,即电场矢量的振动方向,主要分为垂直极化和水平极化。理解极化特性对于精准定位辐射源、高效进行EMC整改具有重要技术价值。在工程实践中,垂直极化噪声通常源于线缆辐射等垂直结构,而水平极化噪声多来自PCB走线等水平结构。通过分别测量两种极化方向的辐射最大值,可以全

weixin_32770423的博客 357

北大AI第八讲 李航 自然语言处理的现实与挑战--李航 VS 雷鸣 对话全文

李航 VS 雷鸣 对话部分 雷鸣:特别感谢李老师精彩的讲座。今天这个讲座基本上对自然语言的整个发展能解决什么问题做了一个综述,而且对于技术、挑战和未来展望讲得特别全面,以致于我想到一个问题,后面就已经在回答了,今天讲得非常全面,非常仔细。我们想跟李航老师再探讨一下应用方面,我们知道华为的诺亚方舟做了很多计算语言方面的工作,能大概讲一下在落地方面做了哪些产品,大概现在处在一个什么水平上吗? 李航...

lingpy的博客 967

用 SQL 分析不同用户群组留存率

一、前言 用户增长对企业非常重要,主要包括: 新增、留存、召回 。本文介绍一个实用的分析留存率的方法: Cohort Analysis (群组分析),APP的下载量越高并不是说产品就越好,产品若没有很好的留存,花费大量时间和资源来挖掘新客户也将是竹篮打水一场空。群组分析有利于衡量用户在每个漏斗的用户流失节点、用户流失数据,从而帮助你发现产品的用户的行为模式和用户增长点。从本质上讲,群组分析Cohort Analysis为你提供了一种数据驱动的方法,用群组分析Cohort Analysis方法,可以来帮助提

qq_39984050的博客 3172

硬件工程师笔试面试高频考点汇总——(2025版)

《硬件工程师笔试面试知识汇总》一文系统梳理了硬件领域的核心知识体系,涵盖电子器件、模拟电路、数字电路等模块。文章详细解析了电阻、电容、电感等基础元件的选型与应用,深入探讨了三极管、MOS管等半导体器件的工作原理,并对比分析了DCDC与LDO等电源方案。在电路设计方面,提供了滤波器、放大器等实用电路的设计方法与仿真案例,同时包含UART、I2C等通信协议的实现要点。文章还整合了戴维宁定理等电路分析理论,并附有美团、联想等名企真题解析。通过器件特性、电路设计、企业真题三维度内容,为硬件工程师构建了完整的知识框架

XU157303764的博客 1万+

北大“人工智能前沿与产业趋势”课程整理01

1. 第五讲:小米黄江吉-人工智能硬件的发展 2. 第六讲:碳云王俊-DNA是生命数字化的过程,AI改变生命科学 3. 第七讲:百度徐伟-AGI 2050年前实现可能性超50% 4. 第八讲:华为李航-自然语言处理的现象与挑战

部落阁 2493

pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]‘ is not a valid editable requirement解决方案

本文主要介绍了pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]’ is not a valid editable requirement解决方案,希望能对使用markitdown的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

智源深度 | NLP 面临的三大真实挑战(含视频)

自然语言处理一直被誉为人工智能皇冠上的明珠。一方面,实现语言智能十分艰难。尽管机器人在电竞、围棋等方面频频超越人类,但目前的系统仍无法达到三、四岁孩童的语言和理解能力。另一方面在于自然语...

BAAIBeijing的博客 2509

ENS160传感器原理图设计,已量产(空气质量传感器)

ENS160 是一款集成式数字空气质量传感器,核心优势源于 “MEMS 传感元件 + 内置微处理器” 的架构。

不脱发的程序猿 571

Python电梯II

输入数据有若干组(最多不超过1000组),每组数据的第一行为四个如题目中所示的整数N,u,d,s,由空格分隔开。第二行为不同楼层需要上下楼的请求, 最多不超过1000个。每个请求的格式为"from-to",其中"from"和"to"为所在楼层和要到达的楼层,保证from!=to。

沐风—云端行者 910

机器学习面临的挑战和解决方法

今天看了微软亚洲研究院首席科学家刘铁岩博士分享的关于机器学习的六个挑战及解决思路的视频,做了如下总结。      1. 六个挑战      2. 解决方案            1. 六个挑战          2. 解决方案 2.1 对偶学习      对偶学习是为了解决没有标注数据的问题,主要是利用了问题的双向性和强化学习来解决。 2.2

自然语言处理及大数据 4687

【BlueDroid】蓝牙音乐协议分析之A2DP和AVRCP连接流程(超详细)

AVCTP协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制,他是一个总体的协议,具体的控制信息由其指定的协议(AVRCP)实现,AVCTP协议本身只指定控制Command和Response的总体的格式;这个过程中对应了Event中的btavrcp_play_status_changed_callback和btavrcp_play_position_changed_callback;上述为AVCTP-Control建立L2CAP连接的Command,对应H4的Sent (0x00);

风云说通信 7315

文末送书 | 李航老师新作!机器学习经典著作《统计学习方法》全新升级

李航 著清华大学出版社2022-04-01ISBN: 9787302597308定价: 138.00 元新书推荐????今日福利|关于本书|本书在《统计学习方法》的基础上增加了深度学习的内容,全面系统地介绍了机器学习的主要方法,系统阐述其理论、模型、策略和算法,是机器学习及相关课程的教学参考书,也供计算机各个领域的专业研发人员参考。机器学习是以概率论、统计学、信息论、最优化...

Paper weekly 1552

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

自然语言处理NLP国内研究方向机构导师

自然语言处理NLP国内研究方向机构导师 文|中文信息协会《中文信息处理发展报告2016》,数据简化DataSimp 文字语言VS数字信息 数字、文字和自然语言一样,都是信息的载体,他们之间原本有着天然的联系。语言和数学的产生都是为了交流,从文字、数字和语言的发展历史,可以了解到语言、文字和数字有着内在的联系。自然语言处理NLP主要涉及三种文本,自由文本、结构化文本、半结构化文本。 自然语言...

喜欢打酱油的老鸟 7195

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

跨模态图文检索:使用生成模型改进文本-视觉跨模态检索

《Look, Imagine and Match: Improving Textual-Visual Cross-Modal Retrieval with Generative Models》(2018 CVPR) 这篇文章提出了一种改进的跨模态检索方法,即,将生成式模型纳入文本视觉特征嵌入中,以进行跨模态检索。 传统的跨模态检索用的都是高层的全局抽象特征,而这篇文章还引入了基于两种生成模型的局部底层特征,从而捕捉到两种模态的数据之间更加细粒度的关联。 主要思想 提出的框架如图所示: 整个系统由3条训练路

weixin_44390691的博客 1558

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NLP待解决的问题及挑战

自然语言处理待解决的问题 多模态的融合 其实我们人是不怎么区分图片、文字、声音,因为到脑海中都会变成表述。这样类比到神经网络上,我们也可以对不同类型的信息源同等对待,同等建模,得到一个融合的信息,再基于这种信息进行编码解码,然后再生成其他媒介的东西,或者混合媒介的东西。 现在「读图」这件事更多的是图像领域的科研人员在做,NLP 领域的人很少涉足,NLP 研究人员一般是你读出来什么,表示成自然...

明日世界 2651

华为李航:NLP 有 5 个基本问题,深度学习有4个做得很好

对于自然语言理解,有两种定义。第一种是计算机能够将所说的语言映射到计算机内部表示;另一种是基于行为的,你说了一句话,计算机做出了相应行为,就认为计算机理解了自然语言。后者的定义,更广为采用。为什么自然语言理解很难?其本质原因是语言是一种复杂的现象。自然语言有5个重要特点,使得计算机实现自然语言处理很困难: 语言是不完全有规律的,规律是错综复杂的。有一定的规律,也有很多例外。因为语言是经过上万年的时间

程序猿视角 2222

自然语言处理发展,主要存在哪些难点?

1.语言不规范,灵活性高 自然语言并不规范,虽然可以找一些基本规则,但是自然语言太灵活了,同一个意思可以用多种方式来表达,不管是基于规则来理解自然语言还是通过机器学习来学习数据内在的特征都显得比较困难。 2.错别字 在处理文本时,我们会发现有大量的错别字,怎么样让计算机理解这些错别字想表达的真正含义,也是NLP的一大难点 3.新词 我们处在互联网高速发展的时代,网上每天都会产生大量的新词,我们如何...

多智时代的博客 1万+

文字图像处理之跨模态检索和VQA视觉问答

以下内容全是学习自一位学长的读书笔记!!!! 1.跨模态检索 他的定义就是将一个模态的数据(我暂且将认为是图片)作为查询去检索了一个与之相关的模态(我认为可以是视频)的数据,作为查询接过来返回。 一般会将模态分为: 1.自然语言处理(这就是传说中自然语言呀,写和说) 2.视觉信号(也就是图片和视频) 3.声音信号(对声音的编码和韵律) 这就像在输入文字的搜索引擎上面找对应的图片和视频,这就是跨模态(专业专业!!!) 他存在一些主要的方法: 1.子空间方法 基本思想:就是让不同模态的特征投影到一个共同潜在

wzw的博客 1573

国内自然语言处理研究组

学术界清华大学清华大学自然语言处理与人文计算实验室:清华计算机系前院长孙茂松教授是他们的leader 清华大学智能技术与系统国家重点实验室信息检索组 北京大学北京大学计算语言学教育部重点实验室:北大计算机学科比较有实力的一个研究方向之一 北京大学计算机科学技术研究所语言计算与互联网挖掘研究室中科院中科院计算所自然语言处理研究组:尤其专长在机器翻译领域,组长为刘群研究员,大家常使用的中文分词工具I

孙彦辉的专栏 6356
上一篇: 机器学习面试(作者面了8家公司,它们问了如下题目......)
下一篇: 北大AI第八讲 李航 自然语言处理的现实与挑战--李航 VS 雷鸣 对话全文
lingpy
博客等级 码龄9年 198粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值