[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)

原文地址:http://neuralnetworksanddeeplearning.com/chap1.html#the_architecture_of_neural_networks

A simple network to classify handwritten digits

定义完了神经网络的相关概念后,我们回到手写识别的问题。我们可以将手写识别的问题分解成2个子问题。首先,我们将包含着多个数字的图像进行分割,分割后的每个数字都是独立的。举个例子,我们将下面的图像:
[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第1张图片
分割成6个分离的图像:
[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第2张图片

我们人类解决这种分割问题是很容易的,但是对于计算机而言,这种分割是具有挑战性的。一旦图像被独立开来,接下来程序就可以对数字进行分类了。因此,举个例子,我们希望我们的程序可以识别下面的数字:[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第3张图片
这是5。

我们将重点考虑编写一个程序去解决第二个问题,也就是对分开的数字进行分类。我们这样做是因为它的细分问题并不难解决,因为一旦你有一个好的方法对独立的数字进行识别分类。这里有很多方法去解决分割问题。一种方法是尝试许多不同的方法分割图形,然后通过独立的数字分类方法对每个分割的图形进行分类。一个好的(得分高的)分割方法可以对每个分割图形有效分类,一个差的(得分低的)分割方法会在一些分割图形识别遇到一系列问题。我们的想法是,如果分类器有麻烦的地方,就可能有困难,因为细分选择不正确。这个想法和其他的变化能很好地解决分割问题。因此,我们将专注于开发一个可以解决更有趣和更困难的问题,即识别个人的手写体数字的神经网络,而不是一个令人担忧的问题。

为了识别独立的数字我们将使用三层神经网络:
[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第4张图片

网络的输入层包含图片像素的编码值,正如在下一节讨论的,我们网络的训练数据包含一个手写数字图片的 28×28 像素点,也就是说,我们的输入层包含 784=28×28 个神经元。为简单起见我省略了大部分的784个输入神经元在上面的图。输入像素灰度值为0.0时表示白色,值为1.0时表示黑色,和之间的值代表逐渐变暗的灰色阴影。

第二层是网络的隐藏层,我们假设隐藏层的神经元的个数是 n ,并且我们将尝试不同值的 n 。例子展示的一个小的隐藏层,仅仅包含 n=15 神经元。

网络的输出层包含10个神经元。如果第一个神经元受到刺激时,即,有一个输出≈1,那么,说明网络认为数字是0。如果第二个神经元受到刺激时,即认为数学是1,依次类推。更准确地说,我们从0到9输出神经元数,并找出哪些神经元激活值最高。如果这个神经元说,神经元数6,那么我们的网络将猜测,输入数字是一个6。其他输出神经元也是如此。

您可能想知道为什么我们使用10个输出神经元。毕竟,网络的目的是告诉我们哪个数字(0,1,2,…,9)对应于输入图像。看似自然的方法是使用4个输出神经元,用二进制来对待每个神经元,取决于神经元的输出值接近于1或0。4个神经元已经很足够了,因为 24=16 大于10个神经元了。那为什么我们要用10个神经元来替代这种方式呢?它很低效吗?理由是因为经验:通过尝试,对于这个问题,网络上有10个神经元的效果是浩宇四个神经元的。但是这让我们想知道为什么使用10个神经元的效果更好呢?是否有一些启发式提前告诉我们使用10-输出神经元效果好于4-神经元?

要理解为什么我们这样做,它有助于思考什么是神经网络从第一原则。首先考虑的是使用10个神经元作为输出神经元。让我们专注于第一个输出神经元,一个试图决定是否该数字是0。这是通过从隐藏的神经元层中的证据来证明这个。那些隐藏的神经元在做什么?好的,只是假设在隐藏层中的第一个神经元可以检测到图像是否有如下的问题:
[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第5张图片
它可以做到这一点,通过重加权的输入像素与图像重叠,并且只轻轻加权的其他输入。以类似的方式,我们假设第二,第三,第四隐层神经元检测是否存在以下图片:
[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第6张图片
正如你可能已经猜到的,这四幅图像一起构成了我们所看到的0张图片,我们在前面的数字:
[神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译)_第7张图片
如果这四个隐藏神经元就会被激活,那么我们可以得出结论,数字是0。当然,这不是唯一的证据我们可以得出这样的结论:图像是一个0 -我们可以合法得到0在许多其他方式(通过翻译说,上面的图片,或轻微的扭曲)。但似乎可以说,至少在这种情况下,我们会得出这样的结论:输入是0。

假设神经网络通过这种方式那么我们可以给出一个合理的解释为什么最好有10个输出的网络,而不是4。因为如果我们有4个输出,那么第一个输出神经元会试图决定最重要的数字是什么。没有简单的方法来联系,最重要的一点简单的形状如上图所示。很难想象,有什么好的历史原因,数字的组成部分的形状将是密切相关的(说)最重要的位在输出。

现在,这只是一个启发式。没有什么说的三层神经网络具有操作的方式,我所描述的,与隐藏的神经元检测简单的元件形状。也许一个聪明的学习算法会发现一些分配的权重,让我们只使用4个输出神经元。但作为一种启发,我所描述的思维方式很好,可以节省你设计好的神经网络体系结构的时间很多。

你可能感兴趣的:([神经网络]1.4-Using neural nets to recognize handwritten digits-A simple network to classify ...(翻译))