【探索AI】十一 深度学习之第1周:深度学习概述与基础

在这里插入图片描述

深度学习概述与基础

  • 深度学习的发展历史与现状
  • 神经网络的基本原理
  • 前向传播与反向传播算法
  • 常见的激活函数与优化算法
  • 深度学习框架(如TensorFlow或PyTorch)进行基础操作

深度学习的发展历史与现状

深度学习的发展历史可以追溯到上世纪40年代,当时神经科学家Warren McCulloch和Walter Pitts提出了第一个神经网络模型,开启了人工神经网络的研究历程。随后,在1958年,计算机科学家Rosenblatt发明了感知器(Perceptron),这是一种单层神经网络,能够通过训练学习将输入数据分为两类。然而,感知器的功能非常有限,只能处理线性可分问题,对于非线性问题则无能为力。

直到上世纪80年代,深度学习才迎来了重要的突破。1986年,Rumelhart和Hinton等人提出了反向传播算法(Backpropagation),该算法可以有效地训练多层神经网络,从而解决了非线性问题的处理。随后,深度学习在各个领域得到了广泛的应用,包括语音识别、图像识别、自然语言处理等。

进入21世纪,随着大数据和计算机硬件的快速发展,深度学习得到了进一步的推动。2006年,Hinton等人提出了“深度学习”的概念,并指出了通过逐层预训练可以有效地训练深度神经网络。随后,深度学习在图像识别、语音识别、自然语言处理等领域取得了巨大的成功,成为了人工智能领域的重要分支。

目前,深度学习已经成为人工智能领域最热门的研究方向之一,各种深度学习模型和算法层出不穷。深度学习在各个领域都有着广泛的应用,如计算机视觉、自然语言处理、医疗影像分析、金融风控等。同时,深度学习也面临着一些挑战,如模型的可解释性、鲁棒性等问题,这些问题也是当前研究的热点和难点。

神经网络的基本原理

在这里插入图片描述

前向传播与反向传播算法

  1. 前向传播(Forward Propagation)
    原理:
    前向传播是神经网络中数据从输入层到输出层的传递过程。简单来说,就是根据当前网络的权重和偏置,计算每一层的输出,直到得到最终的输出。

步骤:

输入层:将原始数据输入到神经网络中。
隐藏层:每一层的神经元接收前一层神经元的输出作为输入,并使用激活函数进行转换。计算公式为:z = wx + b,其中z是加权输入,w是权重,x是输入,b是偏置。然后,通过激活函数f得到该层的输出:a = f(z)。
输出层:最后一层神经元的输出即为整个神经网络的输出。
应用:
前向传播在深度学习中的应用主要是用于预测或分类任务。给定输入数据,神经网络通过前向传播得到输出结果,与真实标签进行比较,从而评估模型的性能。

  1. 反向传播(Backpropagation)
    原理:
    反向传播是神经网络中用于更新权重和偏置的过程。它根据损失函数(如均方误差、交叉熵等)计算输出层的误差,然后将误差反向传播到每一层,根据误差调整权重和偏置,以减小模型在训练数据上的损失。

步骤:

计算输出层误差:根据损失函数计算输出层的误差,如均方误差或交叉熵误差。
反向传播误差:将误差反向传播到隐藏层,计算每一层神经元的误差。
更新权重和偏置:根据每一层神经元的误差和输入,计算权重和偏置的梯度,并使用优化算法(如梯度下降)更新权重和偏置。
应用:
反向传播在深度学习中的应用主要是用于训练模型。通过不断迭代前向传播和反向传播,神经网络能够学习到从输入到输出的映射关系,从而实现对新数据的预测或分类。

常见的激活函数与优化算法

常见的激活函数
Sigmoid
公式:σ(x) = 1 / (1 + e^(-x))
特点:将输入压缩到0和1之间,适合二分类问题的输出层。但存在梯度消失问题,当输入值非常大或非常小时,梯度接近于0,这可能导致在训练深层网络时,梯度无法有效回传。
ReLU (Rectified Linear Unit)
公式:f(x) = max(0, x)
特点:对于正输入,输出等于输入;对于负输入,输出为0。计算速度快,解决了梯度消失问题,但可能会导致神经元“坏死”。
Leaky ReLU
公式:f(x) = α * x for x < 0, f(x) = x for x ≥ 0
特点:为ReLU的负输入值添加了一个小的非零斜率α,避免神经元完全坏死。
Tanh
公式:tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))
特点:将输入压缩到-1和1之间,与Sigmoid类似,但输出范围更大。同样存在梯度消失问题。
Softmax
公式:σ(z)_j = e^(z_j) / Σ_k e^(z_k)
特点:常用于多分类问题的输出层,将输出转换为概率分布,所有输出值的和为1。
常见的优化算法
SGD (Stochastic Gradient Descent)
特点:每次迭代只使用一个样本来更新权重,更新速度快,但可能陷入局部最优解。
Mini-batch Gradient Descent
特点:每次迭代使用一小批样本来更新权重,平衡了计算速度和收敛稳定性。
Momentum
特点:引入动量项,加速SGD在相关方向上的收敛,并抑制振荡。
RMSprop
特点:自适应地调整每个参数的学习率,根据梯度的历史平均值来调整学习率。
Adam (Adaptive Moment Estimation)
特点:结合了Momentum和RMSprop的思想,使用梯度的一阶矩(平均值)和二阶矩(未中心化的方差)来动态调整每个参数的学习率。
Adagrad
特点:为每个参数维护一个累积梯度平方的缓存,并根据这个缓存来调整学习率,适合处理稀疏数据。
Adamax
特点:是Adam的一个变种,使用无穷范数来替代RMSprop中的平方范数。
以上就是一些常见的激活函数和优化算法的介绍。它们在不同的神经网络架构和任务中各有优劣,需要根据实际情况选择合适的激活函数和优化算法。

