个性化阅读
专注于IT技术分析

揭开深度学习数学概念的神秘面纱

本文概述

数据科学是一个跨学科领域, 它使用数学和高级统计数据进行预测。所有数据科学算法都直接或间接使用数学概念。扎实的数学知识将帮助你开发创新的数据科学解决方案, 例如推荐系统。如果你擅长数学, 它将使你轻松过渡到数据科学。作为数据科学家, 你必须利用数学的基本概念来解决问题。

除数学外, 你还需要领域知识, 编程技能, 业务技能, 分析能力和好奇心态。数据科学家无法逃避数学。你必须灌输和教自己数学和统计学的基础知识才能成为数据科学家。

在本教程中, 你将探索数据科学(或特别是深度学习)的基本数学概念, 例如:

  • 标量和向量
  • 矩阵和张量
  • 行列式
  • 特征值和向量
  • NORM功能
  • 矩阵分解
  • 奇异值分解
  • 摩尔-彭罗斯伪逆
  • hadamard乘积
  • 信息熵
  • Kullback-Leibler发散
  • 梯度下降

标量和向量

  • 标量:标量是通过标量乘法处理空间向量的单个数字。
  • 向量:向量V是项目的有序集合。向量是数字数组, 可以是行或列。向量可以加在一起, 并且可以乘以一个称为定标器的实数。
揭开深度学习数学概念的神秘面纱

图片来源

# Import numpy module
import numpy as np

# creating a vector
v = np.array([1, 2, 3, 4, 5])
print(v)
[1 2 3 4 5]
# Vector Operations
# Import numpy module
import numpy as np

# Create two vector
a = np.array([1, 2, 3, 4, 5])
b = np.array([1, 2, 3, 4, 5])

# adding two vectors
add = a + b
print("Addition:", add)

# Vector Subtraction
sub = a - b
print("Subtraction:", sub)

# Vector Multiplication
mul = a * b
print("Multiplication:", mul)

# Vector Division
div = a / b
print("division", div)
Addition: [ 2  4  6  8 10]
Subtraction: [0 0 0 0 0]
Multiplication: [ 1  4  9 16 25]
division [1. 1. 1. 1. 1.]

矩阵和张量

  • 矩阵:矩阵是代表变换的数字的N-D数组。你可以将矩阵视为诸如”比例”, “旋转”, “剪切”和”翻转”之类的变换。它将空间中的单个点转换为空间中的不同点。
# Import numpy module
import numpy as np

# create 2*2 matrix
a1=np.array([[1, 2], [3, 4]])
a2=np.array([[1, 2], [3, 4]])

# Dot Product
dot_product = np.dot(a1, a2)
print("Dot Product: \n", dot_product)

# Cross Product
cross_product = np.cross(a1, a2)
print("Cross Product: \n", cross_product)
Dot Product:
 [[ 7 10]
 [15 22]]
Cross Product:
 [0 0]

两个向量的点积表示一个向量在另一个向量上的投影, 两个向量的叉积使一个向量可以识别两个向量可以位于的平面。

  • 张量:有时候, 你将需要一个具有两个以上维度并且每个数组具有不同维度的数组, 这些数组排列在称为张量的网格中。张量维数称为其等级。标量和向量也是张量的一种。零阶张量是缩放器, 一阶张量是向量。
揭开深度学习数学概念的神秘面纱

图片来源

行列式

行列式是表示矩阵因数的标量值, 通过它可以探索长度(一维), 面积(2-维), 体积(3-维)。如果行列式为2, 则是体积的两倍(3维), 或者如果行列式为1, 则不会影响体积(以3维为单位)。如果行列式为0, 则它​​没有逆, 因为零乘以0将得到零。

揭开深度学习数学概念的神秘面纱

特性:

  • 矩阵的乘积是矩阵的行列式的乘积:det(M1M2)= det(M1)det(M2)。
  • 矩阵的行列式等于特征值的乘积。
  • 如果将矩阵乘以常数, 则行列式将按det(cM)= cN det(M)进行更改。 N是矩阵的维数。

如果你的矩阵表示可拉伸的玩具, 则该矩阵的行列式将显示你拉伸了玩具的程度。

# Import numpy module
import numpy as np

# Create 2*2 matrix
arr=np.array([[1, 2], [3, 4]])

# Compute Determinant of a matrix
arr_det=np.linalg.det(arr)

# Print the Computed Determinant
print("Determinant:", arr_det)
Determinant: -2.0000000000000004

特征值和特征向量

方阵A的特征向量是非零向量, 因此乘以A仅会改变v的比例。

揭开深度学习数学概念的神秘面纱

图片来源

特征向量也称为特征向量。它是一个非零向量, 仅在应用线性变换时才随标量因子变化。

