Questions tagged «neural-network»

网络结构受到生物神经元(脑细胞)简化模型的启发。神经网络通过有监督和无监督的技术进行训练以“学习”,并可用于解决优化问题,逼近问题,分类模式及其组合。



6
人工神经网络比支持向量机有什么优势?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 ANN(人工神经网络)和SVM(支持向量机)是有监督的机器学习和分类的两种流行策略。哪种方法更适合特定项目通常不是很清楚,我敢肯定答案总是“取决于情况”。通常,将两者与贝叶斯分类一起使用。 关于ANN与SVM的关于Stackoverflow的这些问题已经被提出: ANN和SVM分类 我的分类问题中ANN,SVM和KNN之间有什么区别 支持矢量机还是人工神经网络进行文本处理? 在这个问题中,我想具体了解ANN(特别是多层感知器)的哪些方面可能会使其更适合在SVM上使用?我问的原因是因为很容易回答相反的问题问题:支持向量机通常优于ANN,因为它们避免了ANN的两个主要缺点: (1)ANN通常会收敛于局部最小值而不是全局最小值,这意味着它们有时本质上是“缺少全局”(或缺少树木的森林) (2)人工神经网络经常过拟合如果训练时间太长,,这意味着对于任何给定的模式,神经网络可能会开始将噪声视为模式的一部分。 SVM不会遇到这两个问题。然而,将SVM完全替代ANN并不是很容易。那么,与支持向量机相比,人工神经网络具有哪些特定的优势,可能使其适用于某些情况?我已经列出了SVM相对于ANN的特定优势,现在,我希望看到ANN优势的列表(如果有)。

1
训练神经网络中出现极小的NaN值
我正在尝试在Haskell中实现神经网络架构,并在MNIST上使用它。 我正在使用hmatrix线性代数软件包。我的培训框架是使用pipes软件包构建的。 我的代码可以编译,并且不会崩溃。但是问题是,层大小(例如1000),最小批大小和学习率的某些组合会导致NaN计算中的值。经过一番检查,我发现极小的值(的顺序1e-100)最终出现在激活中。但是,即使这种情况没有发生,培训仍然无法进行。它的损失或准确性没有任何改善。 我检查并重新检查了我的代码,但对于问题的根源,我一无所知。 这是反向传播训练,它计算每一层的增量: backward lf n (out,tar) das = do let δout = tr (derivate lf (tar, out)) -- dE/dy deltas = scanr (\(l, a') δ -> let w = weights l in (tr a') * (w <> δ)) δout (zip (tail $ toList n) das) return (deltas) …

2
Keras输入说明:input_shape,units,batch_size,dim等
对于任何Keras层(Layer类),有人可以解释如何理解之间的区别input_shape,units,dim,等? 例如,文档说units指定图层的输出形状。 在神经网络的图像下面hidden layer1有4个单位。这是否直接转换为对象的units属性Layer?还是units在Keras中等于隐藏层中每个权重的形状乘以单位数? 简而言之,如何利用下面的图像来理解/可视化模型的属性,尤其是图层的属性?



7
我在哪里可以在Keras中调用BatchNormalization函数?
如果我想在Keras中使用BatchNormalization函数,那么是否仅需要在开始时调用一次? 我为此阅读了该文档:http : //keras.io/layers/normalization/ 我看不到该怎么称呼它。下面是我尝试使用它的代码: model = Sequential() keras.layers.normalization.BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None) model.add(Dense(64, input_dim=14, init='uniform')) model.add(Activation('tanh')) model.add(Dropout(0.5)) model.add(Dense(64, init='uniform')) model.add(Activation('tanh')) model.add(Dropout(0.5)) model.add(Dense(2, init='uniform')) model.add(Activation('softmax')) sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='binary_crossentropy', optimizer=sgd) model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2) 我问,因为如果我用第二行(包括批处理规范化)运行代码,而如果我不使用第二行运行代码,则会得到类似的输出。因此,要么我没有在正确的位置调用该函数,要么我猜它并没有太大的区别。


