机器学习-11 BP神经网络

这篇具有很好参考价值的文章主要介绍了机器学习-11 BP神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

神经网络介绍

神经网络的训练目的是希望能够学习到一个模型,实现输出一个期望的目标值
学习的方式是在外界输入样本的刺激下不断改变网络的连接权值
传统神经网络主要分为以下几类:前馈型神经网络,反馈型神经网络和自组织神经网络

  • 前馈神经网络将神经元分层排列,分别是输入层、中间层和输出层。按照层数不同,划分为单层前馈神经网络和多层前馈神经网络。如感知机、BP网络、RBF网络。
  • 反馈神经网络每个神经元同时将自身的输出信号作为输入信号反馈给其他神经元,Hopfield神经网络是反馈网络中最简单且应用广泛的模型。
  • 自组织神经网络是无导师学习网络通常采用竞争原则进行网络学习。

前馈神经网络

前馈神经网络(Feed Forward Neural Network) 是一种单向多层的网络结构,即信息是从输入层开始,逐层向一个方向传递,一直到输出层结束。
所谓的**“前馈”是指输入信号的传播方向为前向**,在此过程中并不调整各层的权值参数,而反传播是将误差逐层向后传递,从而实现使用权值参数对特征的记忆,即通过反向传播(BP) 算法来计算各层网络中神经元之间边的权重
BP算法具有非线性映射能力理论上可逼近任意连续函数,从而实现对模型的学习。

BP神经网络

BP神经网络训练过程的基本步骤可以归纳如下:

  • 初始化网络权值和神经元的阈值,一般通过随机的方式进行初始化
  • 前向传播:计算隐层神经元和输出层神经元的输出
  • 后向传播:根据目标函数公式修正权值 w i j w_{ij} wij
    上述过程反复迭代,通过损失函数和成本函数对前向传播结果进行判定,并通过后向传播过程对权重参数进行修正,起到监督学习的作用,一直到满足终止条件为止。

BP神经网络的核心思想

由后层误差推导前层误差,一层一层的反传,最终获得各层的误差估计,从而得到参数的权重值。
由于权值参数的运算量过大,一般采用梯度下降法来实现。
所谓梯度下降就是让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时停止。此时,所有的参数恰好达到使损失函数取得最低值的状态,为了避免局部最优,可以采用随机化梯度下降

误差反向传播算法

BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。
BP神经网络的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
算法包括信号的前向传播误差的反向传播,即计算误差输出时,按从输入到输出的方向进行;而调整权值和阈值时,按从输出到输入的方向进行

  • 正向传播时,输入信号通过隐含层作用于输出结点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。
  • 误差的反向传播是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据,所以称该算法为误差反向传播算法。

BP网络结构

机器学习-11 BP神经网络
其中, f ( x ) = s i g m o i d ( x ) = 1 1 + e − x f(x)=sigmoid(x)=\frac{1}{1+e^{-x}} f(x)=sigmoid(x)=1+ex1
机器学习-11 BP神经网络
网络模型的训练目标为找出合适的权值和阈值使得误差E最小:
E = 1 2 ∑ j = 1 l ( y j ^ − y j ) 2 E=\frac{1}{2}\sum_{j=1}^{l}(\hat{y_j}-y_j)^2 E=21j=1l(yj^yj)2

反馈神经网络

  • 与前馈神经网络相比,反馈神经网络内部神经元之间有反馈(即非单向),可以用一个无向完全图表示,包括了Hopfield 网络、BAM网络,Elman网络等。
  • Hopfield网络类似人类大脑的记忆原理,即通过关联的方式,将某一件事物与周围场中的其他事物建立关联,当人们忘记了一部分信息后,可以通过场中信息回忆起来,将缺失的信息找回。通过在反馈神经网络中引入能量函数的概念,使其运行稳定性的判断有了可靠依据,由权重值派生出能量函数是从能量高的位置向能量低的位置转化,稳定点的势能比较低。基于动力学系统理论处理状态的变换,系统的稳定态可用于描述记忆。
  • Hopfield网络分为离散型和连续型两种网络。
  • 在Hopfield网络中,学习算法是基于Hebb学习规则,权值调整规则为若相邻两个神经元同时处于兴奋状态,那么他们之间的连接应增强,权值增大;反之,则权值减少。

