神经网络实战:

深度学习——神经网络简单实践(在乳腺癌数据集上的小型二分类示例)-CSDN博客https://blog.csdn.net/2302_78022640/article/details/150779819?spm=1001.2014.3001.5502

深度学习——神经网络(PyTorch 实现 MNIST 手写数字识别案例)-CSDN博客https://blog.csdn.net/2302_78022640/article/details/150781035


深度学习:人工智能的核心驱动力

一、什么是深度学习

深度学习(Deep Learning)是机器学习的一个重要分支

核心是通过构建多层神经网络(深度神经网络) 模拟人类大脑的信息处理方式,从数据中自动学习特征和规律,最终实现对复杂任务的预测、分类或生成。

与传统的机器学习相比,深度学习能够自动从数据中提取特征,减少人工设计特征的工作量,并在语音识别、图像处理、自然语言处理等领域取得了突破性成果。

通俗来说,深度学习的本质是用多层非线性变换将原始数据映射到更高层次的抽象特征空间,从而让计算机更好地理解复杂问题。


二、深度学习的核心要素

1. 神经网络(Neural Network)

大脑中的神经元:

计算机中的神经元:

x1~xn这些外部信息,通过w1~wn这些突触,传入到神经元,神经元再传给其他神经元或输出。

怎样得到这样的神经元(推导):

  • 逻辑回归(Logistic Regression) 是神经网络的理论基础之一。

  • 逻辑回归模型的形式和 单层感知机(即由一个或多个神经元构成的最简单神经网络(没有隐藏层) 很相似:

    • 输入 → 权重加权求和 → 激活函数 → 输出概率。

  • 单层感知机与逻辑回归的主要不同在于激活函数

所以以逻辑回归为例,为了得到划分线

假设y=kx+b:

最终得到的结果可变换为矩阵形式即:

得到的神经元即可表达为:

 非线性函数sigmoid曲线(激活函数):

神经元(Neuron)神经网络的基本计算单元

神经元的作用:

输入 → 权重加和 → 激活函数 → 输出

训练神经网络所要得到的目标就是:最优参数权重Wi和偏置b(b在此神经元内即是w3)

而目前得到的 权重Wi和偏置b 并非最优

训练过程

  • 我们输入大量训练数据

  • 神经元根据当前的权重和偏置计算输出

  • 与真实标签比较(用损失函数)

  • 通过反向传播调整权重 wi 和偏置 b,让输出越来越接近真实标签。

整个神经网络:由很多神经元组成,层层堆叠,训练后形成能解决任务的模型。

每个节点代表一种特定的输出函数,称为激活函数(activation function)。

两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重

(中间绿色为神经元,两侧为输入输出)

1、设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;

2、神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;

3、结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。

节点该如何确定?

输入层的节点数:与特征的维度匹配

输出层的节点数:与目标的维度匹配。

中间层(隐藏层)的节点数:一般是根据经验来设置。预设几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。

层次结构:输入层 → 隐藏层 → 输出层。(深度学习的“深”就来自于隐藏层的数量)

每个隐藏层 = 由多个神经元组成的一层

  • 一个神经元是一个点,而一层通常包含几十、几百、甚至上千个神经元。

  • 每一层的神经元 并行计算,然后把结果传递给下一层。

作用:

  • 输入层:接收原始数据(像素、特征)。(对于图片,像素就是其特征)

  • 隐藏层:由许多神经元组成,负责特征提取和非线性变换。

  • 输出层:最终给出预测结果。


2.感知机(Perceptron)

单层感知机:

(输入层→ 输出层,无隐藏层)

用矩阵乘法来表达:

使用越阶函数等激活函数,本质上是一种线性分类器,只能解决线性可分问题。

解释:单层感知机的学习能力非常有限,对与像异或问题这样的线性不可分情形,单层感知机就搞不定(线性不可分即输入训练数据存在一个线性超平面能够将其进行线性分类

单层感知机即使使用非线性激活函数(如 Sigmoid、ReLU 等),仍然无法解决非线性可分问题,核心原因在于其网络结构的局限性,而非激活函数本身。“输入特征的线性组合” 是对输入的一次线性变换(即权重与输入的内积),而激活函数只是对这个线性结果进行 “非线性映射”。

多层感知器:

多层感知机(MLP)是最经典、最基础的神经网络结构

增加了隐藏层。隐藏层是神经网络可以做非线性分类的关键。

第一层的输出是对输入的 “非线性特征映射”(线性变换 + 激活函数)

第二层再对这些非线性特征进行线性组合 —— 最终的决策边界可以是曲线、曲面等非线性形式

假设我们的预测目标是一个向量,那么与前面类似,只需要在“输出层”再增加节点即可。


3. 激活函数(Activation Function)

激活函数是神经网络的“非线性开关”

其核心作用是为网络注入非线性能力,使模型能够学习和表示复杂的非线性关系。

常见类型

  • 阶跃函数:最简单的激活函数,输出只有 0 或 1。

激活函数PyTorch 调用方式数学公式输出范围常见使用场景
Sigmoidnn.Sigmoid()torch.sigmoid(x)(0, 1)二分类输出层
Tanhnn.Tanh()torch.tanh(x)(-1, 1)RNN、隐藏层
ReLUnn.ReLU()torch.relu(x)[0, ∞)CNN、MLP 隐藏层
Leaky ReLUnn.LeakyReLU(negative_slope=0.01)(-∞, ∞)改进版 ReLU
ELUnn.ELU(alpha=1.0)(-α, ∞)深层网络
Swishtorch.nn.SiLU()torch.sigmoid(x) * x(-∞, ∞)Google 深度 CNN
Softmaxnn.Softmax(dim=1)torch.softmax(x, dim=1)(0,1),和=1多分类输出层
Softplusnn.Softplus()(0, ∞)特殊任务
Maxout需自定义层(-∞, ∞)NLP、图像分类

为什么需要激活函数

在神经元计算中:如果没有激活函数,整个网络就是线性函数的堆叠(多层线性还是线性),无法表示复杂关系。

激活函数的作用

  1. 引入非线性:让神经网络能够逼近任意复杂函数(通用逼近定理)。

  2. 增加表达能力:不同函数适合不同任务。

  3. 控制输出范围:比如 Sigmoid 把输出压缩到 (0,1),适合概率建模。


4. 损失函数(Loss Function)

损失函数的作用:使得参数尽可能的与真实的模型接近。

1、衡量预测效果

  • 如果损失值很小,说明预测结果和真实结果接近;

  • 如果损失值很大,说明预测结果和真实结果差得远。

2、指导参数更新

  • 训练神经网络时,目标是 最小化损失函数

  • 通过 梯度下降(Gradient Descent),我们利用损失函数对参数的梯度,更新神经元的权重和偏置。

3、防止过拟合 / 欠拟合

  • 一些损失函数里会引入 正则化惩罚项(比如 L1/L2 正则化),帮助模型防止过拟合:  通过在损失函数中加入 “正则项”(惩罚项),人为增加 “复杂模型” 的损失,迫使模型在 “拟合训练数据” 和 “保持自身简单” 之间做权衡

  • 损失函数 = 预测误差(如均方误差、交叉熵) + 正则项(模型复杂度惩罚)

在训练神经网络中的损失函数:

  1. 输入数据:外部信息xi(同时给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。)

  2. 前向传播:计算预测值

  3. 计算损失:用损失函数比较预测值​ 和真实标签 y

  4. 反向传播:根据损失函数的梯度更新权重 W,b (BP神经网络(Back-propagation,反向传播))

  5. 迭代优化,直到损失函数收敛

常用的损失函数

0-1损失函数

均方差损失(MSE)

平均绝对差损失

交叉熵损失(Cross Entropy)

合页损失

损失函数PyTorch 调用方式数学公式输出范围常见使用场景
均方误差 (MSELoss)nn.MSELoss()[0, ∞)回归任务
平均绝对误差 (L1Loss/MAE)- 不光滑,优化困难y_i - \hat{y}_i- 抗异常值
交叉熵 (CrossEntropyLoss)nn.CrossEntropyLoss()(0, ∞)多分类任务
二元交叉熵 (BCELoss)nn.BCELoss()(0, ∞)二分类任务
带 Logits 的 BCE (BCEWithLogitsLoss)nn.BCEWithLogitsLoss()(0, ∞)二分类任务
KL 散度 (KLDivLoss)- 不对称( D_{KL}(P- 度量分布差异
Huber Loss (SmoothL1Loss)[0, ∞)(\text{Huber}(y,\hat{y})=\begin{cases} \frac{1}{2}(y-\hat{y})^2 &y-\hat{y}-\frac{1}{2}\delta) & \text{else} \end{cases})
负对数似然 (NLLLoss)nn.NLLLoss()(0, ∞)多分类任务
余弦相似度损失 (CosineEmbeddingLoss)nn.CosineEmbeddingLoss()[0, 2]序列/文本相似度
对比损失 (ContrastiveLoss)需自定义实现[0, ∞)Siamese 网络
Triplet Lossnn.TripletMarginLoss(margin=1.0)[0, ∞)人脸识别、度量学习


5. 优化算法(Optimization)

深度学习常用的优化方法是 梯度下降(Gradient Descent)

梯度可以定义为一个函数的全部偏导数构成的向量,梯度向量的方向即为函数值增长最快的方向

不断调整神经网络的参数(权重 W 和偏置 b),使得损失函数的值尽可能小。

本质:

  • 找到一个参数组合,使得损失函数 L(W,b) 达到最小值;

  • 梯度下降就是通过不断“往损失函数下降最快的方向走”,逐步接近最优解。

常见优化算法:

优化算法PyTorch 调用方式特点
批量梯度下降 (BGD)手动实现,一般不用现成类每次用全部数据更新
随机梯度下降 (SGD)torch.optim.SGD(model.parameters(), lr=0.01)每次用单个样本更新
小批量梯度下降 (Mini-Batch SGD)torch.optim.SGD(model.parameters(), lr=0.01, batch_size=32)(通过 DataLoader 控制批量)平衡了稳定性和效率
Adamtorch.optim.Adam(model.parameters(), lr=0.001, betas=(0.9,0.999))结合 Momentum + RMSProp
Momentumtorch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)在 SGD 基础上加动量项
NAG (Nesterov Accelerated Gradient)torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9, nesterov=True)预判未来位置再更新
Adagradtorch.optim.Adagrad(model.parameters(), lr=0.01)对每个参数自适应学习率
RMSProptorch.optim.RMSprop(model.parameters(), lr=0.001, alpha=0.9)引入指数加权平均
AdamWtorch.optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01)改进 Adam 正则化

