机器学习(12)--机器学习工程思想(划分流水线、分析学习曲线判断是否人工数据合成及上限分析)
吴恩达ML课程课后总结,以供复习、总结、温故知新,也欢迎诸位评论讨论分享,一起探讨一起进步:
上一篇:机器学习(11)--大数据的机器学习(随机梯度下降、mini-batch梯度、在线学习与并行计算)https://blog.****.net/qq_36187544/article/details/88603838
下一篇:机器学习(13)--apriori算法(挖掘关联规则的频繁项集算法)https://blog.****.net/qq_36187544/article/details/89184879
这是吴老师最后一讲,以照片OCR问题为切入点讲解机器学习工程中的思想,划分流水线,分析学习曲线是否进行数据扩充(人工数据合成),上限分析等。其实有的东西一讲就感觉,哦,很简单明了,但是得埋下思想的种子,有的事情不要乱做,不要多做无用功!
照片OCR问题即照片中文字识别问题。
机器学习流水线(在照片OCR问题中分为): 文字检测系统(划分出文字区域,下图1),字符分割(分割成单个字符,下图2),字符识别(下图3),(还可以有字符纠正系统等,比如数字1可能识别成字母l)
团队任务分配关键的是如何划分模块,形成机器学习流水线。
滑动窗口分类器: 比如检测图片中是否有人,可以用一定长宽比的矩形去滑动搜索,每次移动固定步长。如下图绿色框所示,向下不断滑动寻找对应区域是否有人,然后扩大方框面积重新搜索等。
文字识别,首先滑动窗口的方法判断出某些地方有文字,将照片变成黑白色照片(下图左下),然后放大算子算法将白色区域扩大一些让关联区域的文字识别出来(下图右下),再将白色区域(老师说先舍弃长宽比不合适的,文字一般宽比高长,没见过对联吗,可能适合英文吧)提出来进行下一步识别。
文字分割:对上一步提出来的部分进行滑动窗口判断是否存在分割处,分割成单个字符
总之,划分流水线,分配团队资源
人工数据合成,获得大量数据:第一种,手动创建,比如识别字符可以手动将一些字体下的字符做成图片(同时可进行模糊或者旋转处理等)去进行训练。第二种对已有数据进行拉伸扭曲(额外的失真,如下图)等得到更多不一样的训练数据。
注:再使用人工数据合成前确保算法是低偏差高方差模型,先确认学习曲线!!(再次强调,避免无用功)增加特征数量或者神经网络层数来降低偏差。生成人工数据前考虑这需要多少工作量,第一种还是第二种方法,甚至请人众包等。
上限分析:就是分段思想,流水线把工作分为几个模块,比如分为三个模块,首先计算总体正确率,再将第一个模块改为手动输入正确值相当于只执行后两个模块看正确率,最后得到每个模块的可提高的比率再投入精力。就跟做一道很复杂的问题,一部分一部分检查看有没有错误。做上限分析为了把时间花在更重要的地方。