《动手学深度学习v2》之细致解析(2)数据处理以及相关数学基础

前言

        作者来自北京某不知名985,现在是本科在读学生,专业是数据科学与大数据技术,班上同学都太卷了,没办法,需要学习深度学习,经大佬介绍,在B站上找到了一个很不错的资源,李沐老师的《动手学深度学习v2》,不仅有全套视频,讲解细致,而且配套资料全部公开免费,不用加公众号也不用私别人的vx,我觉得挺不错,在这里做一个学习记录,也想跟大家一起讨论深度学习相关的问题。新的一年,不要摆烂,一起加油!!!

 这里附上连接:

跟李沐学AI的个人空间-跟李沐学AI个人主页-哔哩哔哩视频

1. 引言 — 动手学深度学习 2.0.0 documentation

相关的视频和书籍的pdf都有介绍,可以免费下载,然后还有jupyter,非常nice,ok下面咱们进入正题,本博客的图片基本来自李沐老师的视频

 本文章包含了《动手学深度学习v2》视频中的 04,05,06,07,这几章基础知识比较多,同时李沐老师的ppt讲解的也很仔细,我就大量上图了,一些容易有疑问的点我在后面进行了例子的辨析与讲解,大家可以参考!

目录

前言

04 数据处理

创建数组

访问元素

05 线性代数

 06 矩阵计算

因变量为标量,自变量为向量

因变量为向量,自变量为标量

因变量和自变量均为向量

07 向量的链式法则

自动求导

自动求导的两种模式


04 数据处理

最基本的处理单元——N维数组

 

创建数组

  • 形状:例 3*4

  • 每个元素的数据类型

  • 每个元素的值

访问元素

一个元素 【1,2】

一行 【1,:】

一列 【:,1】

子区域 【1:3,1:】 第一行到第三行(不包括第三行),取这几行的第一列

【::3,::2】这个是选取0-m行中为3的倍数的行,再在这些行中选取0-n列中,列数为2的倍数的列

05 线性代数

 基本概念的回顾

 

 

 

 

 矩阵乘法可能比较容易忘记,这里我再提一嘴,两个矩阵A,B能够实现AB 的首要条件就是A的列数等于B的行数,同时,新生成的矩阵的行数等于A矩阵行数,新生成矩阵的列数等于B的列数,就像两个人结婚生子,小孩会得到母亲的一半染色体也会得到来自父亲的一半染色体。

  同时新生成的矩阵C的C_{ij}=\sum_{k=0}^n A_{ik}B_{kj}也就是说,新矩阵C的第i行第j列等于A矩阵的第i行的(假设A的列数为n,那么B的行数也为n)n个数(列)与B矩阵第j列的n个数(行)相乘,也就是矩阵乘法的定义

 

 

 06 矩阵计算

 

重要的是我们需要弄清楚相除之后的形状

因变量为标量,自变量为向量

此时我们可以将y与x的关系写作:

y=f(x_1,x_2,x_3,x_4,....x_n)

这时我们直接求导就行

\frac{\partial y}{\partial\boldsymbol{x}}=(\frac{\partial y}{\partial x_1},\frac{\partial y}{\partial x_2},\frac{\partial y}{\partial x_3},\frac{\partial y}{\partial x_4},....,\frac{\partial y}{\partial x_n})

例:如 y=a^TX,其中a和X的维数相同,均为n\times 1维向量,y为向量a和X的内积

这里我们要计算\frac{\partial y}{\partial X},其中y为标量,我们只需要将其拆分成一个累加和的形式,然后再进行求导:

y=a^TX=\sum_{i=1}^{n}a_ix_i

所以我们分别进行求导可以得到:

\frac{\partial y}{\partial X}=(a_1,a_2,a_3,....a_n)=a

这里跟我们上图得到的结果是相符的,一个因变量(标量)对一个自变量(1\times n维向量)求导,得到的导数是一个n\times 1维的向量

 从几何的角度来理解,这里我们求的导数即为垂直于椭圆的切线方向,为梯度,即指向值变化最大的方向,在后面的机器学习中也是我们要求的目标

一维向量从数学的表达习惯上我们将其默认为列向量

有关公式已给出,我们例子中的即为最后一种内积的变式

因变量为向量,自变量为标量

 跟上面的情况相似,也是展开然后分别求导

因变量和自变量均为向量

 相当于分两步走,先拆解成一个列向量,再对每行进行标量对向量的求导,形成一个矩阵

例子:Y=WX\, 其中Y为m\times 1维向量,X为n\times 1维向量,W为m\times n维向量

 Y=WX=\begin{bmatrix} w_{11}x_1+w_{12}x_2+w_{13}x_3+....+w_{1n}x_n\\ w_{21}x_1+w_{22}x_2+w_{23}x_3+....+w_{2n}x_n\\ w_{31}x_1+w_{32}x_2+w_{33}x_3+....+w_{3n}x_n\\ .\\ .\\ .\\ w_{m1}x_1+w_{m2}x_2+w_{m3}x_3+....+w_{mn}x_n \end{bmatrix}\\ y_i=\sum_{j=0}^n w_{ij}x_j,\frac{\partial y_i}{\partial X_j}=w_{ij}

