放弃深度学习?我承认是因为线性代数
深度学习从入门到放弃?一定是哪里出了问题。
这篇文章想来和你探讨下:深度学习背后的线性代数问题。
先做个简单的名词解释
深度学习:作为机器学习的一个子域,关注用于模仿大脑功能和结构的算法:人工神经网络。
线性代数:连续的而不是离散的数学形式,许多计算机科学家不太了解它。对于理解和使用许多机器学习算法,特别是深度学习算法,理解线性代数是非常重要的。
为什么需要数学?
线性代数,概率和微积分是机器学习用于表述的「语言」。学习这些主题将有助于深入理解底层算法机制,便于开发新算法。
当限定在更小的层次时,深度学习背后的基础都是数学。所以在开始深度学习和编程之前,理解基本的线性代数是至关重要的。
src
深度学习背后的核心数据结构是标量,向量,矩阵和张量。让我们以编程方式用这些解决所有基本的线性代数问题。
标量
标量是单个数字,是一个 0 阶张量的例子。符号 x∈ℝ 表示 x 是一个标量,属于一组实数值 ℝ。
深度学习有不同的有趣的数字集合。ℕ 表示正整数集合(1,2,3,...)。ℤ 表示实数,包括正值,负值和 0。ℚ 表示有理数的集合,有理数可以表示为两个整数组成的分数。
Python 中内置一些标量类型 int,float,complex,bytes 和 Unicode。在 NumPy 这个 python 库中,有 24 种新的基本数据类型来描述不同类型的标量。有关数据类型的信息,请参阅此处的文档(https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.scalars.html)。
在 Python 中定义标量和一些操作:
下面的代码片段解释了对标量的几个算术运算。
以下代码片段检查给定变量是否是标量。
向量
向量是一维有序数组,是一阶张量的例子。向量被称为向量空间的对象的片段。向量空间可以被认为是特定长度(或维度)的所有可能向量的全部集合。三维实值向量空间(用 ℝ^3 表示)通常用于从数学角度表示我们对三维空间的现实世界概念。
为了明确识别向量的必要成分,向量的第 i 个标量元素被写为 x [i]。
在深度学习中,向量通常表示特征向量,其原始组成部分定义特定特征的相关性。这些元素中可能包括二维图像中像素集强度的相关重要性或者金融工具的横截面的历史价格值。
Python 中定义向量和一些操作:
矩阵
矩阵是由数字组成的矩形阵列,是二阶张量的一个例子。如果 m 和 n 均为正整数,即 m, n ∈ ℕ,则矩阵包含 m 行 n 列,共 m*n 个数字。
完整的矩阵可写为:
将所有矩阵的元素缩写为以下形式通常很有用。
在 Python 语言中,我们使用 numpy 库来帮助我们创建 n 维数组。这些数组基本上都是矩阵,我们使用矩阵方法通过列表,来定义一个矩阵。
$python
在 Python 中定义矩阵的操作:
矩阵加法
矩阵可以与标量、向量和其他的矩阵相加。这些运算都有严格的定义。这些技巧在机器学习和深度学习中会经常用到,所以值得熟练运用这些技巧。
矩阵-矩阵加法
C=A+B(矩阵 A 和 B 应该有相同的形状)
这类方法返回矩阵的形状,并将两个参数相加后返回这些矩阵的总和。如果这些矩阵的形状不相同,则程序会报错,无法相加。
矩阵-标量相加
将给定的标量加到给定矩阵的所有元素。
矩阵-标量相乘
用给定的标量乘以给定矩阵的所有元素。
矩阵乘法
矩阵 A 与矩阵 B 相乘得到矩阵 C。
src
矩阵转置
通过矩阵转置,你可以将行向量转换为列向量,反之亦然。
A=[aij]mxn
AT=[aji]n×m
张量
张量的更一般的实体封装了标量、向量和矩阵。在物理学科和机器学习中有时需要用到高于二阶的张量。
src
我们使用像 tensorflow 或 Pytorch 这样的 Python 库来声明张量,而不是用嵌套矩阵。
在 Pytorch 中定义一个简单的张量:
Python 中张量的几点算术运算
有关张量和 Pytorch 的更多文档请点击此处(https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html)。
原文发布时间为:2018-05-23
本文来自云栖社区合作伙伴“雷锋网”,了解相关信息可以关注“雷锋网”。
放弃深度学习?我承认是因为线性代数相关推荐
- 深度学习中的数学-线性代数
深度学习中的数学-线性代数 1 矩阵和向量相乘 1.1 标准乘积 1.2 元素对应乘积 2 线性相关和生成子空间 3 特征分解 4 奇异值分解 推荐书目 参考 1 矩阵和向量相乘 1.1 标准乘积 如 ...
- LeCun:放弃深度学习吧,AI的未来是能量学习
点击我爱计算机视觉标星,更快获取CVML新技术 新智元报道 来源:zdnet 编辑:元子 [新智元导读]在普林斯顿高等研究院的深度学习讲习班上,LeCun提出为了使无监督学习成为可能,整个领域可 ...
- 深入浅出深度学习(三)线性代数基础
一.标量.向量.矩阵.张量 标量(scalar) 一个数值,最小的计算单元 向量(vector) 由多个标量组成的一维数组 矩阵(matrix) 由标量数据构成的二维数组 张量(tensor) 深度学 ...
- 【深度学习基础】:线性代数(三)_逆矩阵与伪逆矩阵
一.矩阵的逆 定义 2.Python 2.1 Numpy import numpy as npA = np.array([[1,2],[3,4]])# 求逆矩阵A_inv = np.linalg.i ...
- 深度学习中所需的线性代数知识
原址 每个深度学习项目背后的数学知识. 深度学习是机器学习的一个子领域,涉及一些模仿人脑结构和功能的人工神经网络算法. 线性代数是一种连续的而非离散的数学形式,许多计算机科学家对它几乎没有经验.对于理 ...
- 「我是可微分编程的粉丝」,Gary Marcus再回应深度学习批判言论
近日,Gary Marcus 针对各研究者与开发者的评论作出了回应,他从什么是通用人工智能开始回应了常见的 14 个质疑或问题,其中就包括 LeCun 所说的「mostly wrong」.此外,Mar ...
- 如何提升深度学习性能?数据、算法、模型一个都不能少
https://www.toutiao.com/i6635808175893250564/ 2018-12-17 12:04:48 该文来自DataCastle数据城堡(DataCastle2016) ...
- 干货回顾丨深度学习性能提升的诀窍
Pedro Ribeiro Simoes拍摄 原文: How To Improve Deep Learning Performance 作者: Jason Brownlee 你是如何提升深度学习模型的 ...
- 言论丨马库斯回应14大质疑,重申深度学习怀疑论
深度学习论战再起,NYT心理学家Gary Marcus如约写了一篇偏技术的文章,回应对他此前提出的深度学习问题的质疑.无监督学习适用于什么问题?为什么不说深度学习更好的方面?马库斯说,尽管他提出了所有 ...
最新文章
- 3.Linux文件与目录管理
- 利用spring session解决共享Session问题
- WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决
- hdu5468 Puzzled Elena
- .读取excel表格(JAVA)
- html语义化标签_5个你可能不知道的html5语义化标签
- Visual Studio 2013旗舰版KEY
- 解决ORA-01578错误一例
- UI自动化测试工具-国产和国外
- oracle 怎么清空数据表,oracle怎么清空表数据,oracle清空数据库
- python输出边长为n的正方形_将一个正方形分成N个较小的正方形并求N个较小正方形的中心坐标...
- Python下十进制转换为二进制
- python面试题No5
- 学生宿舍管理系统java课设_JAVA学生宿舍管理系统
- java-php-python-ssm新生报到管理计算机毕业设计
- LTD营销SaaS-官微云代理商加盟服务
- Android高级工程师面试实战,我的Android美团求职之路,3面直接拿到offer
- 脑电波技术的前途光明吗?
- 【强化学习论文合集】三十五.2021神经信息处理系统大会论文(NIPS2021)
- Windows 10 打印机驱动无法删除和卸载的解决办法
热门文章
- mysql数据库编程(c 语言)_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...
- 湖州机器人上课时间_【倒计时5天】燃到炸!湖州吾悦广场10月30日开业狂欢指南,请收下...
- matlab怎么编写数据处理程序,【悬赏--已结束】求编写一个基于Matlab的数据处理程序...
- java 发送邮件_Spring Boot (十二):Spring Boot 邮件服务
- Android百度SDK定位
- java 排序 内存_Java内存模型(二)——重排序
- 20200119:(leetcode)回文数(3种解法)
- 20190909:(leetcode习题)第一个错误的版本
- matlabapp窗口图像_如何在一个matlab窗口上合并两个图像?
- 12306加密传输_前沿一键发送“文图音视频” 支持加密传输、图形密码、保护用户隐私……5G消息要来了!...