在低方差的模型中,增加数据集的规模可以帮助我们获取更好的结果。但是当数据集增加到100万条的大规模的时候,我们需要考虑:大规模的训练集是否真的有必要。获取1000个训练集也可以获得更好的效果,通过绘制学习曲线来进行判断。
如果需要对大规模的数据集进行训练,可以尝试使用随机梯度下降法来代替批量梯度下降法。随机梯度下降法的代价函数是
具体算法的过程为
算法可能存在的问题
不是每一步都是朝着”正确”的方向迈出的。因此算法虽然会逐渐走向全 局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。
小批量梯度下降算法是介于批量梯度下降算法和梯度下降算法之间的算法。每计算常数b次训练实例,便更新一次参数θ。参数b通常在2-100之间。
随机梯度下降算法的调试和学习率α的选取
随着不断地靠近全局最小值,通过减小学习率,迫使算法收敛而非在最小值最近徘徊。
映射化简和数据并行对于大规模机器学习问题而言是非常重要的概念。如果我们能够将我们的数据集分配给不多台 计算机,让每一台计算机处理数据集的一个子集,然后我们将计所的结果汇总在求和。这样 的方法叫做映射简化。
如果任何学习算法能够表达为对训练集的函数求和,那么便能将这个任务分配给多台计算机(或者同台计算机的不同CPU核心),达到加速处理的目的。比如400个训练实例,分配给4台计算机进行处理:
图像文字识别应用所作的事是从一张给定的图片中识别文字。
基本步骤包含:
每项任务可以有不同的团队来负责处理。
滑动窗口是一项用来从图像中抽取对象的技术。看一个栗子:
如果我们需要从上面的图形中提取出来行人:
滑动窗口技术也被用于文字识别。
上述步骤是文字侦察阶段,接下来通过训练出一个模型来讲文字分割成一个个字符,需要的训练集由单个字符的图片和两个相连字符之间的图片来训练模型。
训练完成之后,可以通过滑动窗口技术来进行字符识别。该阶段属于字符切分阶段。
最后通过利用神经网络、支持向量机、或者逻辑回归等算法训练出一个分类器,属于是字符分类阶段。
如果我们的模型是低方差的,那么获得更多的数据用于训练模型,是能够有更好的效果。
获取大量数据的方法有
在机器学习的应用中,我们通常需要通过几个步骤才能进行最终的预测,我们如何能够 知道哪一部分最值得我们花时间和精力去改善呢?这个问题可以通过上限分析来回答。
回到文字识别的应用中,流程图如下:
我们发现每个部分的输出都是下个部分的输入。在上限分析中,我们选取其中的某个部分,手工提供100%争取的输出结果,然后看整体的效果提升了多少。