神经网络算法最初是根据人类大脑的工作机制设计的。神经网络由一系列相互连接的神经元组成。
每个神经元都是一个简单的函数,接收一定输入,给出相应输出。
神经元可以使用任何标准函数来处理数据,比如线性函数,这些函数统称为激活函数。
一般来说,神经网络学习算法能正常工作,激活函数应当是可导和光滑的。
常用的激活有逻辑斯谛函数。每个神经元接收几个输入,根据这几个输入,计算输出。
这样一个个神经元连接在一起组成了神经网络,对数据挖掘应用来说,它非常强大。
这些神经元紧密连接,密切配合,能够通过学习得到一个模型,使得神经网络成为机器学习领域最强大的概念之一。
用于数据挖掘应用的神经网络,神经元按照层级进行排列。第一层,也就是输入层,接收来自数据集的输入。
第一层中的每个神经元对输入进行计算,把得到的结果传给第二层。这种叫作向前神经网络。
神经网络中,上一层的输出作为下一层的输入,直到到达最后一层:输出层。
输出结果表示的是神经网络分类器给出的分类结果。
输入层和输出层之间的所有层称为隐藏层,因为在这些层中,其数据表现方式,常人难以理解。
大多数神经网络至少有三层,而如今大多数应用所使用的神经网络层次比这多得多。
我们优先考虑使用全连接层,即上一层中每个神经元的输出都输入到下一层的所有神经元。
实际构建神经网络时,就会发现,训练过程中,很多权重都会被设置为0,有效地减少边的数量。比起其他连接模式,全连接神经网络更简单,计算起来更快捷。
神经元激活函数通常使用逻辑斯谛函数,每层神经元之间为全连接,创建和训练神经网络还需要用到其他几个参数。
创建过程,指定神经网络的规模需要用到两个参数:神经网络共有多少层,隐含层每层有多少个神经元(输入层和输出层神经元数量通常由数据集来定)。
训练过程还会用到一个参数:神经元之间边的权重。一个神经元连接到另一个神经元,两者之间的边具有一定的权重,在计算输出时,用边的权重乘以信号的大小(signal,第一个神经元的输出)。如果边的权重为0.8,神经元激活后,输出为1,那么下一个神经元从前面这个神经元得到的输入就是0.8。如果第一个神经元没有激活,值为0,那么输出到第二个神经元的值就是0。
神经网络大小合适,且权重经过充分训练,它的分类效果才能精确。大小合适并不是越大越好,因为神经网络过大,训练时间会很长,更容易出现过拟合训练集的情况。
通常,开始时使用随机选取的权重,训练过程中在逐步更新。
设置好第一个参数(网格的大小),再从训练集中训练得到边的权重参数后,就能构造分类器。然后,就可以用它进行分类。