深度卷积网络原理—非线性激活的必要性

假设有如上图所示的神经网络实例图

网络描述如下:

1)有2个输入,即图中的x1、x2

2)有3个神经元,即途中的b1、b2、b3

3)共2层网络。第1层的神经元是b1、b2,第2层的神经元是b3.可将中间层称为隐层。例如途中的b1、b2就属于隐层

4)有6个权重(w11到w23)。最终输出为OUT。

 

神经元b1的输出是: x1w11+x2w21+b1

神经元b2的输出是:x1w12+x2w22+b2

 

如果没有非线性激活,那么最终的输出OUT的计算公式是:

OUT=(x1w11 + x2w21 + b1)* w13 + (x1w12 + x2w22 + b2)*w23 + b3

        =x1*(w11w13 + w12w23) + x2 * (w21w13 + w22w23)+(b1w13 +b2w23 +b3)

 

从上面的公式可以看出,虽然用了3个神经元,但这个网络对于x1和x2仍然是线性的,完全等价于1个神经元的效果。

如下图:

 

因此,如果只是把神经元简单的连接在一起,不加入非线性处理,最终得到的仍然是线性函数,无法完成描述各种复杂的现象,可看出在神经元的输出时需要一个非线性函数是必要的。

 

若非线性激活函数对于中间层神经元是f,对于最终输出神经元是g,那么,对于此前的网络,最终的输出会变为:

OUT=g(f(x1w11 + x2w21 +  b1)* w13 + f(x1w12 + x2w22+b2)*w23 + b3)

由于f和g都是非线性的,于是最终可得到非线性的网络输出,即可拟合出复杂的数据。

 

posted @   勇者归来  阅读(2059)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示