神经网络学习算法
本次神经网络学习算法旨在完成对加法器的模拟:
真值表:
通过学习训练使得神经网络能够对给出的输入做出正确的输出。
训练函数:
这里,σ作为启动函数
由于此处只有两个自变量,因此训练函数即为 和监督学习算法类似,只是在求和符号外多了一启动函数σ
import numpy as np
import math
x1 = np.array([0, 0, 1, 1])
x2 = np.array([0, 1, 0, 1])
t = np.array([0, 0, 0, 1])
th0 = np.random.random()
th1 = np.random.random()
th2 = np.random.random()
e0 = e1 = e2 = 3
eps = 1e-4
al = 0.01
while e0 > eps or e1 > eps or e2 > eps:
for i in range(4):
s = 1 / 1 + math.exp(-x1[i])
e0 = (1 / 1 + math.exp(-(th0 + th1 * x1[i] + th2 * x2[i])) - t[i]) * s * (1 - s)
e1 = e0 * x1[i]
e2 = e0 * x2[i]
th0 = th0 - al * e0
th1 = th1 - al * e1
th2 = th2 - al * e2
print(th0, th1, th2)
|