【深度学习|学习笔记】Deep Belief Network(DBN,深度置信网络)起源、原理、发展和应用(附代码)

【深度学习|学习笔记】Deep Belief Network(DBN,深度置信网络)起源、原理、发展和应用(附代码)

【深度学习|学习笔记】Deep Belief Network(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 等预训练模型有启发意义
  • 仍然适用于特征提取、小样本学习和生成建模
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力毕业的小土博^_^

您的鼓励是我创作的动力!谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值