搭建浅层神经网络模型步骤总结

1. 构建数据集
2. 初始化4个变量
   - 确定样本个数
   - 输入层神经元的个数 (样本的特征个数)
   - 隐藏层神经元的个数
   - 输出层神经元的个数
3. 网络参数W和b的初始化
 其中,神经网络的层数(除输入层)决定初始化参数W和b的对数。(此处以2层为例);
 各参数的shape总结如下:
       -  W1:(下一层神经元的个数,样本个数)
       - b1 :(下一层神经元的个数,1)
       - W2:(下一层神经元的个数,上一层神经元的个数)
       - b2 :(下一层神经元的个数,1)

注意:初始化赋值时,b 一般全部初始化为 0 即可,但是 W 不能全部初始化为 0,初始化的方法是使用numpy.random.randn()方法随机生成。

4. 正向传播 (FP)
正向传播的过程分为线性部分和非线性部分,其目的是求神经网络模型的预测值y。线性部分结果表示为Z[1],Z[2],非线性部分结果表示为A[1],A[2];非线性也可理解为激活函数(AF),常见的激活函数有4种:
- Sigmoid 函数
- tanh 函数     
- ReLU 函数
- Leaky ReLU 函数

注意:常用的激活函数选择方法是:隐藏层选择tanh函数,输出层选择Sigmoid 函数;

5. 损失函数
通过正向传播来计算损失函数,其目的是求解真实的y值与预测的y值的差距;首先得确定损失函数的选择,常见的损失函数有以下三种:
 - hinge loss(支持向量机损失函数)
 - softmax(互熵损失函数)
 - Cross Entropy(交叉熵损失函数)

根据选择的损失函数计算最终的损失值,损失值越小模型越好。即下一步需要对损失函数最优化,使得损失值最小。

6. 反向传播 (BP)

通过链式法则对损失函数求一阶偏导,再代入具体值求d(W1),d(b1),d(W2),d(b2)。

7. 根据梯度下降法对网络参数进行更新
根据反向传播的结果更新W1,b1, W2, b2。由梯度下降法更新的具体公式如下所示:   
  W1 = W1 - n * d(W1)
  b1 = b1 - n * d(b1)
  W2 = W2 - n * d(W2)
  b2 = b2 - n * d(b2)

其中,n称学习率(学习因子),计算前应适当地给n一个值。

8. 循环迭代
 从步骤4开始循环迭代,直到损失函数达到最小或者迭代次数达到上限。
发布了21 篇原创文章 · 获赞 6 · 访问量 7996

猜你喜欢

转载自blog.csdn.net/weixin_42128329/article/details/104500884