特征向量是线性变换的旋转轴。这些轴在方向上是固定的, 特征值是矩阵放大或缩小的比例因子。特征值也称为特征值或特征根。换句话说, 你可以说特征值是固定的直线或平面, 这限制了线性变换的行为, 而线性变换的特征值是失真的因素。

行列式告诉你在线性变换中按比例缩放的形状区域。这就是为什么特征值的乘积等于行列式的原因。

# Import numpy module
import numpy as np

# Create 2*2 matrix
arr=np.array([[1, 2], [3, 4]])

# Find eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(arr)

# print the eigenvalues and eigenvectors
print("Eigen Values: \n", eigenvalues)
print("Eigen Vectors:\n", eigenvectors)
Eigen Values:
 [-0.37228132  5.37228132]
Eigen Vectors:
 [[-0.82456484 -0.41597356]
 [ 0.56576746 -0.90937671]]

NORM功能

有时你想测量向量的大小。范数功能可帮助你测量向量的大小。它为向量空间中除零向量之外的向量分配严格的正长度。它包括L ^ p范数。它将向量映射到非负值。它等效于向量和矩阵的欧几里得距离。它等于最大的奇异值。

揭开深度学习数学概念的神秘面纱
# import numpy module
import numpy as np

# Create 3*3 Matrix
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Compute norm
a_norm = np.linalg.norm(a)

# print the norm of function
print(a_norm)
16.881943016134134

矩阵分解

矩阵分解, 也称为矩阵分解。它用于将矩阵拆分为其组成部分。矩阵因式分解等效于数字的因式分解, 例如将10分解为2 x5。用于求解线性方程。

可以使用以下矩阵分解技术:

  • LU分解适用于正方形矩阵, 并将矩阵分解为L和U分量。
  • QR分解适用于m x n个矩阵(不限于平方矩阵), 并将矩阵分解为Q和R分量。它不限于像LU分解这样的正方形矩阵。
  • Cholesky分解用于求解线性回归的线性最小二乘以及模拟和优化方法。
  • 下一部分将解释奇异值分解。

奇异值分解

在上一节中, 我们已经看到了分解为特征向量和特征值的矩阵的特征分解。奇异值分解是一种矩阵分解方法, 可分解为奇异矢量和奇异值。它在信号处理, 心理学, 社会学, 气候, 大气科学, 统计和天文学方面提供了各种有用的应用程序。

揭开深度学习数学概念的神秘面纱
  • M是一个m×m矩阵
  • U是m×n的左奇异矩阵
  • Σ是一个n×n对角矩阵, 具有非负实数。
  • V是m×n的右奇异矩阵
  • V *是n×m矩阵, 是V的转置。
# Import numpy module
import numpy as np

# Create 3*3 matrix
a = np.array([[1, 3, 4], [5, 6, 9], [1, 2, 3], [7, 6, 8]])

# Decomposition of matrix using SVD
U, s, Vh = np.linalg.svd(a, full_matrices=False)

U, s, Vh
(array([[-0.27067357, -0.61678044, 0.69789573], [-0.65939972, -0.2937857 , -0.62152182], [-0.20244298, -0.3480035 , -0.06765408], [-0.67152413, 0.64200111, 0.34939247]]), array([18.0376394 , 2.34360292, 0.38870323]), array([[-0.46961711, -0.51018039, -0.72053851], [ 0.87911451, -0.19502274, -0.43488368], [-0.08134773, 0.83766467, -0.54009299]]))
# Generate the initial matrix
new_a = np.dot(U, np.dot(np.diag(s), Vh))

# Print original matrix
print(new_a)
[[1. 3. 4.]
 [5. 6. 9.]
 [1. 2. 3.]
 [7. 6. 8.]]

摩尔-彭罗斯伪逆

矩阵的伪逆被广义化为逆矩阵。它用于计算最小二乘解。 Moore-Penrose逆是矩阵伪逆的最流行形式。

揭开深度学习数学概念的神秘面纱
# Import numpy module
import numpy as np

# Create 3*3 matrix
a = np.array([[1, 3, 4], [5, 6, 9], [1, 2, 3], [7, 6, 8]])

# Compute the (Moore-Penrose) pseudo-inverse of a matrix.
inv=np.linalg.pinv(a)

# Print pseudo-inverse of a matrix.
print(inv)
[[-0.37037037  0.03703704 -0.11111111  0.18518519]
 [ 1.56296296 -1.2962963  -0.11111111  0.71851852]
 [-0.84444444  0.94444444  0.16666667 -0.57777778]]

hadamard乘积

Hadamard乘积或Schur乘积是两个相同维原始矩阵的按元素乘积。它也称为按元素乘积。它比矩阵乘积简单。 Hadamard产品用于JPEG有损压缩算法。 Hadamard产品是可交换的, 关联的和分布式的。它很容易获得逆, 并简化了幂矩阵的计算。