三、常见的深度学习模型

1. 卷积神经网络(CNN)

主要用于 图像识别与处理。CNN 通过卷积层和池化层自动提取图像的空间特征,典型应用有人脸识别、目标检测。

2. 循环神经网络(RNN)

擅长处理 序列数据,如时间序列预测、语音识别、机器翻译。其改进版本 LSTM、GRU 解决了长序列的梯度消失问题。

3. Transformer

近年来最火的模型架构,基于 自注意力机制(Self-Attention)。Transformer 是 ChatGPT、BERT 等自然语言处理模型的核心。


四、深度学习的应用领域

  1. 计算机视觉(CV)

    • 人脸识别

    • 自动驾驶(目标检测、车道检测)

    • 医学影像诊断

  2. 自然语言处理(NLP)

    • 智能翻译

    • 问答系统

    • 文本生成

  3. 语音处理

    • 语音识别(语音转文字)

    • 语音合成(智能助手发声)

  4. 推荐系统

    • 电商推荐

    • 视频内容推荐


五、深度学习的挑战

  1. 数据需求大:深度模型通常需要大量标注数据。

  2. 计算成本高:GPU/TPU 等硬件加速是训练大模型的关键。

  3. 可解释性差:模型常常被视为“黑箱”,难以解释其决策过程。

  4. 过拟合风险:如果模型太复杂而数据不足,容易只记住训练集而无法泛化。


