Datawhale X 李宏毅苹果书 AI夏令营第五期 DL进阶方向 Task3笔记

Datawhale X 李宏毅苹果书 向李宏毅学深度学习(进阶) 是 Datawhale 2024 年 AI 夏令营第五期的学习活动(“深度学习 进阶”方向

       往期task1链接:深度学习进阶-Task1

       往期task2链接:深度学习进阶-Task2

       我做的task1的笔记博客:传送门

       我做的task2的笔记博客:传送门

       Datawhale官方的task3链接:Task3

       Github-《深度学习详解》开源地址:传送门

《深度学习详解》主要内容源于《机器学习》(2021年春),选取了《机器学习》(2017年春) 的部分内容,在这些基础上进行了一定的原创,补充了不少除这门公开课之外的深度学习相关知识。为了尽可能地降低阅读门槛,笔者对这门公开课的精华内容进行选取并优化,对所涉及的公式都给出详细的推导过程,对较难理解的知识点进行了重点讲解和强化,以方便读者较为轻松地入门。

       在理论严谨的基础上,本书保留了公开课中大量生动有趣的例子,帮助读者从生活化的角度理解深度学习的概念、建模过程和核心算法细节,包括——

  • 卷积神经网络、Transformer、生成模型、自监督学习(包括 BERT 和 GPT)等深度学习常见算法,

  • 对抗攻击、领域自适应、强化学习、元学习、终身学习、网络压缩等深度学习相关进阶算法。


目录

批量归一化

特征归一化

标准差

考虑深度学习 

测试时的批量归一化

内部协变量偏移

批量归一化的作用

批量归一化的局限性

卷积神经网络

卷积神经网络的核心思想

卷积神经网络的结构

卷积神经网络的应用

个人思考与实践

实践代码


批量归一化

       批量归一化(Batch Normalization, BN)是一种常用的深度学习技术,它可以加速神经网络的训练过程,并提高模型的稳定性。下面将详细介绍 BN 的原理和作用。

特征归一化

       特征归一化是将特征值缩放到一个固定的范围,例如将特征的均值变为 0,方差变为 1。这样做可以加速神经网络的训练过程,并提高模型的稳定性。下图是Z值归一化:

标准差

       标准差是衡量一组数据离散程度的指标。标准差越大,说明数据越分散;标准差越小,说明数据越集中。

考虑深度学习 

       在深度学习中,每层神经网络的输出可以看作是下一层的输入。因此,需要对每层神经网络的输出进行特征归一化,以确保特征的分布是稳定的。批量归一化也可以理解成为网络的一部分

测试时的批量归一化

       在测试时,由于没有批量数据,无法进行批量归一化。因此,需要使用训练时计算出的移动平均值来代替批量均值和标准差。

内部协变量偏移

       内部协变量偏移是指神经网络内部的特征分布会随着训练过程而发生变化。这种变化会使得梯度下降算法难以收敛,并导致训练过程不稳定。

批量归一化的作用

       批量归一化可以有效地解决内部协变量偏移问题,并具有以下作用:

  • 加速训练过程:批量归一化可以加速神经网络的训练过程,并减少训练时间。
  • 提高模型稳定性:批量归一化可以提高神经网络的稳定性,并减少模型对超参数的敏感性。
  • 提高模型性能:批量归一化可以提高神经网络的性能,并提高模型的准确率。
批量归一化的局限性

       批量归一化也存在一些局限性:

  • 对小型数据集不友好:批量归一化需要足够大的批量数据才能有效地进行归一化。对于小型数据集,批量归一化的效果可能不佳。
  • 无法处理在线学习:批量归一化无法处理在线学习,即无法在每一步迭代中使用新的数据进行训练

卷积神经网络

卷积神经网络的核心思想

       CNN 的核心思想在于利用图像的局部特征和模式重复性,通过以下三个观察进行简化:

       观察 1:检测模式不需要整张图像

  • 图像识别任务中,识别物体通常不需要关注整张图像,而是关注图像中包含关键特征的局部区域。

  • 这启发我们使用感受野的概念,即每个神经元只关注图像的一小部分区域,而不是整张图像。

Q:感受野一定要相连吗?

A:感受野通常是相连的。这是因为卷积操作的局部性质使得每个神经元的输出是基于输入数据的一个连续区域,但不一定要相连。例如,在处理一些特定任务时,可能会设计一些非局部网络结构(如Non-local Neural Networks),其中的感受野可以跨越不连续的区域,这样的设计有助于捕捉长距离依赖关系。

       观察 2:同样的模式可能会出现在图像的不同区域

  • 图像中相同的模式可能会出现在不同的位置,例如猫的耳朵可能在图像的任何地方出现。
  • 这启发我们使用参数共享的概念,即多个神经元共享相同的参数,用于检测相同模式的重复出现。

       观察 3:下采样不影响模式检测

  • 对图像进行下采样(例如缩小图像)把图像偶数的列都拿掉,奇数的行都拿掉,图像变成为原来的 1/4,但是不会影响里面是什么 东西,不会改变图像中的关键模式,例如缩小后的图像仍然可以识别出是一只鸟。
  • 这启发我们使用池化(Pooling)层,通过下采样减少特征图的空间维度,从而减少计算量。
卷积神经网络的结构

CNN 通常由以下几层组成:

  • 卷积层(Convolutional Layer):包含多个卷积核,每个卷积核对输入特征图进行卷积操作,提取局部特征,并生成新的特征图。
  • 汇聚层(Pooling Layer):对卷积层生成的特征图进行下采样,减少特征图的空间维度,从而减少计算量。
  • 全连接层(Fully Connected Layer):将特征图中的所有特征连接成一个向量,并进行分类或回归操作。

卷积神经网络的应用

CNN 广泛应用于图像识别、目标检测、语义分割、视频分析等任务。例如:

  • 图像识别:识别图像中的物体类别,例如猫、狗、汽车等。
  • 目标检测:识别图像中的物体位置和类别,例如在图像中找到所有的人和汽车。
  • 语义分割:将图像中的每个像素都分配到一个类别,例如将图像分割成天空、道路、树木等区域。
  • 视频分析:分析视频中的运动和事件,例如识别视频中的动作和场景。

个人思考与实践

  • 感受野的设计:感受野的大小和步幅会影响特征提取的效果。例如,较小的感受野可以提取更精细的特征,但可能无法检测更大的模式。
  • 参数共享的优势:参数共享可以减少模型参数的数量,从而减少过拟合的风险,并加快训练速度。
  • 汇聚层的选择:最大汇聚和平均汇聚是两种常见的汇聚方式,选择哪种方式取决于具体任务的需求。
  • 深度可分离卷积:深度可分离卷积是一种更高效的卷积方式,可以减少参数数量并提高计算效率。
  • 残差网络:残差网络可以训练更深的网络,并提高模型的性能。
  • 注意力机制:注意力机制可以帮助模型关注图像中的重要区域,从而提高模型的性能。
实践代码
import torch
import torch.nn as nn
from torch.utils.data import DataLoader
from torchvision import datasets, transforms# 定义一个简单的 CNN 模型
class SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)self.fc1 = nn.Linear(16 * 12 * 12, 10)def forward(self, x):x = self.pool(torch.relu(self.conv1(x)))x = x.view(-1, 16 * 12 * 12)x = self.fc1(x)return x# 定义数据转换
transform = transforms.Compose([transforms.Resize((32, 32)),transforms.ToTensor()
])# 加载训练数据
train_data = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_data, batch_size=100, shuffle=True, num_workers=2)# 创建模型和损失函数
model = SimpleCNN()
criterion = nn.CrossEntropyLoss()# 训练模型
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
for epoch in range(10):for images, labels in train_loader:optimizer.zero_grad()outputs = model(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()print(f'Epoch {epoch + 1}, Loss: {loss.item()}')

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

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

相关文章

如何利用评论进行有效的 ASO

如何利用评论进行有效的ASO的问题的答案通常以“正面评论”一词开始。确实,这句话首先浮现在脑海中。但这个问题的答案包括负面评论、用户体验、提高知名度、评分、根据评论优化应用程序以及许多其他有趣的点。这里几乎没有无聊的统计数据,这些数字也不会…

c++ 原型模式

文章目录 什么是原型模式为什么要使用原型模式使用场景示例 什么是原型模式 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,简单理解就是“克隆指定对象” 为什么要使用原型模式 原型模式(Prototype Pattern)是…

绝对定位导致内容自动换行问题解决

今天在做一个定位元素的时候遇到一个嵌套定位之后&#xff0c;使用绝对定位的元素的内容自动换行的问题&#xff0c;希望不换行只在一行显示。 可以通过添加 white-space: nowrap; 样式控制不换行 <div class"box"><div class"box1"><div …

【MySQL超详细安装步骤】Centos7安装MySQL8

文章目录 1.卸载2.修改yum源为阿里源2.1首先检查是否安装wget2.2 备份 yum 源文件2.3 下载阿里云yum源文件2.4 清理yum缓存 3.安装mysql源3.1 下载mysql源3.2 安装mysql源3.3 检查是否安装成功 4. 安装MySQL4.1 使用yum安装4.2 启动MySQL 5.配置防火墙5.1 开放3306端口 6.登录M…

2. GIS数据工程师岗位职责、技术要求和常见面试题

本系列文章目录&#xff1a; 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

macos系统内置php文件列表 系统自带php卸载方法

在macos系统中, 自带已经安装了php, 根据不同的macos版本php的版本号可能不同, 我们可以通过 which php 命令来查看mac自带的默认php安装路径, 不过注意这个只是php的执行文件路径. 系统自带php文件列表 一下就是macos默认安装的php文件列表. macos 10.15内置PHP文件列表配置…

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大&#xff0c;尤其是在嘈杂的环境中&#xff0c;音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”&#xff0c;我的手机音质瞬间提升了好几个档次。 软件简介&#xff1a; “扬声器助推器”利用先进的音频处理技术&#xff0c;能够…

卷积神经网络(一)

目录 一.卷积神经网络的组成 二.卷积层 目的: 参数: 计算公式 卷积运算过程 三.padding-零填充 1.Valid and Same卷积 2.奇数维度的过滤器 四.stride步长 五.多通道卷积 1.多卷积核(多个Filter) 六.卷积总结 七.池化层(Pooling) 八.全连接层 都看到这里了,点个…

C++——STL(vector类)

1.vector的介绍 vector的文档介绍 vector是表示可变大小数组的序列容器。vector就像数组一样&#xff0c;拥有连续的储存空间来储存元素&#xff0c;这就意味着可以通过下标的方式来访问vector的元素&#xff0c;很高效&#xff1b;但与数组不同的是vector的大小是动态改变的…

新加坡服务器:亚洲地区的优选之选

在全球化日益加深的今天&#xff0c;互联网成为了连接世界的桥梁&#xff0c;而服务器作为互联网的基础设施&#xff0c;其选择对于企业的业务发展和用户体验至关重要。在众多海外服务器中&#xff0c;新加坡服务器以其独特的地理位置、先进的技术支持、稳定的网络环境以及完善…

站长工具 API 接口,助力网站管理新高度

站长工具是一款非常实用的网站管理工具&#xff0c;通过其提供的API接口&#xff0c;可以轻松实现多种功能&#xff0c;如域名反查、域名备案查询、IPV6归属地查询等。这些功能可以帮助网站管理员更好地管理和优化自己的网站。以下是简单的代码示例&#xff0c;展示了如何使用站…

未雨绸缪:环保专包二级资质续期工程师招聘时间策略

对于环保企业而言&#xff0c;在二级资质续期前启动工程师招聘的时间规划至关重要。考虑到招聘流程的复杂性、企业内部需求的变化以及政策标准的更新&#xff0c;建议环保企业在二级资质续期前至少提前6至12个月启动工程师招聘工作。这个时间规划可以细化为以下几个阶段&#x…

SprinBoot+Vue个性化旅游推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

C语言深度剖析--不定期更新的第三弹

hello,everybody!最近又更新了哈&#xff0c;希望对大家有所帮助 switch case关键字 基本语法&#xff1a; switch(整型变量/常量/整型表达式){case 1:var 1;break;case 2:var 2;break;case 3:var 3;break;default:break; }switch case语句也和if语句一样具有判断和分支的功…

挂轨巡检机器人在发电厂与煤矿皮带机场景的应用

一、引言 在发电厂和煤矿等重工业领域&#xff0c;皮带机作为关键设备&#xff0c;其运行状态直接关系到生产效率和安全。然而&#xff0c;传统的人工巡检方式不仅效率低下&#xff0c;还存在安全隐患。随着智能巡检技术的不断发展&#xff0c;杭州旗晟智能科技有限公司推出的…

Git学习尚硅谷(003 git分支操作)

尚硅谷Git入门到精通全套教程&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 总时长 4:52:00 共45P 此文章包含第15p-第p18的内容 文章目录 git分支操作分支介绍分支的好处 分支的操作查看分支创建分支切换分支&修改分支合并分支正常合并分支冲突合并 git分支操作…

如何打造在线音乐网站?java springboot架构,vue前端开发,音乐分享新体验

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

二、Maven工程的构建--JavaSEJavaEE

idea构建Maven JavaSE工程&#xff1a; idea构建Maven JavaEE工程&#xff1a; &#xff08;1&#xff09;手动创建 &#xff08;2&#xff09;插件方式创建 在idea里安装插件JBLJavaToWeb&#xff1b; 选择需要生成的项目文件后&#xff0c;右击&#xff1a; 项目的weba…

WPF在MVVM架构下使用DataGrid并实现行删除

一、效果演示 二、Model创建 //User&#xff1a;用于绑定DataGrid控件的数据 private ObservableCollection<User> _users new ObservableCollection<User>();public ObservableCollection<User> Users{get { return _users; }set { _users value; }}//Sel…

科研绘图系列:R语言折线图(linechart plots)

文章目录 介绍加载R包导入数据数据预处理画图组合图形介绍 在R语言中,折线图(Line Plot)是一种常用的数据可视化类型,用于展示数据随时间或有序类别变化的趋势。折线图通过连接数据点来形成一条或多条线,这些线条可以清晰地表示数据的变化方向、速度和模式。 加载R包 k…