为了你的安全,他们自创了一套编程语言

为了你的安全,他们自创了一套编程语言

注:以下内容根据阎文斌在 GIF2016 极客公园创新大会「未来头条年度版」上的演讲整理而成。


娜迦是一家创业公司,已经创业有两年半了。他们的 CTO 阎文斌自嘲道:「我们最初是由一群俗称的 IT 屌丝程序员组成的,大概符合这样几个特点:平均十年开发经验、15 个程序员、最小是 86 年的。」

就是这样一群人组成的团队,创业之初没有一个产品经理,没有一个运营经理,全是由技术组成的。相对于其他的创业公司而言,他们最大的优势在于,不缺产品开发与技术。

不止于两款产品

两年之间娜迦做了两款产品,第一款是在移动安全领域,帮助企业对它们的APP程序进行加固,来防止黑客的逆向与分析。

另外一款产品可以在非 Root 的环境下,帮助 Android 手机上实现自动更新。也就是说电商用户在双十一、双十二活动的时候,不需要打太多的广告来告诉用户需要更新,因为娜迦可以帮助用户后台自动更新。

但娜迦并没有停留于此,他们做了一些市场调查发现企业客户有这样的一些需求:应用在运用过程中,能否可以记录所有的用户行为,从用户输入密码开始,输入密码的快慢、输入错误次数、过程当中是否切换其他程序、停留多少秒等等……阎文斌认为这样的要求「特别无理」。

GIF2016011阎文斌mark.jpg

但是回过头来,娜迦也做了一些市场调研,国内的像腾讯、支付宝、国外的 Facebook、Google 也号称有这样的系统。对这些团队进行调查,发现他们大概满足以下几个特点:比如,收集到用户手机号或者机器码、恶意的 IP 地址,把这个当作征信数据库,在后台做匹配等等。而厂商就在广告词里打出一些「生物识别」、「大数据分析」之类的噱头。还有另外有一些公司到企业则是主攻各种 IDS、防火墙、杀毒软件等等。基于这些特点,征信服务特别需要这些数据。

「我们 COO 天天和我说能不能做一些创新类的产品,从用户行为的角度,像谷歌、Facebook 它们声称有的这些产品,让我们创新」,阎文斌说道,「今天大会的主题也是「创新」,但是就我个人而言非常讨厌「创新」这个词。像我经常在微博和微信上看到「选择比努力更重要」,我一向认为只有弱者才需要选择。」

文斌:人工智能不过是很廉价的东西

基于他们去年 9 月做的调查,娜迦为了构建出把用户行为进行量化的模型定义了三个概念:从状态、动作、关系这三者表现用户行为——假设我们一次购物流程从登陆开始,登陆、浏览商品、选定商品、付款、退出,这些是用户的行为。登陆是一个状态,浏览商品是一个状态,付款是一个状态,退出是一个状态,它们之间的关系就形成可量化。例如从登陆开始,登陆到浏览商品之间停留多少秒、是否切出去了、触屏次数、GPS 的变化等等,当我们检测出这样的动作之后,可以量化这个动作,然后发送给计算机,让后台进行计算。

1.pic_hd.jpg

(这幅图展示了阎文斌这套理论的基本工作原理:利用这个理论把动作、状态、关系量化成数据,拿到数据之后发送给后台,后台设置了款机器学习的引擎。)

说到这里,阎文斌却表现出对「机器学习」这个概念的不屑。「机器学习、人工智能这个词被大家用烂了,其实也没那么神奇。对于程序员而言,搞人工智能也就是 200 块钱的事情。他们只需要花 50-60 块钱买一款《人工智能实战》之类的书,大约 2 周之内就会使用它。」

「但是如果你想进一步学习一些理论,深入知道里面的工作原理是如何的,你再多花 20-30 块钱买一本国外斯坦福之类的人工智能科班教程就可以,看这本书学习大概 3 个月的时间,每天读一些,然后就可以弄懂这样的东西。其中的数学证明完全可以跳过。」他继续说道,「如果你想深入的看论文,能读懂理论证明,再花 60 块钱买三本书,一本是微积分,一本是线性代数,一本概率分布,但不需要完全看完,微积分只需要看到微分,线性代数只学会矩阵计算、加减乘除,概率分布就更简单了。现在 90% 的需求都到不了我刚才说的第三项,这些都很廉价,并不像所有人说的那么高大上。」

而阎文斌构想的这套系统主要解决的是风险控制中的核心问题:一个是验证用户是否本人,另一个是对用户进行分类。如果这个用户行为符合本人行为,购买行为偏差不大,系统就会判定是用户本人。第二个是对用户进行分类,对多个动作状态进行集合匹配进行分析。

之后,他又举了一个打车的例子:一名正常的用户不会频繁取消订单,直到出现某一特定的号码为止。那么,通过这个系统就能鉴别出这个用户和司机存在「刷单」骗取补贴的行为。

为了实现这个系统,他们自创了一套语言

为了帮助企业和用户解决上述一类的问题,他们开发了一门编程语言:nlang 语言。这门语言可以帮企业用户量化用户行为,把量化完的用户行为发送到后台,后台进行运算,最终完整的分析这个用户的行为,在整个流程中实现对风险的控制。

「我们并不想做一门真正的编程语言,我们想做在特定领域解决特定问题的小众语言。」阎文斌说道,「任何事物都需要有一定的形式表示,只要把形式做好,后面的逻辑就是你自己写的。由于我们这个语言用图论所描述,图论可以描述很多计算机上的问题。所以我们有个想法,想把这门语言扩充到以任何图论理论能表示的问题,像神经网络这样的。」

但是在这个过程中,他们却面临着一个非常大的问题。很多厂商大谈人工智能和机器学习,有很多是做机器视觉和机器图像视觉的,听上去虽难,但是它的样本是确定的。即让一个机器人识别上下左右这四个方向,例如说识别向左,只要给它一定量向左的图片,它就能完成识别的学习,哪怕中间有些噪声数据是向上或者向下,但是在大量样本情况下可以进行忽略。

但是这套系统却不行,用户行为是很不确定的。比如,一个小姑娘在购物这一个简单的流程当中就能量化成出多个目标项量来,而这种项量相互之间差距又非常大,它并不像向上、向下、向左、向右或识别一个人脸,那么容易确定。所以不确定性是阎文斌他们团队正面临的难点,也是现在正在解决的问题。

阎文斌GIF 2016 演讲黑客
关注极客公园公众号
反馈