首页 > 代码库 > 浅谈神经网络(一)

浅谈神经网络(一)

到底什么是神经网络呢? 在陷入各种各样概念、名词、理论之前,请务必提醒自己,只有从整体上理解到底什么是神经网络,之后的深入学习才不至于迷失方向。

请看下面三张图:

技术分享技术分享技术分享

图一图二图三

这三幅图跟就能很好的对神经网络进行一个整体的描述:神经网络就是一个黑箱,和人脑一样。

(1)我们给这个黑箱一些输入和输出,这个黑箱就能够自动去寻找这些输入和输出之前的关系,等以后我们再输入一些东西时,他们便能给出我们一些输出。 就跟人脑一样,我们不停的输入一些人,输出对应性别,等脑子慢慢学习和长大,以后再看到一些人,就能分辨他们的性别了。

(2)对于有些输入,不一定就会有输出,而是能够找到这些输入之间的关系。 就跟人脑一样,我们看人,输入各种各样的人,随着我们人脑的不停学习和训练,会自动把他们分为美、普通、丑等关系。(突然想到,小的时候不知道丑,等到长大了突然有一点感觉自己穿的好土好丑)

因此,叫做神经网络,还是很贴切的。 接下来是其他几点类比:

(1)人脑有聪明的,也有笨的,所以我们以后构造的神经网络也有聪明和笨之分,只有不断的训练,不断调整合适的参数,才能让我们设计的神经网络越来越聪明。

(2)人脑都有自己适合做的事情,比如有些人适合学理科,有些人适合学文科;有些人适合搞经济,有些人适合搞政治。 。 同样,各种各种的神经网络模型,也有自己适合做的事情,只有搞懂神经网络的基本原理,才能够根据自己的实际需要,选择合适的网络。 (突然想起前几天一个小时候的同学说的一句话:“TMD过了这么多年,我发现一点:我就根本不适合上学”)。

(3)人脑也有误判的时候,因此用神经网络,是无法做到100%准确的,因此对于要求有百分之百准确度的事情,不能用神经网络,需要建立精确的数学模型和公式来计算才行。

总之,就一句话,“神经网络就是一个神奇的黑箱”。 接下来,我们就一起去打开这个黑箱,看看他里面到底是怎么回事。

二、打开黑箱

刚刚打开黑箱,你可能惊呆了,里面都是一些什么乱七八糟的东西,完全不懂啊。 不用慌张,我们一点点的去分析。

神奇的造物主创造了人脑,于是有些人也试图去创造神经网络去模拟人脑。 假如是你要设计一个神经网络,你会怎么做呢? 如果你百思不得其解,那么好吧,我们一起来看看前辈门是怎么设计的吧。 这里的前辈们有很多,为了使大家既能 理解神经网络原理 ,又 能够实践操作 ,我把前辈们分成了两类: 数学家和程序员。 其中数学家设计了整体的思想,而程序员用程序实现了数学家所说的功能(以Matlab为例进行演示)。

我们看看前辈们是怎么设计的。

我们发现这个黑箱里面有很多 小圆球 ,如下图所示:

技术分享

这些小圆球还有一个很好听的名字,叫做“神经元”,刚开始看你可能觉得这些小圆球乱七八糟排列,实际上如果你仔细看的话,他们之间的排列是有规则的,根据他们排列规则不同,神经网络结构大概分成如下几种:

(1)前馈型

这些小圆球一个接一个的排列,input表示输入信号,从前到后,一直到output输出,神经元和神经元之间没有信号的传输。 其中第一层是输入单元,第二层称为隐含层,第三层称为输出层(输入单元不是神经元,因此图中有2层神经元)。

例如BP神经网络和感知器神经网就是这么排列的。

(2 )反馈型

顾名思义,最后的输入信号不仅输出就完事了,还会把输出信号反馈回去,因此叫做反馈型神经网络。

例如:回归BP网络就属于这一种。

(3)层内有互相结合的

前面的结构,同一层神经元之间没有联系,而层内有互相结合的结构,层内神经元会互相有信息传输。

怎么样,是不是很赞赏前辈们,竟然能够想到这么个办法,这些小球(神经元)互相连接,就能干很多很多复杂的事情,可是这些小球到底是个什么东西呢,接下来,就进入本文的重点,让我们深入小球内部看看是怎么个回事。

三、打开小圆球(神经元)

每一个神经元的结构,如下图所示:(请注意,接下来就要有各种公式符号等等,始终记住,神经网络是一个黑箱,里面有很多小球(神经元)连接,他们一层一层的排列,有了各种各样的结构方式)

技术分享

上面一个图就是神经元的内部结构图,虽然它不是一个球,但是你可以想象它外部是有一层圆圆的外壳,包裹着它就好。 我们一点点看看他都有那些东西。

(1)输入:inputs表示的x1,x2,...,xm表示的是输入信号,这些输入信号输入进各个神经元的∑函数进行一个求和,我们看到他们并是直接相加的,而是每个输入都乘以了一个系数W之后再相加的,这些W称为权重,或者叫权值,或者叫做Weight。

(2)bias:我们看到进入∑符号的不仅有输入乘以Weight,还有一个Bias,他的输入是1,权值是W0,所以也可以看成是一个固定输入为1,权重为W0的一个输入信号。 在其他一些书里面,bias的值会有bi符号表示,或者别的,总之是一个意思。 还要注意的是,这个bias有很多名字,什么阈值、threshold,偏置等等都是一个意思。

(3)激活函数:前面的输入和bias经过∑求和之后,就会通过一个函数进行处理,进而输出结果,这个函数就叫做激活函数,也就Activation Function,也叫传递函数,也就Transfer Function,也叫TF,总之这些名称都是一回事。

怎么样,就是这么一个一个的神经元,就组成了一个神奇的神经网络,这个魔法的黑箱,就能干很多事情。

那么问题来了,我们可以改变那些东西,进而完成我们各种各样的问题解决呢?

我们能改动的,无非是下面几个东西:

1、各神经元的权值

2、bias,广义上,也是权值

3、激活函数

4、神经网络的层数

5、各层神经元的个数

6、神经网络的连接结构

7、输入输出的格式和质量

后续再谈......

 

实验证明大脑利用同一个学习算法实现了听觉、视觉等等所有的功能,这也是神经网络算法美好的愿景。

浅谈神经网络(一)