什么是神经网络,它的原理是啥?(1)

参考:https://www.youtube.com/watch?v=mlk0rddP3L4\&list=PLuhqtP7jdD8CftMk831qdE8BlIteSaNzD

视频1: 简单介绍神经网络的基本概念,以及一个训练好的神经网络是怎么使用的

分类算法中,神经网络在训练过程中会学习输入的 pattern,这个 pattern 会被用来区分以后的新输入

神经网络分为如图三层

输入层的神经元数量等于输入的特征数量

以图像识别为例,下图所需的神经元数量是 2352

如下图是输出层,我们的图中输出层只有一个神经元,所以只能做二元分类

隐藏层通常用于保存 "pattern"

通常来说,隐藏层越多,就能用于识别越复杂的图像,做更复杂更精细的分类。但是同样的,隐藏层越多、神经元越多,也会带来更大的存储开销和计算开销。

相邻两层的神经元之间有两两相连的 "边(连接)"。每条边都有权重,这个权重是被我们训练出来的。

权重的用法是:用来做 "加权乘法和(权重和)",也可以直观的解释下,就说是给每个特征一些权重,如下图

如上图,通常还会有个 bias

下一个概念:激活函数。通常,一个神经元的输出是激活函数的输出,而这个激活函数的 输入/参数 就是刚刚计算的权重和

需要注意的是 a21 神经元,以及和它同一层的神经元接下来也会做 权重和,然后继续对 a3? 等等神经元做同样的事情,这样一层一层传递下去,直到最后计算出 output layer

那么接下来的问题是:这些"边"的权重是怎么被计算的?

如上图,首先给这些边分配随机值,接着进行训练,训练过程会改变权重的值。

关于具体的训练过程,看下个视频。

视频2:大致介绍一些训练神经网络的框架、轮廓,没有深入细节

(谷歌浏览器无障碍字幕挺好用的)

视频里先介绍了计算、讨论神经网络时一些符号的意义

如上图,说明了,下一层神经元的值,和上一层神经元的值之间的关系,其实可以用一个矩阵计算的公式来表示

这里有一个前提,就是所有神经元(至少同一层)的激活函数都是一样的,那么我们才可以用同一个 f 来计算神经元的值

不同的输入,会激活不同的神经元

使用神经网络的过程中,我们会看到输入层计算权重和传到隐藏层,隐藏层不同的神经元被激活,再计算权重和传到下一个隐藏层... 这个过程就叫做 向前传播

Forward Propagation

向前传播算法如下图

那么,我们如何训练神经网络,来找到适合的权重矩阵和 bias 呢?

如下图,是 cost 函数,它的意思就是:模型的输出和实际值之间的差。

"改变 权重矩阵 和 bias,让 cost 函数的输出最小化" 这个就是训练模型的过程

如下图,如果我们可以绘制 cost 和 weight 的关系如下图,这是一个有全局最优的图,那么我们就可以用梯度下降法来优化权重矩阵

alpha 是学习速率,它旁边那个东西是曲线的斜率

当然了,神经网络中的参数有很多,每两层神经元之间都有一对 权重矩阵 和 bias,所以训练过程如下,我们会计算 cost 函数和不同参数的斜率、求导,随后进行梯度下降法进行优化

如上图,在我们优化参数的时候,我们在最小化 cost,cost 取决于 a2,a2取决于 W2 和 a1,a1 取决于 W1 和 a0。这个向后的过程我们就叫做向后传播算法, back propagation

一个整体的训练模型过程如下

相关推荐
埃菲尔铁塔_CV算法10 小时前
深度学习神经网络创新点方向
人工智能·深度学习·神经网络
哇咔咔哇咔12 小时前
【科普】简述CNN的各种模型
人工智能·神经网络·cnn
Jurio.18 小时前
【SPIE出版,EI稳定检索】2024年信号处理与神经网络应用国际学术会议(SPNNA 2024,12月13-15日)
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·信号处理
fanxbl95719 小时前
LVQ 神经网络的 MATLAB 函数详解
人工智能·神经网络·matlab
新手小白勇闯新世界1 天前
点云论文阅读-1-pointnet++
论文阅读·人工智能·深度学习·神经网络·计算机视觉
千天夜1 天前
激活函数解析:神经网络背后的“驱动力”
人工智能·深度学习·神经网络
清如许.1 天前
DNN云边协同工作汇总(持续更新)
人工智能·神经网络·dnn
Chef_Chen2 天前
从0开始机器学习--Day16--神经网络作业
人工智能·神经网络·机器学习
李歘歘2 天前
深度学习——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习·神经网络·算法
love_and_hope2 天前
Pytorch学习--神经网络--利用GPU训练
人工智能·pytorch·python·神经网络·学习·数据挖掘