人工智能的研究与应用领域的话,现在主要聚焦在这几个问题。问题求解,逻辑推理与自动定理证明,自然语言理解,自动编程,机器学习,专家系统,人工神经网络,机器人学,模式识别,计算机视觉,智能控制。其中,大众用的更多的是计算机视觉,当然自然语言理解也会用得比较多。
简单来说一下人工智能的发展简史,从人工智能开始来说,就必须要找到第一次工业革命——机械自动化。
从这个时候开始,它代表了像蒸汽机和发动机技术,再跨到从机械化到电气化的转变,到内燃机和电动机的技术,到第三次工业革命,就是信息系统、专家系统和深度学习,包括模拟化到数字化的转变。其中信息系统注重的是逻辑推理,包括像一些定理的证明,包括像跳棋程序,包括像神经网络的感知器和早期的专家系统。专家系统是系统内部支持构建事务所广泛主要应用在神经网络的一些初步的发展。深度学习主要还是基于现代互联网的这些数据,包括云计算、大数据的发展,使得现在在深度学习这一块应用得越来越多,也就是现在正在从自动化到智能化进行转变。
人工智能按计算智能、感知智能和认知智能的路径在发展,其中计算智能是快速计算和记忆存储的能力,感知智能即视觉、听觉、触觉这些感知能力,包括现在经常听到的,像边缘计算,识别周围的传感器的数据,各种摄像的数据,在终端通过一些算法和模型,然后马上反馈一些结果。认知智能是指机器具备的独立思考并解决问题的能力。当然是按照这个路径发展,但现在还处于感知智能这一块,认知智能正在做一些尝试。
其中有三个因素推动了人工智能的快速发展,第一个是互联网的发展提供了种类丰富的大数据资源,并且提升了算法的有效性。几乎现在每年会生成的数据量大概是在一千XB,并且计算技术的变革是硬件成本数下降,运算时间大量缩短,助力人工智能再度崛起。其中像AlphaGo,一共用到了1920个CPU和280个GPU。并且基础算法和AI平台的创新,减少了传统算法和人类手工总结特征的不完备性,大幅度提升算法的有效性,这三个因素推动了人工智能现在的快速发展。
来简单地看一下人工智能、机器学习和深度学习,到底是什么样的关系?其中人工智能,也就是现在说的AI,机器学习是AI的指向,深度学习是机器学习的走向。
机器学习从大类来分,它其实分为两大块,一块是监督学习,即通过已知的数据来预测未来的结果,主要会用到两大类的算法,一个是回归的算法,另外一个是分类的算法。无监督学习是通过探索现有的这些数据,寻找隐藏在数据中有用的信息和价值。比如说这里面用的方法和主要事项是聚类分析,密度估计和降维。
右边是每一个算法模型下的细分类。
其中,各大巨头也纷纷开源了自己的人工智能的平台。包括TensorFlow,Facebook,像加州伯克利分校,现在这种平台越来越多。
下一代人工智能的主要的方向是以下三个,寻求对深度学习的根本理解。为什么会把这个作为主要的方向?是因为对现在的机器学习来说,对于它的调试,包括模型的这些变量,其实它还属于一个黑盒的状态。对于黑盒的状态,至于调参是二还是三,差异会很大。但是有可能三就变好了,二就不好。这是为什么?并没有一个理论上的指导,这会影响到深度学习的更深层次的理论的支撑,每一个参数,它的指导的理论基础在哪里?只能通过分析师一个一个去试,这其实也阻碍了人工智能现阶段的一些发展。第二个方向是知识和数据的有机融合,包括像现在人类在做大量的决定的时候,不仅仅要用到数据,还需要一些业务知识。现在怎么把这些业务知识融合到分析的数据里,其实也是一个需要探索的方向。第三个是自监督学习和小样本学习,特别是小样本学习,不可能所有的训练样本都是很庞大的。在现在遇到的很多项目当中,客户提供的数据就是小样本的。怎么通过小样本去验证现有的模型是不是满足客户的需要?也是一个需要探索的过程。
大概理了一下人工智能的一些基本的概念,现状,包括一些未来要尝试的东西,其实跟整篇的主题,人工智能在的代码的应用,是息息相关的。
先理解人工智能现在发展到什么阶段了,然后再来看低代码现在处于一个什么样的阶段。
低代码产生的本质,是为了提升软件交付的效率和质量。 一般常规的做法,比如说非技术的方式,一般会通过存储的管理理念,包括像PMP、scrum、DevOps这样的一些理念来做到管理开发的流程化。但是这里面不可控的因素有很多,项目经理的能力,公司的文化,个体的差异,会对交付的效率和质量有一些影响。
对于技术的方式,每个公司都有自己的框架,每个框架都有自己常规的像加工的模块,权限,消息管理,当然还有一些业务组件。 围绕着开发规范进行各种各样的像DB操作,业务逻辑的开发,模式的封装,这些是比较常规的做法。
但是这几年低代码产生的很火,低代码的定义,其实是一种让开发者依托平台快速发电企业的信息化系统,用拖拉拽的方式来实现一些业务的简单处理。低代码产生的源头还是框架的升级,为了提高开发的效率。
而零代码就更激进,把所有的东西都搬到了线上,然后把一些业务逻辑的模式,都凑成模式进行规则的约定,来进行开发。而且它里面集成了一些工程化的工具,可以让一次构建,一次部署。
低代码开发的平台,大概的历史是14年的时候正式提出低代码的开发概念,但是整个低代码,所有的软件开发公司,它成立之初就在构建自己的开发框架,只是那时候并没有叫做低代码,而是叫做开发框架。而在2015到2017年的时候,像微软、谷歌都在强势入局,包括像OutSystems,包括像简道云、氚云等低代码厂商这些开始发力。18年的时候腾讯、百度和阿里都开始进入低代码的开发领域,19年国内低代码还处于早期,需求正在暴增,到现在低代码平台已经很多了能。包括像阿里的宜搭,然后也是迎来了6.0的版本。
目前市面的一些低代码的分类,主要是两种类型。一个是针对IP人员的开发工具型,另外一个是对业务人员的业务复用型。开发工具型主要分为三类,DSL开发框架,它主要是定义自己的DSL开发模式,代表作像Uni-app,双链AI软件云引擎。第二类是在线IDE,代表作是Mendix,AppCube,iVX这样的一些公司和产品。还有一个是组件代码库,简而言之,就是通过组件代码来进行这些应用的开发,主要代表公司有BrickNext,Vant,ICE。业务复用型是以应用开发平台为主,包括像宜搭,它也是应用开发平台,然后在平台上进行构建。包括像行业Saas,像Odoo、OpenERP这些就是基于行业的Saas化的,低代码的一些开发平台。所以从常规来看,低代码它的技术的核心,无外乎就是面向的到底是开发人员进行设计,还是面向业务进行抽象和拼装,从而来减少开发人员在使用过程当中对使用习惯,快速的一些构建,包括一些组件的复用来提高效率。还有一个就是面向业务,通过业务的视角,可以少量地开发或者是不开发,或者是预备开发的一些知识,就可以去搭建应用。
低代码也面临着一些挑战,像传统的DevOps流程,因为低代码通过一站式的解决方案,提升了效率,降低了门槛,但同时会对应用的发布,对一些传统企业的DevOps这样的流程和规范,形成一些挑战。引入低代码,甚至会改变企业的现有的一些工作流的方式,所以对大型企业的阻力也会比较大。第二是技术局限,当前的低代码是外部端的产品为主,技术上受限于浏览器的性能。交互上需要妥协于浏览器的技术,增加了向用户屏蔽技术细节的难度。 并且,在业务和工具之间,程序化设计的过程并没有省略,而是人工来完成的,它需要有一个立足于业务,并且有较高抽象思维能力,能够加入内部产品,工具化的一个人员。 比如说在这个挑战里面,可能低代码开发的还需要有一个专门的岗位,但是现在并没有完全意义上明确岗位职责的范围。
对于低代码来说,它的发展展望主要有这三块,一块是不改变现有开发习惯的在线IDE。因为对于开发人员来说,改变开发人员的习惯,其实是低代码面临的最大的挑战。如果有一款IDE是在线的,在不改变现有开发人员的情况下,开发人员的适应度会很高。因为任何的低代码平台,除了应用的适配之外,还需要培养自己的生态。所以第二就是要通过强大的生态来支撑应用的搭建平台和行业的Saas。第三个就是通过人工智能对低代码的开发框架的自适应,这个怎么来理解?现在所做的任何低代码的开发,有一步并没有省,就是从业务到代码的程序化设计。至于人工智能能不能达到程序化设计,能够做自动推导,现在也只是在尝试。
回到现在的主题,到底是基于哪个点在尝试,也就是设想的在整个链路的过程当中,描述好业务之后,可以是文本,可以是语音可以是图片,通过描述来转换到符号系统,也就是符号系统做的事情。再通过符号系统来进行特征,上下文包括策略,进行语音转换,通过语音转换来生成低代码的配置。
举个简单的例子,有一个业务是给客户做的客户关系系统,可能在业务描述里面,描述客户关系系统,有订单管理,有客户管理。客户管理与订单管理有一定的关联关系,通过这样的描述,在符号系统里面,把对应的订单管理,相应的管理的一些关键字,会把它抽取成符号。在这个符号里面,通过逻辑推理的单元,然后把它抽取特征,再通过策略,然后把关联关系形成到对应的,比如说申请一些DV,要表达一些展现方式。通过一些抽象,再把它定义成语义,通过语义转换成低代码的配置文件。
整个实现的大致的链路,从计算机认知来看,首先描述比较快的,比较容易理解的,主要是以双通道理论来表示的,这个是认知科学里面的。其中System1表示的是直觉的、快速的、无意识的、习惯的认知系统,当然这也是深度学习擅长的事情。System2表示有逻辑的、有趣的、有意识的、语言表达的、推理的系统,也是深度学习需要研究的方向。所以这种尝试只在于把程序化设计通过System2转换到System1进行有机的整合。
这张图就更容易表达这里面的尝试,通过神经系统来进行问题的输入,通过符号系统来寻找目标和答案,这里面包括像低代码,它会以DSL的配置形式来做符号的自适应。应用逻辑是通过神经系统来做问题的输入,最后输出成想要的目标。目前这一块正在对几个算法做验证,DSL的低代码平台,已经全面的应用在项目当中,但是前面这一块,还在进行言论的构建。
我们所分解的步骤,包括怎么识别这些符号、具体的特征,通过符号系统来对应怎么构建数据库、怎么构建API 、怎么构建我的页面并且怎么组装成逻辑,当然逻辑的这种算法我们并没有完全的想好用哪个模型,但是前三块的模型已经有了一些尝试、理解和训练集.