人工神经元基本模型
一、数学原理
人工神经元是一个多输入、单输出的非线性组件,是人工神经网络的基本单元,其简化结构如图:

其输入与输出关系可具体描述为如下形式:
式中,$x{i}(i=1,2,…,n)$是输入信号,从其他神经元传入或从外部输入;$w{i}$表示从神经元$i$到本神经元的连接权重(加权系数);$\theta$为神经元内部阈值,设置用于正确分类样本;$f()$为激活函数,决定神经元输出。以下为几种常见的激活函数:
1.阈值型函数
其输出只有两种情况,一种可用阶跃型函数表示,另一种可用符号函数表示,两种函数公式如下:
其函数图像如下:
2.饱和型函数
其输出在某一区间呈线性变换。函数公式如下:
其函数图像如下:
3.双曲正切函数
其与饱和型函数图形相似,但更接近实际情况。函数公式如下:
其函数图像如下:
4.S型函数
其在$(0,1)$内连续取值且单调可微,被称为Sigmoid函数,简称S型函数,用于BP网络。函数公式如下:
其函数图像如下:
5.高斯函数
用于RBF网络。函数公式如下:
其函数图像如下:
6.ReLU函数
其使得神经网络的神经元具有稀疏激活性。函数公式如下:
其函数图像如下:
二、代码复现
假设我们想要创建一个神经元,它有两个输入,权重分别为0.5和-0.3,偏置为0.6,并使用使用S型激活函数,其超参数beta设置为1。实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| import numpy as np
class Neuron: def __init__(self, weights, bias): self.weights = np.array(weights) self.bias = bias
def threshold(self, x): return np.where(x >= 0, 1, 0)
def saturated(self, x, k): dk = 1 / k return np.where(x >= dk, 1, np.where(-dk <= x, k * x, 0))
def hyperbolic_tangent(self, x): return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
def sigmoid(self, x, beta): return 1 / (1 + np.exp(-beta * x))
def guass(self, x, delta): return np.exp(-x ** 2 / delta)
def ReLU(self, x): return np.where(x >= 0, x, 0)
def activation_function(self, x, c, p): if c == 1: return self.threshold(x) elif c == 2: return self.saturated(x, p) elif c == 3: return self.hyperbolic_tangent(x) elif c == 4: return self.sigmoid(x, p) elif c == 5: return self.guass(x, p) elif c == 6: return self.ReLU(x) else: raise ValueError('激活函数不存在')
def forward(self, inputs, c=4, p=1): z = np.dot(inputs, self.weights) + self.bias return self.activation_function(z, c, p)
if __name__ == "__main__": weights = [0.5, -0.3] bias = 0.6
neuron = Neuron(weights, bias)
inputs = np.array([0.1, -0.2])
output = neuron.forward(inputs) print("神经元输出:", output)
|
在上述代码中,Neuron类先通过forward函数计算神经元模型数学公式中的$I$,然后通过activation_function实现对激活函数的选择及输出。案例实现结果如下:
神经元输出: 0.6704011598088686
参考文献
[1] 毕晓君. 2020. 计算智能[M]. 人民邮电出版社, 北京. 17-19.