有监督神经网络的基本结构的示意图:
输入层 (Input Layer) 隐藏层 (Hidden Layer(s)) 输出层 (Output Layer)
+------------+ +------------+ +------------+
| 输入 1 | - | 隐藏神经元 | - | 输出神经元 |
| (Feature 1)| \ | (Neuron) | \ | (Neuron) |
+------------+ \ +------------+ \ +------------+
| 输入 2 | \ | 隐藏神经元 | \ | |
| (Feature 2)| >- - - - - - - - -| (Neuron) | >- - - - - - - - -| |
+------------+ / +------------+ / +------------+
| ... | / | ... | / | |
| (Features) | - | (Neurons) | - | |
+------------+ +------------+ +------------+
| 输入 N | | 隐藏神经元 | | 输出神经元 |
| (Feature N)| - - - - - - - - - - - -| (Neuron) | - - - - - - - - - - - -| (Neuron) |
+------------+ +------------+ +------------+
在这个示意图中:
输入层 (Input Layer): 这是神经网络的第一层,由输入特征组成。每个输入特征对应一个神经元。这些神经元将数据传递给下一层。
隐藏层 (Hidden Layer(s)): 网络可以有一个或多个隐藏层。隐藏层的神经元对输入数据进行变换和特征提取。每个隐藏层的神经元与前一层的每个神经元通过加权连接,并且通常会有一个偏置项。隐藏层中的神经元应用激活函数来引入非线性。
输出层 (Output Layer): 这是神经网络的最后一层,它产生网络的输出。输出层的设计取决于特定任务(例如,分类或回归)。对于多类分类任务,输出层的每个神经元通常对应一个类别,并且可能会使用softmax激活函数来产生概率分布。对于回归任务,输出层可能只有一个神经元,用于输出连续值。
在训练过程中,网络使用有监督学习,这意味着每个输入样本都有一个对应的目标输出。网络的预测输出与目标输出之间的差异通过损失函数来衡量,然后通过反向传播算法来调整网络权重,以减少这个差异。
在文本中,我可以为你描述一个简单的神经网络的数学模型。考虑一个包含输入层、一个隐藏层和一个输出层的前馈神经网络。对于这个网络,我们可以用以下方式表示其数学模型:
#输入层:
x = [x1, x2, ..., xn]^T
#权重矩阵 (从输入层到隐藏层):
W1 = [w11, w12, ..., w1m;
w21, w22, ..., w2m;
...;
wn1, wn2, ..., wnm]
#偏置向量 (隐藏层):
b1 = [b11, b12, ..., b1m]^T
#隐藏层激活函数:
f(·)
#隐藏层输出 (经过激活函数):
h = f(W1 * x + b1)
#权重矩阵 (从隐藏层到输出层):
W2 = [w21, w22, ..., w2k;
...;
wm1, wm2, ..., wmk]
#偏置向量 (输出层):
b2 = [b21, b22, ..., b2k]^T
#输出层激活函数:
g(·)
#输出层输出 (经过激活函数):
y = g(W2 * h + b2)
在这个数学模型中:
n
个特征。k
个输出,对应于分类问题中的类别或回归问题中的预测值。每个神经元的输出是其输入的加权和,再通过一个激活函数进行非线性变换。整个网络通过反向传播算法进行训练,通过调整权重(W1, W2)和偏置(b1, b2)来最小化预测输出和实际输出之间的差异。
下面使用Keras实现一个简单的二分类网络:
from tensorflow.keras import models, layers
model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(32,)))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10)
该网络包含一个隐藏层,ReLU作为激活函数,Sigmoid作为输出层激活函数。