本文主要是介绍【笔记】神经网络——Rita_Aloha,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)
一、神经元
1.M-P模型
图中,xᵢ(i=1,2,...,n)表示来自与当前神经元项链的其他神经元传递的输入信号,w~ij~表示从神经元i到神经元j的连接强度或权值,θ~j~表示神经元j的激活阈值或偏置,f表示激活函数或转移函数。神经元的输出x~j~可以表示为如下形式:
2.学习规则
- Hebb学习规则:如果两个神经元在同一时刻被激发,则它们之间的联系应该被强化。 其中,w~ij~(t+1)和w~ij~(t)分别表示在t+1和t时刻时神经元j与神经元i之间的连接强度,y~i~和y~j~分别为神经元i和j的输出。
- 有监督Delta学习规则:通过对连接权值进行不断调整以使神经元的实际输出和期望输出到达一致。 其中,α表示算法的学习速率,d~i~和y~i~表示神经元i的期望输出和实际输出,x~j~(t)表示神经元j在t时刻的状态(激活或抑制)。
二、感知机(Perception)
输出公式可以改写成:g(W * a) = z。这个公式就是神经网络中从前一层计算后一层的矩阵运算。
三、Hopfield神经网络模型(离散型网络DHNN,Discrete Hopfield Neural Network)
1.网络的状态
这是单层全反馈网络,共有n哥神经元。DHNN网络可简记为N=(W,T)。反馈网络的初始状态为X(0)=[x~1~(0),x~2~(0),...,x~n~(0)]^T^,反馈网络状态为X=[x~1~,x~2~,...,x~n~]^T^。其中,每一个神经元的状态变化:
对于DHNN一般ω~ii~=0,ω~ij~=ω~ji~
2.异步工作方式
网络运行时每次只有一个神经元进行转态更新,其他神经元的状态权值不变。神经元转态顺序可以预先设定,也可以随机选定。
3.同步工作方式
所有神经元同时转态,即:
4.吸引子的定义与定理
【定义】若网络状态X满足X=f(W~T~x-T),则称X为网络的吸引子
【定理】对于DHNN网络,若按照异步方式调整网络状态,且连接权矩阵W为对称阵,则对于任意初态网络都最终收敛于一个吸引子中。
四、玻尔兹曼机(Boltzmann Machine,BM)
BM的节点分为可见节点与隐节点,所有的节点全连接。
1.网络原理
BM机是在Hopfield神经网络模型基础上融入模拟退火法。它保持了Hopfield神经网络模型的假设(权重对称;自身无连接;二值输出),选择模拟退火算法(先采用较大的温度系数及进行粗调,然后逐渐减小温度系数进行微调),达到让每一个神经元按照一定的概率分布转态的目的,来避免陷入局部最优解。
2.网络状态
五、受限玻尔兹曼机(Restricted BM,RBM)
1.网络结构模型
RBM是在玻尔兹曼机的基础上更加调整,其中保持了玻尔兹曼机的部分特征(由可见层和隐藏层构成;信息可双向流动),同时去掉了层内单元之间的连接,即层间全连接,层内无连接。
记 θ=(W,a,b) 表示RBM中的参数。
正向传播:可见层已知,利用权重和偏置根据随机概率(σ是随机概率)采样出隐藏层,采样概率为
反向传播:隐藏层已知,利用权重和对应偏置采样出可见层,采样概率为
2.Gibbs采样
3.对比散度(Contrastive Divergence,CD)算法
4.算法总结
注意:
- 当k=1时,参数更新以在线学习的方式进行
- 一般,权重矩阵W可初始化为来自正态分布N(0,0.01)的随机数;隐藏层偏置b初始化为0;可见层偏置a初始化为a~i~=log[p~i~/(1-p~i~)],其中p~i~表示训练样本中第i个特征处于激活状态(即取值为1)的样本所占的比例
- 学习率η较大时收敛速度更快,但可能引起算法不稳定;而η较小时,收敛速度变慢。因此,可在参数更新式中加入动量项θ:=ρθ+η[∂lnL~θ,s~/∂θ],其中ρ为动量项学习率
- CD-k算法中的参数k通常取得很小,实际应用中甚至取k=1
六、反向传播算法(Back Propagation,BP)
1.前向传播与后向传播
前向传播算法主要用于计算输出结果;后向传播算法主要用于计算输出结果与实际结果之间的误差。因此,神经网络就是通过前向传播与后向传播的循环迭代来训练模型。
反向传播算法的主要思想是通过梯度下降的方法调节参数,进而训练模型。
2.logistic函数
输出是有限离散的情况下,预测行为即是分类行为。线性分类器的目的就是找到一个可以将两类样本分开的超平面【ω^T^x+b=0】。对于logistic回归一般公式为g(z)=1/[1+e^-z^]。当x为n维的样本时,对于logistic回归有:
由此可以得到logistic回归的对数似然损失函数(cost function)
将以上两个表达式合并,则单个样本的损失函数为
全体样本的损失函数可以表示为
3.网络变量定义
4.反向传播算法的四个基本方程
【Hadamard积⊙:两个同阶矩阵中对应元素的乘积,称为元素对应乘积(element-wise product)或者Hadamard乘积(Hadamard product),记为。】
⑴输出层误差
即
其中σ'为对sigmoid函数的偏导,C为Cost函数
⑵下一层误差变化引起当前层误差的变化方程
⑶代价函数与偏置
⑷代价函数与权重
5.反向传播算法实现(神经网络训练流程)
七、径向基神经网络(RBF)
1.径向基核函数
(1)理解RBF网络的工作原理可从两种不同的观点出发:
①当用RBF网络解决非线性映射问题时,用函数逼近与内插的观点来解释,对于其中存在的不适定(illposed)问题,可用正则化理论来解决;
②当用RBF网络解决复杂的模式分类任务时,用模式可分性观点来理解比较方便,其潜在合理性基于Cover关于模式可分的定理。
(2)所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心x~c~之间欧氏距离的单调函数 ,可记作 k(||x-x~c~||),其作用往往是局部的 , 即当x远离x~c~时函数取值很小。最常用的径向基函数是高斯核函数,形式为
(3)几种特殊的映射函数
①(最常用)高斯径向基函数(Gauss函数)
其中,r为到中心的距离,σ为函数的宽度参数,控制了函数的径向作用范围。如果距离为0那么核函数值为1,距离越远衰减越快,其中高斯径向基的参数σ在支持向量机中被称为到达率或者说函数跌落到零的速度。由于这个函数类似于高斯分布,因此称为高斯核函数。
②反演S型函数(Reflected Sigmoidal函数)
③拟多二次函数(Inverse multiquadrics函数)
2.正则化RBF神经网络
(1)网络结构
网络具有N个输入节点(i),P个隐节点(j),L个输出节点(k);网络隐节点数等于样本数P,隐节点的激活函数通常是高斯径向基函数,并将所有样本数设为径向基函数的中心(第p个样本设为第p个隐节点的径向基函数的中心),各径向基函数取统一的扩展常数。 输出层神经元采用线性激活函数。
当输入为训练集中的某个样本X^P^时,对应的期望输出d^P^就是知道信号。为了确定隐藏层到输出层之间的权值,需要将训练集中的样本逐一输入,从而得到方程组ΦW=d,求解权值矩阵。
正则化RBF网络具有以下3个特点:
① 正则化网络是一种通用逼近器,只有要足够的节点,它可以以任意精度逼近紧集上的任意多元连续函数。
② 具有最佳逼近特性,即任给一个未知的非线性函数F,总可以找到一组权值使得正则化网络对于F的逼近优于所有其可 能的选择。
③ 正则化网络得到的解是最佳的,所谓“最佳”体现在同时满足对样本的逼近误差和逼近曲线的平滑性。
(2)算法设计【扩展常数和输出节点的权值】
径向基函数的扩展常数可根据数据中心的散布而确定,为了避免每个径向基函数太尖或太平,一种选择方法是将所有径向基函数的扩展常数设为(其中d~max~是样本之间最大距离):
输出层的权值采用最小均方误差算法LMS,ΔW~k~的各分量为 :
权值初始化任意值。
3.广义RBF神经网络
(1)网络结构
当样本数P很大时,可减少隐节点的个数(设为M),即N<M<<P,N为样本维数。隐节点的激活函数一般选用格林函数;输出阈值向量T=(T~1~,T~2~,...,T~L~)
广义RBF网络具有以下4个特点:
① 径向基函数的个数M与样本的个数P不相等,且M常常远小于P。
② 径向基函数的中心不再限制在数据点上,而是由训练算法确定。
③ 各径向基数的扩展常数不再统一,其值由训练算法确定。
④ 输出函数的线性中包含阈值参数,用于补偿基函数在样本集上的平均值与目标值之间的差别。
(2)方法设计【各基函数的数据中心,扩展常数以及输出节点的权值】
- 数据中心从样本输人中选取。一般来说,样本密集的地方中心点可以适当多些,样本稀疏的地方中心点可以少些;若数据本身是均匀分布的,中心点也可以均匀分布。总之,选出的数据中心应具有代表性。径向基函数的扩展常数是根据数据中心的散布而确定的,为了避免每个径向基函数太尖或太平,一种选择方法是将所有径向基函数的扩展常数设为(其中d~max~是样本之间最大距离;M是数据中心的数目):
- 常采用各种动态聚类算法对数据中心进行自组织选择,在学习过程中需对数据中心的位置进行动态调节。常用的方法是K-means聚类,其优点是能根据各聚类中心之间的距离确定各隐节点的扩展常数。由于RBF网的隐节点数对其泛化能力有极大的影响,所以寻找能确定聚类数目的合理方法,是聚类方法设计RBE网时需首先解决的问题。除聚类算法外,还有梯度训练方法、资源分配网络(RAN)等。
【例】广义RBF网络数据中心的聚类算法
第一阶段常采用K-means聚类算法,其任务是用自组织聚类方法为隐层节点的径向基函数确定合适的数据中心,并根据各中心之间的距离确定隐节点的扩展常数。在聚类确定数据中心的位置之前,需要先估计中心的个数M(从而确定了隐节点数),一般需要通过试验来决定。扩展常数的确定是通过k个聚类中心点的距离决定的,一般是k个中心点彼此距离最小的那个值d的λ倍 。
(K-means聚类算法原理:在数据中随意选择k个中心点,然后以这k个中心数据为基础计算其他数据到此中心的距离,并把新数据加入最近的那个中心点,每加入一个数据就计算平均距离然后以这个平均距离作为本类的新中心,直到数据分类完成了。)
第二阶段为监督学习阶段,其任务是用有监督学习算法训练输出层权值,一般采用LMS法/梯度法进行训练。更简捷的方法是用伪逆法直接计算。
整理自:
1.神经网络七十年:回顾与展望 2016 焦李成
http://kns-cnki-net-s.ivpn.hit.edu.cn:1080/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2016&filename=JSJX201608015&uid=WEEvREcwSlJHSldRa1FhdXNzY2Z2V3hhM2M2bUtsQWJXVE11OXUrcFhKOD0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDQyMzExVDNxVHJXTTFGckNVUjdxZllPUnRGeXJuVkwvSkx6N0Jkckc0SDlmTXA0OUVZWVI4ZVgxTHV4WVM3RGg=
2.https://www.cnblogs.com/subconscious/p/5058741.html#tenth
3.https://blog.csdn.net/weixin_42398658/article/details/83991773
4.https://blog.csdn.net/richard2357/article/details/23184999?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
5.https://www.cnblogs.com/pythonlearing/p/9978246.html
6.https://www.cnblogs.com/shona/p/10944477.html
7.https://www.cnblogs.com/how-chang/p/9638684.html
8.https://www.jiqizhixin.com/graph/technologies/672e5579-ffb9-4006-b5f8-7a9233f9c527
9.http://c.biancheng.net/view/1954.html
10.https://blog.csdn.net/itplus/article/details/19168967
11.https://blog.csdn.net/itplus/article/details/19408143
12.https://blog.csdn.net/itplus/article/details/19408701
13.https://www.jiqizhixin.com/graph/technologies/112ef6e6-4701-4b8d-bbc4-f8a1893ec0b5
14.https://www.bilibili.com/video/av16577449/?spm_id_from=333.788.videocard.0
15.https://blog.csdn.net/zwqjoy/article/details/82254602
16.https://blog.csdn.net/weixin_38740463/article/details/87968788?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-5&spm=1001.2101.3001.4242
17.https://m.imooc.com/article/269657
18.https://blog.csdn.net/bitcarmanlee/article/details/51154481
19.https://blog.csdn.net/bitcarmanlee/article/details/51165444
20.https://blog.csdn.net/u014313009/article/details/51039334
21.https://blog.csdn.net/weixin_36670529/article/details/100101609
22.https://blog.csdn.net/qq_30232405/article/details/54142494
23.https://www.jianshu.com/p/01e5b1b5cb32
24.https://blog.csdn.net/leonardohaig/article/details/89416516
25.https://blog.csdn.net/weixin_42398658/article/details/83215916
26.https://blog.csdn.net/huang1024rui/article/details/51510611
27.https://blog.csdn.net/weixin_42398658/article/details/84342747
这篇关于【笔记】神经网络——Rita_Aloha的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!