深度学习框架(如TensorFlow或PyTorch)进行基础操作

我们将展示如何在PyTorch中执行一些基础操作。首先,确保你已经安装了PyTorch:

import torch  
  
# 创建一个张量  
tensor = torch.tensor([1, 2, 3, 4, 5])  
print("Tensor:", tensor)  
  
# 执行计算  
result = tensor + tensor  
print("Result of addition:", result)  
  
# 创建一个变量(在PyTorch中,变量通常是张量,并且具有`requires_grad`属性)  
variable = torch.tensor([1.0, 2.0], requires_grad=True)  
print("Initial value of variable:", variable)  
  
# 定义一个简单的损失函数和优化器  
loss_fn = torch.nn.MSELoss()  
optimizer = torch.optim.SGD(variable, lr=0.1)  
  
# 进行梯度下降优化  
for _ in range(10):  
    optimizer.zero_grad()  # 清空梯度  
    loss = loss_fn(variable, torch.tensor([3.0, 4.0]))  # 计算损失  
    loss.backward()  # 反向传播计算梯度  
    optimizer.step()  # 更新变量  
    print("Updated value of variable:", variable.data)

这些示例展示了如何在TensorFlow和PyTorch中创建张量、执行基本计算、定义变量和进行简单的优化。这些基础操作对于理解深度学习框架的基本用法非常重要。

均源自AI对话收集整理
仅用作学习笔记,持续…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

H12-821_85

85.如图所示,三台一层交换机与一台 HUB 互联,交换机均开启 STP 功能,交换机 STP 的桥 ID 设置请参考下图,其它均是默认配置。以下描述中中错误的是哪一选项? A.SWA 的两个端口都为指定端口,处于转发状态。 B.SWC 的 G0/0/1口为 Alternate 端口,处于阻塞状态 C.SWA 的 G0/0/2…

第二周opencv

一、边缘检测算子 边缘检测算子是用于检测图像中物体边界的工具。边缘通常表示图像中灰度值或颜色发生显著变化的地方。边缘检测有助于识别图像中的物体形状、轮廓和结构。这些算子通过分析图像的灰度或颜色梯度来确定图像中的边缘。 1、Roberts 算子 通过局部差分计算检测边缘…

李沐动手学习深度学习——3.2练习

以下是个人理解&#xff0c;希望进行讨论求解。 练习 1. 如果我们将权重初始化为零&#xff0c;会发生什么。算法仍然有效吗&#xff1f; 根据SGD算法公式如上&#xff0c;第一次迭代的值可知w只与b相关&#xff0c;而对于b的迭代更新&#xff0c;只是与b的初始值相关&#x…

