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

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

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

SQL 语言除了有非常简洁的优势之外,在数据科学领域,SQL 语言的已有用户量大,并且在不断的增加。这里也有两个统计图,统计了数据科学类任务所使用的工具的流行程度和增长趋势。SQL 语言流行程度排名第三,增量排在第四名。数据科学领域正在更多的使用 SQL 是我们希望使用 SQL 语言描述AI任务的原因。除了在表达能力上 SQL 语言有非常简洁的优势之外,在蚂蚁内 MaxCompute 被广泛使用也是我们选择 SQL 的一个原因。

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

如何使用SQLFlow SQL语句构建AI任务

SQLFlow 是一个开源项目,您可以在任意环境部署 SQLFlow。SQLFlow 提供了两种用户界面:基于 Jupyter Notebook 的 Web 图形界面和命令行工具。在 Jupyter Notebook 中,输入的 SQL 语句会发送到 SQLFlow server 完成编译和执行。

对于模型训练任务,SQLFlow拓展了标准 SQL 语法,增加了 TO TRAIN 从句来描述模型训练。我们以 iris(鸢尾花)数据集为例,训练数据格式如下图:

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

训练的 SQL 语句是:

SELECT * FROM iris.train

TO TRAIN DNNClassifier

WITH model.n_classes = 3, model.hidden_units = [10, 20]

LABEL class

INTO my_dnn_model;

其中 SELECT * FROM iris.train 部分使用一个标准的SQL语句,获取模型训练的数据,这个SQL语句可以是任意的 SELECT 语句,比如包含嵌套、JOIN等操作也是支持的。第二行 TO TRAIN DNNClassifier 指定训练的模型是 DNNClassifier,DNN分类器。第三行 WITH 语句指定了模型训练需要的一些参数。LABEL class 指定使用数据库中的 class 列作为训练标签,INTO my_dnn_model 指定训练好的模型保存的名字。运行这条SQL语句,SQLFlow会开始模型的训练,并保存一个叫做my_dnn_model 的模型用于预测,评估、解释等。

然后我们可以使用下面的这段SQL进行模型评估:

SELECT * FROM iris.test

TO EVALUATE my_dnn_model

WITH validation.metrics="Accuracy"

LABEL class

INTO iris.evaluate_result;

其中, SELECT * FROM iris.test 指定使用另一个表 iris.test 作为验证集,TO EVALUATE my_dnn_model 指定要评估的模型是我们刚才训练的my_dnn_model,LABEL class 指定评估数据集中的标签列为 class,INTO iris.evaluate_result 指定评估指标的输出表。模型评估任务执行完成之后,就会输出如下图这样的评估指标的表。您也可以在SQL语句中使用 WITH 指定要输出的指标,就会作为结果表的一列数据输出。

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

在模型训练完成之后,我们可以使用下面的 SQL语句进行预测:

SELECT * FROM iris.pred

TO PREDICT iris.pred_result.class

USING my_dnn_model;

我们使用的预测表 iris.pred 的 class 列是空的,是希望输出的结果。SQL 语句中 TO PREDICT iris.pred_result.class 指定预测结果输出到表 iris.pred_result 的 class 列。USING my_dnn_model 指定使用之前训练的 my_dnn_model 这个模型来预测新的数据,这样 SQLFlow 将预测的结果输出到表:iris.pred_result 的 class 列。

有时,我们希望进一步地了解模型,模型究竟是怎么通过输入得到输出,就需要「解释」训练好的模型,看到底哪些输入会如何影响模型的输出。SQLFlow深度集成了SHAP和Tensorflow的模型解释功能,只需要编写如下的SQL语句:

SELECT * FROM iris.test TO EXPLAIN my_dnn_model;

在使用 Jupyter Notebook 的情况下可以输出下面的模型解释结果的图。从图中可以看到,输入数据中的特征 petal_length 对模型判断鸢尾花的类别起到至关重要的帮助。

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

SQLFlow目前提供了充足的常用模型库,使得我们可以快速使用 SQL 语句实验、验证最终构建 AI Pipeline。目前已经支持的模型包括深度学习常用的网络包括 DNN, RNN, LSTM 的分类、回归,基于XGBoost的树模型的分类回归以及 Deep Embedding Clustring,kmeans聚类模型,还有常见的金融行业模型包括评分卡模型,ARIMA, STL时间序列模型等。

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

SQLFlow 不仅可以使用SQL语句完成 AI 应用中的模型训练,评估,预测,解释等单个任务,还可以将一整个SQL 程序(包含许多SQL语句的一个SQL程序)编译成为一个完整的工作流任务执行。在之前列出的「构建AI应用的常见流程」中,SQLFlow已经支持和计划支持的步骤标注在了图中。

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

其中绿色标注的是目前 SQLFlow 已经支持的。SQLFlow 可以支持多种 SQL 引擎的方言,包括MySQL, Hive, MaxCompute,并在逐步扩展。不论 SQLFlow 对接的是哪种数据库引擎,只要是当前对接的数据库支持的 SQL 语句,都可以被SQLFlow识别并发送至对应引擎执行,以此来支持使用SQL语言完成的数据抽取、预处理的工作。SQLFlow还计划使用 TO RUN 关键字来拓展自定义数据预处理、特征工程的能力。SQLFlow在训练时可以支持可选的 COLUMN 从句,将支持多种常见的数据转换的操作,比如归一化、随机化、Embedding、分桶等。另外,SQLFlow 也计划支持可以直接将训练好的模型部署到在线 Serving 的系统。

这样,我们可以编写一大段 SQL 语句,完全交给SQLFlow 编译和执行。包括使用JOIN操作的SQL语句,从各个表抽取需要的数据,使用标准SQL完成预处理或者使用自定义函数完成预处理,最后开始训练和预测的 SQL 语句。

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

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

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