人工神经网络是什么?

您所在的位置:网站首页 人工神经网络的工作原理 人工神经网络是什么?

人工神经网络是什么?

#人工神经网络是什么?| 来源: 网络整理| 查看: 265

(一个简单的人工神经网络,实现功能是将阿拉伯数字转换成汉字数字)

这个神经网络每个神经元是一个圆圈,每个神经元从左到右传播信号,直线代表神经元之间的连接。左边5个神经元是要输入的阿拉伯数字,右边的5个神经元是要输出的汉字。中间有四层隐藏的神经元(其实每层神经元应该还有一个bias神经元,为了简便就省略了并不影响理解神经元构造)。

其实每个人工神经元都不是一个有物理实体的电器元件,它只不过是一个虚拟的计算单元而已,或者说是一个数学方程而已。(就好象方程y=ax+b就是一个方程,x是要输入的信号,y是要输出信号,a和b是系数,通过控制a和b大小可以控制输出值的强弱。假如a=2,b=1 ,输入信号x=1 。那么得到的信号就是3 。我们将会把‘3’这个信号强度传递给下一个神经元。当然这个方程只是为了举例子,这个方程作为人工神经元是不起作用的)。

一般来说神经元是这样计算的,首先它汇总传人进来的所有信号强度,类似于生物神经元汇总所有树突传进来的信号。然后将这个汇总的信号强度作为输入的变量带入进一个叫做激发函数的方程里。这个激发方程以前人们经常使用一个叫做sigmoid的逻辑回归方程,现在一般用relu方程比较多。这个激发函数起到了类似生物的真实神经元的控制激发与否的功能。人工神经元经过激发函数得到的值之后,还要乘以传播到下一层神经元的系数。传递到每一个不同神经元的系数是不同的。比方说,传递到下一层第一个神经元,需要乘一个0.9,但是传递到下一层第二个神经元需要乘一个0.1。这个系数的作用相当于突触控制神经冲动传播的效率。)

举个例,比如说我们输入了阿拉伯数字1,那么图中最左面第一层的第一个神经元,负责1的那个神经元产生‘神经冲动’,产生一个信号(实际上是一个数字,代表强度),并按照图中从左到右的线路往下一层传播信号。而第一层其他负责2,3,4,5的神经元因为没有发生神经冲动,就不会往下面传播信号(这个例子输入层只有一个神经元被激活,其实实际应用中可以有不同神经元一起被激活)。第二层神经元接收到上一层神经元的信号,产生相应的激发再将信号传递到下一层。

每一层神经元的每个‘神经细胞’接收到的信号强度是不一样的(输入神经元的数值不一样),就好像树突接受到来自不同神经细胞的不同强度的电信号一样。神经信号经过每层的传递,直到最后一层神经元,最后一层的5个神经元,分别代表:一,二,三,四,五这5个汉字。5个神经元会接收到不同强度的上一层神经元的信号。而信号最强的那个神经元就是整个神经网络做出的应对。

举个例子,假如输入信号是1,输出层神经元‘一’接收到的信号最强,1将会转换成一,那么这个神经元做的应对是正确的。而如果神经元‘二’接收到的信号最强,那么这个神经网络会把1翻译成‘二’那么这个神经网络做出的应对就是错误的。

上面这个神经网络是非常简化的版本,只能从事一些简单的工作。现在流行的深层神经网络,大的一些神经网络系统,可以有上千层神经元,而每层可以有几千个神经元。每个神经元有不同的系数,输入不同信息时,通过这些系数对信号做出调整,神经网络可以做出较为复杂的应对。这就使得神经网络可以完成一些比较智能的行为,比如下棋。但是另一方面这么复杂的神经网络就像一个黑箱,人们经常没办法理解他为什么能够完成这些任务,而它完成任务就只能全靠自己学习了。

那么神经网络系统是怎么学习的呢?

神经网络是怎么学习的

别看人工神经网络1943就被发明了,但是一开始人们认为这玩意儿一点都不实用。因为每个神经元传播到下一层的不同的神经元都有不同的系数。调整这些系数是极其复杂的事,所以人们认为人工神经网络概念更本是不切实际的。

一个重要的转机是,亨利·凯里在60年代发明了反向传播算法,并由现在的‘人工智能教父’杰弗里·辛顿等人的大力改良和传播。(反向传播算法稍微有点复杂,我也是花了不少时间才搞清楚里面的细节。这里只解释一个大意,并不会深究其细节)反向传播方法大致意思是:通过计算神经网络对于完成某项任务的正确率的高低,来反向调整每个神经元的系数,也就是我们俗称的学习了。比方说,输入一个棋局,让神经网络来猜职业棋手下一步该下那一步棋,假如神经网络猜中了,就强化相关回路的系数。猜错了就弱化相关的系数。

