AI算法实现与云平台应用( 二 )


图3 机器学习应用
图3是一些典型的机器学习应用 。给我1000张标记为猫的照片,得到一个识别猫的模型,并且正确率越高越好 。给我1000万盘围棋的棋局,得到一个模型 。给我信用卡的历史操作记录,得到一个反欺诈模型 。
怎么得到这个模型其实是最复杂的 。数据往往是非结构化的,有各种类型,我们没有一个得到模型的统一方式 。而且有些是分类模型(识别猫),有些是生成的模型(GAN),它们的应用场景都不一样 。
图4 得到机器学习应用1
模型的训练过程很复杂 。我们都知道给我1000张猫的图片,能得到一个识别猫的模型 。问题是能不能训练出一个比或者效果更好的模型 。真正做机器学习应用的,都需要做到图4中的过程,并不是说给我猫的图片就可以得到很好的模型 。一般的过程,包括这几个部分:
定义模型的使用场景,也就是业务逻辑 。场景定义有很多种,包括二分类,多分类 。很多时候我们在做一些银行的业务,目标是提高利润 。但这并不是机器学习业务能理解的东西 。假设这是一个营销的业务,系统会给用户发送理财产品推荐的短信 。我们把场景定义成二分类,即推荐什么样的理财产品用户的购买概率更高,对这个理财产品可以做模型预测,即买或是不买的概率 。
数据清洗 。数据清洗跟传统的大数据处理其实没什么区别,有些特征可能需要补全或者去掉 。用到的技术就是,MR()或者Spark,还会用到 Graph的领域知识 。
特征抽取 。我们要从数据里生成一些特征,特征其实也是数据的字段,但只是用于机器学习 。例如数据里可能有人的性别和年龄,但生成的特征可能是几十万维甚至几百万维的 。例如对于线性模型,我们不能将原始数据直接放进去 。怎么做特征抽取呢?这跟后面使用的模型框架有关,我们必须生成框架支持的格式 。在真正做的时候我么会定义一个特征抽取的DSL,用户通过简单的描述就可以将生成Spark任务 。对DSL我们做了一个AST的,可以支持像或者的格式 。
模型训练 。在训练的时候选择就很多了,业界已经证明的一些机器学习算法有LR、GBDT、DNN、NB(Naive Bayes)等 。还有我们自研的将离散值转连续值的算法,因为树模型对连续值支持更好 。我们可以使用不同的框架,例如就是一个很好的DNN框架 。
模型上线 。模型上线以后就是一个服务,我们可以部成一个微服务或者单机起的一个进程 。我们目前用。上线以后同样要解决例如负载均衡和高可用的问题,还有认证授权,我们使用AKSK的加密方法 。
自学习 。跟普通的应用不一样,大部分机器学习模型都是有时效性的 。例如头条里面的推荐,最近一个月大家都在关注娱乐,那么娱乐特征可能是重要的,那我们就要拿增量的数据来继续训练模型 。这里我们就需要一些SDK的功能,还要支持不同的数据源 。模型训练可能是离线的,我们从里取出数据就可以了,在自学习时可能就要接Kafka或者一些的数据 。我们模型的框架还支持 ,也就是在线更新模型权重 。
今天会花比较多时间给大家介绍两部分,第一个是机器学习的算法,第二是怎么搭建一个机器学习的平台 。
机器学习算法
图5 逻辑回归1
机器学习的算法很多,这里不能一一介绍 。主要给大家介绍逻辑回归的实现 。现在DNN很火,大家都在聊DNN、CNN、LSTM 。做图像、自然语言还有语音处理这些非结构化的数据里面会用到CNN或者LSTM 。但在我的工作场景里面,大部分都是银行的业务,我们用的最多的模型是LR(逻辑回归),包括我同事在百度凤巢做的CTR预估 。不同的机器学习算法都可以解决像二分类或者回归的问题,但实现原理和针对的数据是不一样的 。如果大家有看论文,就知道它的算法并不是用逻辑回归,而是用,等一下会介绍的实现 。但是这里面有一个问题,我们可不可以用逻辑回归来代替?答案是可以的,其实是一个蒙特卡洛搜索和一个NN神经网络,之所以不用逻辑回归是由于逻辑回归是一个线性模型,没有很强的表达能力,如果我们的特征做的足够复杂,也可以训练一下模型LR-based的模型,但肯定达不到的效果了 。