当前位置: 首页 > news >正文

什么是神经网络的非线性

大家好啊,我是董董灿。

最近在写《计算机视觉入门与调优》(右键,在新窗口中打开链接)的小册,其中一部分说到激活函数的时候,谈到了神经网络的非线性问题。

今天就一起来看看,为什么神经网络需要非线性,或者说为什么它是一个非线性系统。

1、线性系统是什么样的

先看一个基础知识:线性函数,这是我们在初中就学过的知识点。

假设有一个线性函数:y = kx + b, 这个函数画出来是下面的样子,也就是说, y 和 x 是线性关系。

而这个时候如果又有一个线性函数 z = hy + d,那么,我们可以推断出,变量 z 和 x 同样也是线性关系。

为什么呢? 可以通过下面的变换得到。

z = hy + d

   = z(kx + b) + d

   = zk x + zb + d

   = zk(x) + (zb + d)

令 zk = K, zb + d = B,那么 z 和 x 的关系就可以写出 z = Kx + B

所以,z 和 x 同样是线性关系。

这里想说的一个原理是:多个线性系统的叠加,最终还会是线性系统。

2、神经网络是什么系统呢?

回到神经网络,我们知道卷积的算法公式是 y = x * w,,其中 x 是输入数据,w 是权值,中间的 * 代表卷积计算。关于卷积可以查看:5分钟搞懂卷积。

那么x * w 是线性关系还是非线性关系呢?不好意思,就是线性关系。

这是因为卷积的核心计算是乘累加运算,所以,卷积算法也是线性的。

假设神经网络是由大量的卷积算法一层接着一层组成。如果没有非线性因素的引入,那么在数学模型上,这个大的卷积堆砌的模型就会退化成一个简单的线性模型,这就使得多层卷积失去了意义。

层数再多也没用,因为数学上等价于一个卷积,看下图解释的更清楚一些。

这就是原因所在。

所以在很多神经网络模型中,都需要引入非线性因素,从而使得神经网络模型可以拟合成更加复杂多变的非线性系统。

这样模型就可以处理复杂的任务,而不用担心模型在数学上仅仅是一个简单的线性模型了。

怎么引入非线性因素呢?

最常见的方法就是在卷积层后面增加一层非线性的激活层,这也是为什么在很多卷积算法后面,都能看到 relu 函数的原因。

延伸阅读,请参考:神经网络的非线性思想,真的神了。

相关文章:

  • Unity 资源管理之Resources
  • TCP单聊和UDP群聊
  • 安卓11修改power按键功能
  • 【脚本】图片-音视频-压缩文件处理
  • 【android开发-17】android中SQLite数据库CRUD详细介绍
  • 1826_ChibiOS的OSLIB中的二值信号量
  • 数据分析基础之《matplotlib(4)—柱状图》
  • 【HTML语法】
  • 深度学习——第3章 Python程序设计语言(3.5 Python类和对象)
  • RabbitMQ创建新用户,并给用户添加角色和授权
  • 报错:merge sql error, dbType mysql, sql : select...
  • 点击el-tree小三角后去除点击后的高亮背景样式,el-tree样式修改
  • block-recurrent-transformer-pytorch 学习笔记
  • Mybatis之动态SQL
  • 基于SSM的医院交互系统的设计与实现
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Android Studio:GIT提交项目到远程仓库
  • Git的一些常用操作
  • in typeof instanceof ===这些运算符有什么作用
  • Java的Interrupt与线程中断
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 半理解系列--Promise的进化史
  • 基于组件的设计工作流与界面抽象
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 小程序开发之路(一)
  • 协程
  • 学习JavaScript数据结构与算法 — 树
  • 鱼骨图 - 如何绘制?
  • $ git push -u origin master 推送到远程库出错
  • $refs 、$nextTic、动态组件、name的使用
  • (1)(1.13) SiK无线电高级配置(五)
  • (Java)【深基9.例1】选举学生会
  • (poj1.3.2)1791(构造法模拟)
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计ssm电影分享网站
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)Unity3DUnity3D在android下调试
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (自用)网络编程
  • *上位机的定义
  • .form文件_一篇文章学会文件上传
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • //TODO 注释的作用
  • @Controller和@RestController的区别?