从零开始深度学习搭建神经网络(二)

参考资料:coursera的AndrewNG deeplearning.ai课程

github: https://github.com/Lee-Jiazheng/My_neural_network.git中的hidden_func.py中

通过上一次的学习,我们已经能够完成一个简单的神经网络,但如此简单的神经网络在进行学习的时候准确率有限,因为每一次学习都相当于在图中分割一刀,


红蓝之间的分类显然不是一刀可以解决的问题,所以我们需要添加隐藏层,即在输入和输出之间添加一层进行处理。

没有隐藏层分类结果:

所以我们需要添加隐藏层,结果就是添加了一个中间层,进行一次处理,映射房成为tanh:


对于输入x来说,可以经过多个层:

第一层输出:

       z1= W1 * x + b1

       a1= tanh(z1)

       z2= W2 * x + b2

       y= a2 = sigmoid(z2)

y依旧采取上一次的策略(代码中),如果大于0.5就是1,小于0.5就是0(sigmoid映射范围为0到1)。

损失函数J也比较好算:

       J= -1/m * sum(y * log(a2) + (1 - y) * log(1 – a2))

 

所以对各个参数的规格应该也有一个了解,

W1 --- weight matrix of shape (n_h, n_x)
b1 --- bias vector of shape (n_h, 1)
W2 --- weight matrix of shape (n_y, n_h)
b2 --- bias vector of shape (n_y, 1)

 

注意,W1、W2都采用随机初始化的方式,防止相同的起点有相同的结果,如果随即开始,也容易快速下降,诸如遗传算法、遗传编程等诸多算法都采用随机淘汰生成。

 

下一步是梯度计算:


这个是逻辑回归的dz公式,所以继续推导可得:


所以通过之间的公式:

 theta = theta – learning_rate * dtheta

可以得到新的参数列表,即更新后的W和b(W1\W2\b1\b2)。

然后迭代多次,得到最终结果后预测。

 

注:可能对tanh不太了解,其实如sigmoid方程的选取一样,有很多方程都是可选择的:



仅供个人学习使用,方便日后复习。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值