老饼讲解-神经网络
BP神经网络
公式提取
网络表达式的反归一化
作者 : 老饼 日期 : 2022-06-09 05:22:05 更新 : 2022-06-29 01:31:44
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com


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

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

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



  01 . 问题背景  


我们知道,神经网络一般会先将训练数据归一化,再进行训练。
但这样训练出来的网络,是归一化数据所对应的网络,

这样训练出来的网络,投入使用时,必须遵守:    


   先将输入归一化    --->    在网络中计算输出    --->    将输出反归一化   


这样的过程是繁琐的,

且提取出的网络表达式,是对应归一化数据的,而有时我们希望直观看到原始数据 输入与输出的权重关系。
基于以上两点需求,本文我们讲解,如何将 归一化数据网络 映射回 原始数据的网络       

下面为方便讲述,我们称 归一化数据所对应的网络 为"归一化网络",称对应原始数据的网络为"原始网络"。



  02 . 符 号 说 明  


X       : 原始数据的输入 

y       : 原始数据的输出

W      : 原始网络的权重 

B        : 原始网络的阈值

     : 归一化后的X

      :归一化后的 y 

   : 归一化网络的权重

   : 归一化网络的阈值

hideNode  :指的是隐节点上的值,形如 W *X +b

hideAct( hideActive): 指隐节点上经过传递函数激活后的值,形如 tansig( W *X +b)




  03 . 转换方法  

   转换公式   

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




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






   例 子   



   背  景   


现有原始数据:




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




使用归一化数据,训练得到一个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 



  04 . 推导过程  


   输入->隐层 分析


重温-网络输入的归一化公式:



x  : 当前网络输入                        
:当前输入x归一化后的值     
 : 训练数据中输入的最小值   
  : 训练数据中输入的最大值 


对于原始网络,单个隐层的神经元的值为   




从最后两式可知,原始网络与归一化网络 的 隐层权值阈值 关系如下:

                              

  




   隐层->输出层 分析  


对单个输出神经元:

 


由反归一化公式:




综合得:




由最后两式可知,原始网络与归一化网络 的 输出层权值阈值 关系如下:



  


  结 束 语  


这样,利用上面讨论得到的两个公式,就能得到对应原始数据的权重和阈值,在网络投入使用时,就不再需要做归一化和反归一化的步骤。









 End 








联系小饼