我对人工神经网络很感兴趣,但我正在寻找一个可以开始的地方.
有什么资源,什么是一个好的启动项目?
首先,放弃任何关于人工神经网络与大脑有关的概念,但与生物神经元网络的相似性.学习生物学不会帮助你有效地应用神经网络; 学习线性代数,微积分和概率论将会.你至少应该熟悉函数的基本区分,链规则,偏导数(梯度,雅可比和黑森),以及理解矩阵乘法和对角化的概念.
实际上,当你训练网络时,你正在做的是优化一个大的多维函数(最小化你对网络中每个权重的误差测量),因此对非线性数值优化技术的研究可能具有指导意义.这是一个广泛研究的问题,在神经网络之外有大量文献,并且网上有大量关于数值优化的讲义.首先,大多数人使用简单的梯度下降,但这可能比更细微的方法更慢,更有效
一旦你掌握了基本的想法,你就可以开始在隐藏层中尝试不同的"挤压"功能,添加各种正规化,并进行各种调整以使学习更快.有关"最佳实践"的完整列表,请参阅此文章.
有关该主题的最佳书籍之一是Chris Bishop的模式识别神经网络.它在这个阶段相当老,但仍然是一个很好的资源,你经常可以在网上找到大约30美元的二手拷贝.他的新书" 模式识别和机器学习 "中的神经网络章节也非常全面.对于一个特别好的以实现为中心的教程,请参阅CodeProject.com上的这个教程,该教程实现了一种称为卷积网络的巧妙网络,它以一种非常擅长学习分类视觉模式的方式约束连接.
支持向量机和其他内核方法已经变得非常流行,因为你可以应用它们而不知道你到底在做什么,并且经常得到可接受的结果.另一方面,神经网络是巨大的优化问题,需要仔细调整,尽管它们仍然适用于许多问题,特别是计算机视觉等领域的大规模问题.
我强烈推荐Anoop Madhusudanan在Code Project上的这个优秀系列.
他带您了解基础知识,以易于理解的方式理解它们的工作方式,并向您展示如何使用他的brainnet
库创建自己的库.
以下是神经网络编程的一些示例. http://www.codeproject.com/KB/recipes/neural_dot_net.aspx
你可以在这里开始阅读:http://web.archive.org/web/20071025010456/http : //www.geocities.com/CapeCanaveral/Lab/3765/neural.html
我本人已经参观了一个关于它的课程,并通过一些文献进行了研究.
神经网络现在是一种衰退.支持向量机和内核方法对于更多类问题更好,然后是反向传播.神经网络和遗传算法捕捉了那些对现代机器学习知之甚少的人的想象力,但它们并不是最先进的.
如果您想了解有关人工智能和机器学习的更多信息,我建议您阅读Peter Norvig的人工智能:现代方法.这是对人工智能和许多现代技术的广泛调查.它还介绍了历史和旧技术,并将为您提供更完整的人工智能和机器学习基础知识.
然而,神经网络非常简单.特别是如果你使用遗传算法来确定权重,而不是适当的反向传播.
我是Chris Bishop 推荐的神经网络模式识别的第二个dwf.虽然,它可能不是起始文本.Norvig或在线教程(使用Matlab中的代码!)可能是一个更温和的介绍.
一个好的入门项目是OCR(光学字符识别).您可以扫描文本页面并通过网络提供每个字符以执行分类.(当然,你必须首先训练网络!).