1.Black Box

然后通过我们所谓炼丹来提高整个模型的效果,那么这里面涉及到特别多的方法和细节,还有一些黑科技。

2.Grey Box

这一部分过程当中,我们主要考虑的是什么事情。就是说如何通过语句的语法结构来提高真个分类的正确性。那么一般来讲,大家想到自然语言处理的时候,可能第一个想到就是我们要把它变成一个它对应的语法的这样的语法树。

3.White Box

在这里我们主要介绍的是一些传统的通过梳理逻辑的方法来解决问题的。这部分方法看起来似乎是非常困难的,也没什么价值,但是实际上我们会发现这样的方法在实际的业务中有很多很多应用的。

4.Glass Box

这种方法我主要指的是通过传统的人工挖掘的自然语言的特征和深度学习所能够提取的特征进行结合从而进行建模。

在最后的时候我们会讲一个 Kaggle 的等价性比赛的例子,在这里的时候我们会大量的讲到如何通过实际的方法来挖掘一些有用的人工特征。如何通过一种所谓的多模态建模的方式,将结构化的数据跟自然语言数据进行联合表示。

第五部分 增强学习

增强学习主要解决的是如何能够通过一些机器自动地来做一些人工难以进行的非常频繁的决策。增强学习的真正应用远远超过了我们常人所知道的情况,这里我们会把增强学习的算法分为两种,每一种算法解决的问题是不一样的。第一种算法我们称之为单代理的,也叫 single-agent 增强学习,这里面我们所需要它做的主要就是两点:第一点就是自动地帮我们进行模型训练的过程的调优。还有一点就是非常热的 AutoML,也就是网络架构的自动设计。

那么多代理的增强学习,则主要用于推荐系统中。当然它不仅仅可以用在这里,它对于比如说智能对话机器人也是有非常大的重要性的。

第六部分 实际案例研究

第六部分我们会进入实战的例子当中,我们希望通过介绍两个实际的例子将我们刚才所学的所有知识进行串联。

第一个例子是 Kaggle 平台上的 Quora 问题等价性竞赛的一个解决方案,这个比赛它在整个 Kaggle 的平台上是非常重要的,当时可能是 Kaggle 上最大的比赛之一。我们不但会介绍其中一个获奖的方案,同时,我们还会提出一些在实际当中发现的如何去改进它的办法。

第二个例子是我带领开发的一个基于开源情报和风险预警的这样一个系统。这个系统和今日头条的舆情推荐系统有点像,但是不太一样。其实头条这样的推荐主要在于对你推荐感兴趣的新闻或者其他的内容,但是我们系统当中还有一个任务,就是它的任务是通过开源情报的引入提高违约的预测的准确性。同时在推荐的过程当中,因为我们推荐这个系统需要考虑到小微企业这种结构化的数据,比如他的税务、收入甚至包括一些企业主的情况。那么,我也就要求需要系统把结构化数据和自然语言这样的两方面数据结合起来,构成一款综合的开源情报系统。

第七部分 系统部署

这方面的内容往往使我们忽略的,但是事实上深度学习的部署往往是非常坑人的。这里我们主要介绍两方面的内容,第一方面我们会简短一些,主要介绍的是怎么将比较好的模型直接用 TF Serving 这个框架进行服务。另一方面来讲,我们会介绍一下微服务的框架,之所以选择微服务框架。主要是为了避免部署深度学习模型当中的种种问题,这里我们主要介绍的是 Kubernetes,还有 Istio 里面常见的功能。

以上就是我们这门课程的主要内容。

  • 预测问题
  • 优化问题

AI 项目流程

内容概述:

  • 如何判断是否要做一个 AI 项目
  • 如何做前期的调研
  • 如何做开发的计划
  • 如何对结果进行验证
  • 如何进行部署

技术成熟度

  • 底线:人工是否可以解决这个问题
  • Paper 中技术的复现性 VS 领先厂商当前的水平
  • 初期通过小 Demo 测试准确率
  • 团队的时间和能力
  • 项目部署问题
  • 保守估计项目的交付时间

### 需求的可控程度

  • 销售导向 OR 技术导向
  • 客户管理能力
  • 团队整体的需求控制能力

项目投入的周期和成本

  • 大多数时候,人们会低估项目投入的周期和成本
  • 项目周期和成本不可控的原因主要来源于需求的变更。
  • 其他可能出现的问题:

    • 标注的不可控性
    • 模型效果调优所需要的时间
    • 推断速度提升所需要的时间
    • 环境部署所需要的时间
    • 运行模型所需要的算力成本

项目最终的交付流程

  • 明确项目目标
  • 不要忽略交付流程中的额外投入
  • 组织的项目交付的流水化能力:

    • 是否有明确的交付流程
    • 人员职责安排是否清晰
    • 是否严格遵循时间规范
    • 项目是否有烂尾的风险

项目的一般流程

  • 前期调研和方案确定
  • 数据标注和开发
  • 效果调优(包括准确性和速度)
  • 代码部署

