Large Scale Machine Learning & OCR

大规模机器学习

这是Machine learning最后两周的内容

大型数据集的学习

首先检查大规模的训练集是否有必要,通过绘制学习曲线来帮助判断。

随机梯度下降算法

![随机梯度下降](http://a2.qpic.cn/psb?/V12UJCGv0BAHHA/K*Ie3GA19xulKVb6FAsiDRvyAjrt4HrCCZqQn45FV*E!/b/dDEBAAAAAAAA&ek=1&kp=1&pt=0&bo=UgG6AFIBugABACc!&tl=1&vuin=1405591197&tm=1527062400&sce=50-1-1&rf=viewer_311 "随机梯度下降")
随机梯度下降算法在计算一个样本的代价函数倒数之后就更新参数$\theta$,不需要将所有训练集求和,还没有完成一次迭代时,随机梯度下降算法就已经走出了很远,存在的问题是每一步不一定是正确的方向,算法会逐渐走向全局最小的位置,但可能在最小值附近徘徊。 ## 小批量梯度下降 介于批量梯度下降和随机梯度下降算法之间,每计算b次训练实例更新一次参数$\theta$。 好处:可以用向量化的方式来循环b个实例。支持并行处理。

随机梯度下降算法的收敛

每X次迭代之后,在更新$\theta$之前求出X次的训练实例计算代价的平均值。然后绘制这些平均值与X次迭代次数之间的函数图像。

在线学习

对数据流非离线的静态数据集的学习,与随机梯度下降算法类似,对单一的实例进行学习而不是对提前定义的训练集进行循环。

![在线学习](http://a1.qpic.cn/psb?/V12UJCGv0BAHHA/ZJF0AfMOSUCyRYUyGXk3eszzBKbQtutNUNykCg2qBTI!/b/dPQAAAAAAAAA&ek=1&kp=1&pt=0&bo=nQFyAJ0BcgABACc!&tl=1&vuin=1405591197&tm=1527062400&sce=50-1-1&rf=viewer_311 "在线学习")

对一个数据进行学习之后就可以丢弃该数据。好处是可以很好适应用户倾向,算法针对用户的当前行为不断更新模型以适应该用户。与随机梯度下降算法类似,其区别是不会使用一个固定的数据集。优点是可以可以对变化中的用户行为进行很好的预测。

Map Reduce and Data Parallelism

将数据分配给多台计算机,让计算机处理数据集的一个子集,再将结果汇总求和。如果算法能够表述为”对训练结果汇总求和”,就能通过映射化简进行加速处理。

应用实例:图片文字识别

问题描述和流程图(Problem Description and Pipeline)

图像文字识别

  1. 文字侦测(Text detection)-区别文字与环境
  2. 字符切分(Character segmentation)-将文字分割成单一字符
  3. 字符分类(Character classification)-确定每个字符是什么

滑动窗口

文字侦测:从图像中抽取对象,按不同的窗口大小来循环截取图片,缩放至模型所需大小,交给模型判断。在文字识别中,将识别出的区域进行合并扩展,通过高宽比进行过滤。

字符切分:滑动窗口抽取对象。

字符分类:根据切分出来的字符,利用神经网络、支持向量或者逻辑回归算法进行分类。

获得大量数据和人工数据

从零开始创造

例如字体包配上随机背景图片

处理已有数据

利用已有数据进行扭曲、旋转、模糊处理

众包

找人打标签

上限分析

在上限分析中,选取一部分,手工提取100%正确的输出结果,看应用整体效果提升了多少。提升效果多的最需要投入更多的时间的精力。