一.阈值逻辑单元 - 阈值逻辑单元(threshold logic unit ,TLU),它可以输入一组加权系数的量,对它们进行求和,如果这个和达到或者超过了某个阈值,输出一个量。例如,输入为a1, a2, ..., an和权值 w1, w2, ..., wn。接着是求和计算出的 ai x wi ,产生了激发层 t,换一种方法表示:
- t = f((a1 x w1)+(a2 x w2)+...+(aI x wI)+...+ (an x wn)+b)
复制代码 我理解的阈值逻辑单元就是用于解决多维线性加权求和问题的工具,那么遇到复杂问题该如何做呢? 二.人工神经网络
- 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
复制代码 通过将多个阈值逻辑单元组合,形成网络,用来模拟非线性的问题。有研究证明,三层的人工神经网络可以模拟各种函数。 三.BP神经网络
- BP(Back Propagation)神经网络是一种按误差反向传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
- 这里利用了偏导数的知识去推导计算公式,具体我没有列出,我自己在理解的时候是读了《人工智能》(机械工业出版社),感兴趣的朋友可以自己看一下。
- BP神经网络调整权值的过程更像是一种函数图像逼近的过程,首先猜测一个函数,然后读入一个数据点,根据数据点和函数图像之间的差距调整函数,使得函数图像更符合数据。不断迭代,使得整个数据样本都较为符合我们估计得函数。
复制代码四.步骤: 1.对权系数置初值 2.输入一组样本及它的希望输出 3.计算实际输出值 4.计算误差值 5.反向传播误差值并调整权值 6.不断训练(重复步骤2~5) 7.利用完成后的神经网络进行预测 五.java代码: import java.io.File; import java.io.RandomAccessFile; import java.util.Random; public class FaceRecognition { } 这里我采用的数据的格式是PGM,19*19大小的,训练集一共有4800张,一半正例一半反例。 具体的实现,我感觉代码写的比较清楚,我就不赘述了。 |