Software2.0

深度学习和计算机视觉专家、特斯拉人工智慧部门主管Andrej Karpathy最近提出Software 2.0的概念,将神经网路视为Software 2.0,而非「机器学习中的一种工具」。在没有深度学习的情况下也是适用的。

以前工程师想清楚业务逻辑然后实现系统代码,现在随著软体系统越来越复杂,,系统复杂到业务的逻辑已经不能由人设计了。在现实世界中,大部分的问题具有收集数据要比明确地编写程序容易得多的性质。以后程序员不再需要开发复杂的程序。他们需要收集、整理、操作、标记、分析和可视化提供给神经网路的数据。

人已经没有办法理解业务是什么逻辑,是什么逻辑产生输出,所以只能依靠软体系统自身优化的过程去寻找业务背后的逻辑是什么。所以传统的feature engineering就不能用了,

人只需要设计一个(深度学习)框架,框架的具体参数不需要人设计,人只需要标注很多数据, 让系框架根据学习输入,寻找背后的逻辑,产生输出。

知识从何而来

前面所讲到的智能的盒子(书),里面的知识(能力)从哪里来呢?传统的方法是专家理解并寻找出在复杂世界中的运行规律,然后写成rule或者知识图谱,写成计算机程序,这些计算机程序就可以像专家一样做决策,取代专家的位置。 问题是流程中需要很多很多专家,专家就成了瓶颈。

弱监督下的自然语言处理

人希望能达到的效果是只给出端到端的训练样例,如用户一个查询,用户需要什么,喜欢什么,但是不会告诉系统怎么产生结果,系统通过机器学习的过程自动搞清楚输入的问题背后的逻辑是什么,最终从输入产生输出,从而快速产生很智能的系统。

语言和推理

在这里再介绍一个概念语义计算。

自然语言有两种主流派别,分别观点是:

? the formalist view(形式主义观点)

自然语言是拿来计算的,日常生活中有很多需要推理情况,如要知道事物之后的规则,现象运行的规律等等,这些规则都是用自然语言来描述的。所以他们认为自然语言的最大作用是推理和计算。

language was primarily invented for resoning

? the functionalist view(功能主义观点)

观点是自然语言是用来交流的,计算能力是次要的

当前两种观点趋于融合(cognitive coupling hypothesis),认为人类进化到了一定阶段,就拥有了推理能力,这个能力可以用于导航,交流,狩猎等。

复杂例子一

让机器人理解 「bart『s father is homer「这句话。

机器人需要通过计算来理解这句话,假设机器人有一个知识图谱,在机器人的脑海里已经知道有一个人叫做bart simpson,有父母双亲,爸爸叫做homer,性别男,妈妈叫做marge,性别女, 知道一个人叫做bart,父母。当机器人听到bart『s father的时候,机器人通过计算找到bart的父母,性别是男性,就知道了homer是bart的父亲。

复杂例子二

这个例子涉及到语义组合,例子的目标是理解「impressionist painters during the 1920s」。

每个词的背后都是有语义的,painters背后的语义其实是一个计算步骤,在知识图谱中找到painting(画)它有个关系(!/)叫做art_forms, art_forms意思是艺术形式是否是绘画,整个计算过程就是从paining节点出发找到所有艺术形式是绘画的人。(结果会找出很多)。所以painters的语义是计算步骤,计算步骤放入到具体的事件(知识图谱)中,计算结果会出现很多符合条件的人,这些人就相当于语义的外延。,

下面把painter和其他语义结合起来,比如impressionist<visual_artist>, x代表一个denotation,已经有了一群artist,通过条件associated_periods_or_movements(事件)过滤,时间是impressionism,意思是这个画家参加过印象派的事件,说明它是印象派的艺术家,这个过程就是过滤掉不是印象派的画家。本来有4个画家,现在剩下两个。把语义组合在一起变成一个更长的计算步骤,算出一个更长的语义外延。

<artist>during the 1920s的语义是看画家的创作的时间是否在20年代,把不是20年代创作的画家过滤掉。把以上三个语义连在一起,是一个更长的计算步骤。

例子总结

左边是自然语言问题,如「largest city in us?」,把这句话翻译成计算步骤,city存在变数v1中,「hop v1 city」意思是找到这个国家所有的城市,「argmax v2 population」按照人口排序。

最后输出所要的答案。自然语言理解就是计算过程。

语义好像外语,因为要描述计算步骤需要一种语言,而这种语言不是人类语言,是机器语言。自然语言理解目的是把人类语言翻译成机器语言。

语言的作用是控制,编程是为了控制机器,和人交流是为了控制人的行为。因为目的是控制,其实优化目标最好用控制的目标函数,所以加强学习的目标函数是效果最好。

语义搜索

计算机被发明之前,就觉得它可以帮你搜索各种信息的装置。

如搜索引擎就已经实现了,但是搜索引擎不能理解自然语言,虽然能找到你要的网页但是不能理解,

所以搜索的应用主要是帮你找到互联网上的资源,如电影,餐馆,产品等。

语义解析

语义解析目标是把自然语言(natural language)翻译成机器语言或者叫做logical form(逻辑表达式),机器语言在知识图谱上进行计算,算出正确的答案或者你期望产生的行为。传统的训练方式叫做强监督,就是训练的时候要给logical form的输入,把每句话对应的步骤标注出来,这样就很难大规模的应用,因为人力成本很高,不是什么人都能理解机器语言怎么写。新的趋势就是弱监督,我只是标注它最终的行为,而不是标注中间的步骤(中间的计算过程)。

基于自然语言理解的问答系统的挑战

第一:paraphrase,同样的语义有不同的理解,如何找到足够的数据,把他们都表示出来。

第二:compositionality,如何把语义组合起来,表达出你要表达的意思。

第三:large search space,搜索空间,知识图谱存储空间很大。如知识图谱有2w个关系的种类,基于此写计算步骤是很复杂的,同一个语义,要搜索上百万的表达式才能找到目标表达式。

典型数据集

webquestionssp数据集:它是berant在2013年斯坦福做的,里面包含5800多个从google和amazon爬下来的问题。这些问题都可以回答,如

? what do michelle Obama do for a living?

Writer,lawyer

? What character did natalie portman play in star wars?

Padme amidala

? What currency do you use in costa rica?

Costa rican colon

? What did Obama study in school?

Political science

? What killed Sammy davis jr?

Throat cancer

Wikitablequestions数据集,它是通过维基百科的图表中回答问题,如:

上表是关于不同国家举办奥运会,问答系统可以通过图表来回答问题。这个数据集研究的问题更难一些,因为程序的空间更大,用到的词更多,对机器学习挑战更大。

上表是wikitablequestions用到的function,上面都是在图表中计算的步骤,把他们组合起来,就可以通过图表回答问题。

参看:

飘哥:学习基于弱监督学习的自然语言理解(上)?

zhuanlan.zhihu.com图标
推荐阅读:

相关文章