我必须完成以下作业。我失去了所有这个问题的要点,因为我什至不知道从哪里开始。坦白说,我们没有被教导。我没有收到有关此作业的反馈,但是我真的想学习如何解决这些问题。有人可以让我知道从哪里开始吗?我没有从教授那里得到帮助,我感到非常沮丧。我要做的就是学习一些东西。我已经用谷歌搜索了一下,却找不到任何有帮助的东西。
假设我有一个包含m个特征的m个数据点的训练集。进一步假设我使用带有h个隐藏节点的神经网络来学习此数据,并且反向传播终止之前需要e纪元。使用big-O表示法回答以下每个问题。 (例如O(m ^ 2n ^ 5 / h)。
a。假设数据集中的每个特征都对应一个输入节点,则需要多少内存来存储该神经网络? b。训练这种神经网络分类器需要多少时间? C。培训结束后需要多少时间来确定测试点的等级?
答案 0 :(得分:2)
让我提供一些基本指导,以帮助您入门。您应该能够完成作业。
让我们假设我们有一个包含n
个输入,一个h
个神经元和m
个输出的隐藏层的神经网络。总共我们有很多神经元:
nbNeurons = h + m.
现在,神经元占用的内存量为O(w)
,其中w
是神经元接收的输入数量。原因是神经元每个输入具有一个权重,外加一些附加信息,例如bias
,learning rate
,output
,error
。由于所有这些都以一个常数为界,因此一个神经元所需的记忆与权重(即输入)的数量成正比。
隐藏层具有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)
现在,继续进行相同的推理,以在用一个训练数据样本训练网络时计算传播错误所需的操作次数。您将为样本提供网络,然后调整每个神经元的权重和偏差。最后,将此数量乘以时期数(因为您将重复同一组操作多次)。