11
为什么binary_crossentropy和categorical_crossentropy对同一问题给出不同的性能?
我正在尝试训练CNN以按主题对文本进行分类。当我使用二进制交叉熵时,我的精度约为80%,而使用分类交叉熵时,我的精度约为50%。 我不明白为什么会这样。这是一个多类问题,这是否意味着我必须使用分类交叉熵,而具有二进制交叉熵的结果却毫无意义? model.add(embedding_layer) model.add(Dropout(0.25)) # convolution layers model.add(Conv1D(nb_filter=32, filter_length=4, border_mode='valid', activation='relu')) model.add(MaxPooling1D(pool_length=2)) # dense layers model.add(Flatten()) model.add(Dense(256)) model.add(Dropout(0.25)) model.add(Activation('relu')) # output layer model.add(Dense(len(class_id_index))) model.add(Activation('softmax')) 然后我将其categorical_crossentropy作为损失函数像这样编译它: model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 要么 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 从直觉上讲,为什么我要使用分类交叉熵是合理的,我不明白为什么使用二进制得到好的结果,而使用分类不好的原因。

7
神经网络中训练,验证和测试集之间有什么区别?
我正在使用该库来实现学习代理。 我已经生成了训练案例,但是我不确定是什么验证和测试集。 老师说: 70%应该是培训用例,10%是测试用例,其余20%应该是验证用例。 编辑 我有此训练代码,但我不知道何时停止训练。 def train(self, train, validation, N=0.3, M=0.1): # N: learning rate # M: momentum factor accuracy = list() while(True): error = 0.0 for p in train: input, target = p self.update(input) error = error + self.backPropagate(target, N, M) print "validation" total = 0 for p …


8
什么时候应该使用遗传算法而不是神经网络?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 是否有经验法则(或一组示例)来确定何时使用遗传算法而不是神经网络(反之亦然)来解决问题? 我知道在某些情况下可以将两种方法混合使用,但是我正在寻找两种方法之间的高级比较。


7
如何使用视觉输入训练人工神经网络来玩Diablo 2?
我目前正在尝试让ANN玩电子游戏,并且希望能从这里的美好社区得到一些帮助。 我已经选择了《暗黑破坏神2》,因此游戏是实时的,并且是从等轴测的角度来看,玩家可以控制相机居中放置的单个化身。 具体来说,任务是获得角色x经验值,而角色的生命值不会降低到0,而经验值是通过杀死怪物获得的。这是一个玩法示例: 现在,由于我希望网络仅基于它从屏幕上的像素获得的信息进行操作,因此它必须学习非常丰富的表示形式才能有效地进行游戏,因为这大概需要(至少是隐式地)知道如何将游戏世界分为对象以及如何与它们交互。 所有这些信息都必须以某种方式传到网上。我一辈子都想不起来如何训练这个东西。我唯一的想法是拥有一个单独的程序,从屏幕上直观地从游戏中提取某些本来是好事/坏事(例如健康,黄金,经验),然后在强化学习过程中使用该统计信息。我认为这将是答案的一部分,但我认为这还不够。从原始的视觉输入到面向目标的行为的抽象层次太多,以至于有限的反馈无法在我的一生中训练网络。 因此,我的问题是:您可以想到哪些其他方法来训练网络至少完成此任务的一部分?最好不要制作成千上万个带有标记的示例。 只是提供一些指导:我正在寻找增强学习的其他来源和/或在这种情况下提取有用信息的任何无监督方法。或采用监督算法,如果您可以想到一种无需手动标记就可以从游戏世界中获取标记数据的方法。 更新(04/27/12): 奇怪的是,我仍在努力,似乎正在取得进展。使ANN控制器正常工作的最大秘密是使用适合该任务的最先进的ANN架构。因此,我一直在使用由因式条件受限的玻尔兹曼机器组成的深度置信网,该机器以无监督的方式(在我玩游戏的视频中)进行了无监督的训练,然后通过时差反向传播(即使用标准的强化学习)进行了微调。前馈ANN)。 仍然在寻找更有价值的输入,特别是在实时选择动作以及如何为ANN处理编码彩色图像方面:-) 更新(10/21/15): 只是想起了我曾经回问过这个问题,并以为我应该提到这不再是一个疯狂的主意。自从我上次更新以来,DeepMind发表了他们的自然论文,内容涉及通过视觉输入让神经网络玩Atari游戏。确实,阻止我使用他们的体系结构玩《暗黑破坏神2》的一个有限子集的唯一原因是缺乏对基础游戏引擎的访问。渲染到屏幕然后将其重定向到网络实在太慢了,无法在合理的时间内进行训练。因此,我们可能不会很快看到这种机器人在玩Diablo 2,只是因为它会玩开源或具有对渲染目标的API访问权限的东西。(也许是地震?)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.