本文是吴恩达《机器学习》视频笔记第44篇,对应第4周第1个视频。
“Neural Networks: Representation——Non-linear hypotheses”。
01
—
笔记
第4周的课程讲解一种非常知名的机器学习算法:神经网络。前面几次课讲解神经网络的表示,后面再讲解具体的算法实现。
笼统来说,神经网络也是一类机器学习算法,从最简单的神经元模型到现在研究的热点深度学习算法。那它具体是用来解决什么问题?以及解决问题的思路是怎样的呢?这一周的教程会阐明。
神经网络可以算的上是一种比较古老的机器学习算法了,从刚开始提出到后面有一段低谷期,到现在成为很多机器学习问题的首选算法,除了算法模型设计层面的进步外,更主要的是大数据技术的出现使得大训练样本的采集成本下降。
我们前面已经学习了线性回归、逻辑回归了,看上去可以解决挺多问题了,为什么还要再学习这个神经网络呢?
假设我们需要对下图中的点进行分类:
按照目前我们已经掌握的知识,我们想到使用逻辑回归来解决这一问题,那就需要构造一个包含非线性项的模型。希望它可以实现下图这样的目标:
上面的g函数是一个sigmoid函数,它的输入是x的各个分量上的各次项的和,比如二次项包括x_1^2, x_2^2,x_1*x_2这些。这种方法,在输入的特征只有两个时,还是可以的。
但是,在实际的问题中,我们要面临的输入变量不止一两个,可能有几十上百个。那怎么办呢?再用上图右边那样的方程几乎是不现实的了。
比如,还是卖房子的例子,我们可能要考虑房子的面积、年限、几层、卧室数量、位置、所用材质、什么人住过等等,假设有100个特征会对房屋的最终售价产生影响。那么,再用逻辑回归的方式就难弄了。因为,我们在构建假设函数的时候,头大。单是二次项就差不多有5000个,如果在考虑3次方项的排列组合就更加多了,差不多有170000个。
也就是说,特征特别多的时候,我们就很难再使用这样的办法来进行分类了。
下面这个图是什么?
我们知道,是一个小汽车,那图中红色框中是什么呢?是车门上的把手。
但是,对于计算机来说,图像是由一个又一个的像素点构成的,它在看那个门把手的时候看到的是下图中的样子:
然后,计算机在得到这一堆数据构成的矩阵后,要告诉我们这是一个门把手的图像。那计算机要怎么做呢?
从大的、粗线条的流程上来说,首先,我们会给计算机一些图像,并标记好这些图像是(或不是)小汽车;然后,计算机训练一个分类器。
当我们给这个分类器一个没见过的图像后,比如这样的:
分类器告诉我们这个是不是一个小汽车。
那在这个问题中,我们为什么要引入非线性假设呢?要回答这个问题,我们先来看一下计算机如何训练出一个分类器的。
我们把这个问题进行简化,所有的训练图像大小相等,我们在每个图片上的相同的两个位置上取两个像素点,比如下图这样
这两个像素点就会有两个数(可能是灰度值,也可能是RGB处理后的一个值),这两个数如果我们把像素点1的值标在x轴上,把像素点2的值标在y轴上,那么上面这个图片的两个像素点的值就会对应在x-y平面上的一个点,如下图:
如果这个图是一个小汽车,我们就用蓝色的加号表示;如果不是小汽车,我们就用红色的减号表示。类似的,我们在其它的图上相同位置也取两个像素的点的值,标记到刚刚构建的那个x-y坐标系中。
继续增加标记,把训练样本中的所有图片都拿出来标记,最后会得到这样的一个图:
我们希望能够有一种机器学习算法将上面的两类点给分开。
前面,我们把这个图像简化的太厉害了,我们只拿2个像素点,实际上我们的训练图像不可能只有2个点,假设它们是50×50的,那就会有2500个像素点。如果我们用的是RGB图,还要在这个基础上乘以3.
那,如果我们再用逻辑回归中类似的方法,我们在构建假设函数的时候,即便只考虑二次项,也会有300万个特征了,这样计算成本就太高了。
所以说呢,在我们的特征值个数n比较大的时候,我们再用这种简单的逻辑回归算法是不太现实了。
这个时候就要神经网络出马了,那神经网络到底是怎么一回事呢?且听下回。
02
—
视频