机器学习(神经网络)笔记

基础考虑

定义

我们观察 层的输入

对于上面的输入,定义神经元为 S 型神经元,那么其结果 为:

为了评估和目标的差距,同时用来作为调整的依据,我们定义代价函数:

目标和推导

我们的目标是期望神经网络的输出和目标吻合,即代价函数最小。
观察代价函数 ,我们的思考如下:

  • 是 的函数(这个函数由训练者决定)
  • 是 的函数(这个函数由训练者决定)
  • 是由 和 决定的
  • 我们能够调整的是 和

由上面分析,问题就变成了,对已知的 ,我们应该怎么调整 和 。
为此,我们期望知道 和 的变化和 的关系:

  • 上面式子中,我们定义了 ,在实际操作中,我们只要计算 ,就能算出上面的值,其中 如下:

    • \delta = \frac{\partial C}{\partial z} = {\partial C \over \partial a } {\partial a \over \partial z} = {\partial C \over \partial a} {\partial \sigma(z) \over \partial z} = {\partial C \over \partial a} \sigma ' (z) = (a-y){\sigma(z)(1-\sigma(z))}
    • 我们根据 函数的性质,可知当 在较大或较小值的时候,函数变化很缓慢,对应神经元的饱和或未激活

同时,为了能够调整其他层的参数,我们看一下各个层之间的 的关系。

现在,让我们把视线关注在 层的 神经元上,当一个样本输入后,假设样本预设输出应该是 ,而实际神经元输出是 ,那么我们将目光放在 层上,我们逐个计算每个连接的 和本神经元的 的变化对 的影响,然后记录下这个应该调整的值。

然后,对于下一个样本,我们同样进行计算,最后我们将这些调整取其平均值,做为调整参数调整到神经网络里面。这批小的样本就叫做 batch,其大小就是 batch size。

这期间,我们会发现不同样本对神经元的 和 有不同的理解,有些会说 该提高很大,有些会说 该减少一点点。经过样本一轮一轮的刷新,各个神经元的阈值就会分化,权重也会分化。最终这个神经网络就会适应这个训练任务。

所以,基于神经网络的训练就是一个神经元和权重不断试错和分化的过程,不同的起始参数,不一样的训练顺序,训练出来的参数可能都是不一样的,也对应了不同的模型。

你可能感兴趣的:(机器学习(神经网络)笔记)