本文主要要以周志华的机器学习书为蓝本编写
第5章神经网络
5.1python 实现神经元模型
神经网络中最基本的成分是神经元 (neuro且)模型,如下图所示:
1943 年, [McCulloch and Pitts, 1943] 将上述情形抽象为国 5.1所示的简单模型,这就是一直沿用至今的 "M-P 神经元模型 "。在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阀值进行比较,然后通过"激活函数" (activation function) 处理以产生神经元的输出。
理想中的激活函数是图5.2(a)所示的阶跃函数,它将输入值映射为输出值"0"或"1",显然 "1" 对应于神经元兴奋,"0"对应于神经元抑制。然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数典型的Sigmoid函数如图5.2(b) 所示,它把可能在较大范围内变化的输入值挤压到 (0,1) 输出值范围内,因此有时也称为 "挤压函数" (squashiing function)。
把许多个这样的神经元按-定的层次结构连接起来,就得到了神经网络.事实上,从计算机科学的角度看,我们可以先不考虑神经网络是否真的模拟了生物神经网络,只需将一个神经网络视为包含了许多参数的数学模型,这个模型是若干个函数,例如的相互(嵌套)代入而得.有效的神经网络学习算法大多以数学证明为支撑。
5.1.1 Python实现Sigmoid函数
数据集如下:
计算神经元输出的方程:,
训练集输入方式:training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
训练集的输出方式:training_set_outputs = array([[0, 1, 1, 0]]).T
定Sigmoid函数:
import math
#导入math模块,然后使用math静态对象调用幂函数。
def Sigmoid(x):#定义函数
y = 1 / (1 + math.exp(-x))
print(y)
Sigmoid(5)