深度学习革命背后:DBN、AlexNet、GAN 等神级架构,究竟藏着怎样的 AI 崛起密码?(附deepseek)

3. 深度学习革命(2006年至今)


2006年:深度学习奠基——深度信念网络(DBN)

数学原理
DBN由多层受限玻尔兹曼机(RBM)堆叠而成,通过无监督预训练初始化权重,再通过反向传播微调。

  • RBM的能量函数
    E ( v , h ) = − ∑ i a i v i − ∑ j b j h j − ∑ i , j v i w i j h j E(v, h) = -\sum_{i} a_i v_i - \sum_{j} b_j h_j - \sum_{i,j} v_i w_{ij} h_j E(v,h)=iaivijbjhji,jviwijhj
    其中 ( v ) 是可见层,( h ) 是隐藏层,( a )、( b ) 是偏置,( w_{ij} ) 是权重。
  • 联合概率分布
    P ( v , h ) = 1 Z e − E ( v , h ) ( Z 为 归 一 化 因 子 ) P(v, h) = \frac{1}{Z} e^{-E(v, h)} \quad (Z为归一化因子) P(v,h)=Z1eE(v,h)(Z)
  • 对比散度(CD-k)训练
    通过采样更新权重:
    Δ w i j = η ( ⟨ v i h j ⟩ data − ⟨ v i h j ⟩ recon ) \Delta w_{ij} = \eta (\langle v_i h_j \rangle_{\text{data}} - \langle v_i h_j \rangle_{\text{recon}}) Δwij=η(vihjdatavihjrecon)

代码实现(RBM训练)

import numpy as np

class RBM:
    def __init__(self, n_visible, n_hidden):
        self.W = np.random.randn(n_visible, n_hidden) * 0.1
        self.a = np.zeros(n_visible)
        self.b = np.zeros(n_hidden)
    
    def sigmoid(self, x):
        return 1 / (1 + np.exp(-x))
    
    def sample_h(self, v):
        h_prob = self.sigmoid(np.dot(v, self.W) + self.b)
        return h_prob, np.random.binomial(1, h_prob)
    
    def sample_v(self, h):
        v_prob = self.sigmoid(np.dot(h, self.W.T) + self.a)
        return v_prob, np.random.binomial(1, v_prob)
    
    def train(self, data, lr=0.01, k=1, epochs=100):
        for _ in range(epochs):
            for v0 in data:
                # Positive phase
                h0_prob, h0 = self.sample_h(v0)
                # Negative phase (CD-k)
                vk = v0
                for _ in range(k):
                    _, hk = self.sample_h(vk)
                    vk_prob, vk = self.sample_v(hk)
                # Update weights
                self.W += lr * (np.outer(v0, h0_prob) - np.outer(vk, hk))
                self.a += lr * (v0 - vk_prob)
                self.b += lr * (h0_prob - hk)

# 示例:训练RBM学习MNIST数据
from sklearn.datasets import fetch_openml
mnist = fetch_openml('mnist_784', version=1)
data = mnist.data / 255.0
data = np.round(data)  # 二值化

rbm = RBM(n_visible=784, n_hidden=256)
rbm.train(data.sample
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值