自组织神经网络

自组织神经网络又称Kohonen网,这一神经网络的特点是当接收到外界信号刺激时,不同区域对信号自动产生不同的响应。
这种神经网络是在生物神经元上首先发现的,如果神经元是同步活跃的则信号加强,如果异步活跃则信号减弱。

神经网络相关概念

激活函数

激活函数经常使用Sigmoid函数、tanh函数、ReLu 函数
激活函数通常有以下性质:

  • 非线性
  • 可微性
  • 单调性
  • f(x)≈x
  • 输出值范围
  • 计算简单
  • 归一化

Sigmoid函数

优点

  • 输出范围有限,数据在传递的过程中不容易发散,并且其输出范围为(0,1),可以在输出层表示概率值。
  • Sigmoid函数的导数是非零的,很容易计算。

缺点

  • 梯度下降非常明显,且两头过于平坦,容易出现梯度消失的情况,输出的值域不对称,并非像tanh函数那样值域是-1到1。
    机器学习-11 BP神经网络

tanh双曲正切函数

  • 双曲正切函数将数据映射到[-1,1],解决了Sigmoid函数输出值域不对称问题。
  • 它是完全可微分和反对称的,对称中心在原点。
  • 它的输出值域两头依旧过于平坦,梯度消失问题仍然存在。
  • 为了解决学习缓慢和梯度消失问题,可使用其更加平缓的变体,如log-log、Softsign、Symmetrical Sigmoid等。
    机器学习-11 BP神经网络

ReLU函数

  • ReLU函数是目前神经网络里常用的激活函数。
  • 由于ReLU函数是线性特点使其收敛速度比Sigmoid、Tanh更快,而且没有梯度饱和的情况出现。计算更加高效,相比于Sigmoid、Tanh函数,只需要一个阈值就可以得到激活值,不需要对输入归一化来防止达到饱和。
    机器学习-11 BP神经网络

Leaky RuLU函数

