新春伊始,主持人瓦教授、资深天使投资人老K和AI专家Jason来到恒生先锋实验室演播间,进行了“钱塘之光”系列的首场深度交流。以下是交流记录。
瓦教授:各位朋友,春节好,虎年大吉!今天除了是大年初四,还是冬奥会举行开幕式的日子。此外,还是传统二十四节气的立春。从今天开始,恒生技术之眼将在每个节气日推出“钱塘之光”专栏。我作为主持人,将在每次深度交流中邀请两位神秘嘉宾,就当前技术热点进行点评,也会对这些热点在金融行业中的应用进行探讨。
我们的第一位嘉宾是资深天使投资人老K。他名校毕业,海外深造后在华尔街从业多年,如今在上海滩,在新技术领域搞投资。备注:他大学学的是物理,不是文科。
老K:谢谢瓦教授的介绍。各位朋友大家好,恒生技术之眼发过很多有份量的文章,背后有产品、技术上源源不断的干货在撑腰。我挺佩服,可惜恒生早已过了需要天使投资的阶段,要不然我一定会投恒生的。
瓦教授:你可以关注恒生旗下成长中的子公司啊。好,下面我来介绍第二位神秘嘉宾,他是AI专家Jason。他读博期间受到名门名师指点,之后进入某互联网大厂工作数年,再之后自己创过业,搞得风声水起后突然卖掉公司,回到学术界搞研究去了。
Jason:谢谢瓦教授。各位朋友大家好。我这人就适合心无旁骛,专注技术。不过来到这里也有些忐忑,不知道技术内容的深浅程度如何把握。希望不管说深了说浅了,瓦教授你都给兜着点儿。
瓦教授:你说话我放心。我们言归正传。昨天某公众号发了一篇文章,你看这标题:《AI卷趴程序员!DeepMind祭出竞赛级代码生成系统AlphaCode,超越近半码农》(点击此处可查看原文)。看这架势,是不是AI端掉大量程序员的饭碗,已经是板上钉钉的事儿了。
老K:我没那么乐观。DeepMind搞出来的东西,虽然技术上可以引起轰动,但是多半不具有投资价值。AI编程这东西要想落地,还有相当长的路要走。
Jason:我也注意到了这个报道。他们说的是“竞赛级”的,这个有两重理解,第一重是正面的,都已经能参加竞赛了,而且在参赛选手中的排名已经很靠前了(前28%);第二重理解是负面的,就是这项技术是为竞赛量体裁衣做的,他用的训练数据都是竞赛的,所以模型训练出来,哪怕再微调,也只是用来打比赛的。而工业界程序员干的活儿远不止这个。
瓦教授:老K,你不是投过搞低码的创业公司么?你觉得这件事和你们搞的低码有多少联系?能称之为下一代的低码技术么?
老K:我们说的低码,不是无码,也不是自动编程。自动编程那是有不可逾越的理论障碍的。
Jason:对,和图灵机的停机问题一个性质的,早就有定论。
老K:而且,工程化的编程,也没那么多算法啊、优化啊等等“竞赛级”的内容好做,很多工作量浪费在简单但不重复的劳动中。如果真的重复,那就做成产品卖了。偏偏客户化定制是一家一个样,都很简单,但就是没办法抽象成产品模式。这就导致很多能力上高配的程序员在做很不能发挥特长的活儿。这个部位的痛点,现在是用低码技术来解决。
瓦教授:那低码和无码的区别又是什么呢?
老K:无码技术是面向业务人员的。业务人员在面对突发需求的时候需要进行即席的程序开发,开发出来以后一次性使用,不具有积累和抽象价值。所以,面向这个部位的痛点是,你不得不为完全不可复用的需求进行程序开发。偏偏这样的需求跟业务联系往往非常密切,所以业务部门得自己去养这样的人。无码技术主要是针对这样的应用群体,用各种技术手段把即席的程序开发完全取代掉。
瓦教授:懂了。低码是面向开发团队的,目的是提升定制化开发效率,尽量让专业的程序员干专业的事儿,但生成出来的代码至少在一家用户那里是可以复用的;无码是面向业务人员的,尽量让业务人员发号施令之后就直接按需干事儿,用后即丢弃,完全不需要程序员,但只局限于很窄的业务场景。
老K:很形象。跟这俩相比,自动编程还是诗和远方。
Jason:自动编程还是个很笼统的大杂烩。严格地说,自动编程又可以进一步分成“按照形式化spec编程”和“按照自然语言指令编程”两个不同的分支。前者是一个定义明确的任务,问题只是是否做得动,目前看离“做得动”还差得很远。后者是一个定义模糊的任务,所以只能用预训练模型去适配和微调,而且也不保证成功。
瓦教授:为什么说按照形式化spec编程离“做得动”还差得很远呢?
Jason:那是因为spec是描述性的,只要what;程序却是过程性的,必须要how。但是,字面翻译spec,也隐含了一个how,不过可能是个很糟糕的how。举个简单的例子,按照spec字面定义,求两个整数的最大公约数,隐含了用遍历的方式求所有的公约数、从中找出最大的等等操作。这样的操作如果直译成程序,会是一个很糟糕的算法,至少跟辗转相除算法相比差了不止十万八千里。而一旦寻求优化,那就涉及到两个程序的语义等价性证明。这就是我说的,图灵机停机问题一个级别的不可能问题。
瓦教授:咱们再回到“自然语言编程”。看起来AlphaMind的DeepCode也是这个路数,这个路数你说“不保证成功”又是什么意思?
Jason:这是他们所使用的技术路线决定的。这个技术路线就是深度学习。预训练模型是深度学习的一种高级形态,把大数据大样本集中使用,得出预训练模型,可以把自然语言描述的竞赛题映射到一个事先准备好的题型“套路”上去,每个套路会推荐一段代码。以这段代码为基础,通过在刷题中进行微调,最后获得正确的代码。这条技术路线有两个基本问题,一是数据覆盖不全的地方,不要指望能够学习出超越数据的东西;第二是在数据过于集中的地方,有可能出现“过拟合”,也就是把局部经验当普遍真理了。这两条问题,对于深度学习的技术路线来说,是致命的,也决定了它的应用局限。
老K:补充一句。这种竞赛题型的所有自然语言需求描述都是没有业务语义的,不可能迁移到真实业务场景。就算这个技术是管用的,那也离不开有真实业务场景的自然语言需求描述数据。而这需要自己积累。除了像恒生电子这样常年深耕一个领域、有条件深度接触业务的公司,只掌握通用技术的初创公司是做不来的。
瓦教授:自动编程的情况大概清楚了。从正面,我们可以理解为一种有挑战性的技术尝试成功了;从反面,我们可以理解为像恒生电子这类面向行业和领域的、拥有大量程序员的大型软件公司,一时半会儿还用不上这项技术。那我们再回过头来看低码和无码。老K,你既然投了这类公司,一定有自己作为专业投资人的正面的判断吧?
老K:当然。我们认为,低码是对可复用需求的封装,也是对不可复用需求的适配。可复用的需求,尽量让它产品化、平台化,只暴露出需要调用的API即可。不可复用的需求,我们寻求对程序员最友好的方式来适配,目前最主流的方式,就是用在图形界面上的拖拉拽等操作,像做配置一样实现那些不可复制的定制化需求。当然,你背后被封装的那些API才是硬道理。没有那些API,低码什么都不是。
Jason:嗯,除了拖拉拽这种主流方式之外,还有两种方式,一种是通过对自然语言指令的理解来完成从定制化需求到API调用中间的所有需要编码的环节,这里面也包括了对数据库操作的SQL代码,也就是说会用到所谓的NL2SQL技术;还有一种是通过扫描草图来理解GUI的设计意图。这三种方式会在不同的细分场景中发挥各自的优势,大大减轻编码工作量,还可以把受过更全面技术训练的程序员腾挪到技术含量更高的岗位上去。
老K:至于说到无码技术,我们认为它是数字化进程发展到一定的程度的产物,基本的想法就是在业务人员对数据的理解力所达的范围内,实现即席需求的无人化处理。它会减少企业对面向即席需求的内部外部编程人员的依赖,实现业务人员与数据的深度融合。这就是业界所说的“公民化编程”。按我的观点来看,无码技术还没有像低码技术那样具有明确的投资前景,可能里面还有一些关键技术没解决吧。但是如果让我排序的话,无码技术的现实可行性还是远高于自动编程的。所以无码领域的技术进展也是我非常期待的。
瓦教授:嗯,无码技术对于资本市场真是太重要了。我们有很多金融专业人士,他们有很好的数理基础,对专业领域的数据有很深刻的理解,但是每次灵光一闪,就要面对很多脏活累活儿,否则难以落地。如果有一个无码的工作台,能让分析师们从调取数据库/知识图谱里的基础数据、按一定的条件筛选数据、把这些筛选出来的数据送到某些专业化的Python或者MatLab程序里去分析处理,最后形成对数据的洞察……这些动作都能在自动化的环境里如行云流水一般,随着分析师的自然语言指令一气呵成,那才算是金融领域的真正数字化。
Jason:说到这个我就格外兴奋。看来我们的学术研究在资本市场大有用武之地啊。
瓦教授:好,今天的话题我们就聊到这里。感谢两位嘉宾做客钱塘之光,为我们带来不一样的精彩观点。朋友们,我们下一个节气雨水再见。
老K、Jason:再见。
推荐阅读:
你“在看”我吗?