当前位置: 首页 > article >正文

一天搞懂深度学习--李宏毅教程笔记

目录

  • 1. Introduction of Deep Learning
    • 1.1. Neural Network - A Set of Function
    • 1.2. Learning Target - Define the goodness of a function
    • 1.3. Learn! - Pick the best function
      • Local minima
      • Backpropagation
  • 2. Tips for Training Deep Neural Network
  • 3. Variant of Neural Network
  • 4. Next Wave

对一天搞懂深度学习–李宏毅教程分享内容做读书笔记,对深度学习中的神经网络进行介绍


1. Introduction of Deep Learning

深度常用于语音识别、手写文字识别、围棋、对话等多个领域。

深度学习的目标是构建一个模型,这个模型就是Network就是指神经网络,深度学习就是构建这个模型的过程。构建这个模型的过程只有三步:

在这里插入图片描述

1.1. Neural Network - A Set of Function

首先介绍这个模型(神经网络)是什么样子的。

先介绍神经元,Neuron也是一种函数,如下所示

在这里插入图片描述

其中激活函数Activation Function为Sigmoid:

在这里插入图片描述
由多个神经元相互全连接即为全连接的反向网络Fully Connect Feedforward Network,由多层Layers组成(不同模型Layers不同),如下图所示

在这里插入图片描述
记作 { y 1 , . . . y M } = f ( { x 1 , . . . , x N } ) \{y_1,...y_M\}=f(\{x_1,...,x_N\}) {y1,...yM}=f({x1,...,xN})

最终的输出使用softmax激活函数进行归一化,用于将每种输出转换为概率分布

在这里插入图片描述
最终得到

在这里插入图片描述

神经网络算法 - 一文搞懂 Softmax 函数

神经网络本质就是一种函数关系,不同的input vector可得到不同的output vector

在这里插入图片描述

1.2. Learning Target - Define the goodness of a function

知道模型的样子之后,深度学习的目标是找到神经网络中最合适的weights和bias。

怎么定义最合适?最合适的意思是,这个模型的输出是我们想要的理想输出。所以,使用已经标记好的训练数据喂给模型,模型的输出应该是我们的理想期望值。

例如,手写识别场景下,输入左图,期望输出应该是y2为最大值(表示模型的预期输出是2),使用softmax激活函数则期望输出为 y ^ = [ 0 , 1 , 0 , . . . , 0 ] \hat{y}=[0,1,0,...,0] y^=[0,1,0,...,0]

在这里插入图片描述
所以,模型应该适应我们的训练数据。即给定训练数据输入 { x ^ 1 , . . . , x ^ 256 } \{\hat{x}_1,...,\hat{x}_{256}\} {x^1,...,x^256},模型的输出应该最接近我们的训练数据输出 { y ^ 1 , . . . , y ^ 10 } \{\hat{y}_1,...,\hat{y}_{10}\} {y^1,...,y^10}

最接近的含义就是square error最小,这个square error就叫损失函数/代价函数,如下
l r = ∑ i = 1 10 ( y i − y ^ i ) 2 (1) l_r=\sum_{i=1}^{10}{(y_i-\hat{y}_i)^2} \tag{1} lr=i=110(yiy^i)2(1)
而且满足
{ y ^ 1 , . . . y ^ 10 } = f ( { w 1 , . . . , w N , b 1 , . . . , b M } , { x ^ 1 , . . . , x ^ 256 } ) (2) \{\hat{y}_1,...\hat{y}_{10}\}=f(\{w_1,...,w_{N},b_1,...,b_{M}\},\{\hat{x}_1,...,\hat{x}_{256}\}) \tag{2} {y^1,...y^10}=f({w1,...,wN,b1,...,bM},{x^1,...,x^256})(2)

例如上图损失函数就为 l = ( y 1 − 0 ) 2 + ( y 2 − 1 ) 2 + ( y 3 − 0 ) 2 + . . . + ( y 10 − 0 ) 2 l=(y_1-0)^2+(y_2-1)^2+(y_3-0)^2+...+(y_{10}-0)^2 l=(y10)2+(y21)2+(y30)2+...+(y100)2

那么整个模型的损失函数如下,其中R为训练样本个数

L = ∑ r = 1 R l r (3) L=\sum_{r=1}^{R}{l_r} \tag{3} L=r=1Rlr(3)

所以,深度学习的终极目的是,寻找合适的 { w 1 , . . . , w N , b 1 , . . . , b M } \{w_1,...,w_{N},b_1,...,b_{M}\} {w1,...,wN,b1,...,bM}满足式(1)(2)使式(3)最小,如下图。

在这里插入图片描述

1.3. Learn! - Pick the best function

