BP神经网络的基本应用
公式提取
【原理】BP神经网络表达式的反归一化
作者 : 老饼 日期 : 2022-06-09 05:22:05 更新 : 2022-10-28 08:45:56
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com


由于神经网络往往需要将数据归一化再训练,

因此得到的模型也是对应归一化数据的,在使用中有所不便。

本文我们讲解,如何将 归一化数据的神经网络模型 映射回 原始数据的网络模型 



    问题背景    


BP神经网络一般会先将训练数据归一化,再进行训练。
但由于训练网络时用的是归一化数据,
最终训练出来的BP神经网络模型也是对应归一化数据的
应用需求
 由于训练出来的BP神经网络是对应归一化数据的,
投入使用时,必须遵守:
  
 

   
  这样的使用过程是繁琐的,
如果能将网络转换回对应原始数据的网络,
就能直接在原始数据上应用模型
分析需求
 由于训练出来的BP神经网络是对应归一化数据的,
网络的权重 系数也是对应归一化数据的,
这样无法分析原始数据在网络中的关系,
 这就需要将网络转换回对应原始数据的网络,
才能直接看到原始数据的输入与输出之间的关系,方便我们分析问题

 基于以上两点需求,本文我们讲解,
如何将 归一化数据网络 映射回 原始数据的网络    
✍️ 说明
方便后面的表述,我们采用以下的名称的说明

归一化网络 :指归一化数据所对应的BP神经网络模型   
原始网络    :指原始数据所对应的BP神经网络模型      





  01 . 归一化网络转换原始网络的转换公式  


这里我们先直接晒出实际公式,

公式的详细推导在《BP神经网络表达式的反归一化推导》


   转换公式   


输入层->隐层的权重阈值转换公式: 
 

 
                                   
 
       

其中
    : 原始网络的输入权重             
       : 原始网络的输入阈值             
   : 归一化网络的输入权重         
    : 归一化网络的输入阈值         
    : 输入归一化使用的       
     : 输入归一化使用的       
隐层 - > 输出层的权重阈值转换公式: 

                             
      

其中
    : 原始网络的输入权重             
       : 原始网络的输入阈值             
    : 归一化网络的输入权重         
       : 归一化网络的输入阈值         
       : 输入归一化使用的        
        : 输入归一化使用的        



    ✍️特别说明:关于隐层-隐层的权重阈值   


隐层与隐层之间的权重阈值不需转换
因为归一化只涉及到输入输出层,只需转换输入层和输出层的权重和阈值就可以,
不管网络有多少个隐层,都与其它隐层无关,其它隐层的权重阈值都不需转换






  02 . 归一化网络转换原始网络的转换实例  


本节展示一个实例,详细说明转换公式是如何使用的


   问题与目标   


现有原始数据:




我们将原始数据归一化后得到如下归一化数据:




使用归一化数据,训练得到一个3层3隐节点网络,其表达式如下:


该模型只适用于归一化后的数据,并不适用于原始数据
👉目标:现需要我们将该表达式  转换成   原始数据的模型表达式



   模 型 转 换 操 作 过 程  


 转换 输入的权重和阈值 

 
输入->第一个隐节点权重 [2 ,3 ]  按公式作如下转换:   




第一个隐节点阈值 2.5 按公式作如下转换:



类似,转换第二第三个隐节点的权重和阈值,得到                    
第一个隐节点转换后的权重:[0.4, 1.2 ]  ,阈值 :  1.1    
第二个隐节点转换后的权重:[0.8, 2.4 ]  ,阈值 :  -0.3   
第三个隐节点转换后的权重:[1.6,0.8 ]  ,阈值 : 13.4    
转换输出节点权重和阈值

 
隐层->输出层的权重为 [-2, 6 , 5 ]和阈值: 3  按公式作如下转换:

            



即,输出节点转换后的权重:  [-10, 30, 25] ,阈值:  15
 原始数据模型结果
综上,即可得到原始数据对应的网络表达式:

使用转换后的模型,只需要输入 原始数据  [ -2,2 ], 就能输出 原始数据的预测值  y : 5 



    结 束 语    


这样,利用上面的方法,
就能得到对应原始数据的权重和阈值,
在网络投入使用时,就不再需要做归一化和反归一化的步骤。
很少文章提到这个网络反归一的问题,但在实际中却是很需要的,
笔者也是在使用时转来转去转到烦了,最后不得不整理出来









 End 








联系老饼