七、神经网络:表述(Neural Networks: Representation)
7.1 非线性假设
&emsp假设有一个监督学习的训练集如下所示:
如果我们用逻辑回归来解决问题,可能需要构造多个高次多项式.但这只是有两个特征的情况.如果有多个特征,即使只有二次多项式,最后也会有很多项.这对于一般的逻辑回归来说,要计算的项太多了.
当然我们也可有尝试只包含上面二次多项式的子集,但是这样会造成忽略太多相关数据,当拟合的时候可能不会有很好的效果.所以当特征数量很多时,建立非线性分类器不是一个明智的做法.
机器学习许多问题特征数量都有很多.假设我们希望训练一个模型来识别视觉对象(例如识别一张图片上是否是一辆汽车),我们怎样才能这么做呢?实际上计算机识别图片是识别图片的一个个像素,最后一张图片会构成像素矩阵.
我们要构造一个汽车识别模型,我们要做的就是得到两种训练集,一种都是车,另一些都不是,然后就可以把样本输入给学习算法以训练出一个分类器,并且我们要利用图片上一个个像素的值(饱和度或亮度)来作为特征:
比如上图就是将\(pixel1\)和\(pixel 2\)作为特征,我们在坐标轴上标出车和非车的位置,最后会发现车和非车分布在图像的不同区域.因此我们就需要一个非线性假设来分开这两类样本.
假使我们采用的都是50x50像素的小图片,并且我们将所有的像素视为特征,则会有2500个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约\(\frac{2500^2}{2}\)(接近300,0000
个)特征(而这只是一个样本).普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络,它在学习复杂的非线性假设上被证明是好得多的算法,即使\(n\)特征个数很大时也能轻松搞定.
7.2 神经元和大脑
神经网络是一种很古老的算法,它最初产生的目的是制造能模拟大脑的机器.
我们能学习数学,学着做微积分,而且大脑能处理各种不同的令人惊奇的事情.似乎如果你想要模仿它,你得写很多不同的软件来模拟所有这些五花八门的奇妙的事情.不过能不能假设大脑做所有这些,不同事情的方法,不需要用上千个不同的程序去实现.相反的,大脑处理的方法,只需要一个单一的学习算法就可以了.尽管这只是一个假设,但也有相关的证据.
大脑的这一部分这一小片红色区域是你的听觉皮层,你现在正在理解我的话,这靠的是耳朵.耳朵接收到声音信号,并把声音信号传递给你的听觉皮层.正因如此,你才能明白我的话.
神经系统科学家做了下面这个有趣的实验,把耳朵到听觉皮层的神经切断.在这种情况下,将其重新接到一个动物的大脑上,这样从眼睛到视神经的信号最终将传到听觉皮层.如果这样做了,那么结果表明听觉皮层将会学会'看'.这里的'看'代表了我们所知道的每层含义.所以,如果你对动物这样做,那么动物就可以完成视觉辨别任务,它们可以看图像,并根据图像做出适当的决定.它们正是通过脑组织中的这个部分完成的.下面再举另一个例子,这块红色的脑组织是你的躯体感觉皮层,是你用来处理触觉的,如果你做一个和刚才类似的重接实验,那么躯体感觉皮层也能学会'看'.这个实验和其它一些类似的实验,被称为神经重接实验.从这个意义上说,如果人体有同一块脑组织可以处理光、声或触觉信号,那么也许存在一种学习算法,可以同时处理视觉、听觉和触觉,而不是需要运行上千个不同的程序,或者上千个不同的算法来做这些大脑所完成的成千上万的美好事情.也许我们需要做的就是找出一些近似的或实际的大脑学习算法,然后实现它大脑通过自学掌握如何处理这些不同类型的数据.在很大的程度上,可以猜想如果我们把几乎任何一种传感器接入到大脑的几乎任何一个部位的话,大脑就会学会处理它.
下面再举几个例子:
这张图是用舌头学会'看'的一个例子.它的原理是:这实际上是一个名为BrainPort
的系统,它现在正在FDA(美国食品和药物管理局)的临床试验阶段,它能帮助失明人士看见事物.它的原理是,你在前额上带一个灰度摄像头,面朝前,它就能获取你面前事物的低分辨率的灰度图像.你连一根线到舌头上安装的电极阵列上,那么每个像素都被映射到你舌头的某个位置上,可能电压值高的点对应一个暗像素,电压值低的点对应于亮像素.依靠它现在的功能,使用这种系统就能让你我在几十分钟里就学会用我们的舌头'看'东西.
这是第二个例子,关于人体回声定位或者说人体声纳.你有两种方法可以实现:你可以弹响指,或者咂舌头.不过现在有失明人士,确实在学校里接受这样的培训,并学会解读从环境反弹回来的声波模式—这就是声纳.
如果你在青蛙身上插入第三只眼,青蛙也能学会使用那只眼睛.
如果你能把几乎任何传感器接入到大脑中,大脑的学习算法就能找出学习数据的方法,并处理这些数据.从某种意义上来说,如果我们能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,也许这将是我们向人工智能迈进做出的最好的尝试.