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

机器学习与深度学习1:神经网络概念

神经元的启发:

        如图是人脑的神经元,一个神经元拥有多个树突,但是轴突只有一条,树突接收其他神经元的连接,轴突用来连接其他神经元。

        因此我们将神经元分为输入,输出,计算这三个功能。

最简单的神经网络:

        上面我们理解到神经网络包括三个功能,那么我们可以建立一个简单的神经网络模型:

输入与求和的线叫做“连接”,每个连接都有一个权值。每个有向箭头表示值的加权传递。

将它用公式表述就是:

        这里,g代表Sgn函数,也就是取符号函数,值大于0时取1,否则输出0 

多输出神经网络:

网络规范:

        神经元的每个计算层都为一个节点,因此我们将多个计算过程放到一起,代表神经元内部计算。每个神经元又会有多个输出,因此为了规范与理解,神经网络的图一般如下图所示,首先将计算函数合并到一个圆圈中,并且一个神经元是有多个输出值的,因此将输部分出进行扩展。

 符号表示:

         当处理多个输出的神经网络时,由于参数较多,我们使用线性代数的知识,使用向量和矩阵进行表示。具体的流程如下:使用二维下标Wx,y表示每个连接的权重,x代表后一层神经元的序号,y代表前一层神经元的序号。

 很明显这里可以写成矩阵的形式:

Z = g([a_{1}, a_{2}, a_{3}]\begin{bmatrix} w_{1,1} &w_{1,2} &w_{1,3} \\ w_{2,1} &w_{2,2} &w_{2,3} \end{bmatrix}^T)

或另一种形式:

Z = g(\begin{bmatrix} w_{1,1} &w_{1,2} &w_{1,3} \\ w_{2,1} &w_{2,2} &w_{2,3} \end{bmatrix}[a_{1}, a_{2}, a_{3}]^T)

也就是: 

 Z= g(W*a)

这个公式就是神经网络前一层计算后一层的矩阵运算 

多层神经网络

        当神经网络增加一个计算层后,解决了异或运算问题,并且有非常好的非线性分类效果,但是没有较好的解法,直到1986年,反向传播神经网络的提出,也称BP神经网络,解决了两层神经网络所需的复杂计算量的问题。

结构:

如图,我们用a_x^{(y)}表示第y层的第x个节点

 如果存在多个输出节点,那么如下图所示

使用矩阵运算表示为: 

 g(W^{(1)}*a^{(1)}) = a^{(2)}

 g(W^{(2)}*a^{(2)}) = Z

原理:

        为什么两层神经网络可以做非线性分类任务,如下图所示,经过空间变换后,输出层的决策仍然是一条直线,最关键的是数据在输入层到隐藏层时,进行了矩阵运算(矩阵与向量相乘),数据发生了空间变换,使其可以被线性分类。

        因此我们可以知道,两层神经网络就是通过两层的线性模型,模拟数据内真实的非线性函数,因此多层神经网络的本质就是复杂函数的拟合。

 

偏置节点 

        偏置节点是一个只含存储功能,且存储值永远为1的单元,这些节点默认存在,在神经网络的每个层次中,都会有这样的偏置单元。如下图所示:

 在考虑偏置节点的神经网络运算如下:

g(W^{(1)}*a^{(1)} + b^{(1)}) = a^{(2)}

 g(W^{(2)}*a^{(2)} + b^{(2)}) = Z

激活函数:

定义

        在单层神经网络中,我们使用sgn函数作为函数g,只能做简单的逻辑回归,线性分类任务,但是在两层神经网络中,我们使用平滑函数sigmoid作为函数g,我们把函数g称为激活函数,常见的激活函数有:ReLU函数,sigmoid函数,Tanh函数等

 作用:

        相比于单层神经网络的线性分类任务,两层神经网络可以实现非线性分类任务,也就是可以构造出一个无限逼近任意连续函数的神经网络

损失函数:

        在机器学习训练过程中,需要有一个函数来衡量模型的预测值和真实值之间的差异,并且神经网络通过最小化损失函数来优化模型参数。如下公式所示:

损失 = (预估值 - 真实值)^2

        常见的损失函数有:均方误差,交叉熵损失,绝对误差,Hinge损失,Huber损失。

注意:本文部分图片与文字参考博客:神经网络浅讲:从神经元到深度学习——计算机的潜意识


http://www.kler.cn/news/359844.html

相关文章:

  • 高级java每日一道面试题-2024年10月19日-消息队列[RabbitMQ]-RabbitMQ中积压了大量的消息,如何处理?
  • 相同的树算法
  • 手机ip地址怎么切换城市
  • Zookeeper 快速入门到实战
  • VAS1802奇力线性芯片LED驱动芯片车规认证AEC-Q100
  • 深度学习-模型部署
  • python 爬虫 入门 四、线程,进程,协程
  • Go 切片详解
  • 智能安全配电装置在老旧建筑防火中的应用
  • 解决Git合并冲突:掌握版本控制的精髓
  • (计算机毕设)基于SpringBoot的就业平台开题报告
  • MATLAB | 绘图复刻(十八) | K-means 聚类分组热图
  • 【MySQL数据库】MySQL高级语句(SQL语句进阶版)
  • Hive优化:Hive的执行计划、分桶、MapJoin、数据倾斜
  • 大模型输出的outputs为什么要取[0](即outputs[0])
  • STM32G4系列MCU的启动项配置
  • CIM系统:智慧城市的数字基石
  • 鸿蒙--进度条通知
  • Springboot+vue图书商城购物系统【附源码】
  • 列表(list)、元组(tuple)、字典(dictionary)、array(数组)-numpy、DataFrame-pandas 、集合(set)