梯度下降算法原理讲解——机器学习

那么如何找到最优的 θ = { w 1 , . . . , w N , b 1 , . . . , b M } \theta=\{w_1,...,w_{N},b_1,...,b_{M}\} θ={w1,...,wN,b1,...,bM}使式(3)最小呢?方法就是著名的梯度下降法Gradient Descent,步骤如下。

Step 1. 通过随机化方法赋予 θ \theta θ一个初始值 θ = θ i \theta=\theta_{i} θ=θi

Step 2. 将 l l l θ = θ i \theta=\theta_{i} θ=θi处对 θ \theta θ的每一个参数求偏微分,得到的向量就是梯度

在这里插入图片描述
梯度的含义就是,在当前点函数上升最快的方向,所以梯度的反方向就是最快到达最小值的方向。

一个神经网络模型的参数非常多,如果直接用损失函数对每个参数作偏导,计算量巨大、梯度的维度也巨大。为了简便计算量,一般使用Backpropagation反向传播的方法计算梯度。

Step 3. 判断当前点的梯度是否足够小,即 ∇ L ∣ θ = θ i < ϵ \nabla L|_{\theta=\theta_{i}}<\epsilon Lθ=θi<ϵ。如果是则输出 θ = θ i \theta=\theta_{i} θ=θi得到损失函数最小的模型参数。如果否则跳转Step 4.

Step 4. 给定学习率/步长 μ \mu μ,对各参数 θ \theta θ进行调整,即

θ i + 1 = θ i − μ ⋅ ∇ L ∣ θ = θ i \theta_{i+1}=\theta_{i}-\mu·\nabla L|_{\theta=\theta_{i}} θi+1=θiμLθ=θi

这个式子类似通过导数的方法去试最小值,当导数为正时, θ \theta θ降低、导数为负时, θ \theta θ增加,如下图所示。

在这里插入图片描述

Local minima

但是梯度下降法找到的一定是局部最小值,不保证找到的是全局最小值。如下图

在这里插入图片描述

所以可以设定不同的初始值执行梯度下降,在所有的极小值中找一个在 L L L的最小值作为模型的最优参数。

Backpropagation

反向传播,一种高效计算梯度的方法。

“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)

2. Tips for Training Deep Neural Network

3. Variant of Neural Network

4. Next Wave

相关文章:

一天搞懂深度学习--李宏毅教程笔记

目录 1. Introduction of Deep Learning1.1. Neural Network - A Set of Function1.2. Learning Target - Define the goodness of a function1.3. Learn! - Pick the best functionLocal minimaBackpropagation 2. Tips for Training Deep Neural Network3. Variant of Neural…...

Go语言常见接口设计技巧-《Go语言实战指南》

在 Go 中&#xff0c;接口是连接代码组件的桥梁。合理设计接口可以大幅提升程序的可维护性、可扩展性和测试友好性。本章将分享 Go 开发中常见的接口设计技巧与最佳实践。 一、接口设计原则 1. 面向接口编程&#xff0c;而非面向实现编程 尽量使用接口类型作为函数参数或返回值…...

python打卡训练营打卡记录day43

复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 数据集来源&#xff1a;Flowers Recognition 选择该数据集原因&#xff1a; 中等规模&#xff1a;4242张图片 - 训练快速但足够展示效…...

Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗libvega_face.so人脸属性(年龄,性别,肤色,微笑,种族等)检测流程详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:Camera相机人脸识别系列专题分析之十:人脸特征检测FFD算法之低功耗libvega_face.so人脸识别检测流程详解 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗lib…...

解决:输入SSH后,仍无法通过网址登录以及紧接着的新问题Permission denied(publickey,password).

现象&#xff1a; 管理员: Windows PowerShell输入SSH后&#xff0c;仍无法通过网址登录 例如输入你的ssh命令&#xff1a;ssh -CNg -L xxxx:127.0.0.1:xxxx rootaaaaaaaaa.com -p yyyyy 得到终端提示&#xff1a;ssh无法识别为 cmdlet、函数、脚本文件或可运行程序的名称。 解…...

【QT控件】QWidget 常用核心属性介绍 -- 万字详解

目录 一、控件概述 二、QWidget 核心属性 2.1 核心属性概览 2.2 enabled ​编辑 2.3 geometry 2.4 windowTitle 2.5 windowIcon 使用qrc文件管理资源 2.6 windowOpacity 2.7 cursor 2.8 font ​编辑 2.9 toolTip 2.10 focusPolicy 2.11 styleSheet QT专栏&…...

uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)

