10月29日-吴恩达机器学习P107-112

(一)MapReduce

MapReduce用于解决大规模数据问题。
1、原理概述
在批量梯度下降中更新θ的式子表达如下。
假定m=400即有400条训练样本,共有4个电脑来处理这些数据,因此,我们将这些样本数据划分成4个子集。
第1台电脑处理前100个训练样本,将求和部分记录为tempj(1);
第2台电脑处理样本101-200,计算tempj(2)…
然后将temp(1)、temp(2)、temp(3)、temp(4)发给中心服务器,由它完成参数θ的更新操作。最终处理式子等同于批量梯度下降的那个式子。
在这里插入图片描述描述总结:
假设有4台电脑,将训练集Training set均分成4个子集然后分发给这4台电脑,每一台电脑处理1/4的数据集,然后把结果发送给中心服务器将结果汇总,进行参数θ的更新操作。
在这里插入图片描述2、MapReduce的适用条件
即你的学习算法(或学习算法所做的工作)可以表示成对训练集函数的求和,就可以将你的学习算法适用范围扩大到非常大的数据集。
例如:逻辑回归的代价函数、梯度更新过程的偏导数都可以表示成求和形式,也可以用MapReduce处理。
在这里插入图片描述3、单机MapReduce
如果一个电脑是4核机器,也可以看作是4个处理器,分别将数据分发到四个核心处理。多核机器并行计算的好处是不用担心网络延迟问题。
在这里插入图片描述

(二)OCR技术

1、什么是照片OCR问题?
照片OCR全称照片光学字符识别,即如何让计算机读出照片中的文字信息。假设现在有一张照片,我希望计算机能够读出照片中的文字,这样将来想找这张照片时,你只需要输入照片中的文字,计算机能从千百张照片中自动找出这张图片。它有如下几个步骤:
(1)给定某张照片,它将图像扫描一遍,然后找出照片中的文字信息。
(2)成功找出这些文字以后,它将重点关注这些区域,并对区域中的文字进行识别,然后将这些文字内容显示并记录下来。
在这里插入图片描述对于扫描文档来说,这是一件很简单的事;但对于数码照片来说,现在还是一个很难的机器学习问题。如果能够完美解决,那将对计算机理解图像中的内容非常有帮助,比如给盲人识别路障、为汽车进行实时实地导航。
2、实现OCR的具体流程
(1)字符检测:
扫描图像,找出有文字的图像区域。例如,它将得到这个矩形区域。
(2)数字分割:
然后进行文字分离。将这个短语分割成一个个独立的字符的区域。
(3)字符分类:
然后我们用一个分类器对这些可见的字符进行识别,即识别到第一个字符区域是A、第二个字符区域是N、第三个字符区域是T。最后将这些字符组合起来得到一个单词。
其他:有些OCR系统可能提供字符矫正算法,比如识别到的是C1eaning矫正为Cleaning。
在这里插入图片描述那么像这样一个系统,我们称之为“机器学习流水线”。下面这幅图表示的就是OCR的“机器学习流水线”。
首先我们有一幅图像,然后将它传给文字检测系统,识别出文字区域以后,我们将文本区域的单个字符分割出来,最后我们对这些单个字母进行识别。
在这里插入图片描述在很多复杂的机器学习系统中,经常会有这样的流水线,在一条流水线上会有多个不同的模块,可以将团队成员分别分配几个人到一个模块中共同完成这个模块工作。

(三)滑动窗口

1、OCR的第一步是找到有文字的图像区域,但这非常难,因为在不同位置的文字区域长宽比例不同、又是在照片上,比较难找。
我们用与之类似的行人识别案例作为说明原理,行人识别相对来说比较简单,因为尽管不同行人距离摄像头的远近不同,但在照片中所有行人区域长宽比例很相近。
在这里插入图片描述(1)为了建立一个行人检测系统,我们首先将比例的标准定为82X36或与之相近的长宽比例,然后从数据集中收集一些正样本和负样本,y=1表示是行人的图片,y=0表示不包含行人的图片。
在这里插入图片描述
(2)然后你可以在你的网络中训练或者使用其他学习算法向其中输入一个82X36的图块来对y进行分类,划分每个图块是否包含一个行人。

