当前位置: 首页 > news >正文

【科普】贝叶斯神经网络与分形神经网络

贝叶斯神经网络

贝叶斯神经网络(Bayesian Neural Network,BNN)是一类结合了贝叶斯推断神经网络的模型。它的核心思想是:不像传统神经网络那样学习固定的参数值(即网络权重),BNN 会学习这些参数的概率分布。这样可以更好地量化不确定性,提高模型在不确定环境下的鲁棒性。


🔧 传统神经网络 vs 贝叶斯神经网络

特点传统神经网络贝叶斯神经网络
参数(权重)固定值(点估计)概率分布
输出单值预测预测分布
不确定性表示没有或依赖于 dropout 等近似方法内在地建模参数和预测的不确定性
优点高效、易训练不确定性建模、可避免过拟合
缺点不提供置信度推理成本高、训练复杂

🧠 BNN 的核心思想

BNN 采用贝叶斯公式:

P(θ∣D)=P(D∣θ)P(θ)P(D)P(\theta | D) = \frac{P(D | \theta) P(\theta)}{P(D)} P(θD)=P(D)P(Dθ)P(θ)

其中:

  • θ\thetaθ:模型参数(如网络权重)
  • P(θ)P(\theta)P(θ):先验分布
  • P(D∣θ)P(D|\theta)P(Dθ):似然函数
  • P(θ∣D)P(\theta|D)P(θD):后验分布

我们不再学习一个确定的 θ\thetaθ,而是学习其后验分布


🔁 推理过程

由于后验分布一般不可解析,BNN 常用近似推理方法:

常见推理方法包括:
  1. 变分推断(Variational Inference)
    用一个简单的分布 q(θ)q(\theta)q(θ) 去近似真实的后验分布 P(θ∣D)P(\theta | D)P(θD)

  2. 马尔可夫链蒙特卡洛(MCMC)采样
    精度高但计算开销大。

  3. 贝叶斯 dropout(Monte Carlo Dropout)
    在测试时启用 dropout 多次,近似后验采样,简单有效。


✅ BNN 的优势

  • 提供预测的不确定性(例如医疗、自动驾驶中的决策更可靠)
  • 抑制过拟合(通过先验正则)
  • 可与主动学习、强化学习等结合良好

🚫 挑战

  • 训练成本高(需要估计后验分布)
  • 模型复杂度增加
  • 推理速度慢于传统网络

🧪 PyTorch 中的 BNN 示例(简化版)

import torch
import torch.nn as nn
import torch.nn.functional as Fclass BayesianLinear(nn.Module):def __init__(self, in_features, out_features):super().__init__()self.w_mu = nn.Parameter(torch.Tensor(out_features, in_features).normal_(0, 0.1))self.w_logvar = nn.Parameter(torch.Tensor(out_features, in_features).normal_(-3, 0.1))def forward(self, x):epsilon = torch.randn_like(self.w_mu)w_sample = self.w_mu + torch.exp(0.5 * self.w_logvar) * epsilonreturn F.linear(x, w_sample)# 用法类似普通神经网络

📚 推荐资源

  • 论文:《Weight Uncertainty in Neural Networks》(Blundell et al., 2015)

    • Pyro(PyTorch 上的概率编程框架)
    • TensorFlow Probability
    • Bayes-by-Backprop

分形神经网络

分形神经网络(Fractal Neural Network, FNN)是一类受自然界分形结构启发的神经网络结构。它的核心理念是:通过自相似(self-similar)结构来构建深度网络,以提高模型的表达能力和泛化能力,同时缓解梯度消失或爆炸等深度网络中的常见问题。


🧠 什么是分形结构?

在数学中,分形(Fractal)是具有自相似性的结构——整体与局部在形态上是相似的。例如:雪花、费尔南德斯三角形、树木、血管等自然结构。


🔧 分形神经网络的核心结构

分形神经网络中,一个典型的模块通过递归组合更小的网络结构来构造大网络,如图:

F(C) = [F(C), F(C)] + C

这意味着:一个大的网络由多个小网络的组合构成,且每个小网络结构和大的结构是一样的(递归自我复制)。

🎯 举例:FractalNet(ICLR 2017)

