深度学习基础:神经网络原理与构建

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: **摘要:**本文介绍了深度学习中的神经网络基础,包括神经元模型、前向传播和反向传播。通过TensorFlow的Keras API,展示了如何构建并训练一个简单的神经网络,以对鸢尾花数据集进行分类。从数据预处理到模型构建、训练和评估,文章详细阐述了深度学习的基本流程,为读者提供了一个深度学习入门的起点。虽然深度学习领域广阔,涉及更多复杂技术和网络结构,但本文为后续学习奠定了基础。


一、引言

随着人工智能技术的快速发展,深度学习作为机器学习的一个重要分支,已经广泛应用于图像识别、自然语言处理、语音识别等多个领域。深度学习之所以取得如此显著的成果,主要归功于其核心技术——神经网络。本文将对神经网络的基本原理进行概述,并通过代码示例展示如何构建一个简单的神经网络。


二、神经网络概述

神经网络是一种模拟人脑神经元工作方式的计算模型,由大量神经元相互连接而成。每个神经元接收来自其他神经元的输入信号,通过激活函数产生输出信号,并将输出信号传递给其他神经元。神经网络通过调整神经元之间的连接权重来学习数据的特征,进而实现对输入数据的分类或预测。

神经网络通常由输入层、隐藏层和输出层组成。输入层负责接收原始数据,隐藏层负责提取数据的特征,输出层则负责产生最终的分类或预测结果。在深度学习中,通常使用多层神经网络(深度神经网络)来提取更高级别的特征,以提高模型的性能。


三、神经网络原理

3.1 神经元模型

神经元是神经网络的基本单元,其结构如图1所示。神经元接收来自其他神经元的输入信号x1, x2, ..., xn,通过加权求和得到净输入z,然后将z通过激活函数f得到输出y。神经元的数学模型可以表示为:

[ z = \sum_{i=1}^{n} w_i x_i + b ]

[ y = f(z) ]

其中,wi为第i个输入信号的权重,b为偏置项,f为激活函数。常用的激活函数有Sigmoid函数、ReLU函数等。

3.2 前向传播

在神经网络中,信息从输入层逐层传递到输出层的过程称为前向传播。在前向传播过程中,神经元的输入信号经过加权求和和激活函数处理后,产生输出信号并传递给下一层神经元。通过前向传播,神经网络可以计算出给定输入对应的输出。

3.3 反向传播

反向传播是神经网络训练的关键步骤。在训练过程中,神经网络通过反向传播算法调整神经元之间的连接权重,以减小模型在训练集上的误差。反向传播算法基于链式法则和梯度下降方法,通过计算误差对权重的梯度来更新权重值。具体来说,反向传播算法包括以下几个步骤:

(1)计算输出层的误差:根据输出层的实际输出和期望输出计算误差。

(2)反向传播误差:将误差逐层反向传播到隐藏层,计算隐藏层神经元的误差。

(3)计算梯度:根据误差和激活函数的导数计算误差对权重的梯度。

(4)更新权重:使用梯度下降方法更新权重值,以减小误差。


四、神经网络构建

下面我们将使用Python的深度学习框架TensorFlow来构建一个简单的神经网络,以实现对鸢尾花数据集(Iris dataset)的分类。

4.1 数据准备

首先,我们需要加载鸢尾花数据集,并将其划分为训练集和测试集。这里我们使用scikit-learn库来加载数据集,并使用train_test_split函数划分数据集。


from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.preprocessing import StandardScaler  
# 加载鸢尾花数据集  
iris = load_iris()  
X = iris.data  
y = iris.target  
# 数据标准化  
scaler = StandardScaler()  
X_scaled = scaler.fit_transform(X)  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

4.2 构建神经网络模型

接下来,我们使用TensorFlow的Keras API来构建一个简单的神经网络模型。该模型包含一个输入层(4个神经元,对应鸢尾花的四个特征)、一个隐藏层(10个神经元,使用ReLU激活函数)和一个输出层(3个神经元,使用Softmax激活函数进行多分类)。


import tensorflow as tf  
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense  
# 构建神经网络模型  
model = Sequential([  
    Dense(10, activation='relu', input_shape=(4,)),  
    Dense(3, activation='softmax')  
])  
# 编译模型  
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

4.3 训练模型

接下来,我们使用训练数据对神经网络模型进行训练。在Keras中,我们通过调用fit方法来训练模型,设置适当的训练轮次(epochs)和批处理大小(batch_size)。


