理解" Deep MNIST for Experts"

时间:2016-07-05 10:32:46

标签: machine-learning neural-network tensorflow deep-learning

我想了解Deep MNIST for Experts。我非常清楚神经网络和深度学习如何在高层次上运作,但我很难理解细节。

在教程中,第一次编写并运行一个简单的单层模型。这包括定义模型x * W + b,计算熵,通过梯度体积最小化熵并评估结果。

我发现第一部分很容易理解。

在第二部分中,构建一个简单的多级网络,并应用一些卷积和池。然而,这里的事情开始变得棘手。他们写道:

  

我们现在可以实现我们的第一层了。它将由卷积组成,然后是最大池。卷积将为每个5x5补丁计算32个特征。

5x5补丁应该等于25像素。对?为什么要从25像素中提取32个特征?为什么您需要比数据点更多的功能?这怎么有意义呢?感觉就像他们正在升级"从25维到32维的问题。感觉32个维度中的7个应该是还原的。

其次。卷积使用函数truncated_normal,它只选择接近均值的随机值。为什么这是一个很好的手写数字建模模型?

第三。网络中的第二层似乎再次做同样的事情。更多的层是否更好,我可以用单层实现相同的结果吗?

2 个答案:

答案 0 :(得分:4)

我认为视觉模型可以大大降低理解的难度,所以也许这可以帮助你更好地理解:

http://scs.ryerson.ca/~aharley/vis/conv/

这是一个卷积神经网络的三维可视化,它有两个卷积层,后面跟着两个最大池层,你可以点击每个层中的一个3D立方体来检查值。

答案 1 :(得分:2)

因此,在尝试了解实际情况之前,您必须阅读很多关于CNN / NN的内容。这些例子实际上不应该是NN的入门课程,这些确实假设您知道CNN是什么。

  

5x5补丁应该等于25像素。对?为什么要从25像素中提取32个特征?为什么您需要比数据点更多的功能?这怎么有意义呢?感觉它们正在“提升”从25维到32维的问题。感觉32个维度中的7个应该是还原的。

这是完全不同的“抽象级别”,您将不相关的对象相互比较,这显然令人困惑。他们正在创建32个过滤器,每个过滤器将通过图像中的5x5卷积内核线性映射整个图像。例如,一个这样的滤波器可以是边缘检测器:

0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

另一个可以检测对角线

1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1

等。为什么32?只是一个神奇的数字,经验测试。就CNN而言,这实际上是非常小的数字(请注意,只是为了检测灰度图像中的基本边缘,您已经需要8个不同的滤镜!)。

  

其次。卷积使用truncated_normal函数,它只选择接近均值的随机值。为什么这是一个很好的手写数字建模模型?

这是权重初始值设定项。这不是“手工编号建模的模型”,这只是优化这部分参数空间的起点。为何正常分配?我们有一些数学直觉如何初始化神经网络,特别是假设ReLU激活。以随机方式初始化非常重要,这可以确保您的许多神经元最初处于活动状态,因此您不会获得0个衍生物(因此无法使用典型的优化器学习)。

  

第三。网络中的第二层似乎再次做同样的事情。更多的层是否更好,我可以用单层实现相同的结果吗?

原则上,即使没有卷积,您也可以使用单隐藏层前馈网对所有内容进行建模。但是,它可能需要 exponentialy尽可能多的隐藏单位,以及我们没有的完美优化策略(可能它们甚至不存在!)。网络深度使您能够以更少的参数表达更复杂(并且对于相同情况更有用)的功能,而且我们或多或少知道如何优化它。但是你应该避免经常陷入“更深更好”的陷阱。事实并非如此。如果您的数据的重要特征可以有效地表达为抽象的层次结构,那么这是真的。对于图像(越来越复杂的图案,第一个边缘,然后是一些线条和曲线,然后是补丁,然后是更复杂的概念等)以及文本,声音等都是如此,但在您尝试将DL应用于新任务之前你应该问问自己这是否(或者至少可能)适用于你的案件。使用过于复杂的模型通常比简单更糟糕。