1、什么是人工神经网络(ANN)
人工神经网络的灵感来自其生物学对应物。生物神经网络使大脑能够以复杂的方式处理大量信息。大脑的生物神经网络由大约1000亿个神经元组成,这是大脑的基本处理单元。神经元通过彼此之间巨大的连接(称为突触)来执行其功能。人脑大约有100万亿个突触,每个神经元约有1,000个!
人体神经元模型,下如图:
![技术分享图片](http://image1.bubuko.com/info/202101/20210128173854574789.png)
- 接收区(receptive zone):树突接收到输入信息。
- 触发区(trigger zone):位于轴突和细胞体交接的地方,决定是否产生神经冲动。
- 传导区(conducting zone):由轴突进行神经冲动的传递。
- 输出区(output zone):神经冲动的目的就是要让神经末梢,突触的神经递质或电力释出,才能影响下一个接受的细胞(神经元、肌肉细胞或是腺体细胞),此称为突触传递。
那么,什么是人工神经网络呢?有关人工神经网络的定义有很多。这里,芬兰计算机科学家托伊沃·科霍宁(Teuvo Kohonen)给出的定义:人工神经网络是一种由具有自适应性的简单单元构成的广泛并行互联的网络,它的组织结构能够模拟生物神经系统对真实世界所做出的交互反应。
人工神经网络的结构
- 输入层:输入层接收特征向量 x 。
- 输出层:输出层产出最终的预测 h 。
- 隐含层:隐含层介于输入层与输出层之间,之所以称之为隐含层,是因为当中产生的值并不像输入层使用的样本矩阵 X 或者输出层用到的标签矩阵 y 那样直接可见。
人工神经网络由一个输入层和一个输出层组成,其中输入层从外部源(数据文件,图像,硬件传感器,麦克风等)接收数据,一个或多个隐藏层处理数据,输出层提供一个或多个数据点基于网络的功能。例如,检测人,汽车和动物的神经网络将具有一个包含三个节点的输出层。对银行在安全和欺诈之间进行交易进行分类的网络将只有一个输出。
2、人工神经网络(ANN)的运行原理
人工神经网络的强大之处在于,它拥有很强的学习能力。在得到一个训练集之后,它能通过学习提取所观察事物的各个部分的特征,将特征之间用不同网络节点连接,通过训练连接的网络权重,改变每一个连接的强度,直到顶层的输出得到正确的答案。
人工神经网络的核心成分是人工神经元。每个神经元接收来自其他几个神经元的输入,将它们乘以分配的权重,将它们相加,然后将总和传递给一个或多个神经元。一些人工神经元可能在将输出传递给下一个变量之前将激活函数应用于输出。
神经网络每层都包含有若干神经元,层间的神经元通过权值矩阵 Θl 连接。一次信息传递过程可以如下描述:
- 第 j 层神经元接收上层传入的刺激(神经冲动);![技术分享图片](http://image1.bubuko.com/info/202101/20210128173854824789.png)
- 该刺激经激励函数(activation function)g 作用后,会产生一个激活向量 aj 。 aji 表示的就是 j 层第 i 个神经元获得的激活值(activation):![技术分享图片](http://image1.bubuko.com/info/202101/20210128173854981039.png)
2.1、前向传播
刺激由前一层传向下一层,故而称之为前向传递
对于非线性分类问题,逻辑回归会使用多项式扩展特征,导致维度巨大的特征向量出现,而在神经网络中,并不会增加特征的维度,即不会扩展神经网络输入层的规模,而是通过增加隐含层,矫正隐含层中的权值,来不断优化特征,前向传播过程每次在神经元上产出的激励值都可看做是优化后的特征。
· 代价函数
矩阵表示
其中, .? 代表点乘操作,A∈R(K×m) 为所有样本对应的输出矩阵,其每一列对应一个样本的输出, Y∈R(m×K) 为标签矩阵,其每行对应一个样本的类型。
2.2、反向传播
由于神经网络允许多个隐含层,即,各层的神经元都会产出预测,因此,就不能直接利用传统回归问题的梯度下降法来最小化 J(Θ) ,而需要逐层考虑预测误差,并且逐层优化。用反向传播法优化预测。首先定义各层的预测误差为向量 δ(l) :
反向传播中的反向二字也正是从该公式中得来,本层的误差 δ(l) 需要由下一层的误差 δ(l+1) 反向推导。
· 训练过程
3、神经网络结构的设计
3.1感知器
最简单的神经网络结构,不包含隐含层
从形式上看,回归问题算是感知器的非网络表达形式。
感知器可以解决逻辑运算问题(01分类问题)-sigmoid函数
多分类问题,添加多个隐层
3.2、结构设计
在神经网络的结构设计方面,往往遵循如下要点:
- 输入层的单元数等于样本特征数。
- 输出层的单元数等于分类的类型数。
- 每个隐层的单元数通常是越多分类精度越高,但是也会带来计算性能的下降,因此,要平衡质量和性能间的关系。
- 默认不含有隐藏层(感知器),如果含有多个隐层,则每个隐层上的单元数最好保持一致。
· 过程
- 设计激活函数
- 设计初始化权值矩阵的函数
- 定义参数展开和参数还原函数
Args: hiddenNum 隐层数目
unitNum 每个隐层的神经元数目
inputSize 输入层规模
classNum 分类数目
epsilon epsilon
Returns:
Thetas 权值矩阵序列
- 定义梯度校验过程
Args:
Thetas 权值矩阵
X 样本
y 标签
theLambda 正规化参数
Returns:
checked 是否检测通过
- 计算代价函数
Args:
Thetas 权值矩阵序列
X 样本
y 标签集
a 各层激活值
Returns:
J 预测代价 """
- 设计前向传播过程
"""前向反馈过程
Args:
Thetas 权值矩阵
X 输入样本
Returns:
a 各层激活向量 """
- 设计反向传播过程
1)计算梯度
Args:
a 激活值
y 标签
Returns:
D 权值梯度
2)获得梯度后,更新权值
"""更新权值
Args:
m 样本数
Thetas 各层权值矩阵
D 梯度
alpha 学习率
theLambda 正规化参数
Returns:
Thetas 更新后的权值矩阵 """
综上,我们能得到梯度下降过程:
前向传播计算各层激活值;
反向计算权值的更新梯度;
更新权值;
训练结果将包含如下信息:(1)网络的预测误差 error;(2)各层权值矩阵 Thetas;(3)迭代次数 iters;(4)是否训练成功 success。
最后通过预测函数
"""预测函数
Args:
X: 样本
Thetas: 训练后得到的参数
Return: a """
4、神经网络训练过程
人工神经网络首先为神经元之间的连接权重分配随机值。ANN正确而准确地执行其任务的关键是将这些权重调整为正确的数字。但是找到合适的权重并不是一件容易的事,特别是当您处理多层和成千上万的神经元时。
通过对带有注释示例的网络进行“培训”来完成此校准。例如,如果您要训练上述图像分类器,则可以为其提供多张照片,每张照片均标有其相应的类别(人,汽车或动物)。当您为它提供越来越多的训练示例时,神经网络会逐渐调整其权重,以将每个输入映射到正确的输出。
基本上,训练期间发生的事情是网络进行自我调整以从数据中收集特定模式。同样,对于图像分类器网络,当您使用质量示例训练AI模型时,每一层都会检测到特定的特征类别。例如,第一层可能检测到水平和垂直边缘,第二层可能检测到拐角和圆形。在网络的更深处,更深的层次将开始挑选出更高级的功能,例如面部和物体。
![技术分享图片](http://image1.bubuko.com/info/202101/20210128173857152914.jpg)
神经网络的每一层都将从输入图像中提取特定特征
当您通过训练有素的神经网络运行新图像时,调整后的神经元权重将能够提取正确的特征并准确确定图像属于哪个输出类别。
训练神经网络的挑战之一是找到正确数量和质量的训练示例。而且,训练大型AI模型需要大量的计算资源。为了克服这一挑战,许多工程师使用“ 转移学习”(一种培训技术),您可以采用预先训练的模型,并使用针对特定领域的新示例对其进行微调。当已经有一个与您的用例接近的AI模型时,转移学习特别有效。
5、神经网络的好处和局限性
人工神经网络的特点和优越性:
- 具有自学习功能
- 具有联想存储功能
- 具有高速寻找优化解的能力
局限性:
- 神经网络需要大量数据
- 神经网络在概括方面很不好
- 神经网络是不透明的
6、项目实例
参考:
EO_Admin:https://www.cnblogs.com/geo-will/p/9764573.html
知乎:https://zhuanlan.zhihu.com/p/111288383
机器学习|深度学习算法模型——人工神经网络(ANN)
原文:https://www.cnblogs.com/aitree/p/14338697.html