基础考虑
定义
我们观察 层的输入
对于上面的输入,定义神经元为 S 型神经元,那么其结果 为:
为了评估和目标的差距,同时用来作为调整的依据,我们定义代价函数:
目标和推导
我们的目标是期望神经网络的输出和目标吻合,即代价函数最小。
观察代价函数 ,我们的思考如下:
-
是
的函数(这个函数由训练者决定)
-
是
的函数(这个函数由训练者决定)
-
是由
和
决定的
- 我们能够调整的是
和
由上面分析,问题就变成了,对已知的 ,我们应该怎么调整
和
。
为此,我们期望知道 和
的变化和
的关系:
-
上面式子中,我们定义了
,在实际操作中,我们只要计算
,就能算出上面的值,其中
如下:
- 我们根据
函数的性质,可知当
在较大或较小值的时候,函数变化很缓慢,对应神经元的饱和或未激活
同时,为了能够调整其他层的参数,我们看一下各个层之间的 的关系。
现在,让我们把视线关注在 层的
神经元上,当一个样本输入后,假设样本预设输出应该是
,而实际神经元输出是
,那么我们将目光放在
层上,我们逐个计算每个连接的
和本神经元的
的变化对
的影响,然后记录下这个应该调整的值。
然后,对于下一个样本,我们同样进行计算,最后我们将这些调整取其平均值,做为调整参数调整到神经网络里面。这批小的样本就叫做 batch,其大小就是 batch size。
这期间,我们会发现不同样本对神经元的 和
有不同的理解,有些会说
该提高很大,有些会说
该减少一点点。经过样本一轮一轮的刷新,各个神经元的阈值就会分化,权重也会分化。最终这个神经网络就会适应这个训练任务。
所以,基于神经网络的训练就是一个神经元和权重不断试错和分化的过程,不同的起始参数,不一样的训练顺序,训练出来的参数可能都是不一样的,也对应了不同的模型。