神经网络和big-o

时间:2018-12-19 01:42:18

标签: neural-network big-o backpropagation

我必须完成以下作业。我失去了所有这个问题的要点,因为我什至不知道从哪里开始。坦白说,我们没有被教导。我没有收到有关此作业的反馈,但是我真的想学习如何解决这些问题。有人可以让我知道从哪里开始吗?我没有从教授那里得到帮助,我感到非常沮丧。我要做的就是学习一些东西。我已经用谷歌搜索了一下,却找不到任何有帮助的东西。

假设我有一个包含m个特征的m个数据点的训练集。进一步假设我使用带有h个隐藏节点的神经网络来学习此数据,并且反向传播终止之前需要e纪元。使用big-O表示法回答以下每个问题。 (例如O(m ^ 2n ^ 5 / h)。

a。假设数据集中的每个特征都对应一个输入节点,则需要多少内存来存储该神经网络? b。训练这种神经网络分类器需要多少时间? C。培训结束后需要多少时间来确定测试点的等级?

1 个答案:

答案 0 :(得分:2)

让我提供一些基本指导,以帮助您入门。您应该能够完成作业。

让我们假设我们有一个包含n个输入,一个h个神经元和m个输出的隐藏层的神经网络。总共我们有很多神经元:

nbNeurons = h + m.

现在,神经元占用的内存量为O(w),其中w是神经元接收的输入数量。原因是神经元每个输入具有一个权重,外加一些附加信息,例如biaslearning rateoutputerror。由于所有这些都以一个常数为界,因此一个神经元所需的记忆与权重(即输入)的数量成正比。

隐藏层具有h个神经元,每个神经元具有n个输入,因此它需要h*O(n)个存储单元。输出层有m个神经元,每个都有h个输入,因此有m*O(h)个。因此

memory = h*O(n) + m*O(h) = O(h*n) + O(m*h) = O((n+m)*h)

使用k输入来输入神经元需要进行k乘法加上k+1加法和1对S型(或类似)函数的求值。这显然与k成正比,因此也与O(k)成正比。

馈送我们的网络需要向h个隐藏的神经元分别提供n个输入,因此h*O(n)加上向m个输出神经元分别提供h个输入,{{ 1}}。所以,

m*O(h)

现在,继续进行相同的推理,以在用一个训练数据样本训练网络时计算传播错误所需的操作次数。您将为样本提供网络,然后调整每个神经元的权重和偏差。最后,将此数量乘以时期数(因为您将重复同一组操作多次)。