我们首先从一个简单的神经元的构建开始:
P代表输入信号源,W代表权重,这里列出一些常用的传递函数:
| 阶梯函数(step) | 输出0&1 |
| 符号函数(sgn) | 输出-1&1 |
| 线性函数(linear) | n本身就是神经元的输出 |
| 饱和线性函数(Ramp) | 线性斜线n<0,输出0,n在0 1之间,输出n,n>1时输出n |
| 对数S型函数(sigmoid) | 有界函数,输出介于0 1 之间 |
| 双曲正切S型函数(Tanh) | 有界函数,输出介于-1 1之间 |
这样,我们就构造了一个简单的神经元。
----------------------------------------------------------------------------------------------------------------------------------
感知机:是最简单的神经网络。
举一个简单的例子:分辨苹果和香蕉,假设我们识别他们只需要两个特征,颜色,形状。权重都默认为1,b初始值设为0,并且我们定义结果输出1为苹果,2为香蕉。
| 品种 | 颜色 | 形状 |
| 苹果 | 红色1 | 圆形1 |
| 香蕉 | 黄色-1 | 弯形-1 |
根据上面的公式:
对苹果的辨别:S1 = 1*1+1*1 = 2
对香蕉的辨别:S2 = -1*1+-1*1=-2
通过二者的特征值,我们得到两类不同结果,几乎可以得到判别结果,但我们初始设定输出1为苹果,0为香蕉,这里就要用到传递函数处理了,在这我们采用step函数,step(-2) = 0,step(2) = 1。至此,完成辨别。
----------------------------------------------------------------------------------------------------------------------------------那么可能会有疑问,我们为什么可以设置w 和 b 的值是1和0呢,这需要使用感知机的一套学习规则,保证我们随意换个权重参数,也能得到我们想要的输出。
w(new) = w(old)+ep(1)
b(new) = b(old)+e (2)
e为误差,e = t - a . t为期望输出,a为实际输出。
我们假设W1和W2的初始值为1和-1,b的初始值是0.
下面进行计算:
s = p1w1+p2w2+b = 1*1+-1*1+0 = 0 使用step传递函数step(0) = 0,即a = 0,我们期望t = 1,那么此时e = t - a = 1
根据(1)式,
w1(new) = 1+1*1= 2
w2(new)= -1 + 1*1 = 0,
b(new) = 0+1 = 1,
将新的权重值带入,s(new)= 1*2+-1*0+1=3,step(3)= 1,输出正确。
接下来判别香蕉,s = 2*-1+0*-1+1 =-1 step(-1) = 0 输出正确。
---------------------------------------------------------------------------------------------------------------------------