2.2 视觉神经元
在第1章中,你看到了一个非常简单的场景,给一台机器一组X值和Y值,这台机器学习到它们之间的关系为Y=2X-1。这由含有一层和一个神经元的非常简单的神经网络来完成。
如果你画出上面的关系,它看起来就像图2-4那样。
图2-4:一个学习线性关系的简单神经元
我们的每一张图像都是由784个值为0~255的元素组成的。它们可以是X。我们知道,在数据集中有10种不同类别的图像,因此我们把它们看作Y。现在我们想学习Y关于X的函数看起来是什么样的。
鉴于每个图像都有784个X值,并且Y将为0~9,很明显,我们无法像之前那样得到Y=mX+c。
但是我们可以让几个神经元协同工作。每一个神经元都将学习到参数。当我们得到所有这些参数共同工作的一个组合函数时,可以看到是否可以将该模式与我们想要的答案匹配(见图2-5)。
图2-5:把我们的模式扩展到更复杂的例子
图2-5顶部的框可以视为图像中的像素(或者说X值)。当训练神经网络时,我们将它们输入一层神经元—图2-5只展示了它们被输入第一个神经元,但这些值是被输入每一个神经元。每个神经元的权重和偏差(m和c)被随机初始化。那么,当我们对每个神经元的输出值求和时将得到一个值。对于输出层的每一个神经元我们都这样操作,因此神经元0将包含像素加起来为标签0的概率,神经元1对应标签为1的概率,以此类推。
随着时间的推移,我们希望将该值与期望的输出匹配—如我们所见,对于这张图像来说,这个输出是数字9,即图2-3所示的短靴的标签。所以换句话说,该神经元应该有所有输出神经元的最大值。
鉴于有10个标签,在大约10%的情况下,随机初始化可以得到正确的答案。基于此,损失函数和优化器可以通过一个个回合来调整每个神经元的内部参数,以提高初始的10%。因此,随着时间的推移,计算机将学会“看到”什么是鞋子或者什么是裙子。