深度学习的线性代数基础
深度学习是关于数据的,我们需要将数据以矩阵或更高维向量的形式表示并对它们执行操作来训练我们的深度网络。所以更好地理解矩阵运算和线性代数将帮助您对深度学习算法的工作原理有更好的理解。 这就是为什么线性代数可能是深度学习中最重要的数学分支。 在这篇文章中,我将尝试对线性代数做一个简单的介绍。
我们所说的数据是什么意思?
让我们考虑一个简单的例子,在这个例子中,你有每栋房子的属性,你的目标是尝试预测给定房子的价格。这些属性也称为解释变量(EV),我们将利用它们来训练我们的模型。为简单起见,我们将只考虑三个属性:卧室数量、房屋大小、位置。现在,每栋房子都将表示为一个包含三个值的向量。
[X_numberOfBedrooms, X_size, X_location]
但是等等,这里我们只考虑一所房子。我们通常拥有由数千栋房屋组成的数据集,每栋房屋都称为一个数据点。此时,我们要做的就是将房屋的向量堆叠起来,形成一个矩阵。每行代表一所房子,每列代表一个解释变量。
x₁₁:第一个房子的房间数
x₂₁:第一个房子的大小
x₃₁:第一个房子的位置
简单线性回归
我们将尝试建立一个简单的模型来预测给定房屋的价格。 让我们采用三个解释变量的线性组合。 这可能是你能得到的最简单的模型; 简单的线性回归。 现在让我们正式来看一下:
Y = Xβ+ϵ
我们有三个权重乘以每个 EV。可以将它们视为每个变量在决定价格方面的重要性。 简单的想一想:房子大,地段好,价格肯定高。 因此,所有EV与价格呈正相关。 通过查看最高权重,我们可以确定最相关的变量,这将使我们很好地了解模型对每个变量的敏感性。 现在,让我们用矩阵表示法重写所有内容。
如您所见,以矩阵形式编写所有内容可以更简洁地描述正在发生的事情。 但是我们如何乘以矩阵呢? 别担心,它既简单又直观。
矩阵乘法
首先让我们地思考一下; 我们只是想将每个 EV 与其相应的权重相乘。 我们有 n 个房屋/示例,因此从逻辑上讲,我们应该将设计矩阵中的每一行与列向量 W 相乘。 为简洁起见,我们将考虑一个包含两个示例和三个解释变量的简单示例:
矩阵和列向量相乘将产生另一个列向量。
现在让我们考虑将两个矩阵相乘。 不要忘记矩阵相乘,第一个矩阵的列数应该与第二个矩阵的行数相同。 所得矩阵的大小可以很容易地计算出来:如果 A=[aij] 是一个 m×n 矩阵,而 B=[bij] 是一个 n×k 矩阵,则 AB 的乘积是一个 m×k 矩阵。 现在已经知道如何将两个矩阵相乘。假设有多个列向量,相乘的过程与将矩阵与向量相乘的过程相同,但是我们要将得到的列向量并排堆叠成一个矩阵。
PyTorch 和张量
这里我们使用 PyTorch 并将它们用于矩阵乘法。 PyTorch 是众所周知的深度学习库,张量(Tensor)起着至关重要的作用。 您可以将张量视为更高维的矩阵,而 PyTorch 允许我们高效地对它们执行数值运算。现在可能已经猜到了,矩阵和张量构成了深度学习的基础。
让我们看一个简单的例子,我们初始化两个矩阵并对它们执行矩阵运算:
A = torch.tensor([[1,2,3] , [2,3,4]])
B = torch.tensor([[3,1] , [4,2] , [2,3]])
torch.matmul(A,B)
神经网络
把到目前为止我们学到的应用起来,我们就可以开始应用矩阵运算来表示神经网络了。 将假设你了解神经网络的基础知识,让我们看看我们的模型架构对于单个隐藏层的需求。
从上图可以看出,我们有输入神经元,它们的表示方式与我们的房屋数据相同。 接下来,我们的隐藏层有四个神经元。 每个神经元将是通过非线性函数的输入神经元的线性组合。 在这个例子中,我们将考虑一个广泛使用且易于理解的激活函数。 RELU是一种激活函数,如果输入值为负则输出零,否则输出输入。 在数学上,ReLU 函数是 f(x)=max(0,x)。 为了表示隐藏层中的四个神经元,我们将我们的设计矩阵与一个四列三行的权重矩阵相乘; 行数应等于输入的维数,列数应等于后续层中目标神经元的数量。
剩下的就是最终的输出层。 输出神经元又是前一层神经元的线性组合。 由于我们正在处理一个回归问题,我们需要一个无界的值,因此我们不需要最后一层的激活函数。 这一层的矩阵乘法要容易得多,因为我们将只采用隐藏层的线性组合。 这应该类似于线性回归,实际上,它正是线性回归。 整个模型可以表示如下:
总结
所有深度学习操作都使用矩阵计算来表示。 学习有关如何在矩阵和张量中表示数据的基础知识,将使您对底层的理论有更好的理解。 如果相对线性代数进行更深入的学习,Gilbert Strang 教授的精彩讲座令人难忘(https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/)
本文作者:Taha Binhuraib
深度学习的线性代数基础相关推荐
- 07组第二次作业 深度学习和pytorch基础
07组第二次作业 深度学习和pytorch基础 1.视频学习 20020007118 张泽峰 1.1绪论 人工智能的前景比较广阔,人才缺口比较大. 专家系统 早期的人工智能依赖于专家系统 通过一些专家 ...
- 【AI白身境】深度学习必备图像基础
文章首发于微信公众号<有三AI> [AI白身境]深度学习必备图像基础 今天是新专栏<AI白身境>的第四篇,所谓白身,就是什么都不会,还没有进入角色. 我们已经说了linux基础 ...
- 零基础实践深度学习之Python基础
零基础实践深度学习之Python基础 Python数据结构 数字 字符串 列表 元组 字典 Python面向对象 Python JSON Python异常处理 Python文件操作 常见Linux命令 ...
- 01.神经网络和深度学习 W2.神经网络基础
文章目录 1. 二分类 2. 逻辑回归 3. 逻辑回归损失函数 4. 梯度下降 5. 导数 6. 计算图导数计算 7. 逻辑回归中的梯度下降 8. m个样本的梯度下降 9. 向量化 10. 向量化的更 ...
- OUC暑期培训(深度学习)——第一周学习记录:深度学习和pytorch基础
第一周学习:深度学习和pytorch基础 目录 第一周学习:深度学习和pytorch基础 Part 1:视频学习: 1. 绪论: 2. 深度学习概述: Part 2:代码练习: 1. pytorch基 ...
- kpu 处理器_深度学习及 KPU 基础知识
深度学习及 KPU 基础知识 1. 阅读完本章文档可以了解什么? 了解深度学习一些基础内容 了解 K210 内部 KPU 的特性 了解 KPU 使用过程中可能会遇到的问题,以及问题的解决方法 2. 概 ...
- 处理器_深度学习及 KPU 基础知识
kpu 处理器_深度学习及 KPU 基础知识_weixin_39909212的博客-CSDN博客深度学习及 KPU 基础知识1. 阅读完本章文档可以了解什么?了解深度学习一些基础内容了解 K210 内 ...
- 第1周学习:深度学习和pytorch基础
第1周学习:深度学习和pytorch基础 一.概念学习 1.1关于一些基本问题的思考 1.2深度学习基础 二.代码练习 pytorch 基础练习 螺旋数据分类问题 一.概念学习 1.1关于一些基本问题 ...
- 深度学习、Linux基础、语音技术等电子书籍分享,仅供学习
深度学习.Linux基础.语音技术等电子书籍分享,仅供学习 即将毕业老师兄学习资源分享 Linux书籍 鸟哥的Linux私房菜-基础篇第四版 链接:https://pan.baidu.com/s/14 ...
最新文章
- Java知识积累——String引用的判断问题
- mybatis和ibatis的一点区别
- 网站精准定位从这三方面着手
- 控制台输入与Math Random的基本使用
- 推荐经典算法实现之BPMF(python+MovieLen)
- Cannot place PIO comp S on the proposed PIO site PB6C / F5 because the types of their IOLOGICs a...
- base64编码 springboot_Spring Boot 中如何实现 HTTP 认证?
- 《C++标准程序库》笔记之二
- 数据库系统服务器的运维
- python输出三角形周长_976. 三角形的最大周长(Python)
- html5内容切换特效,html5+jQuery图片和文字内容同时左右切换特效
- 构造函数、原型、继承原来这么简单?来吧,深入浅出
- 50个常用sql语句
- Linux学习笔记——gzip命令
- 软件质量管理之困境与对策思考
- Array,List,数据类型,caseclss模式匹配
- springboot中Word转PDF
- Redis Lua脚本
- java折线图_如何用java 画折线图
- 现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射