前期调研和方案确定

  • 很多时候,学术结果难以复现
  • 很多方法在某些数据上可能会非常好用,但是在另一些数据上则会失效
  • 很多方法的成功取决于一些细节,而这些细节只有真正做过的人才会知道
  • 很多时候人们会过于关注方法的效果,而忽略了整体的运行实效
  • 在绝大多数的时候,人们都会低估整个项目的难度

数据标注

  • 前期一定要制定充分的标注规则
  • 数据的采集一定要具有代表性
  • 非常不建议采用自动标注的方式
  • 先训练一个初步模型,然后只让相关人员进行校对,可以保证标注效率并减少标注成本

算法开发

  • 千万不要采用规则的方式进行开发
  • 初期就要引导客户使用和购买能够支持深度学习框架的硬件
  • 算法开发的过程中,一定要有量化的指标并记录下来
  • 开发的过程中,多分解问题
  • 前端对接的时候一定要去引导何为“智能”

效果优化

  • 初期要充分考虑到效果优化所需要的时间和成本
  • 客户并不知道通过什么标准来评估一个系统的好坏
  • 一定要从数据的角度出发进行优化
  • 学会止损
  • 除了准确性的优化,还要注重代码云算法效率的优化
  • 算法开发和效果优化常常是需要反复进行的工作

算法部署

  • 如果客户的系统比较奇怪,或者难以满足一些要求就,要提前让客户知晓这些风险
  • 即使再小的项目,我也强烈建议用微服务架构进行部署
  • 不要把算法部署再本地,尽量采用云端部署

部署实际上是一个非常可怕的事情,浙江事情当中我要稍微展开说细一点,为什么 AI 的部署非常重要或者说非常非常难。当中的关键点在于 AI 部署常常用到 GPU,为什么 GPU 很重要。因为当你去做 GPU 部署的时候,你要安装一个驱动 CUDA。如果你用任何深度学习框架的话,基本上都是安装 CUDA,CUDA 会做一件事情。它会重新编译对方的 Linux 内核,换句话说,它会改变对方的整个系统。这对于绝大多数公司来讲,是绝对不能承受的。因为谁知道你改了系统以后,中间会发生什么问题。这个服务器上很有可能已经部署了 100 个服务,然后你新来的时候你要重新改变它的 Kernel,你要把整个系统改掉。说不定我这 100 个系统 90% 就崩了,也许可能什么事情都没有。当然一般情况下什么都没有。但是这个时候真的就会容易出这个问题。

这种情况下怎么办?

首先第一从原则上来讲,还是要跟客户要做好交流。因为比如说我们曾经见过一些客户,他还在用 30 年前的系统。为什么他不更新?因为谁更新了谁背锅。一旦更新后不好使了怎么办?30年前的系统你什么都部署不上去。如果你不知道这件事,到了客户现场的时候非要你部署,那你想做什么都没有用。

第二件事就是说为什么我们在本讲当中,我建立了一个微服务的问题。就有几点:一般来讲我建议大家还是通过 Docker。Docker 是什么?如果大家简单理解的话,它是一个虚拟机。当然它比虚拟机要更轻量,所以说它运行的时候,不需要有那么多的 Overhead。但是,Docker 的部署为什么有用?因为它可以让你不改变对方的环境,至少在很大程度上不改变,这一点非常重要。因为比如说我在部署时候,经常需要 Python 必须是某个版本,如果他现在用其他版本的时候出了一个坑,我也不知道改怎么办。或者说 C++ 必须是某个版本,Java必须是某个版本,那么这种情况下,如果说我要去改变对方的环境,那么很有可能对方就会有各种各样的阻力。但是 Docker 有一个最大的问题不稳定,一旦它挂了。那么,客户最急的时候,往往都不是说效果不好,而是当页面出现 404 的时候。这个时候基本上不管你是多么大的公司,出现的结果都是:好吧,你现在起床,然后去把这个问题解决了。如果 Docker 挂的话,那么你面临的结果就是这样的,所以即使你什么都不做,那么求你部署一个 Kubernetes,到待会挂的时候把它给拉起来。这样的话可以节省你很多晚上谁不着的问题。

最后一件事在部署的时候经常要求是本地部署。因为有的时候这个环境是封闭的,比如在银行系统当中,银行不可能有外网连接。但是在这个过程当中,常常出现的一个问题,本地部署需要的时间和经理都是很麻烦的。其中有一些是这样的技术问题,有时候是交流问题。所以说在有的时候,我的建议是:如果你可以把这东西部署到云端的话,你就不要本地部署。云端有很多好处 ,比如说你可以更好地控制环境。比如说你可以更好地去控制这样的投入,你可以不用去做这么多交涉。如果说客户绝对要本地部署的话,其实我还有一个建议,就在大家在做 demo 的时候,尽可能先做云端。好很多时候,其实大家是可以在云端先做一个 demo 让客户去尝试,客户尝试完了以后,他告诉你哪里不合适,然后你再修改。这比每次都要去客户的现场部署会节省很多时间。

Last modification:June 20th, 2021 at 02:55 pm
如果觉得我的文章对你有用,请随意赞赏