深度学习基础之-1.2非线性反向传播

非线性的例子
在上面的线性例子中,我们可以发现,误差一次性地传递给了初始值w和b,即,只经过一步,直接修改w和b的值,就能做到误差校正。因为从它的计算图看,无论中间计算过程有多么复杂,它都是线性的,所以可以一次传到底。缺点是这种线性的组合最多只能解决线性问题,不能解决更复杂的问题。这个我们在神经网络基本原理中已经阐述过了,需要有激活函数连接两个线性单元。

下面我们看一个非线性的例子。

【课堂练习:做游戏】

5个人,分别代表x,a,b,c,y,其中 1 &lt; x &lt; = 10 , 0 &lt; y &lt; 2.15 1&lt;x&lt;=10,0&lt;y&lt;2.15 1<x<=100<y<2.15

在这里插入图片描述

第1个人,输入层
正向:随机输入第一个x值,x取值范围(1,10],假设第一个数是2
反向,第2个人传回 Δ x , 更 新 x : x = x − Δ x \Delta x,更新x:x = x - \Delta x Δxxx=xΔx,再次正向
第2个人,第一层网络计算
正向,第1个人传入x的值,计算: a = x 2 a=x^2 a=x2
反向,第3个人传回 Δ a , 计 算 Δ x : Δ x = Δ a / 2 x \Delta a,计算\Delta x:\Delta x = \Delta a / 2x ΔaΔxΔx=Δa/2x
第3个人,第二层网络计算
正向,第2个人传入a的值,计算b: b = ln ⁡ ( a ) b=\ln (a) b=ln(a)
反向,第4个人传回 Δ b , 计 算 Δ a : Δ a = Δ b ⋅ a \Delta b,计算\Delta a:\Delta a = \Delta b \cdot a ΔbΔaΔa=Δba
第4个人,第三层网络计算
正向,第3个人传入b的值,计算c: c = b c=\sqrt{b} c=b
反向,第5个人传回 Δ c , 计 算 Δ b : Δ b = Δ c ⋅ 2 b \Delta c,计算\Delta b:\Delta b = \Delta c \cdot 2\sqrt{b} ΔcΔbΔb=Δc2b
第5个人,输出层
正向,第4个人传入c的值
反向,计算y与c的差值: Δ c = c − y \Delta c = c - y Δc=cy,传回给第4个人
假设我们想最后得到c=2.13的值,问:x应该是多少?(误差小于0.001即可)

数学解析解
c = b = ln ⁡ ( a ) = ln ⁡ ( x 2 ) = 2 ln ⁡ ( x ) = 2.13 c=\sqrt{b}=\sqrt{\ln(a)}=\sqrt{\ln(x^2)}=\sqrt{2\ln(x)}=2.13 c=b =ln(a) =ln(x2) =2ln(x) =2.13 2 ∗ ln ⁡ x = 2.1 3 2 = 4.5369 2*\ln{x}=2.13^2=4.5369 2lnx=2.132=4.5369 ln ⁡ x = 4.5369 / 2 = 2.26854 \ln{x}=4.5369/2=2.26854 lnx=4.5369/2=2.26854 两 侧 取 e 的 次 方 : e ln ⁡ x = e 2.26854 两侧取e的次方:e^{\ln{x}} = e^{2.26854} eelnx=e2.26854 x = 9.6653 x = 9.6653 x=9.6653

梯度迭代解
(1) d a d x = d ( x 2 ) d x = 2 x = Δ a Δ x \frac{da}{dx}=\frac{d(x^2)}{dx}=2x=\frac{\Delta a}{\Delta x} \tag{1} dxda=dxd(x2)=2x=ΔxΔa(1) (2) d b d a = d ( ln ⁡ a ) d a = 1 a = Δ b Δ a \frac{db}{da} =\frac{d(\ln{a})}{da} =\frac{1}{a} = \frac{\Delta b}{\Delta a} \tag{2} dadb=dad(lna)=a1=ΔaΔb(2) (3) d c d b = d ( b ) d b = 1 2 b = Δ c Δ b \frac{dc}{db}=\frac{d(\sqrt{b})}{db}=\frac{1}{2\sqrt{b}}=\frac{\Delta c}{\Delta b} \tag{3} dbdc=dbd(b )=2b 1=ΔbΔc(3) 因此得到如下一组公式,可以把最后一层 Δ c \Delta c Δc的误差一直反向传播给最前面的 Δ x \Delta x Δx,从而更新x值: (4) Δ c = c − y \Delta c = c - y \tag{4} Δc=cy(4) (根据式3) Δ b = Δ c ⋅ 2 b \Delta b = \Delta c \cdot 2\sqrt{b} \tag{根据式3} Δb=Δc2b (3) (根据式2) Δ a = Δ b ⋅ a \Delta a = \Delta b \cdot a \tag{根据式2} Δa=Δba(2) (根据式1) Δ x = Δ a / 2 x \Delta x = \Delta a / 2x \tag{根据式1} Δx=Δa/2x(1)

我们给定一个初始值x=2,依次计算结果如下表:

迭代正向 x = x − Δ x x=x-\Delta x x=xΔx正向 a = x 2 a=x^2 a=x2正向 b = ln ⁡ ( a ) b=\ln(a) b=ln(a)正向 c = b c=\sqrt{b} c=b 标签值y反向 Δ c = c − y \Delta c = c - y Δc=cy反向 Δ b = Δ c ⋅ 2 b \Delta b = \Delta c \cdot 2\sqrt{b} Δb=Δc2b 反向 Δ a = Δ b ⋅ a \Delta a = \Delta b \cdot a Δa=Δba反向 Δ x = Δ a / 2 x \Delta x = \Delta a / 2x Δx=Δa/2x
1241.3861.1772.13-0.953-2.243-8.973-2.243
24.24318.0052.8911.7002.13-0.430-1.462-26.314-3.101
37.34453.9343.9881.9972.13-0.133-0.531-28.662-1.951
49.29586.4044.4592.1122.13-0.018-0.078-6.698-0.360
59.65593.2334.5352.1292.13

下面是运行结果:

how to play: 1) input x, 2) calculate c, 3) input target number but not faraway from c
input x as initial number(1.2,10), you can try 1.3:
2
c=1.177410
input y as target number(0.5,2), you can try 1.8:
2.13
forward...
x=2.000000,a=4.000000,b=1.386294,c=1.177410
backward...
delta_c=-0.952590, delta_b=-2.243178, delta_a=-8.972712, delta_x=-2.243178

forward...
x=4.243178,a=18.004559,b=2.890625,c=1.700184
backward...
delta_c=-0.429816, delta_b=-1.461533, delta_a=-26.314258, delta_x=-3.100772

forward...
x=7.343950,a=53.933607,b=3.987754,c=1.996936
backward...
delta_c=-0.133064, delta_b=-0.531440, delta_a=-28.662487, delta_x=-1.951435

forward...
x=9.295386,a=86.404194,b=4.459036,c=2.111643
backward...
delta_c=-0.018357, delta_b=-0.077527, delta_a=-6.698641, delta_x=-0.360321

forward...
x=9.655706,a=93.232666,b=4.535098,c=2.129577
backward...
done!

该组合函数图像(蓝色)和导数图像(绿色):
在这里插入图片描述

上图中的几个x坐标点,就是整个计算过程中,x的移动轨迹。

代码位置:ch02, Level1

https://github.com/microsoft/ai-edu/blob/master/B-教学案例与实践/B6-神经网络基本原理简明教程/02.2-非线性反向传播.md

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值