人工神经网络入门 第1章 神经网络的特点
2017-04-19 12:44 JavaDaddy 阅读(547) 评论(0) 编辑 收藏 举报前言
神经网络是一种很特别的解决问题的方法。本书将用最简单易懂的方式与读者一起从最简单开始,一步一步深入了解神经网络的基础算法。本书将尽量避开让人望而生畏的名词和数学概念,通过构造可以运行的Java程序来实践相关算法。
关注微信号“逻辑编程"来获取本书的更多信息。
人工神经网络是一种受人类(或者说生物)神经系统启发而发明的一种软件开发方法。关于其历史和现状,在此不做赘述,读者可以参考相关维基百科词条。在此仅讨论一下其基本原理和特点以作为后续章节学习的基础。
神经网络与传统算法最大的不同就是它通过组合简单的功能来完成复杂的功能。
每个神经元有多个输入和一个输出。神经元内部通过一个固定的函数来把输入值转化为输出值。比如函数 y = w*x + b,当只有一个输入值x时,它简单的表达了一条直线。其中w代表直线的斜率,b代表了相对原点(0,0)的偏移量。这样一个神经元可以根据输入的x值计算出相应的y值。每个神经元都有一些常量参数。这些常量参数只要取到合适的值,它就会具有相应的能力。
神经网络由多个简单的神经元按一定的方式互相连接而成。当多个神经元连接成网络时就能完成复杂的任务。含有隐含层的多层神经网络能更有效解决更加复杂的方法。
同时,上面逐步复杂的神经网络从数学上也对应多个简单函数的不同组合。理论上可以证明,只要有足够多的简单函数,组合出来的函数可以计算几乎任何需要的函数计算功能。
神经网络方法一个显著的特点是需要经过训练才能使用。
神经元的参数值不是人为设定的,而是通过训练学习得来的。一个没有训练的神经网络就像刚出生的婴儿什么功能也没有。神经网络的训练算法才是神经网络的精髓,也是最困难和最需要花精力的。一旦完成训练, 神经网络能高效而准确的工作。多层网络的深度学习有很多困难之处,也是神经网络研究的前沿和重点。后续章节我们将逐步深入以上问题。
训练后虽然神经网络能解决复杂问题,很多时候人们却并不理解这个神经网络参数的细节以及它为何能完成这个特定的功能。这一点也是与传统方法不一样的地方。
神经网络能解决传统算法很难解决的问题。
一些使用传统编程方法很难完成的功能,比如图像识别、语音识别等,用神经网络方法能够比较容易实现并获得相当高的识别准确率。
神经网络能解决所有的问题吗?神经网络能产生像人一样的智能或者意识吗?这些问题恐怕没有人知道真正的答案。神经网络最近这些年发展很快,解决了很多问题,有人认为它是人工智能未来的方向。也有人指出神经网络的训练和学习方法与人类的很多行为看起来还有某些本质的差别。我个人感觉神经网络可能模拟了人类神经一部分的功能,但远远不是全部。
关注微信号“逻辑编程"来获取本书的更多信息。