马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
人工神经网络是一种受生物神经体系开导的呆板学习模子,旨在通过毗连大量的节点(称为神经元或节点)来模仿人脑的学习方式。它是一种在监督学习和非监督学习中广泛应用的深度学习模子。
人工神经网络的根本布局
一个人工神经网络通常由以下三个部分构成:
- 输入层(Input Layer):
担当输入数据,每个神经元代表一个特性。
- 埋伏层(Hidden Layers):
通过权重、偏置和激活函数对输入举行处置惩罚,可以有一层或多层,决定了模子的表达本领。
- 输出层(Output Layer):
提供终极的猜测效果,输出层的神经元数量取决于任务范例(如分类的种别数)。
神经元
每个神经元的输出由输入的加权和颠末激活函数盘算得出:
此中:
激活函数
常见激活函数包罗:
- Sigmoid:
- ReLU:
- Tanh:
- Softmax: 用于多分类任务,输出概率分布。
工作原理
- 前向传播(Forward Propagation):
数据从输入层通过埋伏层到输出层,逐层盘算效果。
- 丧失函数(Loss Function):
用于评估猜测值与现实值之间的差距。比方:
- 均方毛病(MSE):回归题目
- 交织熵(Cross Entropy):分类题目
- 反向传播(Backpropagation):
通过链式法则盘算丧失函数对每个参数的梯度,并用梯度降落算法更新参数,优化模子。
常见范例的人工神经网络
- 前馈神经网络(Feedforward Neural Network, FNN):
数据单向活动,无环路,是最底子的神经网络范例。
- 卷积神经网络(Convolutional Neural Network, CNN):
得当处置惩罚图像数据,通过卷积层提取特性。
- 循环神经网络(Recurrent Neural Network, RNN):
得当处置惩罚序列数据,可以或许捕获时间依赖关系。
- 天生对抗网络(Generative Adversarial Network, GAN):
包罗天生器和鉴别器,用于天生与真实数据相似的样本。
- 自动编码器(Autoencoder):
用于降维或去噪,通过学习输入数据的紧凑体现举行重构。
示例代码
以下是一个简单的多层感知器(MLP)在 TensorFlow 中实现的分类示例:- import tensorflow as tf
- from tensorflow.keras.models import Sequential
- from tensorflow.keras.layers import Dense
- from tensorflow.keras.datasets import mnist
- from tensorflow.keras.utils import to_categorical
- # 加载 MNIST 数据集
- (X_train, y_train), (X_test, y_test) = mnist.load_data()
- X_train = X_train.reshape(-1, 28 * 28).astype('float32') / 255.0
- X_test = X_test.reshape(-1, 28 * 28).astype('float32') / 255.0
- y_train = to_categorical(y_train, 10)
- y_test = to_categorical(y_test, 10)
- # 构建模型
- model = Sequential([
- Dense(128, activation='relu', input_shape=(28*28,)),
- Dense(64, activation='relu'),
- Dense(10, activation='softmax') # 10 类分类
- ])
- # 编译模型
- model.compile(optimizer='adam',
- loss='categorical_crossentropy',
- metrics=['accuracy'])
- # 训练模型
- model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
- # 评估模型
- loss, accuracy = model.evaluate(X_test, y_test)
- print(f"Test Accuracy: {accuracy:.2f}")
复制代码 运行效果- Epoch 1/10
- 1500/1500 [==============================] - 3s 2ms/step - loss: 0.2661 - accuracy: 0.9229 - val_loss: 0.1471 - val_accuracy: 0.9562
- Epoch 2/10
- 1500/1500 [==============================] - 2s 2ms/step - loss: 0.1114 - accuracy: 0.9668 - val_loss: 0.1018 - val_accuracy: 0.9703
- Epoch 3/10
- 1500/1500 [==============================] - 3s 2ms/step - loss: 0.0769 - accuracy: 0.9755 - val_loss: 0.0972 - val_accuracy: 0.9714
- Epoch 4/10
- 1500/1500 [==============================] - 2s 1ms/step - loss: 0.0582 - accuracy: 0.9820 - val_loss: 0.0962 - val_accuracy: 0.9727
- Epoch 5/10
- 1500/1500 [==============================] - 2s 1ms/step - loss: 0.0463 - accuracy: 0.9846 - val_loss: 0.0908 - val_accuracy: 0.9748
- Epoch 6/10
- 1500/1500 [==============================] - 2s 2ms/step - loss: 0.0354 - accuracy: 0.9886 - val_loss: 0.1065 - val_accuracy: 0.9720
- Epoch 7/10
- 1500/1500 [==============================] - 2s 1ms/step - loss: 0.0308 - accuracy: 0.9896 - val_loss: 0.1528 - val_accuracy: 0.9607
- Epoch 8/10
- 1500/1500 [==============================] - 2s 1ms/step - loss: 0.0230 - accuracy: 0.9921 - val_loss: 0.1050 - val_accuracy: 0.9735
- Epoch 9/10
- 1500/1500 [==============================] - 2s 1ms/step - loss: 0.0238 - accuracy: 0.9923 - val_loss: 0.1078 - val_accuracy: 0.9747
- Epoch 10/10
- 1500/1500 [==============================] - 2s 1ms/step - loss: 0.0184 - accuracy: 0.9942 - val_loss: 0.1165 - val_accuracy: 0.9735
- 313/313 [==============================] - 1s 1ms/step - loss: 0.1037 - accuracy: 0.9741
- Test Accuracy: 0.97
复制代码 人工神经网络的优缺点
长处
- 非线性映射本领强:
得当复杂任务,如图像辨认、自然语言处置惩罚。
- 自动特性提取:
无需手动筹划特性,模子可以学习特性。
- 高度可扩展性:
网络规模可调解,顺应差别任务。
缺点
- 训练时间长:
特殊是深层网络,必要大量盘算资源。
- 必要大规模数据:
对数据量敏感,小数据集易过拟合。
- 缺乏可表明性:
很难表明网络为何得出某一猜测效果。
应用范畴
- 盘算机视觉: 图像分类、目的检测、语义分割。
- 自然语言处置惩罚: 呆板翻译、文本天生、感情分析。
- 语音处置惩罚: 语音辨认、语音合成。
- 游戏: 深度强化学习在棋类游戏中的应用。
- 保举体系: 个性化内容保举。
|