????????寬度學習(Broad Learning System, BLS)是一種有效的神經網絡學習框架,旨在通過擴展網絡的寬度而不是深度來提高學習能力和效率。與傳統的深度學習相比,寬度學習通過堆疊多層特征節點和增強節點來構建網絡,從而避免了深度學習中常見的梯度消失和復雜的訓練過程。
BLS結構以及增量算法?
????????寬度學習系統在 RVFLNN 基礎上做出了改進。首先,寬度學習可以利用別的模型提取到的特征來訓練,即可以和別的機器學習算法靈活地結合。其次,寬度學習中加入了增量學習算法,它允許在網絡結構中加入新的結點時,以很小的計算開銷來更新網絡權重。這一特性使 BLS 在面對大規模的數據時,相對于深度結構具有巨大的優勢。
通過 (a) 圖基于 Pytorch 簡單實現的 BLS 模型?:
class BLS(nn.Module):def __init__(self, input_dim, num_feature_nodes, num_enhancement_nodes, output_dim):super(BLS, self).__init__()# Step 1: Define feature mapping layersself.feature_layers = nn.ModuleList([nn.Sequential(nn.Linear(input_dim, num_feature_nodes),nn.ReLU()) for _ in range(num_feature_nodes)])# Step 2: Define enhancement nodesself.enhancement_layers = nn.ModuleList([nn.Sequential(nn.Linear(num_feature_nodes * num_feature_nodes, num_enhancement_nodes), # 100,400nn.ReLU()) for _ in range(1)])# Step 3: Output layerself.output_layer = nn.Linear(num_feature_nodes * num_feature_nodes + num_enhancement_nodes, output_dim)def forward(self, x):print(x.shape) # torch.Size([32, 224])# Generate feature nodes Z^nZ = torch.cat([layer(x) for layer in self.feature_layers], dim = 1)print(Z.shape) # torch.Size([32, 100])# Generate enhancement nodes H^mH = torch.cat([layer(Z) for layer in self.enhancement_layers], dim = 1)print(H.shape) # torch.Size([32, 25])# Concatenate and predictcombined = torch.cat((Z, H), dim = 1)print(combined.shape) # torch.Size([32, 125])output = self.output_layer(combined)print(output.shape) # torch.Size([32, 1])return output
通過 (b) 圖基于 Pytorch 簡單實現的 BLS 模型 :
class BLSv2(nn.Module):def __init__(self, input_dim, num_feature_nodes, num_enhancement_nodes, output_dim):super(BLSv2, self).__init__()# Step 1: Define feature mapping layersself.feature_layers = nn.ModuleList([nn.Sequential(nn.Linear(input_dim, num_feature_nodes),nn.ReLU()) for _ in range(num_feature_nodes)])# Step 2: Define enhancement nodesself.enhancement_layers = nn.ModuleList([nn.Sequential(nn.Linear(num_feature_nodes * num_feature_nodes, num_enhancement_nodes), # 100,20nn.ReLU()) for _ in range(num_enhancement_nodes)])# Step 3: Output layerself.output_layer = nn.Linear(num_feature_nodes * num_feature_nodes + num_enhancement_nodes * num_enhancement_nodes, output_dim)def forward(self, x):print(x.shape) # torch.Size([32, 224])# Generate feature nodes Z^nZ = torch.cat([layer(x) for layer in self.feature_layers], dim = 1)print(Z.shape) # torch.Size([32, 100])# Generate enhancement nodes H^mH = torch.cat([layer(Z) for layer in self.enhancement_layers], dim = 1)print(H.shape) # torch.Size([32, 25])# Concatenate and predictcombined = torch.cat((Z, H), dim = 1)print(combined.shape) # torch.Size([32, 125])output = self.output_layer(combined)print(output.shape) # torch.Size([32, 1])return output
更多資料:?
寬度學習系統(BLS)的原理、變體形式及當前應用(隨時更新……)「建議收藏」-騰訊云開發者社區-騰訊云 (tencent.com)
DeepLearning | Broad Learning System 寬度學習系統 : 高效增量式淺層神經網絡-CSDN博客