(3)现在,假设我们得到了这样一张照片。我们从中选取第一行左上的位置一个82X36的图块,然后将这个图块传递给分类器检测图块中是否有行人,这时分类器会返回y=0。
在这里插入图片描述
然后再将82X36的矩形方框向右移动一点,再传给分类器进行分类判断;然后再把82X36的矩形方框向右移动一点…
然后到第二行进行与上面相同的操作;然后是第三行、第四行…直到整个画面遍历结束。这样就检测出了这张照片上的所有行人。
每次向右移动的距离称之为步长或滑动参数,如果你一次移动一个像素,那么步长就为1(一般这个步长表现最好,但计算成本也高)。
2、回到OCR的文本检测,如何找到包含文字区域的小方框呢?
(1)首先,给出正样本训练集,即包含文本的区域y=1;以及负样本训练集,不包含文本的区域y=0。
(2)然后进行训练。
(3)给定一张新照片,我们使用一个固定比例的滑动窗口,将会得到左下这样的结果,其中白色区域表示文本检测系统发现了文本,灰色区域表示系统认为它找到了文本但概率不高。
(4)找到了白色区域后,下一步就是在所有文字周围画矩形,然后更近一步将这些分类器输出(右下方图),即用一个“放大算子”对左下图的每一个像素判断其一定范围内是否存在白色像素,如果它周围5-10个像素范围内存在其他白色像素,就把整个范围内的像素都变成白色,变成了右下图。
(5)用一个简单的方法排除那些比例很奇怪的矩形,我们知道文本周围的宽一定比高大,所以我们排除太高太窄的矩形,在那些长宽比例正常的区域周围画上矩形,就像红色框表示的那样。
在这里插入图片描述3、下面回忆一下流水线的第2步字符分割
如何对给定的图像区域进行单个字符分割,需要再次使用监督学习算法。即用一些正样本y=1和一些负样本y=0,对给定图块判断图块中是否存在文字分割的地方。
对于正样本,图块中确实存在字符分隔的地方;对于负样本则不存在需要把字符分隔的地方。然后训练分类器来区分正负样本。
训练完这个分类器后,我们将绿色矩形框在文本域上移动,每移动一次,就问一次分类器是否为正样本,即需要进行分割。
在这里插入图片描述4、流水线的第3步字符识别
使用监督学习训练一个多分类器即可。

(四)人工数据合成

1、获取大量数据的办法可以是人工合成数据,而人工数据合成一般有两种方法,一种是自己合成从0到10所有数字这种方法;一种是根据一个小的训练集进行合成。
以文字识别(照片光学字符识别,即输入一张图像就能识别字符)为例:
比如,你可以使用计算机内置字体合成各种字体的"A"字符、“B”字符…等,相当于从0开始合成所有数据,然后将这些合成文字粘贴到背景图中,应用一点模糊算子或仿射变化(进行等分、缩放、旋转等操作),这样就可以得到一个人工训练集;
在这里插入图片描述

你还可以使用现有的数据生成样本,比如你在一张"A"的真实图片上覆盖一层网格,然后对这张图进行人工扭曲,这样就可以实现将1个样本扩充到16个样本。
在这里插入图片描述再例如,想要通过一段音频识别对方说的单词,可以将原有的训练集(一段音频)添加各种不同的背景音乐作为噪声,以合成很多其他的音频充当新的数据集。
应当确保的是,在测试集中你需要添加的是有代表类型的(可能真实发生的)噪声/失真,而不是添加毫无意义的随机值。
2、关于人工合成数据的建议
(1)使用于偏差低的分类器
如果你的模型分类器偏差太高,你可以尝试持续增加分类器的特征或者增加神经网络隐藏单元的数量直到偏差值降低,然后再花精力到生成大量的人工合成数据上。
(2)得到当前10倍的数据需要花多少精力?合成数据的办法需要进行一场头脑风暴,人工合成数据主要是两个方面,一个是从0开始生成数据,一个是利用现有的样本引入一些失真来扩大训练集;或者是自己收集数据或添加标签;或者使用“众包”(提供数据标记服务)。
在这里插入图片描述总的来说,当你想要使用人工合成数据方法之前,首先要测试是否增大数据集真的对你的模型训练(只对低偏差的有意义)有所帮助,然后再想合成数据的方法以及可能花费的时间,权衡最好的处理方案。

(五)下一步工作

1、通过工作流我们已经将整个系统的工作划分成多个子模块,而我们项目的时间周期非常宝贵,下一步应该集中精力在哪个模块进行改善显得尤为重要。
以OCR工作流为例,我们先计算每个模块的准确率大概是多少,即在前一个模块完成的基础上这个模块当前的准确是多少,最后的模块一定是100%。然后查看相近的两个模块之间提升了多少,如果提升的空间不大,大可不必在这一步上追求卓越;如果提升的空间大,那么下一步就应在这个模块上花更多精力。
在这里插入图片描述2、课程总结
(1)监督学习
线性回归,逻辑回归,神经网络,支持向量机SVM(使用带标签的数据样本如(x(i),y(i)))
(2)无监督学习
K-means算法,主成分分析PCA进行降维,异常检测算法(使用无标签的数据样本如(x(i)))
(3)特定的应用
推荐系统,大规模机器学习系统,并行和映射-化简算法,滑动窗口分类
(4)建立一个机器学习系统的建议
讨论了偏差/方差,如何使用正则化,决定下一步做什么,学习算法的平均算法包括召回率和F1分数等的评价指标,划分训练集、交叉验证集和测试集;以及如何调试算法的一些诊断方法比如学习曲线、误差分析、上限分析等。
在这里插入图片描述课程完结撒花!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值