在M-P模型中,激活函数 φ ( ) \varphi() φ()一般为: φ ( s ) = U ( s ) = { 1 , s ≥ 0 0 , s < 0 \varphi(s)=U(s)=\begin{cases}1,&s\ge0\\0,&s<0\end{cases} φ(s)=U(s)={1,0,s≥0s<0
或: φ ( s ) = S g n ( s ) = { 1 , s ≥ 0 − 1 , s < 0 \varphi(s)=Sgn(s)=\begin{cases}1,&s\ge0\\-1,&s<0\end{cases} φ(s)=Sgn(s)={1,−1,s≥0s<0 这种二值化的形式正好符合生物神经元激活/抑制两种状态
逻辑与运算
y = U ( w 1 x 1 + w 2 x 2 − θ ) = U ( x 1 + x 2 − 1.5 ) y=U(w_1x_1+w_2x_2-\theta)=U(x_1+x_2-1.5) y=U(w1x1+w2x2−θ)=U(x1+x2−1.5)
逻辑非
y = U ( − x 1 + 0.5 ) y=U(-x_1+0.5) y=U(−x1+0.5)
逻辑或
y = U ( x 1 + x 2 − 0.5 ) y=U(x_1+x_2-0.5) y=U(x1+x2−0.5)
逻辑异或(XOR)没做出来
还是M-P模型结构
不同在于,M-P模型中没有给出求解权值的通用办法
在感知机中,权值和阈值可以通过实例来学习
给M-P模型赋予了自学习能力
感知机给出了学习算法,并证明了它是收敛的
S = ∑ i = 1 n w i x i − θ S=\sum_{i=1}^n{w_ix_i-\theta} S=∑i=1nwixi−θ
令 S = 0 S=0 S=0,即 s = ∑ i = 1 n w i x i − θ = 0 s=\sum_{i=1}^n{w_ix_i-\theta}=0 s=∑i=1nwixi−θ=0,为n维超平面方程,决定了一个n-1维的超平面以二维为例, s = w 1 x 1 + w 2 x 2 − θ = 0 s=w_1x_1+w_2x_2-\theta=0 s=w1x1+w2x2−θ=0决定了二维平面内的一条直线,s>0为线的一侧,s<0为线的另一侧线性可分:问题本身的点是否是可分的
n维空间中的点为n维矢量,空间中任意一点不是属于C1,就是属于C2
如果n维空间中存在一个n-1维的超平面,该平面可以将空间中的点完整的分成两类,则这个空间为线性可分空间。
关键问题:
设计感知机,要设法找到权值,阈值,来把所有的样本区分开,如果样本不是线性可分,要找到错误尽量少的超平面。
例子:
逻辑与
线性可分,且直线不唯一,如 w 1 = 1 , w 2 = 1 , θ = 1.5 w_1=1,w_2=1,\theta=1.5 w1=1,w2=1,θ=1.5
逻辑或
w 1 = 1 , w 2 = 1 , θ = 0.5 w_1=1,w_2=1,\theta=0.5 w1=1,w2=1,θ=0.5
逻辑异或
在二维平面作图发现它线性不可分(两层以上神经网络可解)
感知机(一层)对于线性可分问题是可以解的,但对于线性不可分问题是不可解的
模型描述
M-P模型,要学习一组权值和阈值: W = [ w 0 , w 1 , . . . , w n ] T W=[w_0,w_1,...,w_n]^T W=[w0,w1,...,wn]T
w 0 w_0 w0代表 − θ -\theta −θ
输入向量为: X ( k ) = [ 1 , x 1 ( k ) , x 2 ( k ) , . . . , x n ( k ) ] T X(k)=[1,x_1(k),x_2(k),...,x_n(k)]^T X(k)=[1,x1(k),x2(k),...,xn(k)]T
s = ∑ i = 1 n x i w i − θ = W T X ( k ) s=\sum_{i=1}^n{x_iw_i-\theta}=W^TX(k) s=∑i=1nxiwi−θ=WTX(k)
y = φ ( s ) = ∑ i = 1 n x i w i − θ = φ ( W T X ) y=\varphi(s)=\sum_{i=1}^n{x_iw_i-\theta}=\varphi(W^TX) y=φ(s)=∑i=1nxiwi−θ=φ(WTX)
问题:给出m个例子,即m个x,m个y: ( x ( k ) , d ( k ) ) , ( k = 1 , 2 , . . . , m ) {(x(k),d(k))},(k=1,2,...,m) (x(k),d(k)),(k=1,2,...,m),d为理想输出(desired output)
理想输出和输入矢量有一个函数关系 d ( k ) = f ( X ( k ) ) d(k)=f(X(k)) d(k)=f(X(k)),f(·)未知,感知机要学习到这个函数关系
根据例子来学习 W = [ w 0 , w 1 , . . . , w n ] T W=[w_0,w_1,...,w_n]^T W=[w0,w1,...,wn]T
感知机的目的: y ( k ) → d ( k ) = f ( X ( k ) ) y(k)\rarr d(k)=f(X(k)) y(k)→d(k)=f(X(k))
学习算法:
给定m组输入输出
初始化:
用一组小的随机数设定一组随机权值 W ( 0 ) W(0) W(0),小的修改时间比较短, k = 0 k=0 k=0
用线性加权和输入得到 y y y
利用实际输出和理想输出来更新权重
Δ w j = η ( d ( k ) − y ( k ) ) x j ( k ) \Delta w_j=\eta(d(k)-y(k))x_j(k) Δwj=η(d(k)−y(k))xj(k)
w j ← w j + Δ w j , j = 0 , 1 , . . . , n w_j\larr w_j+\Delta w_j,j=0,1,...,n wj←wj+Δwj,j=0,1,...,n
η \eta η为学习率, 0 < η ≤ 1 0<\eta\leq1 0<η≤1
k = k + 1 k=k+1 k=k+1
继续训练到所有样本都能正确分类为止(针对线性可分问题)
直到收敛为止,再次循环是,所有的权值改变都非常小(知道结果令人满意为止)