FractalNet 是一个代表性的分形神经网络架构,由德国波恩大学提出。其特点是:

  • 多个路径、不同深度:网络中的每个分支代表一个不同深度的子网络
  • 自相似结构:使用统一的模块递归构建
  • drop-path 正则化:训练时随机丢弃某些路径,防止过拟合并增强鲁棒性

🏗️ 构造原理

一个深度为 n 的 Fractal Block 定义为:

Fn(x)=Concat(Fn−1(Fn−1(x)),Fn−1(x))F_{n}(x) = \text{Concat}(F_{n-1}(F_{n-1}(x)), F_{n-1}(x)) Fn(x)=Concat(Fn1(Fn1(x)),Fn1(x))

其中 F_0 是基础卷积模块。

每一层都由前面层的重复结构构建,最终形成“树状结构”。


✅ 优势

优势说明
多路径学习类似 ResNet 的跳跃连接,多个深度路径并行
稀疏激活每个样本可能只激活部分路径,形成类似 ensemble 效果
容易训练由于浅层路径存在,梯度传导不再依赖太深的网络
自动选择路径drop-path 类似强化学习中的 policy sampling,可自动选择最优深度

🧪 FractalNet 的 PyTorch 伪代码结构

class FractalBlock(nn.Module):def __init__(self, conv, depth):super().__init__()self.depth = depthif depth == 1:self.block = conv()else:self.left = FractalBlock(conv, depth-1)self.right = FractalBlock(conv, depth-1)def forward(self, x):if self.depth == 1:return self.block(x)else:left = self.left(self.left(x))right = self.right(x)return (left + right) / 2

你可以将 conv() 替换为任意的 CNN 层模块。


🤔 分形神经网络 vs ResNet vs DenseNet

特性ResNetDenseNetFractalNet
跳跃连接是(结构性)
多路径结构
自动路径选择是(drop-path)
模块构造方式手动累积连接递归分形构造

📚 推荐资源

  • 论文:FractalNet: Ultra-Deep Neural Networks without Residuals
  • 视频讲解:[YouTube 搜索 “FractalNet Explained”]
  • PyTorch实现示例:[GitHub 上搜索 “FractalNet PyTorch”]

如果你想我为你:

  • 画出 FractalNet 的结构图
  • 写一个完整的 FractalNet 网络代码
  • 分析它在图像分类或NLP中的表现
http://www.lryc.cn/news/605801.html

相关文章:

  • 达梦(DM8)常用管理SQL命令(3)
  • Union Application
  • cmake和makefile示例
  • 链表算法题
  • NTLDR源代码分析之从GetSector函数到blread函数
  • vue3.0 + TypeScript 中使用 axios 同时进行二次封装
  • Coze开源版本地部署指南
  • 界面组件DevExpress WPF中文教程:网格视图数据布局 - 数据单元格
  • [源力觉醒 创作者计划]_文心4.5开源测评:国产大模型的技术突破与多维度能力解析
  • nuxt3: trpc-nuxt和sqlite导致的503错误
  • [免费]基于Python的招聘职位信息推荐系统(猎聘网数据分析与可视化)(Django+requests库)【论文+源码+SQL脚本】
  • C++11原子操作实现公平自旋锁
  • 如何快速部署主数据管理解决方案?
  • C# XML 文件
  • 深度学习入门:用pytorch跑通GitHub的UNET-ZOO项目
  • mapper.xml中的<include>是什么
  • 摄像头模块的调焦原理
  • uni-app用css编写族谱树家谱树
  • 量子安全:微算法科技(MLGO)基于比特币的非对称共识链算法引领数字经济未来
  • 本地通信的选择:为什么组播比广播更适合多进程协作?
  • NAS、DAS、SAN三种存储介绍
  • [12月考试] E
  • 计算机网络学习--------三次握手与四次挥手
  • 深度学习G5周:Pix2Pix理论与实战
  • docker运行时目录/var/lib/docker 学习
  • npm从入门到精通一篇全
  • 蚂蚁财富招Java高级研发
  • java笔记——ConcurrentLinkedQueue
  • LangGraph底层原理与基础应用入门
  • Visual Studio调试技巧与函数递归详解