在这里我们来讨论一下神经网络。在我们这里所要讨论的神经网络,不是动物或者人的神经网络,而是为计算机量身定制的神经系统。计算机神经网络是一种模仿生物神经网络或者是动物的神经中枢,特别是大脑的结构或者功能,它是一种数学模型或者是计算机模型。神经网络有大量的人工神经元连接进行计算,大多情况下人工神经网络可以在外界信息的基础上改变内部结构,是一种自己适应的,逐渐的过程。现在神经网络是一种基于传统统计学建模的工具,常用来输入和输出间进行建模或者来探索数据间的模式。神经网络是一种运算模型,里面有大量的节点或者是神经元和自间的联系构成。正如人类神经系统中的神经元一样,它们负责传递信息和加工信息,神经元也可以被训练或者强化,形成固定的神经意识形态,对特殊的信息会有更强烈的反应。
如果你看到张张图片,无论是跳跃,飞奔还是漫步的猫,你都可以知道它只是一只猫,因为,你已经被告知过圆眼睛,毛茸茸,尖耳朵的就是猫,所以,你已经通过已经成熟的视觉神经系统,已经判定它就是一直猫。计算机也是一样,通过不断的训练,告诉哪些是猫,哪些是狗,哪些是牛,它们会用一种数学模型来概括这些学习到的判断力,最终以数学的模式,也就是我们这里所看到的0或者1的形式判断其应该被分到哪一类。目前的百度图片搜索和google photos 都可以轻易的判断人物,地点,事物;这些都归功于计算机神经系统的突破发展
这是一个可视化的神经网络系统,它有多层的神经元构成,为了区分不同的神经层,我们会有不同神经层的名称。输入层是直接接受信息的神经层,否则传递接受到的信息,比如说一只猫的图片,输出层是信息在神经元中传递,中转,分析和权衡形成输出的结果,通过这一层输出的结果我们直接的看出计算机对事物的认知,隐藏层是在输入和输出中间的众多神经元连接组成的各个层面,隐藏成会有多层,习惯上只有一层,这个隐藏层的作用就是负责传入信息的加工、处理,就像人类的感知神经一样,信息的传递往往也需要经过多层的神经信息传递、加工,才能衍生出对这种感觉的理解。
通常来说,计算机可以看到的和处理的东西和人类有所不同,无论是图片、声音还是文字,它们都只能以数字0或者1的形式出现在神经网络里,如果当时你想要问电脑:嘿,你看看这张图片是不是一只猫的时候,它能真正看到的全部是一堆数字。通过对这些数字的加工,处理可以生成另外一堆数字,而生成出来的数字也有了认知上的意义,通过一点点处理,我们就能得知计算机到底判断这张图片是猫还是狗。具体来说说神经网络到底怎样来训练的:首先,我们需要很多的数据,非常多的数据。比如说,我们想让计算机会判断猫还是狗,我们就需要准备上千张有标签的猫猫狗狗的照片,然后在进行上千万次的训练,幸运的是我们现在的计算机已经运行的非常快了,所以我们不需要再为运算速度而发愁。我们要做的就是只给计算机看图片,然后让它给我们一个不成熟而且不正确的答案,有可能100次的答案中,有10%的答案是正确的。
比如说,你给计算机看图片是一只飞奔的猫,但是计算机却觉得它是一只狗狗。显然是区分错误,但是这一次错误的经验却是非常有价值的,我们可以用这一次错误的经验作为一个好老师,从错误中学习经验。那么,计算机是如何学习经验的呢?这就是通过对比预测的答案和真实答案的差别,然后再把这种差别再反向的传递过去。对于每一个神经元,像正确的方向上改动一点点,这样到了下一次识别的时候呢,通过所有改进的神经网络,计算机被识别的正确率又可以被提高一点点,这样每一次的一点点累加上千万次的训练,那就是往正确的方向上迈出了一大步,最后,到了验收结果的时候,再次向计算机亮出猫咪的图片时,它就能毫不犹豫、自信满满的告诉你这就是一只猫!
现在,我们可以再进一步看看神经网络是怎样被训练的:
原来,在计算机里每一个神经元都有属于它的刺激函数,我们可以用这些函数给计算机一个刺激行为,当我们第一次给这些计算机看一只飞奔的猫时,神经网络里只有部分的神经元被激励或者被激活,被激活的神经元被传递下去的信息是计算机最为重视的信息,也就是对输出结果最有价值的信息。如果预测的结果是一只狗,所有神经元的参数都会被调整,使得有一些容易被激活的神经元变的迟钝,另外一些却变得敏感起来,这就说明了所有神经元的参数正在被改变,变得对图片里真正重要的信息敏感。这样,被改变的参数就可以渐渐预测出正确的答案,也就是它是一直猫!
这就是神经网络的过程和加工过程!