神经网络和 big-o

Neural networks and big-o

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

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

一个。假设数据集中的每个特征对应一个输入节点,存储这个神经网络需要多少内存? b.训练这样一个神经网络 classifier 需要多少时间? C。训练完成后需要多少时间来确定一个测试点class?

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

假设我们有一个具有 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 对 sigmoid(或类似)函数的评估。这显然与 k 成正比,因此 O(k).

喂养我们的网络需要喂养 h 个隐藏神经元,每个神经元具有 n 个输入,因此 h*O(n) 加上喂养 m 个输出神经元,每个神经元具有 h 个输入, m*O(h)。所以,

feed time = h*O(n) + m*O(h) = O((n+m)*h)

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