搭建神经网络

简介

Andrew Ng老师在Coursera的deeplearning.ai课程,真心很赞,一口气学完了目前仅有的三门课程,讲解及其细致,醍醐灌顶。Ng老师说,DataAlgorithmsComputation这三方面催生了DL的飞速发展,很是赞同,如果你的数据量不到一定程度,计算能力不够,算法优化不够,那么深度学习就等于纸上谈兵,不会落地,而解决实际问题。Deeop learning 犹如新电力,将改变各行各业,带来新的发展机遇。本文是该课程第一门课的学习笔记,主要记录下搭建一个神经网络(NN)的过程及需要注意的问题,欢迎指正!

build a NN 算法:

  1. 定义NN的结构(隐藏层神经元个数,层数,激活函数)
  2. 初始化模型的参数
  3. LOOP:

    执行Forward propagation;
    计算损失(Loss);
    执行Backward propagation,得到梯度(gradients);
    更新参数(gradient descent);

示意图

final outline

初始化模型参数

shallow
根据Ng老师的讲解,如上图这样有一个隐藏层的2层NN,初始化$ w^{[1]} $时,需要注意打破symmetric,隐藏层的参数可以这样初始化W1=np.random.randn((2,2))*0.01,b1=np.zeros((2,1)),之所以乘0.01是为了使得初始的参数尽量小,使得梯度变化明显,学习更加快速。

2层网络的BP过程

grad_summary

不断实验更新过程

itertive
课程提到,运用ML解决问题的过程是个不断实验,更新迭代的过程,多试才是王道

FP & BP 参数更新过程

backprop_kiank

Basic ‘recipe’ for NN

bias_variance

Node:

参考deeplearning.ai课程,链接Here

分享