我知道梯度下降和反向传播定理.我没有得到的是:什么时候使用偏见很重要,你如何使用它?
例如,在映射AND函数时,当我使用2个输入和1个输出时,它不会给出正确的权重,但是,当我使用3个输入(其中1个是偏置)时,它会给出正确的权重.
训练多层感知器时,纪元和迭代之间有什么区别?
artificial-intelligence terminology machine-learning neural-network deep-learning
ANN(人工神经网络)和SVM(支持向量机)是监督机器学习和分类的两种流行策略.通常不清楚哪种方法对特定项目更好,而且我确定答案总是"它取决于".通常,使用两者的组合以及贝叶斯分类.
有关ANN与SVM的问题已经在Stackoverflow上提出了这些问题:
在这个问题中,我想具体了解人工神经网络(特别是多层感知器)的哪些方面可能需要在SVM上使用?我问的原因是因为很容易回答相反的问题:支持向量机通常优于人工神经网络,因为它们避免了人工神经网络的两个主要缺点:
(1)人工神经网络通常会集中在局部最小值而不是全局最小值,这意味着它们有时基本上"错过了大局"(或者错过了树木的森林)
(2)如果训练时间过长,人工神经网络常常过度拟合,这意味着对于任何给定的模式,人工神经网络可能会开始将噪声视为模式的一部分.
SVM不会遇到这两个问题中的任何一个.然而,并不是很明显SVM应该是人工神经网络的完全替代品.那么人工神经网络对SVM有哪些具体优势可能使其适用于某些情况?我已经列出了SVM相对于ANN的特定优势,现在我想看一下ANN优势列表(如果有的话).
在下面的TensorFlow函数中,我们必须在最后一层中提供人工神经元的激活.我明白了 但我不明白为什么它被称为logits?这不是一个数学函数吗?
loss_function = tf.nn.softmax_cross_entropy_with_logits(
logits = last_layer,
labels = target_output
)
Run Code Online (Sandbox Code Playgroud) machine-learning neural-network deep-learning tensorflow cross-entropy
对于任何Keras层(Layer类),可有人解释如何理解之间的区别input_shape,units,dim,等?
例如,doc说明了units指定图层的输出形状.
在神经网络的图像下面hidden layer1有4个单位.这是否直接转换为对象的units属性Layer?或者units在Keras中,隐藏层中每个权重的形状是否等于单位数?
当我使用Theano或Tensorflow训练我的神经网络时,他们将报告每个时期称为"损失"的变量.
我该如何解释这个变量?更高或更低的损失,或者它对我的神经网络的最终性能(准确性)意味着什么?
machine-learning mathematical-optimization neural-network deep-learning objective-function
如果我想在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)
Run Code Online (Sandbox Code Playgroud)
我问,因为如果我运行包含批量规范化的第二行的代码,如果我运行没有第二行的代码,我得到类似的输出.所以要么我没有在正确的位置调用该功能,要么我认为它没有那么大的差别.
python neural-network keras data-science batch-normalization
我正在使用这个库来实现学习代理.
我已经生成了培训案例,但我不确定验证和测试集是什么.
老师说:
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 in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between …Run Code Online (Sandbox Code Playgroud) 在神经网络的输出层中,通常使用softmax函数来近似概率分布:

由于指数,计算起来很昂贵.为什么不简单地执行Z变换以使所有输出都是正的,然后通过将所有输出除以所有输出的总和来归一化?
是否有一个经验法则(或一组例子)来确定何时使用遗传算法而不是神经网络(反之亦然)来解决问题?
我知道有些情况下你可以混合使用这两种方法,但我正在寻找这两种方法之间的高级别比较.
artificial-intelligence machine-learning neural-network genetic-algorithm
neural-network ×10
keras ×2
data-science ×1
keras-layer ×1
math ×1
python ×1
softmax ×1
svm ×1
tensor ×1
tensorflow ×1
terminology ×1