(原创)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning & Application Example
本栏目来源于Andrew NG老师讲解的Machine Learning课程,主要介绍大规模机器学习以及其应用。包括随机梯度下降法、维批量梯度下降法、梯度下降法的收敛、在线学习、map reduce以及应用实例:photo OCR。课程地址为:https://www.coursera.org/course/ml
(一)大规模机器学习
从前面的课程我们知道,如果我们的系统是high variance的,那么增加样本数会改善我们的系统,假设现在我们有100万个训练样本,可想而知,如果使用梯度下降法,那么每次迭代都要计算这100万训练集的误差,计算代价显然很大。那么有没有什么办法来解决呢?
随机梯度下降(Stochastic gradient descent)
之前的批量梯度下降法定义代价函数为所有训练样本的误差和:
对比在前面的梯度下降法,我们重新定义代价函数为一个单一训练样本的误差:
算法流程:
首先对训练集随机“洗牌”,让训练数据乱序;
每次迭代只计算单一误差,然后更新θ,这样不是每一步都是“正确”的方向,因此算法虽然会“走近”全局最小,但可能只是在最小值附近徘徊,如下图所示:
微批量梯度下降法(Mini‐batch gradient descent)
微批量梯度下降法介于批量梯度下降和随机梯度下降之间,每次迭代计算b个训练样本的误差。
PS:通常令b介于2-200。
随机梯度下降收敛(Stochastic gradient descent convergence)
在批量梯度下降中,我们可以通过绘制J与迭代次数的函数来判断是否收敛。但是在大规模机器学习中,计算代价过大。
在随机梯度下降中,每次迭代前都计算cost(θ,(x(i),y(i))),比如每进行1000次迭代,绘制cost(θ,(x(i),y(i)))的平均值。
- 有时,我们会得到一个颠簸但不明显减少的图像(左下图),这样可以通过增加迭代间隔(比如2000次迭代计算平均)来使图像平缓;如果函数图仍然木有改善,则说明模型存在错误。
- 有时,我们会得到不断上升的图像(右下图),这样可以通过减小学习率α解决。
另外,我们也可以随迭代次数增加而减小学习率α,可用如下的算式:
这样在接近最小值点时,通过学习率,我们可以使算法收敛,如下图所示:
在线学习(online learning)
假设我们经营一家物流公司,当用户询问从A地到B地的快递费用时,我们会给出报价,用户可能会接受(y=1)或拒绝(y=0)。现在我们要建立模型,来预测用户接受报价的可能性。
在online learning中,许多网站都会有持续不断的用户流,在构建模型时,我们对单一实例进行学习,一旦该实例学习完了,便可以丢弃该数据。这样我们的模型可以很好适应并更新用户的倾向。
Map reduce 和 并行运算(data parallelism)
如果我们有多台计算机(或有一台多核的计算机),让每台计算机(或计算机的每个cpu)处理数据一个子集,然后再将计算结果求和,这样可以加速学习算法。计算流程如下所示:
例如,有400个训练样本和4台计算机,我们可以使用批量梯度下降法将数据分给这4台计算机:
(二)应用实例(photo OCR)
问题描述:photo OCR的目标是从一张图像中识别文字。
算法步骤:
- 文字检测(Text detection)
- 字符切分(Character segmentation)
- 字符分类(Character classification)
其中每一项任务都由单独的团队负责,如下流程:
滑动窗口(Sliding windows)
1. 通过滑动窗口可以从图像中抽取对象,比如要在下图中识别行人,可以选择之前训练得到的行人的图片尺寸来对该图进行剪裁,然后对切片进行识别,判断其是否是行人。
2. 下面进行文字分割,即将文字分割成单个字符,训练集是单个字符的图片和两个相连字符之间的图片。
3. 最后进行字符识别,可以通过我们之前的神经网络、逻辑回归算法来实现。
获取数据(Getting lots of data: Artificial data synthesis)
对于high variance问题,我们需要获取更多的训练数据,那么怎样在有限的条件下获取数据呢?
在OCR问题中,我们可以下载各种字体,然后搭配不同的背景从而创造一些训练数据;另外,我们也可以通过利用已有的数据,对其进行修改,如对字符图片进行变形、旋转、模糊等处理,从而得到大量训练数据。
下一步该怎样做?(Ceiling analysis)
在机器学习的一些应用中,通常需要多个步骤来实现最终的预测,那么我们应该投入精力改善那一部分呢?
以OCR问题为例,流程如下:
我们可以选取每个流程的一部分,手动提供100%的正确输出结果,然后看看整体的提升效果。假设我们的模型整体效果为72%,若Text detection输出结果正确,模型效果为89%;若另character segmentation的输出结果正确,模型效果为90%(即只提高了1%)。这就意味着我们应该投入更大的精力在Text detection上面。
练习
这是本课程的最后一节课,没有作业,下面就罗列一些练习题目吧:
(原创)Stanford Machine Learning (by Andrew NG) --- (week 10) Large Scale Machine Learning & Application Example的更多相关文章
- 学习笔记之Machine Learning by Andrew Ng | Stanford University | Coursera
Machine Learning by Andrew Ng | Stanford University | Coursera https://www.coursera.org/learn/machin ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习
Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...
- 大规模机器学习(Large Scale Machine Learning)
本博客是针对Andrew Ng在Coursera上的machine learning课程的学习笔记. 目录 在大数据集上进行学习(Learning with Large Data Sets) 随机梯度 ...
- Lessons learned developing a practical large scale machine learning system
原文:http://googleresearch.blogspot.jp/2010/04/lessons-learned-developing-practical.html Lessons learn ...
- [C12] 大规模机器学习(Large Scale Machine Learning)
大规模机器学习(Large Scale Machine Learning) 大型数据集的学习(Learning With Large Datasets) 如果你回顾一下最近5年或10年的机器学习历史. ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 8) Clustering & Dimensionality Reduction
本周主要介绍了聚类算法和特征降维方法,聚类算法包括K-means的相关概念.优化目标.聚类中心等内容:特征降维包括降维的缘由.算法描述.压缩重建等内容.coursera上面Andrew NG的Mach ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 7) Support Vector Machines
本栏目内容来源于Andrew NG老师讲解的SVM部分,包括SVM的优化目标.最大判定边界.核函数.SVM使用方法.多分类问题等,Machine learning课程地址为:https://www.c ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly Detection&Recommender Systems
这部分内容来源于Andrew NG老师讲解的 machine learning课程,包括异常检测算法以及推荐系统设计.异常检测是一个非监督学习算法,用于发现系统中的异常数据.推荐系统在生活中也是随处可 ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 4) Neural Networks Representation
Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 神经网络一直被认为是比较难懂的问题,NG将神经网络部分的课程分为了 ...
随机推荐
- Spark实现销量统计
package com.mengyao.examples.spark.core; import java.io.Serializable; import org.apache.hadoop.io.Nu ...
- 【Python学习笔记】Pandas库之DataFrame
1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matla ...
- ubuntu下virtualbox安装freebsd及初步配置
最近尝试了在虚拟机中安装freebsd并进行尝试性的使用 获取镜像 在freebsd的官网,https://www.freebsd.org,即可看到 "Download Freebsd&qu ...
- 安全测试===sqlmap(零)转载
本文转自:https://blog.werner.wiki/sqlmap-study-notes-0/ 感谢作者的整理,如有侵权,立删 零.前言 这篇文章是我学习Sqlmap的用法时做的笔记,记录了S ...
- SQL利用Case When Then多条件判断SQL 语句
http://www.cnblogs.com/kevin2013/archive/2010/07/02/1769682.html SQL利用Case When Then多条件判断SQL ,用于sele ...
- leetcode 121 122 123 . Best Time to Buy and Sell Stock
121题目描述: 解题:记录浏览过的天中最低的价格,并不断更新可能的最大收益,只允许买卖一次的动态规划思想. class Solution { public: int maxProfit(vector ...
- C#多线程编程之:集合类中Synchronized方法与SyncRoot属性原理分析
我们知道,在.net的一些集合类型中,譬如Hashtable和ArrayList,都有Synchronized静态方法和SyncRoot属性,他们之间有联系吗?我怎么才能用好他们呢? 以Hashtab ...
- linux的rpm教程
1.rmp查询 1.1 软件包详细信息 rpm -qpi httpd-2.4.25-9.fc27.x86_64.rpm 系统将会列出这个软件包的详细资料,包括含有多少个文件.各文件名称.文件大小.创 ...
- linux命令(17):pwd命令
1:查看当前工作目录的完整路径命令:pwd 2:目录连接链接时,pwd -P 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径: [root@host-172-168-80-55 ...
- linux命令(6):tar命令
压缩方法:tar zcvf test.tar.gz test [表示把文件夹目录压缩成test.tar.gz文件保存] 解压方法:tar zxvf test.tar.gz –C /home [表示解压 ...