【问题标题】:Need help defining a simple neural network需要帮助定义一个简单的神经网络
【发布时间】:2020-11-05 13:51:28
【问题描述】:

我对此很陌生,我有几个问题。我有一个神经网络的代码 sn-ps 用 keras 创建了 python。该模型用于情感分析。使用了标记数据(情绪 = 1 或 0)的训练数据集。 现在我有几个关于如何描述神经网络的问题。

  model = Sequential()
  model.add(Dense(512, input_shape=(max_words,), activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(256, activation='sigmoid'))
  model.add(Dropout(0.5))
  model.add(Dense(2, activation='softmax'))


  model.compile(loss='categorical_crossentropy',
                optimizer='adam',
                metrics=['accuracy'])

  model.fit(train_x, train_y,
            batch_size=32,
            epochs=5,
            verbose=1,
            validation_split=0.1,
            shuffle=True)

我对以下许多术语不是很清楚,所以不要对我太苛刻。

  • 1:有什么可以使它成为情感分析的典型模型吗?
  • 2:是“词袋”吗? (我的猜测是肯定的,因为数据是使用分词器预处理的)
  • 3:它是“复杂的”吗?
  • 4:深吗?
  • 5:密度高 - 它的密度如何?
  • 6:密度(?)的原因是什么 - 数字:512、256、2
  • 7:它有多少层(包括/不包括输入和输出层?)
  • 8:是否有监督/无监督?
  • 9:三种不同的激活函数'relu'、'sigmoid'、'softmax'按使用顺序排列的原因是什么?

感谢您的帮助!

【问题讨论】:

  • 我还建议您浏览 this 博客。它会帮助你巩固你的概念。

标签: python tensorflow machine-learning keras neural-network


【解决方案1】:
  1. Categorical Cross Entropy,这是该神经网络的损失函数,可用于情绪分析。交叉熵损失返回不同类别的概率。在您的情况下,您需要两个可能的类别(01)的概率。
  2. 我不确定您是否使用了分词器,因为从您提供的代码中看不到它,但如果您使用了,那么是的,它是一个单词错误模型。 Bag of words 模型本质上为文本中的词根创建了一个存储空间。 来自Wikipedia,如果以下是您的文字:

约翰喜欢看电影。玛丽也喜欢电影。

那么,该文本的 BoW 将是:

{"John":1,"likes":2,"to":1,"watch":1,"movies":2,"Mary":1,"too":1};

  1. 您使用的网络架构不是Convolutional,而是一种前馈模型,它将一层的所有单元连接到下一层的所有单元,提供两层值的点积。
  2. 深度网络没有一个公认的定义。但是,根据经验,如果一个网络有超过 2 个中间层(不包括输入和输出层的层),那么它可以被认为是一个 deep 网络。
  3. 在上面提供的代码中,Dense 反映了这样一个事实,即第一层 (512) 中的所有单元都连接到下一层中的每个其他单元,即第一层和第二层之间总共有 512x256 个连接.
  4. 是的,第一层中的 512 个单元与第二层中的 256 个单元之间的连接导致 512x256 维的参数矩阵使其密集。但是这里Dense 的使用更多是从API 的角度而不是语义上的。同样,第二层和第三层之间的参数矩阵将是 256x2 维。
  5. 如果您排除输入层(有 512 个单元)和输出层(有 2 个可能的输出,即 0/1),那么您的网络在这里只有一层,有 256 个单元。
  6. 此模型是受监督的,因为情绪分析任务具有与每个输入数据点相关联的输出(正面或负面)。您可以将此输出视为网络的 主管,指示数据点是否具有正面或负面情绪。无监督任务没有与数据点关联的输出信号。
  7. 此处使用的激活函数用于为网络计算提供非线性。更详细一点,sigmoid 有一个很好的属性,它的输出可以解释为概率。因此,如果网络为一个数据点输出 0.89,那么这意味着该模型以 0.89 的概率将该数据点评估为正数。 sigmoid 的使用可能是出于教学目的,因为 ReLU 激活单元比 sigmoid/tanh 更受青睐,因为它具有更好的收敛性,而且我没有看到使用 sigmoid 代替 ReLU 的令人信服的理由。

【讨论】:

  • 非常感谢。这回答了我所有的问题。非常感谢您抽出宝贵的时间!
猜你喜欢
  • 2011-02-28
  • 2011-04-07
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2020-10-15
相关资源
最近更新 更多