DL之Perceptron:Perceptron感知器(多层感知机/多层神经网络/人工神经元)的简介、原理代码讲解、案例应用之详细攻略
目录
Perceptron感知器(多层感知机/多层神经网络/人工神经元)的简介
DL之Perceptron:感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题之详细攻略
5、利用Perceptron基于数据样本点,构建神经网络实现分类
DL之perceptron:利用perceptron感知机对股票实现预测
DL之Perceptron&AdalineGD:基于iris莺尾花数据集利用Perceptron感知机和AdalineGD算法实现二分类
ML:基于自定义数据集利用Logistic、梯度下降算法GD、LoR逻辑回归、Perceptron感知器、SVM支持向量机、LDA线性判别分析算法进行二分类预测(决策边界可视化)
DL之Perceptron/MLP:基于titanic泰坦尼克数据集利用自定义单层感知机、库模型单层感知机和多层感知机算法依次实现二分类并对比三种模型性能
相关文章
DL之AF:机器学习/深度学习中常用的激活函数(sigmoid、softmax等)简介、应用、计算图实现、代码实现详细攻略
Perceptron感知器(多层感知机/多层神经网络/人工神经元)的简介
感知机是由美国学者FrankRosenblatt 在1957 年提出来的,被看作为神经网络(深度学习)的起源的算法。
- 三功能:加权,求和,激励
- 感知机的权重在训练过程中基于训练数据确定。
神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活” 。这里将这个界限值称为阈值,用符号θ 表示。
1、感知机来解决简单的问题
使用感知机可以表示与门、与非门、或门的逻辑电路。这里重要的一点是:与门、与非门、或门的感知机构造是一样的。实际上,3 个门电路只有参数的值(权重和阈值)不同。也就是说,相同构造的感知机,只需通过适当地调整参数的值,就可以像“变色龙演员”表演不同的角色一样,变身为与门、与非门、或门。
2、感知机的局限性
Perceptron Can not solve XOR problem。使用感知机可以实现与门、与非门、或门三种逻辑电路。但是无法解决异或门(XOR gate)。
XOR:仅当x1 或x2 中的一方为1 时,才会输出1;“异或”是拒绝其他的意思。
(1)、或门:灰色区域是感知机输出0 的区域。图中直线可以将这4 个点正确地分开。
异或门:○和△表示异或门的输出。图中无法找到一条直线分割○和△的空间。
1)、实际上,感知机的绝妙之处在于它可以“叠加层”。
(2)、通过组合与门、与非门、或门实现异或门
3、多层感知机的简介
4、感知器的原理代码实现
import numpy as np
import matplotlib.pyplot as plt
#输入数据
X = np.array ([ [1, 3, 3], [1, 4, 3], [1, 1, 1]])
#标签
Y = np.array ([1, 1, -1])
#权值初始化,1行3列,取值范围[-1,1]
W = (np.random.random (3) -0.5) *2
print (W)
#设置学习率、迭代次数、神经网络基础
lr = 0.11
n = 0
O = 0
def update():
global X,Y,W,lr,n
for _ in range(100):
update() #更新权值
#正样本
x1=[3,4]
y1=[3,3]
#负样本
x2=[1]
y2=[1]
#计算分界线的斜率以及截距
k=-W[1]/W[2]
d=-W[0]/W[2]
print('k=',k)
print('d=',d)
xdata=np.linspace(0,5)
plt.figure()
plt.plot(xdata,xdata*k+d,"r")
plt.plot(x1,y1,'bo') #正样本蓝色散点表示
plt.plot(x2,y2,'yo') #负样本蓝色散点表示
plt.show()
DL之Perceptron:感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题之详细攻略
https://yunyaniu.blog.csdn.net/article/details/126925771
5、利用Perceptron基于数据样本点,构建神经网络实现分类
题目∶假设平面坐标系上有三个点,(3.3)(4,3)这两个点的标签为1,(1,1)这个点的标签为-1。构建神经网络来分类。
思路︰我们要分类的数据是2维数据,所以只需要2个输入节点,我们可以把神经元的偏置值也设置成一个节点,这样我们需要3个输入节点。
输入数据有3个(1,3,3),(1,4,3).(1,1,1)数据对应的标签为(1,1,-1)
初始化权值wo,W1,wz取-1到1的随机数学习率(learning rate)设置为0.11激活函数为sign函数
import numpy as np
import matplotlib.pyplot as plt
#输入数据
X = np.array ([ [1, 3, 3], [1, 4, 3], [1, 1, 1]])
#标签
Y = np.array ([1, 1, -1])
#权值初始化,1行3列,取值范围[-1,1]
W = (np.random.random (3) -0.5) *2
print (W)
#设置学习率、迭代次数、神经网络基础
lr = 0.11
n = 0
O = 0
def update():
global X,Y,W,lr,n
n+=1
O = np.sign (np.dot(X, W.T))
W_C = lr* ((Y-O.T).dot(X))/int(X.shape[0])
W = W + W_C
for _ in range(100):
update() #更新权值
print ("当前权值:",W) #打印当前权值
print ("迭代次数:",n) #打印迭代次数
O = np.sign(np.dot(X, W.T)) #计算当前输出
if(O==Y.T).all(): #如果实际输出等于期望输出,模型收敛,循环结束
print("Finished")
print("epoch:",n)
break
#正样本
x1=[3,4]
y1=[3,3]
#负样本
x2=[1]
y2=[1]
#计算分界线的斜率以及截距
k=-W[1]/W[2]
d=-W[0]/W[2]
print('k=',k)
print('d=',d)
xdata=np.linspace(0,5)
plt.figure()
plt.plot(xdata,xdata*k+d,"r")
plt.plot(x1,y1,'bo') #正样本蓝色散点表示
plt.plot(x2,y2,'yo') #负样本蓝色散点表示
plt.show()
Perceptron感知器的案例应用
1、基础案例
DL之perceptron:利用perceptron感知机对股票实现预测
https://yunyaniu.blog.csdn.net/article/details/84227999
2、进阶案例
DL之Perceptron&AdalineGD:基于iris莺尾花数据集利用Perceptron感知机和AdalineGD算法实现二分类
https://yunyaniu.blog.csdn.net/article/details/110847605
ML:基于自定义数据集利用Logistic、梯度下降算法GD、LoR逻辑回归、Perceptron感知器、SVM支持向量机、LDA线性判别分析算法进行二分类预测(决策边界可视化)
https://yunyaniu.blog.csdn.net/article/details/110455073