套回上面的例子,比如我输入的信号是1,结果输出是‘二’。那么通过算法,使得导致输出是‘二’的一条神经回路的相关关联强度进行降权。假如我输入的信号是1,输出结果也是‘一’,是正确结果,那么对这个神经回路强度进行加强。不断让系统学习,也就是不断输入信号,看它给的答案是否正确,然后让其按照算法自动调整各个神经元的系数。最终达成一个较为完美的各项参数。(上面这个表述是不太严谨的,而且实际上也比这个复杂,讲明白需要运用微积分的连锁法则。)一般来说神经网络的‘学习’效率是很低的,因为每次输入一个练习,整个神经网络系统只能稍微更改其参数。要达到很好的效果,系统需要大量的练习。所以李开复们才说21世纪的石油是数据。Alpha Go大战李世石时,Alpha Go每天训练天文数字数量的棋局,其实就是在调整各项参数的比重。(AlphaGo使用的神经网络不太一样,是卷积网络,这种神经网络一般用于识别图像上,有空我再科普)

另外一个使人工神经网络变得流行的因素是计算机的计算能力的突飞猛进。神经网络的训练计算量往往很大,导致以前无法把神经网络做得很深。但是近十几年来随着计算机能力的提升,已经可以构建越来越复杂的神经网络,所以人工神经网络可以处理越来越复杂的任务。

现在的神经网络是万能的吗?

人工神经网络是现在最流行的人工智能实现手段,但是对其的批评也很多。

人工神经网络虽然是在模拟生物的神经网络,但是生物的神经网络的回路构造比其复杂得多。现在的人工神经网络普遍是从上一层神经元,简单地连接到下一层的所有神经元上。但是生物的神经网络有各种迂回的结构。神经生物学专家往往喜欢笑话人工智能专家,说:“他们竟然把那玩意叫做神经网络。”现在的这种人工神经网络架构,过于简单,就好像智障的大脑一样,没有复杂的沟回,只不过经过训练,它们刚好在某些方面比较擅长。要开发更好的人工神经网络架构,离不开神经生物学的发展。 神经网络是一种学习效率低,计算慢的方法。因为学习需要大量的数据,在神经元多的系统中,每次训练计算量都非常大,所以其效率并不好。 现在人工智能专家解决复杂问题的思路往往是让神经网络层数越来越深。但是机器学习研究者土田进(德日混血)今年在NIPS(人工智能顶级会议,能在上面发一篇论文是很多人工智能研究者的梦想)发表了一个论文,通过数学证明:当神经网络层数越叠越深时,所有的输入信号将会变成白噪音输出出去。(那篇论文用到不少泛函分析的知识,我是没看懂的,不好更大家讲具体怎么证明的了,知道结论就好。意思就是神经网络太深了,得到的对应就跟输入的信号没关系了,信息都变成噪音了) 现在的人工神经网络其实并不具备泛化推理能力,比如训练出来玩超级玛丽的神经网络只会玩超级玛丽。换一个游戏,或者游戏里稍微改一下规则,这个训练出来的神经网络就不行了,要重新训练。(据报道Alpha Go用来下日本将棋等棋类也很厉害,这只是拿那套结构重新训练可以玩将棋,还是要重新训练)这不像人类,人类学会了玩超级玛丽,玩类似其他游戏能一通百通。

虽然现在神经网络的成绩令人震惊,但是人们怀疑神经网络这条路并不能真正实现强人工智能。这些人中就包括‘人工智能教父’杰弗里·辛顿。 想学人工神经网络,怎么学需要具备什么知识

一个非常好的入门学习资源是coursera网站的吴恩达教授的机器学习公开课。里面的第4,5章分别详细地讲了神经网络和反向传播算法的细节。

要学人工神经网络首先需要一些编程知识,还有微积分和线性代数知识。因为调整参数需要对各个神经元的参数求导,神经元和系数相乘等需要用到很多线性代数知识。此外还需要一些统计学和优化论的知识。这些内容可以在网易公开课或者可汗学院免费学习到。

当然更进阶需要用其他分支的数学知识。

一些简单的神经网络并不需要非常专业的专家才能实现。一些简单的功能,比如对潜在客户进行划分与管理。一个有一定编程能力的市场营销人员完全可以构建这种神经网络,省去人类无聊乏味的工作。返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3