在阅读了几篇关于深度学习和深度信念网络的论文后,我对它的工作原理有了一个基本的了解。但仍然坚持最后一步,即分类步骤。我在 Internet 上找到的大多数实现都与生成有关。(MNIST 数字)
是否有一些解释(或代码)可以讨论使用 DBN 对图像(最好是自然图像或对象)进行分类?
此外,一些方向的指示会非常有帮助。
在阅读了几篇关于深度学习和深度信念网络的论文后,我对它的工作原理有了一个基本的了解。但仍然坚持最后一步,即分类步骤。我在 Internet 上找到的大多数实现都与生成有关。(MNIST 数字)
是否有一些解释(或代码)可以讨论使用 DBN 对图像(最好是自然图像或对象)进行分类?
此外,一些方向的指示会非常有帮助。
基本思想
如今,用于图像分类问题的最先进的深度学习(例如ImageNet)通常是“深度卷积神经网络”(Deep ConvNets)。它们看起来大致类似于Krizhevsky 等人的 ConvNet 配置:
对于推理(分类),您将图像输入左侧(注意左侧的深度为 3,对于 RGB),通过一系列卷积过滤器进行处理,然后在右手边。这张图片特别适用于 ImageNet,它专注于对 1000 个类别的图像进行分类,因此 1000d 向量是“这张图片适合该类别的可能性的分数”。
训练神经网络只是稍微复杂一些。对于训练,您基本上重复运行分类,并且每隔一段时间进行一次反向传播(参见 Andrew Ng 的讲座)以改进网络中的卷积过滤器。基本上,反向传播询问“网络正确/错误地分类了什么?对于错误分类的东西,让我们稍微修复一下网络。”
执行
Caffe是深度卷积神经网络的一个非常快速的开源实现(比Krizhevsky 等人的cuda-convnet更快)。Caffe 代码非常容易阅读;每种类型的网络层(例如卷积层、最大池化层等)基本上都有一个 C++ 文件。
您应该在用于生成的网络之上使用 softmax 层 ( http://en.wikipedia.org/wiki/Softmax_activation_function ),并使用反向传播来微调最终网络。
这些天人们开始在分类层中使用 SVM。
深度学习正在非常自由和广泛地发展。