因此由上面我们得到的求导公式可得:

\frac{\partial Y}{\partial X}= \begin{bmatrix} w_{11},w_{12},.....w_{1n}\\ w_{21},w_{22},.....w_{2n}\\ .\\ .\\ .\\ w_{m1},w_{m2},.....w_{mn} \end{bmatrix}=W

这里总结一下:

也就是说对于向量而言:

因变量Y为m\times 1,而自变量X为n\times 1,则\frac{\partial Y}{\partial X}的形状为(m,n)

也就是说导数的行数看因变量的行数,导数的列数看自变量的行数(在分子布局下)

对于矩阵而言(原理不过多赘述,不要求掌握,知道形状即可):

导数的前两项取因变量矩阵的前两项,最后一项或两项取自变量的形状转置,当出现1时,舍去。

被李沐老师脑袋被挡住的地方(m,l,k,n)

07 向量的链式法则

 这里跟我们上面总结的规律一致

线性回归的一个例子

 

 计算过程还是一致的,一般不会涉及到真正的矩阵求导(这里注意,例1的b为一个标量,可以直接求导得到一个标量,而例2中的:

b=a-y,其中a=Xw为一个m\times 1的向量,对其求导得到的结果为b^T而不是b

这里有:||b||^2=b_1^2+b_2^2+b_3^2+....+b_n^2

其对\pmb{b}求导得到的向量为\frac{\partial ||b||^2}{\partial \pmb{b}}=(2b_1,2b_2,2b_3,....,2b_n)=2\pmb{b}^T

自动求导

神经网络层数很多,我们求导求不过来,需要自动求导

符号求导就是对代数表达式得到一个导函数的代数表达式

数值求导就是即便我们不知道f是啥样的函数,我能通过数值去拟合这个导数

 

显示构造就是定义变量a,b,c=2*a+b,后面再代入值即可

 隐式构造:告诉系统,系统把你的过程记录下来

自动求导的两种模式

 

 

 总结:反向运算的代价是需要存储正向中所有的中间结果,比较耗内存,吃GPU资源,而正向则是每一层均要计算梯度,其计算复杂度太高。在实战中我们一般使用反向运算,也就是我们下一节中会提到的backward()。

  下一次更新我们就进入代码实战了,也就是线性回归的原理以及代码实现,这里我才刚把softmax()这几章看完,得赶赶进度啦,要不然博客更新来不及了,大家加油!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《动手深度学习 v2》是一本介绍深度学习的教材,通过动手实践的方式帮助读者深入理解深度学习的理论和实践。这本书由李沐等人共同编写,内容包含了深度学习的基本概念、算法原理以及实际应用等方面。 这本书的优点之一是注重实践,通过大量的案例和代码实现,读者可以亲自动手搭建深度学习模型,并通过实际操作来理解算法的工作原理。此外,书中还涵盖了一些最新的深度学习技术和应用,帮助读者跟上深度学习领域的最新发展。 《动手深度学习 v2》也具有一定的难度,对于初者来说需要一定的数学和编程基础才能更好地理解和实践。但是,书中的难点都有详细的解答和说明,读者可以在遇到困难时查看相关解析,提升习效果。 总的来说,《动手深度学习 v2》是一本非常实用的深度学习教材,适合有一定基础的读者习和实践。通过阅读这本书,读者可以系统地深度学习的基本概念和算法,掌握如何应用深度学习解决实际问题,进而在深度学习领域有更深入的理解和应用。 ### 回答2: 《动手深度学习 v2》pdf是一本深度学习入门的教程,适合初深度学习的理论和实践。这本教程由作者李沐、阿斯顿·张剑锋等人合作撰写,涵盖了深度学习的基本概念、神经网络的构建、常见深度学习模型、计算机视觉、自然语言处理等领域的应用。 这本教程的特点是注重实践,每个章节都提供了大量的代码示例和实验指导,让读者可以动手实践,巩固所知识。同时,教程还配有相应的代码库和数据集,读者可以下载使用。 教程通过讲解深度学习的基本概念和原理,帮助读者建立起对深度学习的整体认识。然后,通过实例演示和实践,教会读者如何使用深度学习框架搭建神经网络,并进行训练和优化。 另外,这本教程也介绍了一些常见的应用领域,如计算机视觉和自然语言处理。读者可以习到如何使用深度学习来解决图像分类、目标检测、文本生成等问题。 最后,这本教程还提供了一些深度学习的进阶内容,如深度生成模型和强化习等,供读者深入习和拓展。 总的来说,《动手深度学习 v2》pdf是一本很好的深度学习入门教程,通过动手实践和实例演示,帮助读者快速入门和掌握深度学习的基本知识和应用技巧。对于想要深度学习的初者来说,是一本非常有价值的教材。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值