地址信息,在我们支付订单上有这样一个接口,就是物流方式,一个自提,我们就显示商家地址。一个是外送,就是用户自己填写的地址。 这里先说说用户的地址添加。需要使用到的一些方式方法,主要有关于地址选择器,就是uni-data-picker级联选择。 该文介绍了电商应用中地址信息处…...

HTTPS加密通信详解及在Spring Boot中的实现

HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是HTTP的安全版本&#xff0c;通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护。 一、HTTPS核心原理 1.加密流程概述 客户端发起HTTPS请求&#xff08;连接到服务器443端口&#xff09;服务器返…...

如何让 Git 停止跟踪文件?停止后又如何恢复跟踪?

在使用 Git 管理代码时&#xff0c;有时我们希望某些文件不再被 Git 跟踪&#xff08;比如本地配置文件、临时文件等&#xff09;&#xff0c;但保留这些文件在本地&#xff1b;过了一段时间&#xff0c;可能又需要恢复跟踪这些文件。本文将用通俗易懂的语言&#xff0c;教你如…...

【第16届蓝桥杯 | 软件赛】CB组省赛第二场

个人主页&#xff1a;Guiat 归属专栏&#xff1a;算法竞赛 文章目录 A. 密密摆放&#xff08;5分填空题&#xff09;B. 脉冲强度之和&#xff08;5分填空题&#xff09;C. 25 之和D. 旗帜E. 数列差分F. 树上寻宝G. 翻转硬币H. 破解信息 正文 总共8道题。 A. 密密摆放&#xff0…...

SQL进阶之旅 Day 10:执行计划解读与优化

【SQL进阶之旅 Day 10】执行计划解读与优化 开篇 今天是我们的"SQL进阶之旅"系列的第10天&#xff0c;我们将深入探讨SQL执行计划的解读与优化技巧。随着数据库规模的增长和业务复杂度的提升&#xff0c;理解SQL语句在数据库引擎中的执行过程变得至关重要。 执行计…...

AR/MR实时光照阴影开发教程

一、效果演示 1、PICO4 Ultra MR 发光的球 2、AR实时光照 二、实现原理 PICO4 Ultra MR开发时&#xff0c;通过空间网格能力扫描周围环境&#xff0c;然后将扫描到的环境网格材质替换为一个透明材质并停止扫描&#xff1b;基于Google ARCore XR Plugin和ARFoundation进行安卓手…...

Visual studio 中.sln/.vcxproj/.vcxproj.filters和.vcxproj.user文件的作用

在 Visual Studio (尤其是 C 项目) 中&#xff0c;.sln、.vcxproj、.vcxproj.filters 和 .vcxproj.user 文件各自承担着不同的关键角色。理解它们的作用对于项目管理和协作至关重要。 核心原则&#xff1a; .vcxproj 和 .sln 是项目/解决方案的核心定义文件&#xff0c;必须纳…...

【汽车电子入门】一文了解LIN总线

前言&#xff1a;LIN&#xff08;Local Interconnect Network&#xff09;总线&#xff0c;也就是局域互联网的意思&#xff0c;它的出现晚于CAN总线&#xff0c;于20世纪90年代末被摩托罗拉、宝马、奥迪、戴姆勒、大众以及沃尔沃等多家公司联合开发&#xff0c;其目的是提供一…...

JVM学习(七)--JVM性能监控

目录 一、JVM性能监控 1、JVM监控及诊断工具-命令行篇 2、JVM监控及诊断工具-GUI篇 3、JVM运行时参数 一、JVM性能监控 1、JVM监控及诊断工具-命令行篇 面试题&#xff1a; 1、你使用过Java虚拟机性能监控和故障处理工具吗? 2、怎么打出线程栈信息。 3、怎么获取 Jav…...

关于 java:5. Java IO 与文件操作

一、File 类&#xff08;读取文件属性&#xff09; 1.1 java.io.File 类概述 File 是 Java IO 中的核心类&#xff0c;用于表示文件或目录的路径名。 它是一个抽象路径名&#xff0c;可以表示实际存在或不存在的文件/文件夹。 File 类提供了创建、删除、重命名、判断属性、获…...

【笔记】为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境)

&#x1f4dd; 为 Python 项目安装图像处理与科学计算依赖&#xff08;MINGW64 环境&#xff09; &#x1f3af; 安装目的说明 本次安装是为了在 MSYS2 的 MINGW64 工具链环境中&#xff0c;搭建一个完整的 Python 图像处理和科学计算开发环境。 主要目的是支持以下类型的 Pyth…...

【笔记】MLA矩阵吸收分析

文章目录 一、张量运算的计算量1. FLOPs定义2. 张量计算顺序对计算量的影响 二、MLA第一次矩阵吸收的计算量分析1. 原始注意力计算2. MLA源代码中的吸收方式3. 提前吸收4. 比较分析4.1 比较顺序1和顺序24.2 比较顺序2和顺序3 三、MLA第二次矩阵吸收的计算量分析1. 原始输出计算…...

