首页 > 技术文章 > 吴恩达机器学习笔记 - 问题描述与Pipeline

leoyes 2020-11-07 00:41 原文

如何开发组合一个复杂的机器学习系统 ?

如何分配资源决定下一步怎么做?

 

001.  Photo OCR

  Photo OCR stands for Photo Optical Character Recognition.
 
设计一个机器学习系统,其中一项最重要的决定就是要怎么样组织好这个流水线pipeline
在这个问题中,即表现问如何分解为如下几个模块,他们的表现会最终影响你的模型最终的性能
 
  Pipeline :
  • 图像数据 (1-2)
  • 文字检测(1-5)
  • 字符分割(1-5)
  • 字母识别(1-5)
   如果你有一个工程师团队,则可以分别分配他们1-5个人做不同的模块
  
 
002.  滑动窗口Sliding Windows
 
一定尺寸的窗口,以一定步长(如4个pixel像素),全部扫一遍
窗口扩大尺寸,再扫一遍
 

 

 文字检测

 

 字符分割

 

字符识别

 

003.  数据扩增

  图像类: 对称,旋转,调色,字体类换字体

  语音类:加噪音,加背景英语,变声调,

 

 1)先用小数据集测试,确保模型的低bias

   避免花1周-几个月的时间做了很多数据,但是最终把数据喂给模型后,性能并没有提升

2)额外做出10倍当前有的数据,需要多长时间?

  花点时间想这个,数据量扩大后,模型最终能达到的效果会好很多,你会成为团队的英雄!

 

当你面对一个机器学习的问题的时候,通常来说,2件事情肯定值得做:

  1)用学习曲线做合理性测试,以确定是否更多的数据是有用的

  2)  获得10倍的数据,需要多长时间

 

004. 上限分析Ceiling Analysis

  对pipeline的流程组件上限分析,能够提供一种非常有价值的信息或导向,告诉你pipeline里面的哪个部分最值得花时间
 
  1)用一个单一的数值指标来评价

  2)人工干预,直接给出“标准答案” - 提供正确的文字检测结果,使模块提升至100%正确;

  3)然后继续用这个正确的数据跑接下来的模块,看整个系统的评价指标提升至多少

  4)继续一个一个模块给“标准答案”,看最终系统性能提升情况

 这样分析后的数据,能够让我们知道,每个模块改善的,对系统提升的上限是多少

 
  多年机器学习经验:
  不相信自己对要使用哪些组件的直觉,遇到机器学习问题,最好分模块进行组件上限分析,通常会存在一种更好更可靠的方法来决定在何处投入精力,从而真正提高某些产品的性能。
 
 
 
 

 

 

推荐阅读