我正在做一个简单的学习模拟,屏幕上有多个生物.他们应该学习如何吃,使用他们简单的神经网络.它们有4个神经元,每个神经元激活一个方向的运动(从鸟的视角看是一个2D平面,因此只有四个方向,因此需要四个输出).他们唯一的输入是四只"眼睛".当时只有一只眼睛可以活动,它基本上用作指向最近物体(绿色食物块或其他生物体)的指针.
因此,网络可以这样想象:

有机体看起来像这样(在理论和实际模拟中,它们真的是红色的块,它们的眼睛围着它们):

这就是它的样子(这是一个老版本,眼睛仍然不起作用,但它是相似的):

现在我已经描述了我的一般想法,让我了解问题的核心......
初始化 | 首先,我创造了一些生物和食物.然后,将其神经网络中的所有16个权重设置为随机值,如下所示:weight = random.random()*threshold*2.阈值是一个全局值,描述每个神经元需要获得多少输入才能激活("激活").通常设置为1.
学习 | 默认情况下,神经网络中的权重每步降低1%.但是,如果某些有机体实际上设法吃东西,那么最后一个有效输入和输出之间的联系就会得到加强.
但是,有一个大问题.我认为这不是一个好方法,因为他们实际上并没有学到任何东西!只有那些随机设定为有益的初始体重的人才会有机会吃东西,然后只有他们的体重会增强!那些与他们的关系设置得很糟糕的人呢?他们只会死,不会学习.
我该如何避免这种情况?想到的唯一解决方案是随机增加/减少权重,这样最终有人会得到正确的配置,并偶然吃掉一些东西.但我觉得这个解决方案非常粗糙和丑陋.你有什么想法?
编辑: 谢谢你的答案!其中每一个都非常有用,有些只是更相关.我决定使用以下方法:
python simulation artificial-intelligence machine-learning neural-network
我无法理解为什么dropout在tensorflow中这样工作.CS231n的博客说,"dropout is implemented by only keeping a neuron active with some probability p (a hyperparameter), or setting it to zero otherwise."你也可以从图片中看到这个(取自同一网站)

来自tensorflow网站, With probability keep_prob, outputs the input element scaled up by 1 / keep_prob, otherwise outputs 0.
现在,为什么输入元素按比例放大1/keep_prob?为什么不保持输入元素的概率而不是用它来缩放1/keep_prob?
我只是试着找出如何使用Caffe.为此,我只是看了一下.prototxt示例文件夹中的不同文件.有一个我不明白的选择:
# The learning rate policy
lr_policy: "inv"
Run Code Online (Sandbox Code Playgroud)
可能的值似乎是:
"fixed""inv""step""multistep""stepearly""poly" 有人可以解释一下这些选择吗?
machine-learning neural-network gradient-descent deep-learning caffe
尽管上述两种方法都提供了更好的分数以更好地接近预测,但仍然优选交叉熵.是在每种情况下还是有一些特殊情况我们更喜欢交叉熵而不是MSE?
machine-learning backpropagation neural-network mean-square-error cross-entropy
当您运行Keras神经网络模型时,您可能会在控制台中看到类似的内容:
Epoch 1/3
6/1000 [..............................] - ETA: 7994s - loss: 5111.7661
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,损失有望得到改善.我希望随着时间的推移将这些损失记录到文件中,以便我可以从中学习.我试过了:
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我不确定在这种情况下我需要什么级别的日志记录.
我也尝试过使用类似的回调:
def generate_train_batch():
while 1:
for i in xrange(0,dset_X.shape[0],3):
yield dset_X[i:i+3,:,:,:],dset_y[i:i+3,:,:]
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []
def on_batch_end(self, batch, logs={}):
self.losses.append(logs.get('loss'))
logloss=LossHistory()
colorize.fit_generator(generate_train_batch(),samples_per_epoch=1000,nb_epoch=3,callbacks=['logloss'])
Run Code Online (Sandbox Code Playgroud)
但显然这不是写入文件.无论采用何种方法,通过回调或记录模块或其他任何方式,我都希望听到您将keras神经网络丢失记录到文件中的解决方案.谢谢!
我一直在努力学习神经网络一段时间,我可以在线理解一些基本的教程,并且我已经能够完成神经计算的部分- 一个简介,但即使在那里,我也在很多数学,在前几章后它完全超出了我的脑海.即便如此,我能找到的最少的书"math-y".
它不是我害怕数学或任何东西,它只是我没有学到我需要的东西,我不确定我需要什么.我目前就读于我当地的大学,正在努力学习我需要在Comp中输入MS的课程.Sci计划(我的学士学位是商业/信息系统),我还没有走得太远.根据该大学的小课程描述,NN实际上涵盖了一个关于模式识别的电气工程课程(这对我来说很奇怪,这门课程是EE),它有一些EE先决条件,我不需要进入MS Comp .科学.程序.
我对这个话题非常感兴趣,并且知道我最终想要了解更多关于它的问题,问题是,我不知道我需要先知道什么.以下是我认为可能需要的主题,但这只是无知的推测:
显然,这里也有一个神经科学组成部分,但实际上,当他们谈论它应用于NN时,我实际上没有遇到任何麻烦,主要是因为它的概念
简而言之,有人可以铺设一条人们需要真正理解的半透明路径,阅读书籍并最终实施神经网络吗?
math computer-science artificial-intelligence neural-network
我理解神经网络是如何工作的,但如果我想将它们用于像实际字符识别这样的图像处理,我无法理解如何将图像数据输入神经网络.
我有一个非常大的A信件形象.也许我应该尝试从图像中获取一些信息/规格,然后使用该规范的值向量?它们将成为神经网络的输入?
谁已经做过这样的事情,你能解释一下如何做到这一点吗?
pattern-recognition image-processing computer-vision neural-network
我目前正在尝试理解word2vec神经网络学习算法背后的架构,用于根据其上下文将单词表示为向量.
在阅读了Tomas Mikolov论文后,我发现了他定义为投影层的内容.虽然这个术语在提到word2vec时被广泛使用,但我无法找到它在神经网络环境中的实际定义的精确定义.
我的问题是,在神经网络环境中,什么是投影层?它是隐藏图层的名称,它与以前节点的链接共享相同的权重吗?它的单位实际上是否具有某种激活功能?
在Keras中,为了预测数据的类,predict_classes()使用了.
例如:
classes = model.predict_classes(X_test, batch_size=32)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我知道batch_size在训练中的用法,但为什么需要batch_size预测呢?它是如何工作的?
categorical_accuracy和sparse_categorical_accuracyKeras有什么区别?这些指标的文档中没有任何提示,并且通过询问谷歌博士,我也没有找到答案.
源代码可以在这里找到:
def categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.argmax(y_true, axis=-1),
K.argmax(y_pred, axis=-1)),
K.floatx())
def sparse_categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.max(y_true, axis=-1),
K.cast(K.argmax(y_pred, axis=-1), K.floatx())),
K.floatx())
Run Code Online (Sandbox Code Playgroud) classification machine-learning neural-network deep-learning keras
neural-network ×10
keras ×3
python ×2
caffe ×1
logging ×1
math ×1
nlp ×1
simulation ×1
tensorflow ×1
word2vec ×1