神经网络为什么需要非线性激活函数

刚开始接触深度学习的小伙伴一定会有一个疑问:我们为什么需要设置激活函数呢?为什么这个激活函数需要是非线性的呢?

本文会就这个问题做一些探讨!

首先来看一个最简单的神经网络:
在这里插入图片描述

首先,神经网络需要经过前向传播,于是在每一个节点上,我们要经历的是一次线性变化,和一次非线性激活。

给定输入 x:
z [ 1 ] = W [ 1 ] x + b [ 1 ] z^{[1]} = W^{[1]}x + b^{[1]} z[1]=W[1]x+b[1]
a [ 1 ] = g [ 1 ] ( z [ 1 ] ) a^{[1]} = g^{[1]}(z^{[1]}) a[1]=g[1](z[1])
z [ 2 ] = W [ 2 ] x + b [ 2 ] z^{[2]} = W^{[2]}x + b^{[2]} z[2]=W[2]x+b[2]
a [ 2 ] = g [ 2 ] ( z [ 2 ] ) a^{[2]} = g^{[2]}(z^{[2]}) a[2]=g[2](z[2])

z表示线性变换,a表示非线性变换。
这里我们用的非线性函数 g [ 1 ] ( ) g^{[1]}( ) g[1]()可以是ReLU,可以是 tanh ,有或者是 sigmoid。

那假设我们不再设置非线性函数,那表达式会变为:
z [ 1 ] = W [ 1 ] x + b [ 1 ] z^{[1]} = W^{[1]}x + b^{[1]} z[1]=W[1]x+b[1]
a [ 1 ] = z [ 1 ] a^{[1]} = z^{[1]} a[1]=z[1]
z [ 2 ] = W [ 2 ] x + b [ 2 ] z^{[2]} = W^{[2]}x + b^{[2]} z[2]=W[2]x+b[2]
a [ 2 ] = z [ 2 ] a^{[2]} = z^{[2]} a[2]=z[2]

经过推导,可得:
a [ 2 ] = ( W [ 2 ] W [ 1 ] ) x + ( W [ 2 ] b [ 1 ] + b [ 2 ] ) a^{[2]} = (W^{[2]}W^{[1]})x + (W^{[2]}b^{[1]}+b^{[2]}) a[2]=(W[2]W[1])x+(W[2]b[1]+b[2])
其实就等于:
a [ 2 ] = W ′ x + b ′ a^{[2]} = W^{'}x + b^{'} a[2]=Wx+b
也就是说,我们的多层神经网络被简化成了单层的线性回归网络!我们设置神经网络隐藏层的意义也就消失了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值