加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

让AI造福金融,支付宝端到端AI系统SQLFlow实践

发布时间:2020-07-10 19:52:39 所属栏目:动态 来源:站长网
导读:导语: 端到端机器学习是一种由输入端的数据直接得到输出端结果的AI系统,它可以对业务人员屏蔽复杂技术细节,同时给模型以更多自动调节空间,增加模型整体契合度。近两年来,端到端机器学习成为AI领域研发热点,蚂蚁集团于2019年4月发布端到端AI系统SQLFlow开源

导语:

端到端机器学习是一种由输入端的数据直接得到输出端结果的AI系统,它可以对业务人员屏蔽复杂技术细节,同时给模型以更多自动调节空间,增加模型整体契合度。近两年来,端到端机器学习成为AI领域研发热点,蚂蚁集团于2019年4月发布端到端AI系统SQLFlow开源项目,受到业界广泛关注。今天,就让我们来看看它对端到端AI的思考与解答。

正文:

SQLFlow 是蚂蚁集团开源的使用 SQL 完成 AI 工作流构建的编译系统。SQLFlow 将多种数据库系统(MySQL, Hive, MaxCompute)和多种机器学习引擎(Tensorflow, Keras, XGBoost)连接起来,将 SQL 程序编译成可以分布式执行的工作流,完成从数据的抽取,预处理,模型训练,评估,预测,模型解释,运筹规划等工作流的构建。

接下来我们会根据以下内容逐步介绍SQLFlow:

- 为什么要使用 SQL 语言描述端到端 AI 任务

- 使用 SQLFlow SQL 语句构建 AI 任务

- 使用 SQL 程序构建端到端 AI 工作流

- 使用 SQLFlow Model Zoo 沉淀模型

- 应用 SQLFlow 的场景案例

为什么要使用SQL语言描述端到端AI任务

首先,思考一个问题,人工智能和金融有哪些耳熟能详的结合呢?

1、在智能征信风控方向,可以运用大数据进行机器学习,刻画用户画像,抽取个性化典型特征,推进反欺诈评估、用户征信评估。

其中用到的技术包括:聚类(将有相似特征的群体聚类,确定人群标签)、分类(学习已有分类标签的用户特征,识别新用户所属的类型、标签)、模型解释

2、在智能投资顾问方向,我们以人工智能算法为基础,为客户提供自动化投资管理解决方案,包括提供投资资讯、构建投资组合、直接投资管理等服务。

用到的技术:时序模型、回归、运筹规划

3、智能营销方向,上世纪90年代沃尔玛超市将「啤酒」与「尿布」摆在同一区域的做法,大大增加了商品销售收入,成为借助数据分析实现智能营销的经典案例。而今天,在人工智能等新技术的加持下,数据分析技术正在不断进化,千人千面的智能营销已有广泛的应用。

用到的技术:推荐算法、Ranking、CTR、运筹规划

然而,构建传统的机器学习工作流程,需要经历非常多的步骤并使用复杂的技术栈:

让AI造福金融,支付宝端到端AI系统SQLFlow实践

构建完整的 AI 应用,首先需要获取用于构建模型的数据,这些数据通常可以从日志、订单数据、交易记录等获得。之后通过数据抽取,将其中我们需要用到的部分信息,从多个存储位置抽取出来。抽取数据之后需要进行数据预处理,比如去掉错误的数据,填充缺失的数据,整理,排序等。预处理完成之后,我们需要从这部分数据中得到用于训练模型的特征,比如提取时间序列的周期性特征,获取交叉特征等,最后将构建的特征转换成训练框架可以接收的数据格式,才能开始训练。

另外,在开始训练之前,我们还需要确定使用哪个模型,XGBoost模型还是深度学习模型,哪个模型更适合当前的场景?模型可以从现有模型库中获取并根据需要修改,或者从头编写新的模型使用。另外在构建机器学习模型时,我们需要不断的评估模型的表现如何,以获得最优的模型,这是就要使用各种评价指标描述训练好的模型。当模型评估结果验证达标之后,就需要将模型代码发布一个新的版本,部署到线上环境。发布之前还要通过线下测试,小流量ABTest,然后推全部署。如果是离线任务则需要更新定时任务使用新的模型代码。

当模型的时效性比较强的时候,我们还需要不断的使用新的数据更新模型,就是“增量训练“,这样每次增量训练就不得不再次从头走一次完整的流程。

要完成这一整套流程,需要用到复杂的技术栈。

让AI造福金融,支付宝端到端AI系统SQLFlow实践

我们需要的数据可能存储在磁盘,或者像 HDFS这样的分布式文件系统,或者可以从结构化的数据库系统中获得,或者是 NoSQL 引擎(比如mongodb)存储的数据;在预处理阶段,有可能需要编写 MapReduce Job 来处理 HDFS 上的大量的数据,或者使用 Hive 编写 SQL 语句完成处理,亦或直接编写 Python 代码处理数据;在特征工程阶段,又需要使用类似statsmodels, tsfresh 或者编写 Python 程序使用诸如 Pandas 之类的库完成预处理;在模型训练阶段,算法工程师首先需要掌握各种建模的能力,算法原理和基础知识,也需要熟练使用各种机器学习引擎如 sklearn, XGBoost, Tensorflow, Pytorch等;最后在上线部署阶段,还需要了解模型如何接入Serving系统,怎么样做ABTest,怎么编写CI/CD任务保证模型上线不影响线上业务。

构建AI应用,不仅需要冗长的链路和复杂的技术,从业务需求到 AI 系统上线也需要特别长的沟通链路。

让AI造福金融,支付宝端到端AI系统SQLFlow实践

比如业务同学和产品同学在构建产品思路的时候,在他的脑海中的 AI 系统需要完成的任务,传达给开发同学之后,有可能传达不到位,需要反复的沟通。有时甚至做了一半还需要重做。

另外从需求到上线,为了保证线上服务和数据产出的稳定,也需要通过许多的步骤。比如业务同学说:「活动要上线了,时间点很关键,明天必须发布!」开发同学接到需求,加班加点,开发验证完成之后,模型准确率提升10个点,准备发布模型。SRE同学则会把控上线之前的各项准备,包括预发测试是否通过,压力测试是否通过,CPU负载是否有提升,硬件资源是否能承载新的模型,模型预测延迟是否提升了等……完成流程也需要很长时间。然而如果没有SRE的把关,线上的服务很难保证稳定性。

使用 SQL 作为描述和构建 AI 任务的语言,可以降低构建 AI 应用的门槛,提升效率。

首先需要区分编程语言的主要的两种描述方法:描述意图和描述过程。简而言之,描述意图是在描述「做什么」,描述过程是描述「怎么做」。比如,夏天大家有空喜欢吃点烧烤喝点啤酒,描述意图的方式,说「我想去撸串」这一句就够了。而描述过程,就需要说「我今天晚上下班后,叫上老王小李,去公司楼下的烧烤店,点100个串和10个啤酒,最后用支付宝扫码付款」。可以看到描述意图可以非常简洁,而具体的执行方案,可以根据意图中构建得出。这点也是 SQL 不同于其他语言的关键点。

在描述模型训练任务时,使用 SQLFlowSQL 只需要编写 SELECT * FROM iris.train TO TRAIN DNNClassifier LABEL class INTO my_dnn_model; 即可,如果使用Python完成相同的任务则需要编写如下图这样的较长的代码。

让AI造福金融,支付宝端到端AI系统SQLFlow实践

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!