【深度学习|学习笔记】Deep Belief Network(DBN,深度置信网络)起源、原理、发展和应用(附代码)
【深度学习|学习笔记】Deep Belief Network(DBN,深度置信网络)起源、原理、发展和应用(附代码)
【深度学习|学习笔记】Deep Belief Network(DBN,深度置信网络)起源、原理、发展和应用(附代码)
文章目录
- 【深度学习|学习笔记】Deep Belief Network(DBN,深度置信网络)起源、原理、发展和应用(附代码)
- 一、起源:深度学习的奠基者之一
- 1.1 提出背景
- 二、原理:由 RBM 堆叠构成的无监督-有监督结合网络
- 2.1 基本结构
- 2.2 两阶段训练机制
- 2.3 RBM简述
- 三、发展与演进
- 3.1 高光时期(2006-2012)
- 3.2 转型期(2012年以后)
- 3.3 当前定位
- 四、改进方向
- 4.1 Deep Boltzmann Machine(DBM)
- 4.2 Discriminative DBN
- 4.3 DBN + CNN / RNN
- 五、应用场景
- 六、Python代码实现示例(使用 Scikit-learn 实现 DBN 结构)
- 七、代码解析要点
- 八、结语:DBN 的深远意义
欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通
”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/146957339
一、起源:深度学习的奠基者之一
1.1 提出背景
2006年,Geoffrey Hinton、Simon Osindero 和 Yee-Whye Teh 在《A fast learning algorithm for deep belief nets》中首次系统提出 DBN 概念,旨在解决深层神经网络中梯度消失、训练困难、过拟合等问题。
- 在深度学习尚未广泛流行之前,这项工作点燃了学界对“深层神经网络可训练”的热情,DBN 被认为是现代深度学习浪潮的起点。
二、原理:由 RBM 堆叠构成的无监督-有监督结合网络
2.1 基本结构
- DBN 是由多个 受限玻尔兹曼机(RBM) 层层堆叠而成的网络,每个 RBM 是一个生成模型,能够学习数据的潜在表示。
- 结构示意:
输入层 → RBM1 → RBM2 → ... → RBMn → 输出层(分类器)
2.2 两阶段训练机制
- 无监督预训练(逐层训练):
每层作为独立 RBM 训练,学习当前层的特征表示。 - 有监督微调(全局调优):
将全部层连接后加入输出层(如Softmax/MLP),使用反向传播算法进行有监督微调。
2.3 RBM简述
- 可视单元:输入层神经元
- 隐藏单元:学习到的特征
- 权重更新方式:使用对比散度(Contrastive Divergence)算法进行快速近似学习
三、发展与演进
3.1 高光时期(2006-2012)
- DBN 一度成为图像识别、语音识别等任务的主力模型。
- 被称为深度学习复兴的开端。
3.2 转型期(2012年以后)
- 随着卷积神经网络(CNN)和循环神经网络(RNN)的兴起,以及 GPU 的广泛使用,端到端训练更加高效,DBN 热度减退。
3.3 当前定位
- 虽不再主流,但在小样本学习、生成建模、低资源任务、教学场景仍具参考价值。
- 为当前的 预训练-微调范式(如BERT、GPT) 提供理论基础。
四、改进方向
4.1 Deep Boltzmann Machine(DBM)
- 强化了隐藏层之间的双向连接,更好地建模联合概率分布,但训练复杂。
4.2 Discriminative DBN
- 将预训练的 DBN 用作判别模型,不仅学习表示,还聚焦判别任务。
4.3 DBN + CNN / RNN
- 结合卷积结构和序列结构,提升模型泛化能力和对时空特征建模能力。
五、应用场景
六、Python代码实现示例(使用 Scikit-learn 实现 DBN 结构)
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neural_network import BernoulliRBM
from sklearn.pipeline import Pipeline
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import classification_report# 1. 加载手写数字数据
digits = load_digits()
X = digits.data
y = digits.target# 2. 数据归一化
X = MinMaxScaler().fit_transform(X)# 3. 划分训练/测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)# 4. 构建 DBN:RBM1 -> RBM2 -> MLP
rbm1 = BernoulliRBM(n_components=128, learning_rate=0.05, n_iter=10, random_state=0)
rbm2 = BernoulliRBM(n_components=64, learning_rate=0.05, n_iter=10, random_state=0)mlp = MLPClassifier(hidden_layer_sizes=(64,), max_iter=200, random_state=0)# 5. 管道集成
dbn = Pipeline(steps=[('rbm1', rbm1), ('rbm2', rbm2), ('mlp', mlp)])# 6. 模型训练
dbn.fit(X_train, y_train)# 7. 测试与评估
y_pred = dbn.predict(X_test)
print(classification_report(y_test, y_pred))
七、代码解析要点
八、结语:DBN 的深远意义
虽然 DBN 现在不是主流方法,但它:
- 是现代深度学习的历史起点
- 提出了逐层预训练理念,对 GPT、BERT 等预训练模型有启发意义
- 仍然适用于特征提取、小样本学习和生成建模