AI算法实现与云平台应用

陈迪豪,第四范式先知平台架构师。个人兴趣广泛,在开源社区比较活跃,维护了1600+ star的容器Web管理平台Seagull。大二加入了小米做Android移动端开发,然后有幸学习到后端基础架构技术,参与了HBase、ZooKeeper等社区开发,并且开源了NewSQL依赖的全局严格递增timestamp服务chronos,对分布式存储有一定了解。后来加入云服务创业公司UnitedStack,负责存储、容器、大数据业务,参与了OpenStack、Docker、Ceph等开源项目,在Austin OpenStack Summit上分享了Cinder多后端存储相关的技术,期间也获得了AWS Solution Architect认证。目前从事云深度学习方向,负责深度学习平台的架构和实现,对容器调度系统Kubernetes和深度学习框架TensorFlow有一定了解。


我是第四范式的架构师陈迪豪,我们从14年就开始做机器学习,现在机器学习特别火,让我们也感到很困惑,因为大家把跟计算机有关的都说成是智能,或者是AI。根据我的经验,标题里有AI的分享,10个可能超过8个都有点忽悠人。但是昨天于老师的“小诗机”和洪强宁教授的chatbots都讲得特别好,根据8/10原则我是有点压力的。今天给大家介绍一下AI相关算法实现,希望大家理解它的实现,对真正的人工智能或者机器学习有一些新的理解。

我是ECUG的新人,首先自我介绍一下。我在13到14年参与了HBase和Hadoop的开发,之后去做OpenStack,也是社区的贡献者,大家看得出来我前两年做的是Infrastructure。我最近在做TensorFlow和机器学习相关的东西。我也是一个开源项目Seagull的作者,现在在第四范式做先知平台的架构师。今天的议题有三个:

  • 人工智能与机器学介绍

  • 机器学习算法原理与实现

  • 云机器学习平台架构实践


    人工智能与机器学习介绍


    图 1 这些是人工智能吗

    机械自动化。昨天洪教授讲到了第一工业革命就是蒸汽机,第二次是流水线。其实很早以前我们就有机械自动化,我们就用电控制舵机做一些重复的操作。但是最近我们看到了更多是把机械自动化描述成人工智能工厂。然而很多工厂只是用到了机械,但是却被描述成智能工厂。

    字符串生成。前一阵子还发生一个笑话,Facebook他们生成字符串的应用有个bug,导致生成乱码,却被媒体宣称为机器人自己发明的一种语言,它们在交流。其实并不是,在那种模型里面他们用机器学习生成字符串,但生成字符串并不需要人工智能,还有很多别的方法。

    验证码识别。还有比较可笑的验证码识别,这也是很多年前的技术了,但被某电视台的新闻栏目,宣称他们抓获了全球第一例人工智能黑客技术犯罪,其实是有人提供验证码自动识别的服务而已。

    作为我们行业内的人来看,这些都不是人工智能,只是满足PR或者行业投资的需求,从技术实现的角度,这些绝大部分都不是人工智能。

    图1的右边是我生成的一个Numpy数组,可以用表示一个AlphaGo的模型。有人以为AlphaGo会自己跟自己下棋,并且自学了围棋的规则,甚至开玩笑说自己悄悄地用网络对战平台和别人下棋。但从专业的角度来看,AlphaGo只是这样一个多维数组,里面有很多浮点数代表了模型的权重。如果把AlphaGo打印出来,它就是一个数组,它的输入就是一个表示棋盘的Tensor,输出是下子的概率和赢棋的概率。而且AlphaGo围棋的规则是程序员编码硬实现的,包括怎么判断游戏的输赢。这些都是目前人工智能或者说机器学习不可能解决的。

    图2 机器学习定义

    我们来看一下人智能它比较经典的定义,这是一本机器学习教材,作者Mitchell被公认是机器学习之父。它对机器学习的定义:一个计算机程序,它在某一个task里面,根据以前的经验experience,可以通过计算来提高performance。总结一下就是:在一定的场景里面,我们定义一个指标,如果我们有标记好的数据,也就是样本,然后通过计算得到一个模型。模型的输入是样本,输出是预测的概率。所谓的机器学习就是一个计算的过程,无论是训练还是预测。

    图3 机器学习应用

    图3是一些典型的机器学习应用。给我1000张标记为猫的照片,得到一个识别猫的模型,并且正确率越高越好。给我1000万盘围棋的棋局,得到一个AlphoGo模型。给我信用卡的历史操作记录,得到一个反欺诈模型。

    怎么得到这个模型其实是最复杂的。数据往往是非结构化的,有各种类型,我们没有一个得到模型的统一方式。而且有些是分类模型(识别猫),有些是生成的模型(GAN),它们的应用场景都不一样。

    图4 得到机器学习应用1

    模型的训练过程很复杂。我们都知道给我1000张猫的图片,能得到一个识别猫的模型。问题是能不能训练出一个比GoogleNet或者ResNet效果更好的模型。真正做机器学习应用的,都需要做到图4中的过程,并不是说给我猫的图片就可以得到很好的模型。一般的过程,包括这几个部分:

    定义模型的使用场景,也就是业务逻辑。场景定义有很多种,包括二分类,多分类。很多时候我们在做一些银行的业务,目标是提高利润。但这并不是机器学习业务能理解的东西。假设这是一个营销的业务,系统会给用户发送理财产品推荐的短信。我们把场景定义成二分类,即推荐什么样的理财产品用户的购买概率更高,对这个理财产品可以做模型预测,即买或是不买的概率。

    数据清洗。数据清洗跟传统的大数据处理其实没什么区别,有些特征可能需要补全或者去掉。用到的技术就是,MR(MapReduce)或者Spark,还会用到Knowledge Graph的领域知识。

    特征抽取。我们要从数据里生成一些特征,特征其实也是数据的字段,但只是用于机器学习。例如数据里可能有人的性别和年龄,但生成的特征可能是几十万维甚至几百万维的。例如对于线性模型,我们不能将原始数据直接放进去。怎么做特征抽取呢?这跟后面使用的模型框架有关,我们必须生成框架支持的格式。在真正做的时候我么会定义一

    • 3
      点赞
    • 20
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值