600+纯CSS加载动画一键获取指南

CSS-Loaders.com 完整使用指南&#xff1a;600纯CSS加载动画库 &#x1f3af; 什么是 CSS-Loaders.com&#xff1f; CSS-Loaders.com 是一个专门提供纯CSS加载动画的资源网站&#xff0c;拥有超过600个精美的单元素加载器。这个网站的最大特色是所有动画都只需要一个HTML元素…...

开源的JT1078转GB28181服务器

JT1078转GB28181流程 项目地址&#xff1a; JT1078转GB28181的流媒体服务器: https://github.com/lkmio/lkm JT1078转GB28181的信令服务器: https://github.com/lkmio/gb-cms 1. 创建GB28181 UA 调用接口: http://localhost:9000/api/v1/jt/device/add 请求体如下&#xf…...

智能守护电网安全:探秘输电线路测温装置的科技力量

在现代电力网络的庞大版图中&#xff0c;输电线路如同一条条 “电力血管”&#xff0c;日夜不息地输送着能量。然而&#xff0c;随着电网负荷不断增加&#xff0c;长期暴露在户外的线路&#xff0c;其线夹与导线在电流热效应影响下&#xff0c;极易出现温度异常。每年因线路过热…...

Java垃圾回收算法及GC触发条件

一、引言 在Java编程语言的发展历程中&#xff0c;内存管理一直是其核心特性之一。与C/C等需要手动管理内存的语言不同&#xff0c;Java通过自动垃圾回收&#xff08;Garbage Collection&#xff0c;简称GC&#xff09;机制&#xff0c;极大地减轻了开发人员的负担&#xff0c…...

【Hot 100】118. 杨辉三角

目录 引言杨辉三角我的解题代码优化优化说明 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】118. 杨辉三角❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难&#xff01; 引言 …...

useMemo useCallback 自定义hook

useMemo & useCallback & 自定义hook useMemo 仅当依赖项发生变化的时候&#xff0c;才去重新计算&#xff1b;其他状态变化时则不去做不必要的计算。 useCallback 缓存函数。但是使用注意&#x1f4e2; &#xff0c;useCallback没有特别明显的优化。 *合适的场景——父…...

ffmpeg 的视频格式转换 c# win10

1&#xff0c;下载ffmpeg &#xff0c;并设置环境变量。 ffmpeghttps://www.gyan.dev/ffmpeg/builds/ 2.新建.net 9.0 winform using System; using System.Diagnostics; using System.Text; using System.Windows.Forms;namespace WinFormsApp11 {public partial class Fo…...

【irregular swap】An Examination of Fairness of AI Models for Deepfake Detection

文章目录 An Examination of Fairness of AI Models for Deepfake Detection背景points贡献深伪检测深伪检测审计评估检测器主要发现评估方法审计结果训练分布和方法偏差An Examination of Fairness of AI Models for Deepfake Detection 会议/期刊:IJCAI 2021 作者: 背景…...

【JAVA】注解+元注解+自定义注解(万字详解)

&#x1f4da;博客主页&#xff1a;代码探秘者 ✨专栏&#xff1a;《JavaSe》 其他更新ing… ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;作者水平有限&#xff0c;欢迎各位大佬指点&…...

【Doris基础】Apache Doris中的Version概念解析:深入理解数据版本管理机制

目录 引言 1 Version概念基础 1.1 什么是Version 1.2 Version的核心作用 1.3 Version相关核心概念 2 Version工作机制详解 2.1 Version在数据写入流程中的作用 2.2 Version在数据查询流程中的作用 2.3 Version的存储结构 3 Version的进阶特性 3.1 Version的合并与压…...

【Linux 基础知识系列】第一篇-Linux 简介与历史

一、什么是 Linux&#xff1f; Linux 是一种类 Unix 操作系统&#xff0c;它是由 Linus Torvalds 于 1991 年首次发布的。作为一个开源操作系统&#xff0c;Linux 的源代码可以被任何人自由使用、修改和分发。在现代计算环境中&#xff0c;Linux 凭借其强大的性能、高稳定性、…...

【图像处理基石】如何进行图像畸变校正?

图像畸变校正常用于计算机视觉、摄影测量学和机器人导航等领域&#xff0c;能够修正因镜头光学特性或传感器排列问题导致的图像失真。下面我将介绍几种常用的图像畸变校正算法&#xff0c;并提供Python实现和测试用例。 常用算法及Python实现 1. 径向畸变校正 径向畸变是最常…...