神经网络(单层感知器Python实现)

人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。

神经网络(单层感知器Python实现)_第1张图片

应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

神经网络(单层感知器Python实现)_第2张图片

Xi指的是输入节点

Wi指的是权重

b指的是变差

sigma是求和

f是一个激活函数

 

神经网络(单层感知器Python实现)_第3张图片

还有另外一种形式

b变差变成了W0*X0,然后X0 = 1,我觉得这个好看点

神经网络(单层感知器Python实现)_第4张图片

公式的推导过程,代码实现的基础

神经网络(单层感知器Python实现)_第5张图片

下面用Python来实现一个简单单层感知器的实例,源码给大家献上了,还有注释呢。。。

import numpy as np
import matplotlib.pyplot as plt

#define the input data
X = np.array([[1,3,3],
             [1,4,3],
             [1,1,1],
             [1,2,1]])
#define the label
T = np.array([[1],
             [1],
             [-1],
             [-1]])

#define and initialize the weight 0-1
W = np.random.random([3,1])

#define the learning rate
lr = 0.1

#define the neural network
Y = 0

#update the weight function
def train():
    global X,Y,W,lr,T
    #calculate 4 predicted value meanwhile ,Y(4,1)
    Y = np.sign(np.dot(X,W))
    #T-Y get the label and predicted error E(4,1)
    E = T - Y
    #calculate the weight change
    delta_W = lr * (X.T.dot(E))/X.shape[0]
    #update weight value
    W = W + delta_W

for i in range(100):
    #update weight value
    train()
    #print the traning count
    print("training count:",i+1)
    #print the weights
    print("weights:",W)
    #calculate the current output
    Y = np.sign(np.dot(X,W))
    #all() All the Y value is equal All the T value
    if (Y == T).all():
        print("Finish!")
        break;

#draw
#example x,y
x1 = [3,4]
y1 = [3,3]
x2 = [1,2]
y2 = [1,1]

#define the calssify line`s slope and intercept
k = -W[1]/W[2]
d = -W[0]/W[2]

#through two point insure  a line
two_point = (0,5)
#draw a calssify line
plt.plot(two_point,two_point*k+d,'r')
#draw the example point
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='y')
plt.show()

                 

神经网络(单层感知器Python实现)_第6张图片

 

 

 

 

你可能感兴趣的:(神经网络)