当前位置:   article > 正文

【机器学习笔记】训练并优化神经网络的步骤_bp神经网络,如果隐藏层数大于 1,为什么确保每个隐藏层的单元个数相同?

bp神经网络,如果隐藏层数大于 1,为什么确保每个隐藏层的单元个数相同?

训练并优化神经网络的步骤

选择网络结构,即决定选择多少层以及决定每层分别有多少个单元
第一层的单元数即训练集的特征数量。最后一层的单元数是训练集的结果的类的数量。
如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。

真正要决定的是隐藏层的层数和每个中间层的单元数

训练神经网络:

  1. 参数的随机初始化

通常需要把参数初始化为趋近于0的极小的值。当使用逻辑回归时,通常将参数初始化为0,但对于神经网络这个方法是不行的,若都初始化为0,那么第二层每个单元节点的值都会是相同的,若都初始化为同一个非零的数,结果也是一样的。所以每个参数要在0附近的正负值范围内随机选取

  1. 利用正向传播方法计算所有的 h Θ ( x ) h_{\Theta}(x) hΘ(x)

从左向右进行计算,对于输入的任意 x ( i ) x^{(i)} x(i),计算出 h Θ ( x ( i ) ) h_{\Theta}(x^{(i)}) hΘ(x(i)) ,结果的形式是向量。

  1. 编写计算代价函数 J ( θ ) J(\theta) J(θ)的代码
  2. 利用反向传播方法计算所有偏导数 ∂ ∂ θ j k ( l ) J ( θ ) \frac{\partial }{\partial \theta _{jk}^{(l)}}J(\theta ) θjk(l)J(θ)
  3. 使用梯度检验来将反向传播算法得到的偏导数值 ∂ ∂ θ j k ( l ) J ( θ ) \frac{\partial }{\partial \theta _{jk}^{(l)}}J(\theta ) θjk(l)J(θ),与数值方法得到的估计值进行比较,以确保两种方法得到的值是接近的

这样做的目的是,在实际运行过程中,代码可能存在很多 b u g bug bug J ( Θ ) J(\Theta) J(Θ)的值虽然可能在减小,但最后得到的值可能存在极大的误差,采用梯度检测的方法可以减小这种错误的概率。需要注意,当检测完后,要把梯度检查的代码注释掉,这个检测操作是非常花费时间的。

  1. 使用优化算法(如梯度下降或者其他更加高级的优化算法)来最小化代价函数

需要注意的是,由于神经网络并不是一个线性的模型,其代价函数 J ( Θ ) J(\Theta) J(Θ) 是个非凹函数,所以我们使用梯度下降等方法得到的结果只是一个局部最优解,并不保证就是全局最优解。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号