langchain加载模型时出现ConnectionError: (ProtocolError(‘Connection aborted.‘的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

使用vue把一周的时间划分为可以选择多个阶段

提示&#xff1a;使用vue把一周的时间划分为可以选择多个阶段段&#xff08;亲测有效&#xff09; 一、直接复制以下代码 代码如下&#xff08;示例&#xff09;&#xff1a; <template><div class"byted-weektime" mousedown"dian" mousemove&qu…

理解计算着色器中glsl语言的内置变量

概要 本文通过示例的方式&#xff0c;着重解释以下几个内置变量&#xff1a; gl_WorkGroupSizegl_NumWorkGroupsgl_LocalInvocationIDgl_WorkGroupIDgl_GlobalInvocationID 基本概念 局部工作组与工作项 一个3x2x1的局部工作组示例如下&#xff0c;每个小篮格子表示一个工作项…

Web前端---图层嵌套与层叠三行三列效果

1.图层的嵌套设计 <!doctype html> <html> <head> <meta charset"utf-8"> <title>图层嵌套</title><style type"text/css">.inline_div{display:inline-block;}#wrap{width400px;height250px;border:2px solid…

IO多路复用-select模型

IO多路复用&#xff08;IO Multiplexing&#xff09;是一种高效的网络编程模型&#xff0c;可以同时监控多个文件描述符&#xff08;包括套接字等&#xff09;&#xff0c;并在有数据可读或可写时进行通知。其中&#xff0c;select模型是最常用和最早引入的一种IO多路复用模型。…

09-认证-自研微服务框架

认证 1. 开启https支持 func (e *Engine) RunTLS(addr, certFile, keyFile string) {err : http.ListenAndServeTLS(addr, certFile, keyFile, e.Handler())if err ! nil {log.Fatal(err)} }1.1 测试 证书生成&#xff1a; 安装openssl 网站下载&#xff1a;http://slproweb…

k8s.gcr.io/pause:3.2镜像丢失解决

文章目录 前言错误信息临时解决推荐解决onetwo 前言 使用Kubernetes&#xff08;k8s&#xff09;时遇到了镜像拉取的问题&#xff0c;导致Pod沙盒创建失败。错误显示在尝试从k8s.gcr.io拉取pause:3.2镜像时遇到了超时问题&#xff0c;这通常是因为网络问题或者镜像仓库服务器的…

【Go语言】Go语言中的指针

Go语言中的指针 变量的本质是对一块内存空间的命名&#xff0c;我们可以通过引用变量名来使用这块内存空间存储的值&#xff0c;而指针则是用来指向这些变量值所在内存地址的值。 注&#xff1a;变量值所在内存地址的值不等于该内存地址存储的变量值。 Go语言中&#xff0c;…

[CSS]文字旁边的竖线以及布局知识

场景&#xff1a;文字前面常见加竖线。 .center-title { 常见内容color: #FFF;font-family: "Source Han Sans CN";font-size: 50px;font-style: normal;font-weight: 700;line-height: normal;position: relative; 要定位left: 16px; 这里是想拉开间距margin-b…

vmware中Numlock和caplock一直闪烁(更新时间24/2/28)

问题复现&#xff1a; 分析原因是&#xff1a;宿主机和vm虚拟机的这两个键未同步导致的异常 解决方法:将鼠标移动到点击虚拟机窗口以外的地方&#xff0c;按这两个键将其设置为打开状态即可解决

科技赋能,MTW400A为农村饮水安全打通“最后一公里”

日前&#xff0c;山东省政府纵深推进国家省级水网先导区建设&#xff0c;持续深化“水网”行动&#xff0c;着力构筑水安全保障网、水民生服务网、水生态保护网&#xff0c;建设水美乡村示范带、内河航运示范带、文旅融合示范带、绿色发展示范带&#xff0c;推动形成“三网四带…

微服务架构 SpringCloud

单体应用架构 将项目所有模块(功能)打成jar或者war&#xff0c;然后部署一个进程--医院挂号系统&#xff1b; > 优点: > 1:部署简单:由于是完整的结构体&#xff0c;可以直接部署在一个服务器上即可。 > 2:技术单一:项目不需要复杂的技术栈&#xff0c;往往一套熟悉的…

目标检测——车辆数据集

一、背景介绍 VOC2005车辆数据集是PASCAL VOC挑战赛中的一个重要组成部分&#xff0c;该挑战赛始于2005年&#xff0c;旨在为计算机视觉领域的研究者和开发者提供一个统一的、标准化的评估平台。PASCAL VOC挑战赛不仅推动了图像识别、目标检测、图像分割等技术的发展&#xff…

textbox跨线程写入

实现实例1 实现效果 跨线程实现 // 委托&#xff0c;用于定义在UI线程上执行的方法签名 //public delegate void SetTextCallback(string text);public void textBoxText(string text){// 检查调用线程是否是创建控件的线程 if (textBox1.InvokeRequired){// 如果不是&#…

2.12冯诺依曼体系,各功能部件作用,简要工作流程

1)计算机由哪几部分组成&#xff1f;以哪部分为中心&#xff1f;2)主频高的CPU一定比主频低的CPU快吗&#xff1f;为什么&#xff1f;3)翻译程序、汇编程序、编译程序、解释程序有什么差别&#xff1f;各自的特性是什么&#xff1f;4)不同级别的语言编写的程序有什么区别&#…

华为OD技术面试案例3-2024年

技术一面&#xff1a; 1.手撕代码&#xff0c;算法题&#xff1a; 【最小路径和】 手撕代码通过&#xff0c;面试官拍了照片 2.深挖项目&#xff0c;做过的自认为最好的一个项目&#xff0c;描述做过的项目的工作过程&#xff0c;使用到哪些技术&#xff1f; 技术二面&…

单细胞Seurat - 细胞聚类(3)

本系列持续更新Seurat单细胞分析教程&#xff0c;欢迎关注&#xff01; 维度确定 为了克服 scRNA-seq 数据的任何单个特征中广泛的技术噪音&#xff0c;Seurat 根据 PCA 分数对细胞进行聚类&#xff0c;每个 PC 本质上代表一个“元特征”&#xff0c;它结合了相关特征集的信息。…