gpt4 book ai didi

python - 为什么简单的与门神经网络在没有 BIAS 的情况下无法工作?

转载 作者:行者123 更新时间:2023-11-30 09:02:53 24 4
gpt4 key购买 nike

像这样一个由 2 个输入和 1 个输出组成的简单神经网络,没有偏差,似乎不起作用。

|input1||weight1 weight2| = Z
|input2|

输出 = sigmoid(Z)

然而,当添加 BIAS 时它可以完美地工作,为什么它可以工作以及其背后的数学原理是什么?

|input1||weight1 weight2| = Z
|input2|

输出 = sigmoid(Z - BIAS)

这是带有 BIAS 的工作版本的代码:

import numpy as np
import random as r
import sys

def sigmoid(ip, derivate=False):
if derivate:
return ip*(1-ip)
return 1.0/(1+np.exp(-1*ip))

class NeuralNet:
global sigmoid

def __init__(self):
self.inputLayers = 2
self.outputLayer = 1
self.bias = r.random()

def setup(self):
self.i = np.array([r.random(), r.random()], dtype=float).reshape(2,)
self.w = np.array([r.random(), r.random()], dtype=float).reshape(2,)

def forward_propogate(self):
self.z = self.w*self.i
self.o = sigmoid(sum(self.z)-self.bias)

def optimize_cost(self, desired):
i=0
current_cost = pow(desired - self.o, 2)
for weight in self.w:
dpdw = -1*(desired-self.o) * (sigmoid(self.o, derivate=True)) * self.i[i]
self.w[i] = self.w[i] - 2*dpdw
i+=1
#calculate dp/dB
dpdB = -1*(desired-self.o) * (sigmoid(self.o, derivate=True)) * -1
self.bias = self.bias - 2*dpdB
self.forward_propogate()

def train(self, ip, op):
self.i = np.array(ip).reshape(2,)
self.forward_propogate()
self.optimize_cost(op[0])

n = NeuralNet()
n.setup()
# while sys.stdin.read(1):
success_rate = 0
trial=0
done = False
while not done:
a = [0.1,1,0.1,1]
b = [0.1,0.1,1,1]
c = [0,0,0,1]
for i in range(len(a)):
trial +=1
n.train([a[i],b[i]],[c[i]])
if c[i] - n.o < 0.01:
success_rate +=1
print(100*success_rate/trial, "%")
if 100*success_rate/trial > 99 and trial > 4:
print(100*success_rate/trial, "%")
print("Network trained, took: {} trials".format(trial))
print("Network weights:{}, bias:{}".format(n.w, n.bias))
done = True
break

最佳答案

偏差只是截距的移动。您在本示例中设置的神经网络似乎是一个没有隐藏层的单层神经网络,这实际上是一个逻辑回归,它只是一个线性模型。

当您不学习截距值时,截距默认为 0,因此它始终穿过原点,而您只是学习直线的斜率。要正确对数据的 AND 进行分类,即对右上角的 (1,1) 进行分类,但不对任何其他点进行分类,您需要非零截距,因为没有一条经过原点的线只有右上角在一侧,其他三个点在另一侧。

关于python - 为什么简单的与门神经网络在没有 BIAS 的情况下无法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59607219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com