Neural Networks(神经网络)
Neural networks is a model inspired by how the brain works. It is widely used today in many applications: when your phone interprets and understand your voice commands, it is likely that a neural network is helping to understand your speech; when you cash a check, the machines that automatically read the digits also use neural networks.
1、Motivations
Non-linear Hypotheses (非线性假设)
首先,我们在前面章节中讲解过线性回归方法/逻辑回归方法,那么在这一章节中,我们将要讲解神经网络算法。那么,自然而然会有疑问,难道逻辑回归算法不好吗?它解决不了问题吗?为什么还需要逻辑回归算法呢?
现在,我们先来讲解逻辑回归的“心有余而力不足”之处:只是简单的增加二次项或者三次项之类的逻辑回归算法,并不是一个解决复杂非线性问题的好办法,因为当n很大时,将会产生非常多的特征项,特征项一多自然会对提高运算复杂度,那么对于设备的运算速度的要求也就更高,与此同时,还容易产生“过拟合”的情况!
当我们考虑一个监督学习分类的问题时,我们已经有了对应的训练集,如果利用逻辑回归算法来解决这个问题,首先需要构造一个包含很多非线性项的逻辑回归函数,这里g仍是s型函数,我们能让函数包含很多像这样的多项式项,事实上,当多项式项数足够多时,那么就可能够得到一个很好的分开正样本和负样本的分界线。
这时候自然而然就会出现一个问题,当只有两项多项式的时候项X1、X2,我们自然可以把X1、X2的所有组合都包含到多项式中去,这个时候我们既可以得到一个很好的分解曲线,并且复杂度又不高!
但是!我们要知道,我们要用机器学习/深度学习研究的问题,都是一些复杂非线性问题,很复杂的机器学习问题,涉及的特征项是远远不止两项的,那么这个时候自然而然会产生特征项过多的问题。
如上图所示,随着特征个数n的增加,二次项的个数大约以n^2的量级增长。当然,你也可以试试只包含上边这些二次项的子集。例如,我们只考虑 x1^2 x2^2 x3^2直到 x100^2 这些项,这样就可以将二次项的数量大幅度减少,减少到只有100个二次项。但是由于忽略了太多相关项,在处理类似左上角的数据时不可能得到理想的结果。
这种特征量很大的复杂非线性问题,在“机器视觉”方向尤为明显!
假设你想要,使用机器学习算法来训练一个分类器,使它检测一个图像来判断图像是否为一辆汽车。很多人可能会好奇这对计算机视觉来说有什么难的,当我们自己看这幅图像时,里面有什么是一目了然的事。
那么,你肯定会很奇怪,为什么学习算法不知道图像是什么 ?
为了解答这个疑问,我们取出这幅图片中的一小部分,将其放大。比如图中这个红色方框内的部分,结果表明,当人眼看到一辆汽车时,计算机实际上看到的却是这个一个数据矩阵或像这种格网,它们表示了像素强度值,告诉我们图像中每个像素的亮度值。因此,对于计算机视觉来说问题就变成了,根据这个像素点亮度矩阵来告诉我们这些数值代表一个汽车门把手。
所以,具体而言,当用机器学习算法构造一个汽车识别器时,我们要想出一个带标签的样本集。其中一些样本是各类汽车,另一部分样本是其他任何东西,将这个样本集输入给学习算法,以训练出一个分类器,训练完毕后,我们输入一幅新的图片,让分类器判定 “这是什么东西?”
那么!我们可以想想,机器视觉问题是不是就是复杂非线性问题?特征量是不是就很大?是不是就不适合用逻辑回归这种算法来解决?
所以,我们说,只是简单的增加二次项或者三次项之类的逻辑回归算法,并不是一个解决复杂非线性问题的好办法,因为当n很大时,将会产生非常多的特征项,特征项一多自然会对提高运算复杂度,那么对于设备的运算速度的要求也就更高,与此同时,还容易产生“过拟合”的情况!
而“神经网络”算法就不是这样了,即使你输入的特征空间或输入的特征维数n很大,也能够轻松搞定!
2、Neurons and the Brain (神经元与大脑)
神经网络产生的原因是人们想尝试设计出模仿大脑的算法。从某种意义上说,如果我们想要建立学习系统,那为什么不去模仿我们所认识的 最神奇的学习机器—— 人类的大脑呢?
如果人体有同一块脑组织可以处理光、 声或触觉信号(事实上存在),那么也许存在一种学习算法可以同时处理视觉、听觉和触觉,而不是需要运行上千个不同的程序或者上千个不同的算法,来做这些大脑所完成的,成千上万的美好事情。也许我们需要做的就是找出一些近似的或实际的大脑学习算法,然后实现它,大脑通过自学掌握如何处理这些不同类型的数据 。
如果你能把几乎任何传感器,接入到大脑中几乎任何一个部位,大脑的学习算法就能,找出学习数据的方法,并处理这些数据。
我们自然而然会有这种感受,如果我们能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法。也许,这将是我们向人工智能迈进做出的最好的尝试。人工智能的梦想就是:有一天能制造出真正的智能机器!