Neural network 神经网络与big-o

Neural network 神经网络与big-o,neural-network,big-o,backpropagation,Neural Network,Big O,Backpropagation,我必须完成以下作业。我在这个问题上失去了所有的分数,因为我甚至不知道从哪里开始。坦率地说,我们没有学到这些。我没有收到关于这个家庭作业的反馈,但我真的很想学习如何解决这些问题。有人能告诉我从哪里开始吗?我非常沮丧,因为我没有得到教授的帮助。我只想学点东西。我已经在谷歌上搜索过了,但没有找到任何有用的东西 假设我有一个由m个数据点组成的训练集,具有n个特征。进一步假设我使用一个带有h个隐藏节点的神经网络来学习这些数据,在backprop终止之前需要e个历元。用大O符号回答下列问题。(例如O(m^2

我必须完成以下作业。我在这个问题上失去了所有的分数,因为我甚至不知道从哪里开始。坦率地说,我们没有学到这些。我没有收到关于这个家庭作业的反馈,但我真的很想学习如何解决这些问题。有人能告诉我从哪里开始吗?我非常沮丧,因为我没有得到教授的帮助。我只想学点东西。我已经在谷歌上搜索过了,但没有找到任何有用的东西

假设我有一个由m个数据点组成的训练集,具有n个特征。进一步假设我使用一个带有h个隐藏节点的神经网络来学习这些数据,在backprop终止之前需要e个历元。用大O符号回答下列问题。(例如O(m^2n^5/h)

a、 假设数据集中的每个特征对应于一个输入节点,存储该神经网络需要多少内存? b、 训练这样一个神经网络分类器需要多少时间?
c、 培训完成后,确定测试点的等级需要多少时间?

让我提供一些基本指导,让您开始。您应该能够完成家庭作业

假设我们有一个神经网络,有
n
输入,一个由
h
神经元和
m
输出组成的隐藏层。我们总共有这么多神经元:

nbNeurons = h + m.
现在,一个神经元所占据的记忆量是
O(w)
,其中
w
是神经元接收的输入数。原因是神经元每个输入有一个权重加上一些附加信息,如
偏差
学习率
输出
错误
。由于所有这些都是由一个常数限定的,因此一个神经元所需的内存是成比例的nal表示权重的数量,即输入

隐藏层有
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
对乙状结肠(或类似)功能的评估。这显然与
k
成正比,因此
O(k)

为我们的网络馈电需要为每个
n
输入的
h
隐藏神经元馈电,因此
h*O(n)
加上为每个
h
输入的
m
输出神经元,
m*O(h)

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

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

我不确定这是否适合CSE,但这是一个很好的一般性问题。机器学习小组有自己的描述方式,通常无法在范式之外表达,因此很难进入该领域。我不知道在我发现“theta”之前,我看了多少次相同的介绍性讲座我想我能理解,但我想验证一下。所以如果feed时间是hO(n)+mO(h),backprop时间会是hO(m)+nO(h)吗?后退应该与前进相同,因为我们接触的节点数量相同,对吗?这意味着训练网络所需的总时间为2(O((n+m)*h))*e或2e(O((n+m)*h)).我做得对吗?谢谢你的解释。这至少让我更接近了。另外,对于c部分,当它询问在训练完成后确定测试点的类别需要多少时间时,这将与前馈时间相同,对吗?当你最终发送测试数据时,数据只向前移动,不会太长er返回,它只向前一次。请告诉我我是否理解正确。在这两个注释中,您的理解都是正确的。还要注意,
2eO((n+m)h)=O((n+m)*h*e)
,因为
O
-符号“同化”了任何数值常量。谢谢!这帮了大忙。