神经网络学习笔记
- 格式:docx
- 大小:357.65 KB
- 文档页数:6
人工神经网络学习总结笔记主要侧重点:1.概念清晰2.进行必要的查询时能从书本上找到答案第一章:绪论1.1人工神经网络的概述“认识脑”和“仿脑”:人工智能科学家在了解人脑的工作机理和思维的本质的基础上,探索具有人类智慧的人工智能系统,以模拟延伸和扩展脑功能。
我认为这是人工神经网络研究的前身。
形象思维:不易被模拟人脑思维抽象推理逻辑思维:过程:信息概念最终结果特点:按串行模式人脑与计算机信息处理能力的不同点:方面类型人脑计算机记忆与联想能力可存储大量信息,对信息有筛选、回忆、巩固的联想记忆能力无回忆与联想能力,只可存取信息学习与认知能力具备该能力无该能力信息加工能力具有信息加工能力可认识事物的本质与规律仅限于二值逻辑,有形式逻辑能力,缺乏辩证逻辑能力信息综合能力可以对知识进行归纳类比和概括,是一种对信息进行逻辑加工和非逻辑加工相结合的过程缺乏该能力信息处理速度数值处理等只需串行算法就能解决的应用问题方便,计算机比人脑快,但计算机在处理文字图像、声音等类信息的能力远不如人脑1.1.2人脑与计算机信息处理机制的比较人脑与计算机处理能力的差异最根本的原因就是信息处理机制的不同,主要有四个方面方面类型人脑计算机系统结构有数百亿神经元组成的神经网络由二值逻辑门电路构成的按串行方式工作的逻辑机器信号形式模拟量(特点:具有模糊性。
离散的二进制数和二值逻辑容易被机器模拟的思维方式难以被机器模拟)和脉冲两种形式形式信息储存人脑中的信息分布存储于整个系统,所存储的信息是联想式的有限集中的串行处理机制信息处理机制高度并行的非线性信息处理系统(体现在结构上、信息存储上、信息处理的运行过程中)1.1.3人工神经网络的概念:在对人脑神经网络的基本认识的基础上,用数理方法从信息处理的角度对人脑神经网络进行抽象,并建立某种简化模型,称之为人工神经网络,是对人脑的简化、抽象以及模拟,是一种旨在模仿人脑结构及其功能的信息处理系统。
其他定义:由非常多个非常简单的处理单元彼此按某种方式相互连接而形成的计算系统,外部输入信息之后,系统产生动态响应从而处理信息。
神经网络基本知识一、内容简述神经网络是机器学习的一个重要分支,是一种模拟生物神经网络结构和功能的计算模型。
它以其强大的学习能力和自适应能力广泛应用于多个领域,如图像识别、语音识别、自然语言处理等。
《神经网络基本知识》这篇文章将带领读者了解神经网络的基本概念、原理和应用。
1. 神经网络概述神经网络是一种模拟生物神经系统结构和功能的计算模型。
它由大量神经元相互连接构成,通过学习和调整神经元之间的连接权重来进行数据处理和模式识别。
神经网络的概念自上世纪五十年代提出以来,经历了漫长的发展历程,逐渐从简单的线性模型演变为复杂的多层非线性结构。
神经网络在人工智能领域发挥着核心作用,广泛应用于计算机视觉、语音识别、自然语言处理等领域。
神经网络的基本构成单元是神经元,每个神经元接收来自其他神经元的输入信号,通过特定的计算方式产生输出信号,并传递给其他神经元。
不同神经元之间的连接强度称为权重,通过训练过程不断调整和优化。
神经网络的训练过程主要是通过反向传播算法来实现的,通过计算输出层误差并反向传播到输入层,不断调整权重以减小误差。
神经网络具有强大的自适应能力和学习能力,能够处理复杂的模式识别和预测任务。
与传统的计算机程序相比,神经网络通过学习大量数据中的规律和特征,自动提取高级特征表示,避免了手动设计和选择特征的繁琐过程。
随着深度学习和大数据技术的不断发展,神经网络的应用前景将更加广阔。
神经网络是一种模拟生物神经系统功能的计算模型,通过学习和调整神经元之间的连接权重来进行数据处理和模式识别。
它在人工智能领域的应用已经取得了巨大的成功,并将在未来继续发挥重要作用。
2. 神经网络的历史背景与发展神经网络的历史可以追溯到上个世纪。
最初的神经网络概念起源于仿生学,模拟生物神经网络的结构和功能。
早期的神经网络研究主要集中在模式识别和机器学习的应用上。
随着计算机科学的快速发展,神经网络逐渐成为一个独立的研究领域。
在20世纪80年代和90年代,随着反向传播算法和卷积神经网络的提出,神经网络的性能得到了显著提升。
《深入浅出图神经网络:GNN原理解析》阅读随笔目录一、前言 (2)1.1 本书的目的和价值 (3)1.2 图神经网络简介 (3)二、图神经网络基础 (5)2.1 图的基本概念 (6)2.2 神经网络的基本概念 (8)2.3 图神经网络与神经网络的结合 (9)三、图神经网络的分类 (10)3.1 基于消息传递的图神经网络 (12)3.2 基于能量函数的图神经网络 (12)3.3 基于图注意力机制的图神经网络 (14)四、图神经网络的训练方法 (15)4.1 迭代训练法 (16)4.2 随机梯度下降法 (17)4.3 动量法 (19)4.4 自适应学习率方法 (20)五、图神经网络的优化技术 (21)5.1 局部优化算法 (22)5.2 全局优化算法 (24)5.3 混合优化算法 (26)六、图神经网络的评估与可视化 (27)6.1 评估指标 (28)6.2 可视化方法 (29)6.3 实战案例分析 (31)七、图神经网络的未来发展方向与应用前景 (32)7.1 当前研究的热点和挑战 (34)7.2 未来可能的技术创新 (35)7.3 图神经网络在各个领域的应用前景 (37)八、结语 (38)8.1 对本书内容的总结 (39)8.2 对未来图神经网络发展的展望 (40)一、前言在人工智能领域,图神经网络(Graph Neural Networks, GNNs)作为一种强大的深度学习模型,近年来得到了广泛的关注和研究。
它们能够处理非结构化数据,如社交网络、分子结构、知识图谱等,因此在许多应用中具有重要的地位。
尽管GNNs在学术界和工业界都取得了显著的成功,但它们的原理和应用仍然是一个活跃的研究课题。
特别是对于初学者来说,理解和掌握GNN的原理解析及其在实际问题中的应用,是一个不小的挑战。
为了帮助读者更好地理解GNNs,本文将从基础到高级逐步展开,深入剖析GNN的核心概念、模型架构以及最新的研究进展。
结合具体的代码实现和实验结果,我们将展示GNN在实际应用中的强大能力。
神经⽹络(NeuralNetwork)⼀、激活函数激活函数也称为响应函数,⽤于处理神经元的输出,理想的激活函数如阶跃函数,Sigmoid函数也常常作为激活函数使⽤。
在阶跃函数中,1表⽰神经元处于兴奋状态,0表⽰神经元处于抑制状态。
⼆、感知机感知机是两层神经元组成的神经⽹络,感知机的权重调整⽅式如下所⽰:按照正常思路w i+△w i是正常y的取值,w i是y'的取值,所以两者做差,增减性应当同(y-y')x i⼀致。
参数η是⼀个取值区间在(0,1)的任意数,称为学习率。
如果预测正确,感知机不发⽣变化,否则会根据错误的程度进⾏调整。
不妨这样假设⼀下,预测值不准确,说明Δw有偏差,⽆理x正负与否,w的变化应当和(y-y')x i⼀致,分情况讨论⼀下即可,x为负数,当预测值增加的时候,权值应当也增加,⽤来降低预测值,当预测值减少的时候,权值应当也减少,⽤来提⾼预测值;x为正数,当预测值增加的时候,权值应当减少,⽤来降低预测值,反之亦然。
(y-y')是出现的误差,负数对应下调,正数对应上调,乘上基数就是调整情况,因为基数的正负不影响调整情况,毕竟负数上调需要减少w的值。
感知机只有输出层神经元进⾏激活函数处理,即只拥有⼀层功能的神经元,其学习能⼒可以说是⾮常有限了。
如果对于两参数据,他们是线性可分的,那么感知机的学习过程会逐步收敛,但是对于线性不可分的问题,学习过程将会产⽣震荡,不断地左右进⾏摇摆,⽽⽆法恒定在⼀个可靠地线性准则中。
三、多层⽹络使⽤多层感知机就能够解决线性不可分的问题,输出层和输⼊层之间的成为隐层/隐含层,它和输出层⼀样都是拥有激活函数的功能神经元。
神经元之间不存在同层连接,也不存在跨层连接,这种神经⽹络结构称为多层前馈神经⽹络。
换⾔之,神经⽹络的训练重点就是链接权值和阈值当中。
四、误差逆传播算法误差逆传播算法换⾔之BP(BackPropagation)算法,BP算法不仅可以⽤于多层前馈神经⽹络,还可以⽤于其他⽅⾯,但是单单提起BP算法,训练的⾃然是多层前馈神经⽹络。
神经⽹络学习笔记-激活函数的作⽤、定义和微分证明神经⽹络学习笔记 - 激活函数的作⽤、定义和微分证明看到上对激活函数(Activation Function)的解释。
我⼀下⼦迷失了。
因此,匆匆写下我对激活函数的理解。
激活函数被⽤到了什么地⽅⽬前为⽌,我见到使⽤激活函数的地⽅有两个。
逻辑回归(Logistic Regression)神经⽹络(Neural Network)这两处,激活函数都⽤于计算⼀个线性函数的结果。
了解激活函数激活函数的作⽤:就是将权值结果转化成分类结果。
2类的线性分类器先说⼀个简单的情况 - ⼀个2类的线性分类器。
了解激活函数,先要明确我们的问题是:"计算⼀个(⽮量)数据的标签(分类)"。
以下图为例:训练训练的结果,是⼀组(w,b),和⼀个线性函数f(x)=wx+b。
预测我们现在仔细考虑⼀下,如何在预测函数中使⽤这个线性函数f(x)。
先从⼏何⽅⾯理解⼀下,如果预测的点在分割线wx+b=0上,那么f(x)=wx+b=0。
如果,在分割线的上⽅某处,f(x)=wx+b=8(假设是8)。
8可以认为是偏移量。
注:取决于(w, b),在分割线上⽅的点可以是正的,也可能是负的。
例如: y - x =0,和 x - y = 0,这两条线实际上是⼀样的。
但是,应⽤点(1, 9)的结果,第⼀个是8, 第⼆个是 -8。
问题然后,你该怎么办???如何⽤这个偏移量来得到数据的标签?激活函数激活函数的作⽤是:将8变成红⾊。
怎么变的呢?⽐如:我们使⽤sigmoid函数,sigmoid(8) = 0.99966464987。
sigmoid函数的结果在区间(0, 1)上。
如果⼤于0.5,就可以认为满⾜条件,即是红⾊。
3类分类器的情况我们再看看在⼀个多类分类器中,激活函数的作⽤。
以下图为例:训练3类a,b,c分类器的训练结果是3个(w,b),三个f(x),三条分割线。
每个f(x),可以认为是针对⼀个分类的model。
神经⽹络学习笔记2-多层感知机,激活函数1多层感知机
定义:多层感知机是在单层神经⽹络上引⼊⼀个或多个隐藏层,即输⼊层,隐藏层,输出层
2多层感知机的激活函数:
如果没有激活函数,多层感知机会退化成单层
多层感知机的公式: 隐藏层 H=XW h+b h
输出层 O=HW0+b0=(XW h+b h)W0+b0=XW h W0+b0W0+b0
其中XW h W0相当于W,b0W0+b0相当于b,即WX+b的形式,与单层的同为⼀次函数,因此重新成为了单层
3激活函数的作⽤
(1)让多层感知机成为了真正的多层感知机,否则等于⼀层的感知机
(2)引⼊⾮线性,使⽹络逼近了任意的⾮线性函数,弥补了之前单层的缺陷
4激活函数的特质
(1) 连续可导(允许少数点不可导),便于数值优化的⽅法学习⽹络参数
(2)激活函数尽可能简单,提⾼计算效率
(3)激活函数的导函数的导函数的值域要在合适的区间,否则影响训练的稳定和效率
5 常见的激活函数
1 sigmod型
常见于早期的神经⽹络,RNN和⼆分类项⽬,值域处于0到1,可以⽤来输出⼆分类的概率
弊端:处于饱和区的函数⽆法再更新梯度,向前传播困难
2 tahn(双曲正切)
3 ReLu(修正线性单元)
最常⽤的神经⽹络激活函数,不存在饱和区,虽然再z=0上不可导,但不违背激活函数的特质(允许在少数点上不可导),⼴泛运⽤于卷积⽹络等。
第二章深度神经网络一、概述1、基本概念深度学习(Deep Learning)是一种没有人为参与的特征选取方法,又被称为是无监督的特征学习(Unsupervised Feature Learning)。
深度学习思想的神经网络利用隐含层从低到高依次学习数据的从底层到高层、从简单到复杂、从具体到抽象的特征,而这一特性决定了深度学习模型可以学习到目标的自适应特征,具有很强的鲁棒性。
深度学习的另外一个思想是贪婪算法(greedy algorithm)的思想,其在训练的时候打破了几十年传统神经网络训练方法的“桎梏”,采用逐层训练(greedy layer-wise)的贪婪思想,并经过最后的微调(fine-tuning),这一训练算法的成功也使得深度学习获得了巨大成功。
传统的模式识别方法:机器学习过程从最初的传感器得到原始的数据,到经过预处理,都是为了第三步和第四步的特征提取和特征选择,而这个耗时耗力的工作一般要靠人工完成。
这种靠人工的,需要大量的专业知识的启发式的特征提取方法注定要限制机器学习的发展,而深度学习的非监督学习阶段的“盲学习”的特性能够解决该问题,即:深度学习在特征提取和选择时是完全自主的,不需要任何的人工干预。
2、神经网络发展受限之处多隐含层的网络容易收敛到参数空间的局部最优解,即偏导数为0 的点,尤其在目标识别中,由于图像的信噪比很低,神经网络很容易陷入局部极小点; 训练算法与网络的初始参数有很大关系,比较容易过拟合;训练速度慢;在误差反向传播的训练算法中,层数越深,误差越小,甚至接近于0,造成训练失败。
误差反向传播算法必须要用到带标签的数据(有导师学习、监督学习),获取带标签的数据十分困难。
3、深度学习的学习算法深度学习的基本模型从形式上来看和神经网络一致,基本的结构单元都是神经元,由神经元组成网络层,整个网络由输入层,隐含层和输出层组成。
在深度学习理论中,一个网络的学习算法每运行一次,只调整一层网络的参数。
[鱼书笔记]深度学习⼊门:基于Python的理论与实现个⼈笔记分享为了完成毕设, 最近开始⼊门深度学习.在此和⼤家分享⼀下本⼈阅读鱼书时的笔记,若有遗漏,欢迎斧正!若转载请注明出处!⼀、感知机感知机(perceptron)接收多个输⼊信号,输出⼀个信号。
如图感知机,其接受两个输⼊信号。
其中θ为阈值,超过阈值神经元就会被激活。
感知机的局限性在于,它只能表⽰由⼀条直线分割的空间,即线性空间。
多层感知机可以实现复杂功能。
⼆、神经⽹络神经⽹络由三部分组成:输⼊层、隐藏层、输出层1. 激活函数激活函数将输⼊信号的总和转换为输出信号,相当于对计算结果进⾏简单筛选和处理。
如图所⽰的激活函数为阶跃函数。
1) sigmoid 函数sigmoid函数是常⽤的神经⽹络激活函数。
其公式为:h(x)=11+e−x如图所⽰,其输出值在 0到 1 之间。
2) ReLU 函数ReLU(Rectified Linear Unit)函数是最近常⽤的激活函数。
3) tanh 函数2. 三层神经⽹络的实现该神经⽹络包括:输⼊层、2 个隐藏层和输出层。
def forward(network, x): # x为输⼊数据# 第1个隐藏层的处理,点乘加上偏置后传⾄激活函数a1 = np.dot(x, W1) + b1z1 = sigmoid(a1)# 第2个隐藏层的处理a2 = np.dot(z1, W2) + b2z2 = sigmoid(a2)#输出层处理 identidy_function原模原样输出a3a3 = np.dot(z2, W3) + b3y = identify_function(a3)return y # y为最终结果3. 输出层激活函数⼀般来说,回归问题选择恒等函数,分类问题选择softmax函数。
softmax函数的公式:y k=e a k ∑n i=1e a i假设输出层有n个神经元,计算第k个神经元的输出y k。
1 神经网络学习笔记
发表于2016/4/14 22:41:51 3754人阅读
分类: machine-learning
2 神经网络
3 sigmoid函数
sigmoid函数是一种常见的挤压函数,其将较大范围的输入挤压到(0,1)区间内,其函数的表达式与形状如下图所示:
该函数常被用于分类模型,因为其具有很好的一个特性f′(x)=f(x)(1−f (x))。
这个函数也会被用于下面的神经网络模型中做激活函数。
4 M-P神经元模型
生物的神经网络系统中,最简单最基本的结构是神经元。
每个神经元都是接受其他多个神经元传入的信号,然后将这些信号汇总成总信号,对比总信号与阈值,如果超过阈值,则产生兴奋信号并输出出去,如果低于阈值,则处于抑制状态。
McCulloch在1 943年将该过程抽象成如下图所示的简单模型:
该模型称为“M-P神经元模型”。
通过上图我们可以知道,当前神经元的输入是来自其他
n个神经元的带权值的输出,而激活函数f()是一个如下图所示的阶跃函数
我们可以看到当总的输入小于阈值的时候,神经元处于抑制状态,输出为0,而当总输入大于阈值,则神经元被激活为兴奋状态,输出1。
但是我们发现该函数是不连续且不光滑的,使用起来会很不方便,因此在实际应用中常常使用sigmoid函数代替阶跃函数做神经元的激活函数。
5 感知器模型
感知器模型,是一种最简单的神经网络模型结构,其网络结构包括输入层与输出层两层,如下图所示:
其为具有两个输入神经元,一个输出神经元的感知器模型。
我们知道该模型是可以做
与或非运算的。
这是因为如果我们要做与或非运算,那么对于输入x1,x2来说,其取值只能是0或1,而我们的输出y=f(∑2i=1ωi x i−θ),如果要做与运算,那令阈值ω1=1,ω2=1,θ=2,则只有在x1=1,x2=1的时候才能激活输出层神经元,输出1,其余情况均输出0。
同样,如果做或运算,那令阈值ω1=1,ω2=1,θ=1,则只要有一个输入x i=1,即可激活输出神经元,
输出1,如果对x1做非运算,那么可以令阈值ω1=−0.6,ω2=0,θ=
−0.5,则如果x1=1,x2=0,总输入为−0.6,小于阈值,输出0,如果x1=0,x2=0,总输入为0,大于阈值,输出1。
这里的激活函数为阶跃函数。
这个通过下面的三幅图也可以看得出来
但是我们可以发现,对于只有输入层与输出层的感知机模型,∑2i=1ωi x i−θ是线性的,其只能对线性数据进行划分,对于如下图的异或模型,其实无法准确划分的。
因为任何一条线都无法将(1,0),(0,1)划为一类,(0,0),(1,1)划为一类。
但如果是像图(a)中那样的两层网络(这里的两层指的是隐层与输出层,因为只有这两层中的节点是有激活函数的),在隐层有两个节点,那么此时就可以得到两条线
性函数,再在输出节点汇总之后,将会得到由两条直线围成的一个面,如图(b)所示,这时就可以成功的将异或问题解决。
因此我们可以看到,随着网络深度的增加,每一层节点个数的增加,都可以加强网络的表达能力,网络的复杂度越高,其表示能力就越强,也就可以表达更复杂的模型。
通过上面你的示例,我们也可以看到,对网络的学习其实主要是对网络中各个节点之间的连接权值和阈值的学习,即寻找最优的连接权值和阈值从而使得该模型可以达到最优(一般是局部最优)。
下面主要介绍多隐层前馈神经网络模型参数的学习方法。
6 多隐层前馈神经网络
对于多隐层前馈神经网络,其网络中相邻两层是全连接,而层内是没有连接的,跨层之间也没有连接,如下图所示:
这里是一个单隐层的前馈神经网络,可以看到该网络的参数主要是输入层与隐层之间
的连接权值ωhj,隐层的阈值θ,隐层与输出层之间的连接权值v ih,输出层的阈值r h。
这里假设输出层的节点个数为l个,隐层的节点个数为q个,输入层的节点个数为d个,那么我们需要学习的参数个数就为d∗q+q+q∗l+l个参数,其中d∗q与q∗l分别是输入层与隐层的连接权值与隐层和输出层的连接权
值个数,q,l分别是隐层和输出层的阈值个数。
这样我们就可以将对神经网络的学习问题转化为参数的优化问题。
而优化问题最常用的方法就是梯度下降方法,就是让目标参数沿着梯度的方向变化从而达到最优值,即ωi+1=ωi+ηΔω,其中η为步长,Δω为沿梯度方向的变化量。
假设隐层与输出层的激活函数均为sigmoid函数,该网络的输出为Yˆ=(yˆ1,...,yˆj,...,yˆl),那么其第j个节点的输入为βj=∑qi=1ωij b i,其输出yˆj=f(βj−r j),那么该网络的均方误差值即为E=12∑li=1(y i −yˆi)2。
这里我们将隐层第h个节点与输出层第j个节点的连接权值ωhj作为优化的目标参数,那么基于梯度下降方法我们知道该参数的变化量
Δωhj=ηδEδωhj
根据链式规则,我们可以将该公式展开
δEδωhj=δEδyˆjδyˆjδβjδβjδωhj
=yˆj−y j,δyˆjδβj=yˆj(1−yˆj),δβjδωhj=b h,因此
其中,δEδyˆj
δEδωhj=yˆj(1−yˆj)(yˆj−y j)b h
令g j=yˆj(1−yˆj)(yˆj−y j),那么
Δωhj=ηg j b h
同样的方法,我们可以求出所有其他参数的变化值,依据这些变化值不断调整参数直至收敛。
这种学习参数的方法称为标准BP算法(误差逆向传播算法)。
我们可以看到,对于标准BP算法,其每输入一个样本值的时候,就会对参数进行一次更新,当我们的样本量非常大的时候,这种学习方式会耗费大量的时间成本,速度非常的慢,而且对不同的样本进行更新的时候很可能会出现效果抵消的问题。
那么我们想如果可以将所有的样本都输入一次后,再对参数进行更新,即将所有的样本的误差都计算一遍,并将这些误差累积,依据累积的误差来对参数进行更新,这样就会快很多。
这种方法是可行的,以这种思想为基础的BP算法称为累积BP算法。
累积BP 算法的更新频率会低很多,但是该算法在下降到一定程度之后,其再下降的速度就会慢很多。
因此对于大部分的算法,其都是首先使用累积梯度下降更新参数,在下降到一定程度之后,再用标准BP算法进行更新。
但是使用BP算法,常常会遇到过拟合的问题,对于过拟合问题,通常采用早停和正则化的两种方式来缓解。
其中早停方法比较简单,其就是讲数据集分为训练集和验证集两部分,当训练集的误差降低但验证集的误差升高的时候,就结束训练。
而正则化方法则是在计算误差的时候加上一个正则项μ,该正则项用于衡量模型的复杂度,如下所示:
μ=∑iω2i
在增加连接权值和阈值这些参数的平方项之后,使得网络更加倾向于比较小的参数,从而让网络的输出更加平滑,对过拟合有所缓解。