如果只判断是否是X那么一层就够了,但我们实际中要理解别人语音,图像识别。所以人们就研究了多层神经元。如图所示一个输入,然后输入端连接每一个第一个隐层的神经元,第一个隐层把这些数据输出出来后,选择向下游输出,输出到第二层隐层,第二隐层输出结果又进入第三隐层。这就是所谓的多层神经网络。每两层之间就有大量的参数,我们让大量的参数调节到最优,使得最后的误差函数最小。
虽然神经元做的操作并不复杂,但场景一旦复杂后,数量级将会非常庞大。比如一个5*5的图片,每一层有25个神经元,每一层的参数就有625个,三层就两千多个。如果是个彩色图片,识别起来就比较复杂了,算起来非常慢。这也是前几次人工智能陷入低估的原因,不管是算力还是算法都跟不上。后来出现BP算法,反向传播,可以先调最后一层。最后一层调完了往前调,这种算法复杂度比以前的要低。BP 算法主要解决了神经网络多层之间信息传递过程的误差损失和误差计算,引领了第三次人工智能浪潮。
3.2 CNN
这里我们还是拿一个在神经网络算法中比较经典的算法:CNN 卷积神经网络举例。其过程和动物的大脑识别也比较类似,图像映入大脑中也是由点到线再到物体最终识别出来它是什么。那计算机也一样,通过像素点-边缘方向-轮廓-细节-判断从而实现了图像识别。
比如我们想来识别一个图片是否是 X 这样一个字符,那一个图片对于计算机来说就是一个二维数组,比如黑色是1,白色是0。如下图所示:
给到计算机后,就可以通过一系列的训练过程,找到一大堆的参数以判断它是否是个X。找到一个损失最小的函数,那就是一次成功的训练。从此之后,我就能利用这一大堆参数判断一个图片是否是 X 了。
具体来说,我们可以通过提取图像中的特征,使用卷积核来进行卷积运算,比如卷积核就一个斜着的竖线(我们认为这是 X 图像的特征之一)。
通过卷积(一个斜着的竖线)核盖到这个图片上,进行运算,运算结果放到这个图片覆盖的中间。然后组合起来就是特征图。 算出来的特征,越大代表越能表达这个特征。