全连接神经网络的提出与应用
简介
全连接神经网络(Fully Connected Neural Network),又称多层感知器(Multilayer Perceptron,MLP),是一种人工神经网络的基本结构。它由多个神经元按层组成,各层之间的神经元相互连接。全连接神经网络被广泛应用于机器学习和深度学习领域,具有强大的模式识别和分类能力。
历史
全连接神经网络最早由美国心理学家Frank Rosenblatt在20世纪50年代提出。Rosenblatt设计了一种被称为感知器(Perceptron)的神经网络结构,使用了全连接的方式连接输入层和输出层的神经元。感知器的提出标志着神经网络的初步发展。
结构与原理
全连接神经网络由多个层次组成,包括输入层、隐藏层和输出层。每个层次由多个神经元构成,相邻层次之间的神经元通过连接权重进行连接。
输入层
输入层是神经网络的输入接口,接受外部输入的数据。每个神经元代表一个特征或属性。
隐藏层
隐藏层是连接输入层和输出层的中间层。每个隐藏层神经元接收上一层的输出,并通过激活函数处理后传递给下一层。
输出层
输出层是神经网络的输出接口,输出最终的结果。每个输出神经元代表一个类别或值。
权重与偏置
每个连接都有一个权重,表示神经元之间的连接强度。权重的大小决定了信号在神经网络中传递的重要性。每个神经元还有一个偏置,用于调整神经元的激活阈值。
激活函数
激活函数将输入信号转换为输出信号。常见的激活函数有sigmoid、ReLU、tanh等。
代码示例
import numpy as np
class FullyConnectedNN:
def __init__(self, input_size, hidden_size, output_size):
self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size
self.W1 = np.random.randn(self.input_size, self.hidden_size)
self.b1 = np.random.randn(self.hidden_size)
self.W2 = np.random.randn(self.hidden_size, self.output_size)
self.b2 = np.random.randn(self.output_size)
def forward(self, X):
self.z1 = np.dot(X, self.W1) + self.b1
self.a1 = self.sigmoid(self.z1)
self.z2 = np.dot(self.a1, self.W2) + self.b2
self.a2 = self.sigmoid(self.z2)
return self.a2
def backward(self, X, y, learning_rate):
m = X.shape[0]
delta2 = self.a2 - y
dW2 = np.dot(self.a1.T, delta2) / m
db2 = np.sum(delta2, axis=0) / m
delta1 = np.dot(delta2, self.W2.T) * self.sigmoid_derivative(self.a1)
dW1 = np.dot(X.T, delta1) / m
db1 = np.sum(delta1, axis=0) / m
self.W1 -= learning_rate * dW1
self.b1 -= learning_rate * db1
self.W2 -= learning_rate * dW2
self.b2 -= learning_rate * db2
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(self, x):
return self.sigmoid(x) * (1 - self.sigmoid(x))
# 使用全连接神经网络进行分类任务的示例
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])
model = FullyConnectedNN(2, 5, 1)
for i in range(10000):
output = model.forward(X)
model.backward(X, y, learning_rate=0.1)
predictions = np.round(output)
print(predictions)
``