从零搭建神经网络解决异或问题

本文详细介绍了如何从头开始构建一个简单的神经网络来解决异或问题,包括网络结构设计、前向传播与反向传播原理,以及关键的权重更新过程。通过实例演示了如何利用tanh和sigmoid激活函数,并展示了学习率调整策略。

从零搭建神经网络解决异或问题

PS: 本篇文章不涉及调用任何有关机器学习的库,例如TensorFlow,Pytorch等

  • 通过阅读本篇文章,你可能收获如下:
    • 了解神经网络的结构
    • 理解前向传播反向传播的本质
    • 理解激活函数的意义以及它在反向传播中的作用

数据集

很简单就四个数据点 (x,y) label

  • (0,0) 0
  • (1,0) 1
  • (0,1) 1
  • (0,0) 0

网络结构

由于单层神经网络不能解决2维异或问题,所以设计含1层隐藏层的神经网络

在这里插入图片描述
n1=w11∗I1+w21∗I2+b1(1) n_1 = w_{11}*I_1+w_{21}*I_2 + b_1 \tag{1} n1=w11I1+w21I2+b1(1)
n3=w12∗I1+w22∗I2+b2(2) n_3 = w_{12}*I_1+w_{22}*I_2 +b_2 \tag{2} n3=w12I1+w22I2+b2(2)
n2=tanh(n1)(3) n_2=tanh(n1) \tag{3} n2=tanh(n1)(3)
n4=tanh(n3)(4) n_4=tanh(n3) \tag{4} n4=tanh(n3)(4)
n5=w3∗n2+w4∗n4+b3(5) n_5=w_3*n_2+w_4*n_4+b_3 \tag{5} n5=w3n2+w4n4+b3(5)
n6=sigmoid(n5)(6) n_6=sigmoid(n_5) \tag{6} n6=sigmoid(n5)(6)

  • 这里给出激活函数的求导性质(后面要用到)
    { f(x)=sigmoid(x)f(x)′=f(x)(1−f(x))(7) \left\{\begin{matrix}f(x)=sigmoid(x)\\f(x)'=f(x)(1-f(x))\end{matrix}\right. \tag{7} { f(x)=sigmoid(x)f(x)=f(x)(1f(x))(7)
    { g(x)=tanh(x)g(x)′=1−g(x)2(8) \left\{\begin{matrix}g(x)=tanh(x)\\g(x)'=1-g(x)^2\end{matrix}\right. \tag{8} { g(x)=tanh(x)g(x)=1g(x)2(8)

前向传播和反向传播

  • 前向传播很好理解,就是给定输入和神经网络,得到输出的过程,在这里就是给定 I1I_1I1I2I_2I2 得到 n6n_6n6 的过程,具体计算过程已经由上面公式给出
  • 下面重点介绍反向传播
    • 首先给出损失函数的定义
      loss=(n6−label)2(9) loss = (n_6-label)^2 \tag{9} loss=(n6label)2(9)</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值