六、未来发展趋势

  • 轻量化模型:移动端部署的需求推动模型压缩与蒸馏技术。

  • 多模态学习:同时理解文本、图像、语音等多种模态信息。

  • 可解释性研究:让模型的决策逻辑更透明。

  • 通用人工智能(AGI):深度学习将继续作为核心推动力,向更通用、更强大的智能发展。


七、总结

深度学习是人工智能领域的核心技术,它的成功源于 大数据、强计算力与新算法 的结合。从图像到语音,从文本到多模态,深度学习正在让计算机具备前所未有的感知和理解能力。尽管存在挑战,但它无疑是推动未来社会智能化的重要力量。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94877.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94877.shtml
英文地址,请注明出处:http://en.pswp.cn/web/94877.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 软件安装的五种方法

1、App Store 安装 Ubuntu 里面有 一个App叫 “Ubuntu软件” 2、Sudo apt-get install 安装法 注意 使用apt工具安装软件,需要sudo,也就是root权限 例子 apt -get install git 会提示查看是否以root用户运行,install-安装sudo a…

Day15 (前端:JavaScript基础阶段)

接续上文:Day14——JavaScript 核心知识全解析:变量、类型与操作符深度探秘-CSDN博客 点关注不迷路哟。你的点赞、收藏,一键三连,是我持续更新的动力哟!!! 主页:一位搞嵌入式的 genius-CSDN博…