带泄漏修正线性神经元( Leaky RuLU)的出现是解决“死亡神经元”的问题。
f ( x ) = { a x , x < 0 x , x ≥ 0 f(x)=\begin{cases} ax, & \text x<0 \\ x, & \text x≥0 \end{cases} f(x)={ax,x,x<0x0
机器学习-11 BP神经网络

Maxout函数

Maxout是一种分段线性函数,理论上可以拟合任意凸函数,与其它激活函数相比,它计算k次权值,从中选择最大值作权值,所以其计算量成k倍增加。
当k为2时,可看成是分成两段的线性函数,它的函数公式如下:
m a x ( w 1 T x + b 1 , w 2 T x + b 2 ) max(w_1^Tx+b_1,w_2^Tx+b_2) max(w1Tx+b1,w2Tx+b2)

激活函数的选择

  • 通常使用ReLU函数,并注意设置好学习率
  • 如果存在死亡神经元的问题,就尝试Leaky ReLU或Maxout函数
  • 尽量避免使用Sigmoid函数
  • tanh函数大部分情况下效果不如ReLU和Maxout函数

损失函数

  • 损失函数评价的是模型对样本拟合度,预测结果与实际值越接近,说明模型的拟合能力越强,对应损失函数的结果就越小;反之,损失函数的结果越大。
  • 损失函数比较大时,对应的梯度下降比较快。
  • 为了计算方便,可以采用欧式距离作损失度量标准,通过最小化实际值与估计值之间的均方误差作为损失函数,即最小平方误差准则(MSE):
    m i n C ( Y , G ( X ) ) = ∣ ∣ G ( X ) − Y ∣ ∣ 2 = ∑ i ( G ( x i ) − y i ) 2 minC(Y,G(X))=||G(X)−Y||^2=∑_i(G(x_i)−y^i)^2 minC(Y,G(X))=∣∣G(X)Y2=i(G(xi)yi)2
  • 其中G(X)是模型根据输入矩阵X输出一个预测向量,预测值G(X)和真值Y的欧式距离越大、损失就越大,反之就越小,即求 ∣ ∣ G ( X ) − Y ∣ ∣ 2 ||G(X)−Y||^2 ∣∣G(X)Y2的极小值。
  • 如果是批量数据,则将所有数据对应模型结果与其真实值之间的差的平方进行求和
  • 合适的损失函数能够确保深度学习模型更好地收敛,常见的损失函数有Softmax、欧式损失、Sigmoid交叉熵损失、Triplet Loss、Moon Loss、Contrastive Loss等。

Softmax

  • 使用Softmax函数的好处是可以使分类问题的预测结果更加明显,不同类别之间的差距更大。
  • 在实际应用中,特别是在Tensorflow中推荐采用交叉熵与Softmax结合作为损失函数,可以避免数值不稳定的情况。

交叉熵

  • 目标为 二分类问题,分类误差越小,则损失越小,对正负分类计算各自的损失
  • 会产生梯度爆炸问题:
    L ( w ) = 1 N ∑ n = 1 N H ( p n , q n ) = − 1 N ∑ n = 1 N [ y n l o g y n ^ + ( 1 − y n ) l o g ( 1 − y n ^ ) ] L(w)=\frac{1}{N}∑_{n=1}^NH(p_n,q_n)=−\frac{1}{N}∑_{n=1}^N[y_nlog\hat {y_n}+(1−y_n)log (1−\hat {y_n})] L(w)=N1n=1NH(pn,qn)=N1n=1N[ynlogyn^+(1yn)log(1yn^)]
  • 交叉熵损失函数的用途主要应用在互相排斥的分类任务中。
  • 交叉熵也可以用于目标为[0,1]区间的回归问题。

均方差损失函数

M S E = 1 n ∑ i = 1 n ( y i − t i ) 2 MSE=\frac{1}{n}∑_{i=1}^n(y_i−t_i)^2 MSE=n1i=1n(yiti)2

自定义函数

对于某些候选属性,单独将一些预测值取出或者赋予不同大小的参数。或者合并多个损失函数,实现多目标训练任务,或者在不同的情况下采用不同的损失函数。

学习率

学习率控制每次更新参数的幅度,过高和过低的学习率都可能对模型结果带来不良影响,合适的学习率可以加快模型的训练速度。
常见学习率调整方法:

  • 基于经验的手动调整
  • 固定学习率
  • 均分分步降低策略
  • 指数级衰减
  • 多项式策略
  • AdaGrad动态调整
  • AdaDelta自动调整
  • 动量法动态调整
  • RMSProp动态调整
  • 随机梯度下降
  • Adam自动调整

过拟合

过拟合是指模型在训练集上预测效果好,但在测试集上预测效果差。
常用的防止过拟合的方法有:文章来源地址https://www.toymoban.com/news/detail-480859.html

  • 参数范数惩罚
  • 数据增强
  • 提前终止
  • Bagging等集成方法
  • Dropout
  • 批正则化

模型训练中的问题

  • 选择恰当的激活函数
  • 权重初始化
  • 学习率
  • 使用Dropout正则化
  • 周期 / 训练迭代次数
  • 训练过程可视化

神经网络效果评价

  • 用于分类的模型评价以**准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分值(F1 Score)**为主,辅以ROC、AUC并结合实际应用进行结果评价。
  • 如果神经网络用于聚类,数据源并没有进行标记,那么其模型结果的评价按照聚类算法的标准来操作,如RMSSTD、R Square、SRP等。
  • 随着机器学习在不同领域中的应用,其评价方式需要与实际业务相结合,通过确定目标要求来定量设计评价标准,例如在目标检测等方面使用平均曲线下面积(mean Average Precision, mAP)指标进行衡量识别准确性。

到了这里,关于机器学习-11 BP神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习17:训练神经网络-反向传播算法

    反向传播算法对于快速训练大型神经网络至关重要。本文将介绍算法的工作原理。 目录 1.简单的神经网络 2.激活函数 3.错误函数 4.正向传播 4.1 更新隐藏层 5.反向传播 5.1 求导数

    2024年02月12日
    浏览(43)
  • 【机器学习】——续上:卷积神经网络(CNN)与参数训练

    目录 引入 一、CNN基本结构 1、卷积层 2、下采样层 3、全连接层 二、CNN参数训练 总结 卷积神经网络(CNN)是一种有 监督深度模型框架 ,尤其适合处理 二维数据 问题,如行人检测、人脸识别、信号处理等领域,是带有卷积结构的深度神经网络,也是首个真正意义上成功训练

    2024年02月10日
    浏览(37)
  • 【Python机器学习】实验11 神经网络-感知器

    1.感知机是根据输入实例的特征向量 x x x 对其进行二类分类的线性分类模型: f ( x ) = sign ⁡ ( w ⋅ x + b ) f(x)=operatorname{sign}(w cdot x+b) f ( x ) = sign ( w ⋅ x + b ) 感知机模型对应于输入空间(特征空间)中的分离超平面 w ⋅ x + b = 0 w cdot x+b=0 w ⋅ x + b = 0 。 2.感知机学习的策略

    2024年02月13日
    浏览(30)
  • 深度学习|BP神经网络

    人工神经网络(Artificial Neural Network, ANN)是由大量神经元相互连接,模拟人的大脑神经处理信息的方式,进行信息并行处理和非线性转换的复杂网络系统。从生物学角度来看,人脑中的神经细胞主要结构分为树突、细胞体和轴突,分别用于接收信息、处理信息和传出信息,如

    2024年02月05日
    浏览(27)
  • 【深度学习 | 感知器 & MLP(BP神经网络)】掌握感知的艺术: 感知器和MLP-BP如何革新神经网络

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月12日
    浏览(29)
  • 机器学习之计算机视觉中的深度学习:卷积神经网络介绍

    文章代码来源:《deep learning on keras》,非常好的一本书,大家如果英语好,推荐直接阅读该书,如果时间不够,可以看看此系列文章。 在这一章,我们会学习卷积神经网络,一种在计算机视觉中常用的深度学习模型,你将会学着将它们运用到分类问题中。 我们首先会介绍卷

    2024年02月04日
    浏览(51)
  • 【数学建模】matlab| BP神经网络入门学习

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:以下本章里有大量作者自己的口水话和心里对白,请谨慎观看,若有不适,后果自负! 这部分学习内容以及代码参考(抄袭)了教材《matlab在数学建模中的应用》(第二版 主编:卓金武),加入

    2024年02月09日
    浏览(32)
  • 算法介绍及实现——基于遗传算法改进的BP神经网络算法(附完整Python实现)

    目录 一、算法介绍 1.1 遗传算法 1.2 为什么要使用遗传算法进行改进 二、算法原理 三、算法实现 3.1 算子选择 3.2 代码实现          遗传算法是受启发于自然界中生物对于自然环境 “适者生存”的强大自适应能力,通过对生物演化过程模拟和抽象,构建了以自然界生物演

    2024年02月03日
    浏览(31)
  • 基于TF-IDF+Tensorflow+pyQT+孪生神经网络的智能聊天机器人(深度学习)含全部工程源码及模型+训练数据集

    本项目利用TF-IDF(Term Frequency-Inverse Document Frequency 词频-逆文档频率)检索模型和CNN(卷积神经网络)精排模型构建了一个聊天机器人,旨在实现一个能够进行日常对话和情感陪伴的聊天机器人。 首先,我们使用TF-IDF技术构建了一个检索模型。TF-IDF可以衡量一个词语在文档中

    2024年02月12日
    浏览(42)
  • 基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

    本项目利用TF-IDF(Term Frequency-Inverse Document Frequency 词频-逆文档频率)检索模型和CNN(卷积神经网络)精排模型构建了一个聊天机器人,旨在实现一个能够进行日常对话和情感陪伴的聊天机器人。 首先,我们使用TF-IDF技术构建了一个检索模型。TF-IDF可以衡量一个词语在文档中

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包