尽管现在人工智能在许多方面都取得了迅速的进步,人工智能的发展离不开神经网络原理的诞生,但它仍然是少数人能理解的东西,掌握它的人也更少。在人们生活中经常使用的语音助手,人脸识别,图片提取文字等都离不开神经网络的应用。但网络上的资料都是一堆枯燥无味的数学公式,本文在不使用复杂的数学公式的前提下对神经网络进行通俗的讲解。
计算机里图像只是一堆数字
首先在计算机里图像只是一堆数字而已,每一个像素点有一个特定的数字。如选一个28*28的图片怎么让计算机对手写图像进行识别呢?我们使用多层神经网络对图像进行特征提取来进行对数字的识别。
多层神经网络
本图神经网络有4层,其中有784个输入层,2个隐含层,一个输出层。
输入层有784个,这784个输入值就是28*28个像素点所代表的数值排成一列而成。
28X28=784排成一列进行输入
输出层就是代表计算机最终计算预测结果,判断图像代表的是什么数值。
判断出图片为数字9
隐含层是神经网络的关键,对图像识别的正确性至关重要。其中隐含层的层数和个数由自己进行分配选取,从而来达到最好的识别效果。其中隐含层主要是对图片的特征进行提取。
隐含层
隐含层到底时怎么进行工作的呢?下面进行详细的介绍。我没知道,数字9可以由一个0和一个1组合而成,数字8可以由两个0组合而成。隐含层的第二层就是想这样对图像进行特征提取并来对数字进行区分的。
数字可以细分不同的图像进行组合而成
隐含层第二层对图像的处理
但是一层隐含层识别率还是有点低,为了提高识别的准确性,我们可以对第二层的图像进行细分,所以添加了第一层的隐含层。如下图,数字0还可以进行进一步的细分。
进一步细分
所以隐含层是对图像进行精准的提取,组合,判断,以达到对数字正确的识别。
但是每个层之间的连线是干什么的呢?
What?
从上面我们知道第一层的输入层代表着图像每个像素的数值p,这些图像可能很杂乱,如下图。
有点夸张 (*^__^*)
但从这些参数怎么提取我们想要的特征呢?我们就需要一个权重(weights)w对图像进行处理来得到我们想要的特征。
其中一个想要得到的特征
然后与我们的图像进行叠加就得到我们其中一个特征。
叠加
有些图像会有噪点,或者我们想提高识别的门槛(阈值)。我就需要一个偏置(biases),来减少干扰。由于每一层都会有一个偏置和一组权重(weights),我们会要计算很多的数值,所以这一过程的计算量是很大的。(/ □ )
13002个值(/ □ )
到这里一个基本的神经网络就以及介绍完毕了,就是这么简单(*^__^*) 。
但是如果上述过程出错会怎么办????
Wrong!!!错了!!!