system: [SYSTEM]

user: 3. 基于信息熵和PSO的DBN结构优化 3.1. DBN网络结构对性能的影响 DBN网络结构设计就是选择合适的隐层层数、神经元个数及网络参数来确定网络结构。在DBN网络中，如果隐层层数选择得当，模型性能可以明显的提高。通过增加隐层层数不仅可以降低模型的重构误差，而且能挖掘出数据中更为抽象的特征信息，由于隐层层数的增加网络结构通常会更加复杂，若隐层层数过少，模型的学习能力不足，不能较好的解决实际问题。因此，要选取合适的隐层层数。 隐层神经元个数的选择对DBN模型的性能影响也较大，其个数无论过多还是过少都会对模型的性能有明显的影响。若DBN模型的隐层神经元个数过少，不但学习能力而且信息处理能力都会显著降低，数据的特征信息提取能力也会大打折扣。反之，若隐层神经元个数过多，降低网络的重构误差能力可能会明显的提高，但网络会容易陷入局部极小值，没有最优解，同时模型的学习速度也会变慢，随之模型的泛化能力也会降低 [ 19 ]。直到现在仍没有一种科学和普遍的方法设定DBN隐层神经元个数，通常依靠经验进行设定。 学习率(Learn Rate)是DBN网络的重要参数之一，网络的循环训练过程中权重变化量由它决定。若设定的学习率较大，可能会导致权重变化较大，影响模型的稳定性；若设定的学习率较小，模型的训练时间会增加，且收敛速度会更慢。因此，无论学习率过大还是过小对DBN模型性能的影响都是显著的。对于学习率的设定大多需要多次调解或基于前人经验。 3.2. 基于信息熵确定DBN网络隐层层数 信息熵是科学家香农为描述一个系统所含信息的大小而定义的，即信息熵是信息的一个度量。故信息熵可以说是系统信息量大小的一个度量。采用信息熵的方法来确定网络的最佳层数，当DBN网络训练达到稳定程度后通过计算各隐含层信息熵来判断最佳层数，该层信息熵的值达到最大，则为最佳隐层层数。 假设一个系统的信息熵H(x)可以定义为： H ( x ) = E { log 1 p ( x i ) } = − ∑ i = 1 n P ( x i ) log 2 ( P ( x i ) ) (3.1) 式中： 0 ≤ P ( x i ) ≤ 1 且 ∑ i = 1 n P ( x i ) − 1 = 0 ，当 P ( x i ) = 0 时，规定 0 log 0 = 0 。 利用拉格朗日乘数构造法构造函数： G ( P ( x 1 ) ， P ( χ 2 ) ， ⋯ ， P ( x n ) ， λ ) = − ∑ i = 1 n P ( x i ) log 2 ( P ( x i ) ) + λ ( ∑ i = 1 n p ( x i ) ) − 1 (3.2) 令 α G α P ( x i ) = 0 ， α G λ = 0 ，可以得到： α G α P ( x i ) = − log 2 p ( x i ) − 1 + λ = 0 ;   i = 1 ， 2 ， 3 ， ⋯ ， n (3.3) ∑ i = 1 n P ( x i ) − 1 = 0 (3.4) 由于 − log 2 p ( x i ) − 1 + λ = 0 ，可以得到： p ( x i ) = exp ( λ − 1 ) ，   i = 1 ， 2 ， 3 ， ⋯ ， n (3.5) 由此得知： P ( x 1 ) = P ( χ 2 ) = ⋯ = P ( x n ) = 1 n (3.6) 当信息熵最大时： 将 P ( x 1 ) = P ( χ 2 ) = ⋯ = P ( x n ) = 1 n 代入式(19)得： H max ( n ) = log 2 ( n ) = H ( 1 / n ， 2 / n ， ⋯ ， 1 / n ) ≥ H ( p 1 ， p 2 ， ⋯ ， p n ) (3.7) 假设一个构建好的输入层与隐层之间的权重用矩阵W表示，且： W = [ W 11 ⋯ W n 1 ⋮ ⋱ ⋮ W 1 m ⋯ W n m ] 相邻两层之间的偏置用a表示，且： b = ( b 1 ， b 2 ， ⋯ ， b m ) T 即上一层的输出作为下一层的输入表示： h j = b j + v i ∗ w i j (3.8) 其中： v i 和 h j 表示相应层的第i，j个单元值，b为相邻两层间的连接权值。 假设某DBN的隐层神经元数为m，隐层数为n，且DBN网络每层神经元数可代表该层信息量，故可得出神经元数与隐层信息量之比为： η = m n (3.9) 在同一个DBN网络中，信息熵可度量每层信息量的大小。即： η = H 隐 层 H 输 入 层 (3.10) 由式(22)和(23)得： n = m H 隐 层 H 输 入 层 (3.11) 首先固定隐层神经元个数，然后进行仿真实验得到不同隐含层的信息熵如图3所示以及不同隐层层数下DBN预测性能如表1所示： 图3. 不同隐层层数的信息熵 Table 1 Performance prediction of DBN model under different hidden layer 隐层层数 MSE MAPE R² 1 0.5246 2.7737 0.7162 2 0.5351 2.1088 1.1635 3 0.4948 0.7217 0.9708 4 0.5984 0.8623 0.8474 5 0.536 1.3196 0.8022 6 0.7012 1.3384 0.4872 表1. 不同隐层层数下DBN模型预测性能 从图3和表1可以看出当隐层层数为3时，信息熵值达到最大，DBN模型评价指标MSE、MAPE、R²优于其它层数，因此选择3层作为最佳隐层层数。运用信息熵法确定合适的隐层层数，不仅可以使整个DBN预测模型能更好地提取输入数据的特征，而且有效的避免欠拟合和过拟合现象的发生，防止陷入局部最优值，使模型的重构误差最小，提高网络的学习效率和精度。 3.3. 基于PSO-DBN网络结构优化方法 3.3.1. 粒子群算法 PSO算法中，搜索空间上的每一个点都可以被想象成待优化问题的潜在解，这个点称之为“粒子”(Particle)，任何粒子都有一个被目标函数所决定的适应值，并且粒子移动的方向和距离都会有一个速度决定，然后粒子们就追随当前最优粒子在解空间搜索。其中粒子的速度和运动方向更新公式如下： v [ i + 1 ] = w × v [ i ] + c 1 × r a n d (   ) × ( p b e s t [ i ] − p r e s e n t [ i ] )     + c 2 × r a n d (   ) × ( g b e s t − p r e s e n t [ i ] ) (3.12) p r e s e n t [ i + 1 ] = p r e s e n t [ i ] + v [ i + 1 ] (3.13) 其中 v [ i ] 代表第i个粒子的速度，w代表惯性权值， c 1 和 c 2 表示学习参数， r a n d (   ) 表示在0~1之间的随机数， p b e s t [ i ] 代表第i个粒子搜索到的最优值，gbest代表整个集群搜索到的最优值， p r e s e n t [ i ] 代表第i个粒子的当前位置。 3.3.2. PSO-DBN模型训练过程 PSO算法流程： Input：种群规模m，惯性权重w，加速常数c 1 ，c 2 ，最大速度V max ，最大迭代次数G max 。 Output：DBN网络待优化参数。 1：初始化一群粒子 P o p { i } i = 1 m (规模为m)，随机初始化它们的位置和速度； 2：根据目标函数，计算每个微粒的适应度值； 3：训练DBN算法； 4：对每个粒子，将它当前的适应度值和它经历过的最好位置(p best )的值比较，若当前较好，则将其作为新的最好位置p best ； 5：对每个粒子，将它当前的适应度值和它整个种群的最好位置(g best )的值比较，若当前较好，则将其作为新的种群最好位置g best ； 6：按照方程(9)和(10)更新每个粒子的速度和位置； 7：判断是否达到结束条件(通常为足够好的适应值或达到最大迭代次数G max )，不满足就返回2，若满足则输出为DBN网络模型参数。 DBN网络训练两个阶段是预训练和反向微调。 Step1：模型预训练： 预训练的过程是从下往上的，逐层无监督训练每一个RBM网络，确保在特征映射过程中特征向量映射到不同的特征空间时，充分保留特征信息。最后映射到输出层，输出激励函数为softmax函数，通过和数据标签进行对比，随机初始化输出层权值w。 Step2：权值微调： 经过Step1预训练之后，得到了网络的初始权值 。通过在DBN的最后一层设置BP网络，根据样本数据标签反向传播有监督地微调初始权值。微调过程中，使用以下目标函数： f ( θ ) = − ∑ i y i T log y ′ i (3.14) 其中， θ = { w 1 ， w 2 ， ⋯ } ，即需要微调权值， y i 为样本标签， y ′ i 为预测结果。因为w是随机初始化，所以微调过程中需要先调整w的值，若干次迭代后，再微调 w 1 ， w 2 ， ⋯ 的值，直到输出误差足够小为止。 PSO-DBN训练流程如图4所示。 3.4. 仿真验证 表2是DBN预测模型优化前后参数对比表。 图4. PSO-DBN网络预测模型训练流程 图5. DBN网络预测模型优化前预测结果 图6. DBN网络预测模型优化后预测结果 Table 2 Experimental parameters and PSO optimization network parameter 实验参数 优化参数 隐层节点数 学习率 隐层节点数 学习率 6-45-45-45-1 0.1 6-72-27-65-1 0.2134 表2. 实验参数和PSO优化网络参数 用人工通过反复试验确定的DBN预测模型从图5可以看出虽然预测误差较小，但是对于极个别的测试样本预测结果不准确。从图6可以看出采用PSO优化后的DBN预测模型，其预测误差明显降低，几乎没有预测不准确的测试样本存在，模型预测精度显著提高。