前段时间我开始了机器学习的冒险(在我学习的最后两年) . 我已经阅读了很多书,并用机器学习算法EXCEPT神经网络编写了大量代码,这些算法超出了我的范围 . 我对这个话题很感兴趣,但是我遇到了一个很大的问题:我读过的所有书都有两个主要问题:
-
包含数学方程的音调 . 讲课后我对他们非常熟悉,并且在纸上我可以进行计算 .
-
包含嵌入在某些复杂环境中的大型示例(例如调查网店销售率)并进入神经网络实现,我必须编写大量代码来重现上下文 . 缺少什么 - 没有很多上下文和方程式的SIMPLE直接实现 .
能否请您告诉我,在哪里可以找到SIMPLE多层感知(神经网络)的实现?我不需要理论知识,也不需要上下文嵌入的例子 . 我更喜欢一些脚本语言来节省时间和精力 - 我之前99%的作品都是用Python完成的 .
这是我以前读过的书籍清单(并没有找到我想要的东西):
-
机器学习在行动中
-
编程集体智慧
-
机器学习:算法视角
-
Java中的神经网络简介
-
C#中的神经网络简介
5 回答
一个简单的实现
这是一个使用
Python
中的类的可读实现 . 这种实现方式可以提高效率:更有效的实施(学习)
如果您正在寻找一个更有效的神经网络学习示例(反向传播),请查看我的neural network Github repository here .
嗯这很棘手 . 我之前遇到过同样的问题,但是我找不到好的但很重要的数学加载解释和准备使用的实现之间的任何东西 .
准备使用像PyBrain这样的实现的问题是它们隐藏了细节,因此有兴趣学习如何实现ANN的人需要其他东西 . 阅读这些解决方案的代码也很具挑战性,因为他们经常使用启发式方法来提高性能,这使得代码更难以遵循启动器 .
但是,您可以使用一些资源:
http://msdn.microsoft.com/en-us/magazine/jj658979.aspx
http://itee.uq.edu.au/~cogs2010/cmc/chapters/BackProp/
http://www.codeproject.com/Articles/19323/Image-Recognition-with-Neural-Networks
http://freedelta.free.fr/r/php-code-samples/artificial-intelligence-neural-network-backpropagation/
以下是如何使用numpy实现前馈神经网络的示例 . 首先导入numpy并指定输入和目标的尺寸 .
我们现在将构建网络结构 . 正如Bishop伟大的“模式识别和机器学习”中所建议的那样,你可以简单地将你的numpy矩阵的最后一行视为偏差权重,将你激活的最后一列视为偏置神经元 . 然后,第一个/最后一个权重矩阵的输入/输出维数需要大1 .
如果您的输入存储在2d numpy矩阵中,其中每行对应一个样本,并且列对应于样本的属性,则可以通过网络传播,如下所示:(假设logistic sigmoid函数作为激活函数)
activations
中的最后一个元素将是您网络的输出,但要小心,您需要省略偏差的附加列,因此您的输出将是activations[-1][:,:-1]
.要训练网络,您需要实现反向传播,这需要一些额外的代码行 . 基本上,你需要从
activations
的最后一个元素循环到第一个元素 . 在每个反向传播步骤之前,确保将每个层的误差信号中的偏置列设置为零 .Here是本机python中的backprop算法 .
你试过PyBrain吗?好像很好documented .