我们所要谈论的神经网络,不是动物或者人的神经网络,而是为计算机量身定制的神经系统。计算机神经网络是一种模仿生物的神经网络或者是动物的神经中枢,特别是大脑的结构和功能,它是一种数学模型或者是计算机模型。神经网络由大量的人工神经元联结进行计算,大多数情况下,人工神经网络能在外接的信息基础上改变内部结构,是一种自己逐渐适应的过程。现代神经网络是一种基于传统统计学建模的工具,常用来对输入和输出间复杂的关系进行建模或来探索数据间的模式。
Part 1
神经网络是一种运算模型,有大量的节点(或称“神经元”)之间的联结构成。 正如人类神经系统中的神经元一样,负责加工信息和传递信息。神经元可以被训练或者强化行政固定的意识形态,对特定的信息会有强烈的反映。
例如上图,无论图中是一只跳跃或者飞奔的猫,你的答案都是一只猫,因为你的大脑已经被训练并告知 —— 圆眼睛,毛茸茸,尖耳朵的动物,就是猫。
所以当这幅图像通过已经非常成熟的视觉神经系统时,能很准确快速的判定它就是一只猫。计算机也是同样,通过不断的训练告诉自己哪些是猫,哪些是狗,计算机会用数学模型来概括这些学习到的判断力。最终以数学的形式,也就是0或1,来判断它们被分为哪一类。例如目前的谷歌图片搜索,百度图片搜索等都能轻易的判断图片中的人或者事物。这些都归功于计算机神经系统的突破发展。
Part 2
上图就是一个可视化的神经网络系统,它由多层的神经元构成。为了区分不同的神经层,我们会有不同的神经层名称 :
输入层(input layer):是直接接受信息的神经层,负责传递接收到的信息,例如一只猫的图片。
输出层(output layer):是信息在神经元中传递,中转,分析,权衡,形成输出的结果。通过这一层输出的结果,我们可以直接的看出计算机对事物认知。
隐藏层(hidden layers):是在输入层和输出层之间的众多神经元连结组成的各个层面。它可以有多层,习惯上会用一层。这些隐藏层的作用就是负责传入信息的加工处理,就像人类的感知神经一样,信息的传递往往也需要经过多层的神经传递加工,才能衍生出对这种感觉的理解。
通常来说,计算机通常看到的和处理的事物与人类有所不同,无论是图片、声音、文字,他们都只能以数字0或1出现在神经网络里。如果当你想问电脑“嘿,你看这张图片是不是只猫?”,其实它能看到的只是一堆数字。对这些数字加工处理,生成另外一堆数字。而生成出来的数字也有了认知上的意义,通过一点点的处理,我们就能得知计算机到底判断这张图片到底是猫,还是狗。
Part 3
神经网络是怎样被训练的
1
第一步:
我们需要非常多的数据。例如,我们想让计算机来判断图片中的动物是猫还是狗,我们需要准备上千万张有猫猫狗狗的照片,然后再进行上千万次的训练。庆幸的是,我们现在的计算机运算的非常快,我们不用再对运算速度发愁。
2
第二步:
我们要做的就是只给计算机看图片,然后让它给我们一个不成熟或者不准确的答案。有可能100次的答案中,有10%是正确的。例如,如果你给计算机看这张飞奔的猫,但计算机会觉得他是一只狗。显然它区分错误了,但是这一次的错误的经验是非常有价值的,神经网络可以从错误结果里学习经验。
3
第三步:
计算机是如何学习经验呢?这就是通过对对比预测答案和真实答案的差异,然后再把差异反向传递给神经元,进行微调。至此,进行下一次识别的时候,通过改进的神经网络,计算机识别的正确率就可以提高一点点。如此反复,讲每一次的一点点改进累积下来,上千万次的训练之后,神经网络的识别正确率就会有很大的提高。
最后,在验收结果时,给计算机猫猫的图片之后,计算机就会给出猫的正确答案了。
Part 3
神经网络训练的细节
计算机中每一个神经元都有自己的刺激函数(Activation Function),这些函数可以给计算机一些刺激行为。当我们第一次给计算机看飞奔的猫,神经网络中只有部分神经元被激活。被激活的神经元传递的信息是计算机最为重视的信息,因为这些信息对于输出结果最有价值。如果预测的结果是一只狗,所有的神经元的参数就会被调整。
被激活的神经元会变得迟钝,另外一些变得敏感起来,这就说明所有神经元的参数正在改变为图片真正的重要信息越来越敏感。这时,被改动的参数就能渐渐预测出正确的答案。
以上就是神经网络的形成和加工过程。
来源:莫烦Python
整理:Brandon 小陈
领取专属 10元无门槛券
私享最新 技术干货