人工神经网络实现简单的逻辑运算
目录
什么是人工神经网络,我的理解就是:举个不太恰当的例子,当你训练你的狗时,第一次给它一个橘子,跟它说这是橘子;下一次再给它橘子,看它还认不认识,如果不认识,继续告诉他,直到狗可以认出橘子为止。那么下次你就可以给它拿一个香蕉,问它这是不是橘子,如果它说不是,说明它已经被训练的差不多了。
官方定义
神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
1、人工神经元模型
对于每一个神经元j,它的输入神经元为xi(i=1,2,...n),输入神经元节点连接到神经元j的加权向量为:
由此可得神经元j的输入加权和为:
神经元j的输出状态为
用向量表示则为
2、转移函数
人工神经元的数学模型主要包括3部分功能:加权、求和与转移。各种不同的人工神经元数学模型的主要区别在于采用了不同的转移函数。
(1)、线性函数
(2)、阈值型函数
越阶函数
符号函数
(3)、非线性函数
3、matlab实现简单的逻辑运算
这里我们用神经网络训练四个输入,使得最终的网络可以进行简单的逻辑运算。通过不断的训练,每次需要调整输入权值和阈值,公式如下:
这里k=1,2,3,4;t表示迭代次数,q表示阈值,d表示期望(理论)输出,y表示每次的实际输出。e表示误差。
(1)、这里的每个变量意思标出alpha、beta、error分别表示权值学习速率、阈值学习速率、误差。
(2)、这里用的是越阶阈值型函数(sgn.m)
(3)、输入、输出、测试函数(sjwltest.m)
(4)、结果验证,人机交互
由于是简单的逻辑运算,5次训练就可以了。可以看出输入两组值【0 1】和【1 1】进行逻辑运算,结果分别为0和1,是对的。
(5)、结果展示
从图中可以看出,这个简单的神经网络相当于将4个点分成了2类,本身直线上的点线性组合恰好为0,直线下面的点(圆圈表示)线性组合就小于0,函数值sgn(x1,x2)=0,直线上面(加号表示)线性组合就大于0的点函数值sgn(x1,x2)=1,这与我们逻辑运算得出的结论也是一致的。表明简单的神经网络可以解决线性可分问题。