# 训练模型  
history = model.fit(X_train, y_train, epochs=50, batch_size=10, validation_split=0.2)

在上面的代码中,validation_split=0.2表示将20%的训练数据用作验证集,以便在训练过程中监控模型的性能,并防止过拟合。epochs=50表示整个数据集将被遍历50次,而batch_size=10表示每次更新模型权重时使用的样本数量。

4.4 评估模型

模型训练完成后,我们可以使用测试集来评估模型的性能。


# 评估模型  
test_loss, test_acc = model.evaluate(X_test, y_test)  
print('Test accuracy:', test_acc)

这段代码将在测试集上评估训练好的模型,并打印出测试集上的准确率。

4.5 预测

我们还可以使用训练好的模型对新的未知数据进行预测。


# 进行预测  
predictions = model.predict(X_test)  
predicted_classes = np.argmax(predictions, axis=1)  
# 打印部分预测结果  
print("Predicted classes:", predicted_classes[:5])  
print("Actual classes:", y_test[:5])

这段代码使用模型对测试集进行预测,并输出前5个样本的预测类别和实际类别。

五、总结

本文概述了神经网络的基本原理,包括神经元模型、前向传播和反向传播算法。通过代码示例,我们展示了如何使用TensorFlow的Keras API构建一个简单的神经网络,并用其对鸢尾花数据集进行分类。从数据准备到模型构建、训练和评估,我们逐步介绍了深度学习的整个流程。

深度学习是一个广阔的领域,本文只是一个入门级的介绍。在实际应用中,可能还需要考虑更多的因素,如模型的正则化、优化器的选择、学习率的调整等。此外,对于更复杂的任务,可能需要设计更深的网络结构或使用其他高级技术,如卷积神经网络(CNN)用于图像处理,循环神经网络(RNN)用于序列数据等。希望本文能为读者提供一个深度学习的基础入门,并激发进一步学习和探索的兴趣。

目录
打赏
0
4
5
1
341
分享
相关文章
网管不再抓头发:深度学习教你提前发现网络事故
网管不再抓头发:深度学习教你提前发现网络事故
48 2
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
138 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
阿里云CDN:构建全球化智能加速网络的数字高速公路
阿里云CDN构建全球化智能加速网络,拥有2800多个边缘节点覆盖67个国家,实现毫秒级网络延迟。其三级节点拓扑结构与智能路由系统,结合流量预测模型,确保高命中率。全栈式加速技术包括QUIC协议优化和Brotli压缩算法,保障安全与性能。五层防御机制有效抵御攻击,行业解决方案涵盖视频、物联网及游戏等领域,支持新兴AR/VR与元宇宙需求,持续推动数字内容分发技术边界。
157 13
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
掌握并发模型:深度揭露网络IO复用并发模型的原理。
总结,网络 I/O 复用并发模型通过实现非阻塞 I/O、引入 I/O 复用技术如 select、poll 和 epoll,以及采用 Reactor 模式等技巧,为多任务并发提供了有效的解决方案。这样的模型有效提高了系统资源利用率,以及保证了并发任务的高效执行。在现实中,这种模型在许多网络应用程序和分布式系统中都取得了很好的应用成果。
96 35
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
85 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
2025 年网络法律论坛 | 应对安全风险,构建韧性举措
2025年查尔斯顿网络法律论坛汇聚法律、网络安全与保险行业专家,探讨全球威胁态势、人工智能应用及监管变化等议题。主旨演讲揭示非对称威胁与供应链漏洞,强调透明度和协作的重要性。小组讨论聚焦AI合理使用、监管热点及网络保险现状,提出主动防御与数据共享策略。论坛呼吁跨领域合作,应对快速演变的网络安全挑战,构建更具韧性的防御体系。
73 1
2025 年网络法律论坛 | 应对安全风险,构建韧性举措
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
80 8
新四化驱动,如何构建智能汽车的“全场景”可进化互联网络?
在智能化、电动化、网联化、共享化的时代浪潮中,汽车正从单纯的 “机械产品” 进化为先进的 “移动智能终端”。在软件定义汽车(SDV)的崭新时代,每一次 OTA 升级的顺利完成、每一秒自动驾驶的精准决策、每一帧车载娱乐交互的流畅呈现,都离不开一张实时响应、全域覆盖、安全可靠的广域网络。
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等