隐藏层在神经网络中意味着什么?

时间:2019-08-06 04:52:59

标签: python tensorflow neural-network

在标准的神经网络中,我试图直观地理解模型中隐藏层的含义。

我了解计算步骤,但是我仍然不知道如何考虑隐藏层以及如何解释(隐藏层)结果

例如,假设给定用于训练和预测0到9之间的手写数字的标准MNIST数据集,则模型将如下所示:

  1. 一个手写数字的图像将具有784个像素。

  2. 因为有784个像素,所以会有784个输入节点,每个节点的值就是像素强度(0-255)

  3. 每个节点都分支出来,这些分支就是权重。

  4. 我的下一层是我的隐藏层,隐藏层中给定节点的值是我的输入节点的加权总和(像素*权重)。

  5. 无论我得到什么值,我都会用S型函数压缩它,并且得到的值在0到1之间。

我从乙状结肠得到的那个数字。它确切代表什么?为什么有意义?我的理解是,如果要构建更多的隐藏层,我将使用最初的隐藏层的值,但是在这一点上,我仍然无法确定第一个隐藏层的值的确切含义。

谢谢!

3 个答案:

答案 0 :(得分:0)

考虑一个非常基本的AND,OR,NOT和XOR函数示例。

您可能已经知道,单个神经元仅在问题是线性可分离的情况下才适用。

在这种情况下,AND,OR和NOT函数是线性可分离的,因此可以使用单个神经元轻松进行处理。

但是考虑XOR函数。它不是线性可分离的。因此,单个神经元将无法预测XOR函数的值。 现在,XOR函数是AND,OR和NOT的组合。下面的等式是它们之间的关系:

  

a XOR b =(a AND(NOt b))OR((NOT a)AND b)

因此,对于XOR,我们可以使用包含三层的网络。 第一层将充当NOT功能,第二层将充当第一层输出的AND,最后输出层将充当第二隐藏层的OR。

注意:这仅是一个说明原因的示例,XOR可以在其他各种神经元组合中实现。

答案 1 :(得分:0)

神经网络中的隐藏层可以理解为既不是输入也不是输出的层,而是网络计算中的中间步骤。

在您的MNIST情况下,隐藏层中的网络状态是输入的经过处理的版本,从完整的数字到大约与这些数字有关的抽象信息。

这个想法扩展到了您在机器学习中会遇到的所有其他隐藏层案例-第二个隐藏层是输入数据的甚至更抽象的版本,递归神经网络的隐藏层是对发生的输入的解释收集信息,或者卷积神经网络中的隐藏状态是输入的解释版本,具有通过卷积过程隔离的某些特征。

重申一下,隐藏层是神经网络过程的中间步骤。该层中的信息是输入的抽象,并在输出处包含解决问题所需的信息。

答案 2 :(得分:0)

AFAIK,对于这种数字识别情况,一种思考方式是隐藏层的每个级别代表抽象级别。

现在,想象一下用于数字识别的神经网络只有3层,即1个输入层,1个隐藏层和1个输出层。

让我们看一个数字。要认识到它是一个数字,我们可以将数字的图片分解为一些更抽象的概念,例如直线,圆和弧。如果我们想识别6,我们首先可以识别图片中存在的更抽象的概念。对于6,在此示例中为圆弧和圆。对于8,它将是2个圆圈。对于1,它将是一行。

对于神经网络来说是相同的。我们可以将第1层用于像素,将第2层用于识别我们之前谈到的抽象概念,例如线,圆和圆弧,最后在第3层中确定它是哪个数字。

在这里我们可以看到输入从最抽象的层到不太抽象的层(像素->线,圆,圆弧->数字)经过一系列的层。在此示例中,我们只有1个隐藏层,但在实际实现中,最好根据您对神经网络的解释,将更多的隐藏层设置为1。有时我们甚至不必考虑每个层代表什么,让培训来帮助我们。无论如何,这就是培训的目的。