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

机器学习与深度学习3、神经网络原理

一、线性变换

1.1 单个(层)神经元:

        如上图所示,单个参数经过单个神经元变化后得到输出y为wx+b,其中w为权重,b为偏置,这个过程就叫做线性变换,也就是x和y呈线性相关

1.2 多个神经元输出 

注意神经元的输入大小必须跟x的大小相同。例如:x包含5个数,那么输入层神经元就有5个

1.2.1 输出神经元个数相同

        多个神经元与单个神经元相似,x变为向量[x_1, x_2, x_3,···,x_n],输出y也为向量,输出的向量为[y_1, y_2, y_3,···,y_n],每个y对应一个x的权重和偏置计算。每个x的权重和偏置都是不相同的

1.2.2 不同输出

        当出现输出结果不同时,例如一个网络为4个输入层,2个输出层。那么该网络的输入层需要处理4个输入数据得到2个输出数据,也就对应了4输入神经元,2个输出层神经元,这时神经网络需要如何计算呢?

        此时就需要引入矩阵运算,w权重变为权重矩阵如下所示:

\begin{bmatrix} x_1 & x_2 & x_3 & x_4 \end{bmatrix}\cdot \begin{bmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \\ w_{31} & w_{32} \\ w_{41} & w_{42} \end{bmatrix}+\begin{bmatrix} b_1 & b_2 \end{bmatrix}=\begin{bmatrix} y_1 & y_2 \end{bmatrix} 

二、非线性变换

2.1 非线性变换意义

        如上图所示, 若引入多层神经元,计算方式仍为y = wx + b时,输出仍为线性变换,仍相当于单层神经元的作用。x和y仍为线性关系。因此我们要引入非线性变换来解决此问题。

        把神经网络训练看为分类过程,那么只有线性变化就相当于在任意二维平面上只能划分出线在任意三维体中只能划分出面,因此无法用于复杂的分类问题。那么就要引入非线性函数。

        我们可以将非线性激活函数理解为将分类线进行扭曲变换,因此可以进行更复杂的分类问题。    

图2.1引入非线性函数f的神经元:

2.2 激活函数

        上述的非线性函数就是激活函数,常见的激活函数有tanh,sigmoid,ReLu等。

2.2.1 ReLu函数

        如下图是ReLu函数的图像和它的一个改进Leaky ReLu,融入Relu函数后,变为如下计算公式

y = wx + b   →   y = ReLu(wx + b)  →  y = Max(wx + b, 0)

例如

我们需要训练一个网络如下,输入x输出y满足:y = x^3 +x^2 -x -1

设计一个神经网络拟合x和y:输入层1,隐藏层6,输出层1

2.2.2 无激活函数 

        假如训练出来中间层的w和b为:[5,7.7],[1.2,1.3],[-1.2,-1],[1.2,-0.2],[2,-1.1],[5,-5]若没有激活函数,那么计算出来的6个线性表达式相加仍为一个线性表达式y = 13.2x+1.7,为一条直线,无法拟合函数图像。

2.2.3 使用ReLu激活

        通过ReLu的图像可知,使用ReLu激活函数时,函数只会输出正数或0,无法输出负数,这是不符合预期的,因此我们还需要加上符号矩阵,使用ReLu激活后表达式变为:

y = \begin{bmatrix} -1 &-1 &-1 &1 &1 &1 \end{bmatrix}\cdot \begin{bmatrix} \max(-5x - 7.7, 0) \\ \max(-1.2x - 1.3, 0) \\ \max(1.2x + 1, 0) \\ \max(1.2x - 0.2, 0) \\ \max(2x - 1.1, 0) \\\max(5x - 5, 0) \end{bmatrix}

 神经网络的拟合图像变为如下,红色为训练出的网络拟合函数,蓝色为目标函数:

        如上图可看出通过ReLu激活后,神经网络可以拟合复杂函数。类似的激活函数还有sigmoid函数,tanh函数等一些其他函数的变体。

http://www.dtcms.com/a/108114.html

相关文章:

  • 子组件使用:visible.sync=“visible“进行双向的绑定导致该弹窗与其他弹窗同时显示的问题
  • 【数据结构】双向链表
  • Spring / Spring Boot 的@MapperScan 和 @Repository
  • Java 可变参数全解析:动态参数传递的实践指南
  • 【MySQL基础-20】MySQL条件函数全面解析:提升查询逻辑的利器
  • 区块链技术如何重塑金融衍生品市场?
  • 防火墙(RHCE)
  • 大数据:信息时代的黄金矿藏
  • Leetcode 合集 -- 排列问题 | 递归
  • k8s statefulset pod重启顺序
  • Qt 读写锁QReadWriteLock
  • 前端计算机网络常问问题大全
  • 如何在服务器端配置SSH以允许密码认证
  • html5炫酷图片悬停效果实现详解
  • 【零基础入门unity游戏开发——2D篇】使用SpriteAtlas(精灵图集)打包图集,减少DrawCall提高性能
  • 第四章、Isaacsim在GUI中构建机器人(1): 添加简单对象
  • SQL复杂查询与性能优化:医药行业ERP系统实战指南
  • Linux 基础入门操作 第九章 进程间通信之有名管道
  • el-select+el-tree、el-select+vl-tree实现下拉树形选择
  • Linux中进程与计划任务
  • SpringMvc获取请求数据
  • HTML5 Canvas绘画板项目实战:打造一个功能丰富的在线画板
  • 配置 UOS/deepin 系统远程桌面,实现多台电脑协同办公
  • PHP 8.x:现代Web开发的性能与效率革命
  • 解码 __getitem__ 和 __len__ - 自定义序列的钥匙
  • Prompt攻击是什么
  • Go和Golang语言简介
  • 快速排序与归并排序
  • 【硬件视界10】网络硬件入门:音频设备详解:声卡与音响系统
  • 【区块链 + 可信存证】国链区块链可信存证系统| FISCO BCOS 应用案例