神经网络的理解以及在ODE上的应用

您所在的位置:网站首页 ode神经网络 神经网络的理解以及在ODE上的应用

神经网络的理解以及在ODE上的应用

2024-06-30 13:50| 来源: 网络整理| 查看: 265

在现在学习传统的数值算法的过程当中,我们经常听到关于机器学习求解这样哪样的问题,特别多听到的是,PINN 在PDE数值解上求解多么好,那么接下来我将介绍机器学习是怎么样的一个过程.

首先我们要清楚我们需要使用机器学习做怎么样的工作,先从简单的感知机开始

神经网络是由多个感知机组成的,通过多个感知机的组合形成函数去逼近想要逼近的函数

假设存在函数 定义为我们需要逼近的函数,定义(两个参数分别为网络参数,和深度,宽度参数)为神经网络形成的函数,神经网络是使用充分小去逼近 ,接下来将介绍神经网络的搭建

神经网络的结构

    从上图中我们可以看到,神经网络主要是通过输入层,隐藏层,输出层 ,那么他们是通过怎么样进行传递或者连接呢?为了更好理解神经网络(MLP),我们先给一些相关的定义.

:隐藏层的总层数.

 : 神经网络中每层神经元的个数.

:为每层之间的权重.

:记为每次神经网站中的偏置.

:表示为神经网络中激活函数

:表示为神经网络需要拟合的参数(上述说的W,b都是神经网络随生成的参数,我们需要计算的便是w,b)

给出一个简单的连接过程

我们给出在隐藏层中,输入与输出的关系 ,其中激活函数是(pivotal 核心)

介绍激活函数    Weak ReLUtanh(x)

表达式中可以看得到的,激活函数很多都是非线性的函数,从神经网络函数可以看得到的,如果激活函数选择线性函数,神经网络函只具有线性的性质,对非线性表现不佳,而实现问题上很多问题都是非线性函数,所以一般神经网络中的激活函数采用非线性函数

给出一个例子如果选择激活函数不恰当的会发生什么问题?

设,激活函数 取为Relu函数,却不在这个空间内(因为正则性不满足),逼近的效果很可能并不令我们满意.

神经网络为什么能够逼近任何函数?

在学习数值计算方法的时候,数值解逼近真解,很多情况下是数值解是真解所在空间的一组基组成的,那么神经网络函数是不是类似呢?

神经网络的逼近原因

这里主要解释定理2.3.1,这个定理所说的是给定一个连续的函数,当神经网络的激活函数是非线性的时候我们只需要一层的隐藏层,就能够在充分小的误差内逼近,那么这里给神经网络拟合其他函数提供了理论的保证.

如何训练神经网络

    从前面已经给大家介绍过神经网络的具体搭建,神经网络训练的本质是选出一组合适的,在训练之前我们要如果划分数据,将数据分成训练集,验证集,测试集

训练集:( Find the optimal values of  in the training phase)用来训练出来神经网络的基本参数

验证集:( Find the optimal values of  in the validation phase.  )用来训练出来神经网络中的超参数,例如每层神经网络的个数以及深度(一般可用可不用)

测试集:( Test the performance of the network on unseen data on the testing phase.)用于检测训练好的神经网络函数的真实拟合能力

训练的目的可以通过数学公式体现,训练集上的损失函数我们定义为

,我们目标是寻找使得最小的参数,其他训练集上损失函数也是类似

如何寻找最优的?

梯度下降算法,(这个算法的逻辑跟传统数值计算方法的牛顿迭代所类似),用一句话解释,梯度下降法就是快速找到最低点的一个方法。比如在山上有一个球,经过几次运动后,就会来到谷底附近,函数梯度的反方向便是函数减少的最快的方向.

那么我们利用该算法可以更新出我们想要的参数,算法流程如下

1:k=0,(随机初值也是需要在0到1内随机)

2 :计算,是学习率,用于控制梯度下降的速度 ,

3: 

4: k= k +1

一定能够找到最优参数吗?

显然梯度下降算法本身就是一种迭代算法,与牛顿迭代一样都会遇到迭代是否收敛的问题

定理:假设损失函数可微而且是凸函数,那么它的梯度是Lipschitz continous 和存在Lipschitz 常数K ,使得,

但是不幸的是很多时候很多时候损失函数并不是凸函数,那么就意味着存在多个极值点的情况

梯度下降算法会面临的问题如下 :

局部最优解:梯度下降法可能陷入局部最优解,而无法达到全局最优解。在复杂的非凸优化问题中,存在多个局部最优解,导致梯度下降法可能无法找到最佳解决方案。

学习率选择:梯度下降法中的学习率决定了每次参数更新的步长。学习率过小会导致收敛速度慢,而学习率过大可能导致震荡或无法收敛。选择合适的学习率是梯度下降法的挑战之一。

高维度问题:在高维度问题中,梯度下降法可能会收敛缓慢。由于计算梯度需要遍历所有样本,因此在高维度数据中,计算梯度较慢,可能需要更多的迭代次数才能达到最优解。

为了应对这些问题,研究人员提出了各种改进的梯度下降算法,如随机梯度下降(SGD)、批量梯度下降(BGD)、动量优化、自适应学习率方法(如Adam和RMSprop)等。这些算法通过调整学习率、随机采样、加入动量等技术来克服梯度下降法的一些困难

如何计算梯度?

答案是 BP反向传播同时也叫链式法则,接下我将采用大量的数学公式给大家展示具体的过程

                               

                              

                             

我们以更新第的参数为例子进行反向传播,

         

         

        

        

       

通过链式法则我们将可以求出梯度,同时可以观察反向传播公式,知道内存的花销主要在存储向前传播的激活状态上.

E给出使用简单神经网络拟合ODE的结果以及代码

Residual neural network 

    在普通的实现过程中,我们很有可能会遇到梯度消失或者是梯度爆炸,主要体现为,在神经网络的深度越深时,会变得比较非常小,为什么会导致该问题的出现?我们在下面给出对应的数学公式证明

由上述可以知道 

                   

对任意的矩阵 A ,让定义为最大的特值,我们定义  ,其中如果激活函数我们取的是ReLu(x)函数时,那么将有,同时我们想要,否则神经网络形成的解将变成无界 (1)->(2).

                                

那么从上述的不等式可以知道的随着L的增大,输入层附近的隐藏层神经网络的参数对于神经网络来说没用产生任何的效果,梯度消失会给神经网络带来什么样的影响?

在训练集和测试集上的影响

既然是这样那么我们能不能够采用其他的办法解决这个问题呢?

ResNet

ODENeural(它其实也是一种神经网络的结构)

ResNet   VS  ODENeural

从图上直观的看到的是ODENetwork,相较于ResNet是连续的



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3