神经网络
权重w
偏置b
激励函数 f = Σxw + b
上层网络→下层网络
m*n矩阵代表权重矩阵;偏置的数量和下层网络的神经元数量一致,为n;
u = np.dot(x,w) + b
一般来说,输出层的神经元数量n个,则用n阶形式的独热编码格式数据来表示
 
几种激励函数:
1、阶跃函数
阶梯型函数,类似分段函数但是分段水平
def step_function(x):
  return np.where(x<=0,0,1)
2、sigmoid函数
在0-1间平滑变化
def sigmoid_function(x):
  return 1/(1+np.exp(-x))
3、tanh函数(双曲正切函数)
def tanh_function(x):
  return np.tanh(x)
4、ReLU函数(线性整流函数)
def relu_function(x):
  return np.where(x<=0,0,x)
5、Leaky ReLU函数
对ReLU进行了改进,使其在负数区域增加了一个小的梯度,避免输出为0影响后续学习
def leaky_relu_function(x):
  return np.where(x<=0,0.01*x,x)
6、恒等函数
将输入直接作为输出返回;处理预测连续数值中存在的回归问题用
y = x
7、SoftMax函数
形式类似概率公式,可以将输出结果当做概率来解释
def softmax_function(x):
  return np.exp(x)/np.sum(np.exp(x))
 
单一神经元实现:
import numpy as np
import matplotlib.pyplot as plt

X = np.arange(-1.0,1.0,0.2)
Y = np.arange(-1.0,1.0,0.2)

Z = np.zeros((10,10))

w_x = 2.5 
#权重的影响是:对应的输入对结果影响的大小,在这里表示为神经元的兴奋状态依赖于x轴变化的程度
w_y = 3.0

bias = 0.1
#偏置的影响是:神经元是否易于产生兴奋,网格颜色的变化加速度

for i in range(10):
    for j in range(10):
        u = X[i]*w_x + Y[j]*w_y + bias
        y = 1/(1+np.exp(-u))
        Z[i][j] = y
        
plt.imshow(Z,"gray",vmin=0.0,vmax=1.0)

plt.colorbar()
plt.show()
https://zhuanlan.zhihu.com/p/96040773