深度置信网络 Deep belief network

什么是深层信仰网络?

深度信念网络是使用概率和无监督学习来产生输出的算法。它们由二进制潜在变量组成,并且包含无向层和有向层。

与其他模型不同,深度信任网络中的每一层都学习整个输入。在卷积神经网络中,第一层仅过滤基本特征(例如边缘)的输入,而第二层则重组前一层找到的所有简单模式。另一方面,深度信仰网络在全局范围内运作,并按顺序调节每一层。

深度信任网络(DBN)架构

网络就像一堆受限的玻尔兹曼机器(RBM),其中每层中的节点都连接到上一层和下一层中的所有节点。但是,与RBM不同,深度信任网络中的节点不在其层内进行横向通信。对称权重的网络连接不同的层。

顶层中的连接是无向的,并且由它们之间的连接形成关联存储器。较低级别的连接是定向的。

隐藏层中的节点扮演两个角色-它们充当其之前节点的隐藏层,并充当其后节点的可见层。这些节点标识数据中的相关性。

深度信仰网络如何工作?

贪婪学习算法用于预训练深度信念网络。这是一个解决问题的方法,涉及在序列中的每一层进行最优选择,最终找到全局最优值。

贪婪的学习算法从底层开始,然后向上移动,以微调生成权重。该学习是逐层进行的,这意味着深度信念网络的各层一次被训练。因此,每一层还接收不同版本的数据,并且每一层都使用前一层的输出作为输入。

贪婪学习算法可用于训练深度信任网络,因为它们快速有效。此外,它们有助于优化每一层的权重。

深度信念网络的应用

影像识别

深度信念网络可用于图像识别。图片将是输入,类别将是输出。这项技术具有广泛的应用,范围从相对简单的任务(如照片整理)到关键功能(如医学诊断)。例如,可以执行图像识别的智能小孢子可以用来对病原体进行分类。这将减轻严重流行病期间对稀有专家的依赖,减少响应时间。

视频识别

视频识别还使用深度信任网络。视频识别与视觉类似,因为它可以在视频数据中找到含义。例如,它可以识别物体或人的手势。它可以用于许多不同的领域,例如家庭自动化,安全性和医疗保健。

运动捕捉数据

运动捕获数据涉及跟踪对象或人的运动,并且还使用深度信任网络。运动捕捉非常棘手,因为一台机器可能会很快失去对某个人的跟踪,例如,如果另一个看上去相似的人进入帧,或者某物暂时遮挡了他们的视线。因此,运动捕捉不仅取决于物体或人的外观,而且还取决于速度和距离。运动捕捉广泛用于视频游戏开发和电影制作中。

深度信念神经网络如何演变?
第一代神经网络使用的感知器通过考虑“weight”或来识别特定物体或其他物体。但是,感知器只能在基本级别上有效,而对先进技术则无济于事。为了解决这些问题,第二代神经网络引入了反向传播的概念,其中将接收到的输出与所需的输出进行比较,并将误差值减小为零。支持向量机通过参考先前输入的测试用例来创建和理解更多的测试用例。接下来是一个称为信念网络的循环图,该循环图有助于解决与推理和学习问题有关的问题。随后是Deep Belief Networks,它帮助创建了要存储在叶节点中的无偏值。

受限玻尔兹曼机
深度信任网络由无监督的网络(如RBM)组成。在此,每个子网的不可见层是下一个子网的可见层。隐藏或不可见的层彼此不连接,并且在条件上是独立的。在所有可见层和隐藏层上建立联合配置网络的可能性取决于联合配置网络的能量与所有其他联合配置网络的能量相比。

训练深层置信网络
第一步是训练一层可以直接从像素获得输入信号的属性。下一步是将该层的值视为像素,并在第二个隐藏层中学习先前获得的特征。每次将另一层属性或特征添加到置信网络时,训练数据集的对数概率的下限将得到改善。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的深度置信网络Deep Belief Network,DBN)的 Matlab 程序示例: ```matlab % 加载数据 load mnist_uint8; % 转换数据类型 train_x = double(train_x) / 255; test_x = double(test_x) / 255; train_y = double(train_y); test_y = double(test_y); % 初始化 DBN 模型 dbn.sizes = [100 100 100]; opts.numepochs = 5; opts.batchsize = 100; opts.momentum = 0; opts.alpha = 1; % 训练 DBN 模型 dbn = dbnsetup(dbn, train_x, opts); dbn = dbntrain(dbn, train_x, opts); % Fine-tuning DBN 模型 nn = dbnunfoldtonn(dbn, 10); nn.activation_function = 'sigm'; nn.learningRate = 1; nn.momentum = 0; opts.numepochs = 100; opts.batchsize = 100; % 训练 NN 模型 [nn, L] = nntrain(nn, train_x, train_y, opts); % 测试 NN 模型 [er, bad] = nntest(nn, test_x, test_y); % 显示结果 disp(er); ``` 在这个示例中,我们首先加载 MNIST 数据集,然后将其转换为 Matlab 可以处理的格式。接下来,我们初始化一个 DBN 模型,使用 dbnsetup 函数将其设置为一个三层深度置信网络,每层 100 个神经元。然后我们使用 dbntrain 函数对模型进行预训练。最后,我们使用 dbnunfoldtonn 函数将预训练的模型展开为一个标准的神经网络,使用 nntrain 函数对其进行微调,并使用 nntest 函数对其进行测试。 需要注意的是,这只是一个简单的示例程序,实际上深度置信网络的训练和微调需要更加复杂的技术和算法。此外,Matlab 还提供了许多其他的神经网络工具箱和函数,可以方便地进行深度学习的研究和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值