1.机器学习中的流水线
以照片光学字符识别为例(OCR):
整个过程分为三个模块,可以分别独立的工作。在文本检测和字符分割的过程中,都使用了滑动窗口。在文本检测中通过滑动窗口确定了那些是字符,用矩形框确定了这些区域,用不同的灰度表示这些区域是字符的概率。在字符分割的过程中,通过滑动窗口将字符串分割成一个个单独的字符,是一个单独字符就不管,不是则在中间进行分割。
2.如何获得更多的数据:人工合成数据
有两种方法,一种是从零创造数据,比如我们从字符库里取出字母C,然后放到不同的背景或者进行缩放拉伸等操作,获得大量不一样的C。第二种是利用现有的数据集进行扩充,利用现有的数据集对他们进行人工添加失真,比如 把一段清晰的音频放在列车、机器等各种噪声背景下,获得多个样本数据。无论如何,在人工合成数据的时候需要保证这个数据是有意义的。
除此之外,不可以盲目的获取大数据,我们需要先绘制学习曲线,确定:如果获得大量的数据,我们的算法会更加优秀。我们可以通过人工合成、手动添加或者加标签、雇佣人员来加标签等各种方式获得更多的数据。
3.上限分析
将系统分成几个模块,分析各个模块性能提高对整个系统性能的影响,然后决定哪个模块值得花费时间,哪些模块没有必要花费大量的时间。如下图,我们将识别准确率当作评价指标。我们采用人工的办法去掉背景,准确率提高的很少,我们在这部分就没有必要花费大量时间。用人工的办法进行眼睛的花费,准确率提高的很多,我们则可以在这部分多花时间优化。人工的办法就是最优的误差最小的办法。我们用最好的办法进行,准确率提高的这么低,那么则可以认为这个模块优化后对与系统的上限影响就这么大。