揭开深度学习数学概念的神秘面纱

Hadamard产品广泛应用于各种领域, 例如卫星传输中的代码校正, 信息论, 密码学, 模式识别, 神经网络, 最大似然估计, JPEG有损压缩, 多元统计分析和线性建模。

# Import numpy module
import numpy as np

# Create 2*2 matrix a1 and a2
a1=np.array([[1, 2], [3, 4]])
a2=np.array([[1, 2], [3, 4]])

# Element wise multiplication
hadamard_product = np.multiply(a1, a2)

# Print hadamard distance
print("Hadamard Product: \n", hadamard_product)
Hadamard Product:
 [[ 1  4]
 [ 9 16]]

信息熵

“随机变量的信息熵是一种试图表征随机变量不可预测性的函数。” (信息熵和互信息)”, 用于在树的构建的每个步骤中构建自动决策树;使用信息熵标准进行特征选择。模型选择基于最大信息熵原理, 从冲突的模型中, 信息熵最高的模型是最好的。

“如果随机变量X采用集合χ= {x1, x2, …, xn}中的值, 并且由概率分布P(X)定义, 则我们将随机变量的信息熵写为, “(信息熵和互信息)

揭开深度学习数学概念的神秘面纱

“如果将上述等式中的对数取为2的底数, 则信息熵以位表示。如果将对数取为自然对数, 则信息熵以nat表示。更普遍地, 信息熵被表示为以位为单位。” (信息熵和互信息)

# Import scipy and numpy module
import scipy.stats
import numpy as np

# Create an array
a=np.array([1, 1, 2, 3, 1, 3, 4, 2, 5, 6, 3, 2, 4, 3])


# Compute probability distribution
a_pdf=scipy.stats.norm.pdf(a)

# Calculate the entropy of a distribution for given probability values.
entropy = scipy.stats.entropy(a_pdf) # get entropy from probability values
print("Entropy: ", entropy)
Entropy:  1.6688066853941022

Kullback-Leibler发散

Kullback-Leibler散度是两个概率分布的相对信息熵。它测量一个分布与另一个参考概率分布的距离(相似性或不相似性)。 0 Kullback-Leibler散度的值表示两个分布相同。可以表示为

揭开深度学习数学概念的神秘面纱

听起来确实像是距离测量, 但事实并非如此。这是因为它本质上是不对称的, 这意味着该指标不是可交换的。通常, 你可以说D(p, q)≠D(q, p)。 KL散度经常用于无监督的机器学习技术”可变自动编码器”中。

# Import scipy.stats and numpy module
import scipy.stats
import numpy as np

# Create numpy arrays
a=np.array([1, 1, 2, 3, 1, 3, 4, 2, 5, 6, 3, 2, 4, 3])
b=np.array([1, 1, 3, 4, 2, 4, 5, 2, 5, 6, 3, 2, 4, 3])

# Compute probability distribution
a_pdf=scipy.stats.norm.pdf(a)
b_pdf=scipy.stats.norm.pdf(b)

# compute relative entropy or KL Divergence
kl_div=scipy.stats.entropy(a_pdf, b_pdf)

print("KL Divergence: ", kl_div)
KL Divergence:  0.26732496641464365

梯度下降

梯度下降是最著名的算法之一, 用于优化线性回归, 逻辑回归和神经网络的系数和偏差。这是一个迭代过程, 可找到任何给定函数的最小值。

揭开深度学习数学概念的神秘面纱

图片来源

揭开深度学习数学概念的神秘面纱

图片来源

三种类型的梯度下降算法:整批, 随机和小批量梯度下降。全批次梯度下降使用整个数据集来计算梯度, 而随机梯度下降使用数据集的样本来计算梯度。小批量梯度下降是随机梯度下降和批量梯度下降的组合。训练集分为多个小组, 称为批次。这些小批次逐一计算损失并平均最终损失结果。

总结

恭喜, 你已完成本教程的结尾!

你学习了深度学习的基本数学概念, 例如标量, 向量, 矩阵, 张量, 行列式特征值, 特征向量, NORM函数, 奇异值分解(SVD), Moore-Penrose伪逆, Hadamard乘积, 信息熵Kullback-Leibler发散和梯度下降。

沿途, 你还使用NumPy和SciPy在python中实践了这些概念。

如果你想了解有关Python的更多信息, 请参加以下srcmini课程:

  • SciPy的聚类方法
  • Python中的无监督学习
  • Python中的统计思维(第1部分)
  • Python中的统计模拟
赞(0)
未经允许不得转载:srcmini » 揭开深度学习数学概念的神秘面纱

评论 抢沙发

评论前必须登录!