在线旅游及旅行管理系统项目SQL注入

1.前言 之前在网上随便逛逛的时候,发现一个有各种各样的PHP项目的管理系统,随便点进一个查看,发现还把mysql版本都写出来了,而且还是PHP语言。 https://itsourcecode.com/free-projects/php-project/online-tours-and-travels-m…

Java网络编程(UDP, TCP, HTTP)

1. OSI 七层网络模型层级名称核心功能协议示例数据单元7应用层提供用户接口和网络服务HTTP, FTP, SMTP, DNS报文6表示层数据格式转换、加密/解密、压缩/解压SSL, JPEG, MPEG数据流5会话层建立、管理和终止会话连接NetBIOS, RPC会话数据4传输层端到端可靠传输、流量控制、差错校…

【P2P】P2P主要技术及RELAY服务1:python实现

P2P 技术 P2P(点对点)网络的核心是去中心化的网络拓扑和通信协议。DP的应用相对较少,但可能出现在: 路由优化:在一些复杂的P2P网络中,一个节点需要向另一个节点发送消息。为了找到一条延迟最低或跳数最少的路径,可能会用到类似最短路径的算法,而这类算法(如Bellman-F…

docker 安装 redis 并设置 volumes 并修改 修改密码(一)

在 Docker 中安装 Redis 并设置volumes持久化数据,同时修改 Redis 密码的完整步骤如下: 安装 Docker 如果还没有安装 Docker,可以参考以下步骤安装: 在 Alibaba Cloud Linux 上安装 Docker # 更新系统 sudo yum update -y# 安装 Docker 依赖 sudo yum install -y yum-util…

如何找出所有连接到本机指定端口的客户端 IP

在日常运维或排查网络问题时,我们常常需要知道:有哪些客户端正在连接我的服务?连接数是否异常?是否存在恶意扫描或 DDoS 行为?本文将教你使用一条简洁高效的 Linux 命令组合,统计连接到本机某个端口&#x…

java IDE安装idea社区版步骤

IntelliJ IDEA 社区版(Community Edition)是一款功能强大且完全免费的集成开发环境,非常适合 Java 和 Kotlin 初学者或进行基础开发2。我会为你提供详细的安装步骤。 🛠 IntelliJ IDEA 社区版安装指南 📋 系统要求与…

Agent智能体

什么是 Agent? Agent 是一个智能体,可以接收用户请求,利用大模型(LLM)的推理能力,自动决定: 自己回答还是调用外部工具(数据库、API、脚本等) 最终把结果返回给用户。 能…

【VSCode】使用VSCode打开md文件以及转化为PDF

【VSCode】使用VSCode打开md文件以及转化为PDF在 Visual Studio Code (VS Code) 中渲染 Markdown 并保存为 PDF,可以通过以下步骤实现。 首先安装好 VSCode,可以参考下述链接 https://blog.csdn.net/weixin_43848614/article/details/148042035 安装m…

苹果ImageIO零日漏洞分析:攻击背景与iOS零点击漏洞历史对比

苹果公司已紧急发布全生态系统安全更新,修复编号为CVE-2025-43300的ImageIO框架高危零日漏洞(zero-day),该漏洞已被用于复杂的定向攻击。这是苹果在2025年修复的第七个零日漏洞,凸显iOS和macOS设备面临的威胁持续升级。…

面试 TOP101 递归/回溯专题题解汇总Java版(BM55 —— BM61)

8月刷题挑战,多重好礼等你拿 递归/回溯 题号题目名称核心思路时间复杂度空间复杂度代码亮点牛客原题链接BM55没有重复项数字的全排列使用回溯法生成所有排列O(n!)O(n)使用回溯法生成所有排列,逻辑清晰🔗 直达BM56有重复项数字的全排列使用回…

音频相关数学知识

时域(Time domain)是描述数学函数或物理信号对时间的关系,如果声音对应频率正负波动,对应事件x轴为时间,y轴为振幅频域信号在频率方面特性,如射频范围正弦型函数可以用来虚拟音频,正弦&#xff…

SAP-ABAP:SAP HANA 架构解析:主从(Scale-Out)与主备(High Availability)架构深度对比

SAP HANA 架构解析:主从(Scale-Out)与主备(High Availability)架构深度对比 一、架构概述 在SAP HANA数据库系统中,两种核心架构模式解决了不同的业务需求:主从架构(Scale-Out&#…

【Hadoop】HDFS 分布式存储系统

Namenode是整个HDFS文件系统的前端,只有一个,管理数据块映射信息,配置副本策略,处理客户端的读写请求。Secondary namenode是namenode的热备,当active namenode出现故障时,快速切换为新的active namenode。…

[特殊字符] 如何在自己的仓库开发,同时保持同步原作者更新(超详细教程)

在开源协作开发中,很多时候我们会遇到这样一种情况: 👉 我们想基于一个开源项目继续开发,代码要推送到自己的仓库里; 👉 但原作者可能还会更新,我们也希望能随时把最新的改动同步过来。 本文以 …

Spring Ai (Function Calling / Tool Calling) 工具调用

1.工具调用介绍 工具调用是现代大语言模型(LLM)的一项重要能力,允许模型在生成回复时“决定”是否需要调用某个外部函数来获取信息或执行操作。例如: 联网搜索 (实现查询到大模型未学习和RAG知识库中不存在的数据&am…

LabVIEW 正弦波噪声滤波

利用 LabVIEW 搭建程序,先合成含噪正弦波(正弦信号与高通滤波后的噪声叠加),再通过低通滤波提取纯净正弦波,实现噪声去除,常用于信号处理、测试测量场景,验证滤波算法对正弦信号的降噪效果。​功…

基于django的梧桐山水智慧旅游平台设计与开发(代码+数据库+LW)

摘要 随着信息技术的飞速发展,旅游行业面临着用户需求多样化、信息获取不便、服务体验不佳等问题。传统的旅游服务多依赖人工管理和线下宣传,难以高效整合资源与提供个性化服务。为解决这些问题,本文设计开发一个基于Django的梧桐山水智慧旅…

微服务相关面试题

写在前面 🔥我把后端Java面试题做了一个汇总,有兴趣大家可以看看!这里👉 ⭐️在反复复习面试题时,我发现不同资料的解释五花八门,容易造成概念混淆。尤其是很多总结性的文章和视频,要么冗长难…