机器学习笔记-单层感知器

单层感知器

1、人体神经网络

机器学习笔记-单层感知器_第1张图片

信号从树突传递进来,在细胞核进行汇总,经过轴突传递到其他的部分。从上图可以看出来,神经元是一个信息处理单元,具有多输入多输出的结构。

2、单层感知器

机器学习笔记-单层感知器_第2张图片

其中输入信号为:x1,x2,x3

权重为:w1,w2,w3

输出信号:y

偏置:b

f():sign激活函数

3、sign激活函数

机器学习笔记-单层感知器_第3张图片

当x>0时,激活函数为1,当x<0时,激活函数为-1.

图像所示如下所示:
机器学习笔记-单层感知器_第4张图片

4、感知器的学习规则

机器学习笔记-单层感知器_第5张图片

感知器学习规则实例:

机器学习笔记-单层感知器_第6张图片

感知器收敛的条件:误差小于某个预先设定的较小的值,两次迭代之间的权值变化已经很小,设定最大迭代次数,当迭代超过最大次数就停止。

5、单层感知机实例

题目:假设平面坐标系上有四个点,(3,3),(4,3)这两个点的标签为1,(1,1)(0,)这两个点的标签为-1,构建神经网络来分类,其中学习率lr=0.11,权重为[-1,1]之间的随机数。

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
#输入数据
X=np.array([[1,3,3],[1,4,3],[1,1,1],[1,0,2]])
#输入标签
Y=np.array([[1],[1],[-1],[-1]])
#权值初始化,3行1列(3个输入1个输出),取值范围-1-1
W=(np.random.random([3,1])-0.5)*2
print(W)
#学习率
lr=0.11
#神经网络的输出
O=0
def updata():
    global X,Y,W,lr
    O=np.sign(np.dot(X,W))#4个数据的预测值
    W_C=lr*(X.T.dot(Y-O))/int(X.shape[0])#更新权值的平均值
    W=W+W_C
for i in range(100):
    updata()#更新权值
    print(W)#打印当前的权值
    print(i)#打印迭代次数
    O=np.sign(np.dot(X,W))#计算当前的输出
    if (O==Y).all():#如果期望输出等于实际输出,模型收敛,循环结束
        print("结束")
        print("迭代次数:",i)
        break
#正样本
x1=[3,4]
y1=[3,3]
#负样本
x2=[1,0]
y2=[1,2]
#计算分界线的斜率以及截距
k=-W[1]/W[2]
d=-W[0]/W[2]
print('k=',k)
print('d=',d)
xdata=(0,5)
plt.figure()
plt.plot(xdata,xdata*k+d,'r')
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='y')
plt.show()

结果:

机器学习笔记-单层感知器_第7张图片

参考sign激活函数:https://blog.csdn.net/qq_36663518/article/details/107904308

参考视频:https://www.bilibili.com/video/BV1Rt411q7WJ?p=31&vd_source=166e4ef02c5e9ffa3f01c2406aec1508

你可能感兴趣的:(机器学习)