当我们在训练一个神经网络的时候:
- 建立网络的大体框架,确定几个输入,几个隐藏层几个单元,几个输出;
我们通常使用一个隐藏层;如果不使用一个隐藏层,我们一般多个隐藏层的单元也是一样的,隐藏层越多越好,但是计算量会变大;隐藏层的单元数一般是输入的两倍三倍四倍,只要大于输入层的单元数,一般都是可以接受的。
- 训练神经网络
1). 随机初始化权重;
2). 前向传播,计算出h(x),也就是每一个x对应输出的y的向量;
3). 用代码实现代价函数(cost function)J;
4). 反向传播算法,算出J对于参数(权重)Θ的偏微分;
5). 梯度检查,把反向传播计算得到的偏导值和数值方法计算得到的估计值对比,确保二者约等。这个是为了验证我们反向传播算法计算得到的结果是正确的;验证完成,关闭梯度检查。
6). 使用梯度下降或者更高级的算法和反向传播算法相结合,最小化代价函数J。
假设我们的神经网络有两个参数:我们目的就是想让代价函数最小。
网友评论