top of page
アンカー 1

一、前文回顾

我们到此为止成功搭建了一个简单的神经网络,并且这个神经网络可是识别简单的手写数字,但是这中间也出现了很多新的概念,所以我觉得需要做个总结,顺便完整的回看一下神经网络的具体原理


二、推理与学习

推理就是利用训练好的神经网络对未知的事物进行推理判定,这也是神经网络的终极目的。就好比我已经有一个训练好的识别手写数字的神经网络。然后你随便写个数字,让神经网络去识别,这就是推理过程。

学习就是去教神经网络怎么去识别事物,一个没有经过训练的神经网络就是个一个智障,它没有任何自主识别能力,所以我们得教它,而教的过程就叫学习,或者训练。如果它学会了,这个神经网络就从智障升级为了智能。


三、数据集(DATASET)

数据集这个概念是深度学习经常会听到的名词。

数据集,顾名思义就是数据的集合。因为训练神经网络需要大量的数据(图片,声音等等),所以就把用来训练神经网络的数据叫做数据集。目前有名的数据集主要有下面几个:

1.MNIST是一个手写字符集,也是学习深度学习的入门必备数据集

2.ImageNet项目是一个用于视觉对象识别软件研究的大型可视化数据库。有超过1400万的图像,在至少一百万个图像中,还提供了边界框。

3.COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以场景理解为目标,主要从复杂的日常场景中截取图像,然后对图像中的目标位置进行精确的标定。图像包括91类目标,328,000影像和2,500,000个label。目前为止有语义分割的最大数据集,提供的类别有80 类,有超过33 万张图片,其中20 万张有标注,整个数据集中个体的数目超过150 万个当然还有很多别的领域的数据集,因为我只关心图像处理,所以以上三个都是图像识别方面有名的数据集。


四、神经网络结构

神经网络主要由以下几个部分构成:

1.神经元:神经元主要负责接受上一级神经元的数据,并进行处理(激活)然后传递给下个神经元。

2.权重参数,偏置项:权重参数乘以上一级神经元输出的数据,再加上偏置项以后传递给下一级神经元。

3.激活函数:神经元接收到上一级神经元的数据以后,用激活函数对该数据进行激活。

4.损失函数:一个神经网络的最终输出数据和实际数据的有多大的差别

5.SoftMax函数:通过SoftMax函数求出神经网络每个输出的概率,概率最大代表最有可能是正确答案。

6.批处理:为了节省数据加载速度,每次训练会喂给神经网络一批数据,而不是一个数据。


五、神经网络的训练流程

以训练识别手写数字为例:

①从大量的训练图片中随机选择一部分图片输入神经网络(每个像素值对应一个神经元的输入)。

②随机初始化权重参数和偏置项(一般要求符合高斯分布)

③顺传播从第一层神经元开始,输入数据乘以权重加上偏置项,传递给下一个神经元,然后在神经元内经过激活函数激活,传递给下个神经元,依次类推直到最终输出。

④通过损失函数计算推理结果和正确结果的偏差

⑤如果损失函数没有达到最小值,也就是推理值和真实值差的比较远,为了缩小这个差距,就要根据损失函数在这个点的梯度值相应的更新权重参数。

⑥逆传播通过误差逆传播方法求得每个权重参数的微分值

⑦根据⑥求得的微分值更新权重参数⑧回到第三步


六、神经网络的瓶颈

对于简单的图像识别,普通的神经网络可以达到很高的精度。但是对于更大更复杂的图像,普通的神经网络就力不从心了。为什么普通神经网络会遇到瓶颈,怎么解决?下节再讲。

bottom of page