目录
1.线性代数部分知识点回顾
1.标量:
就是一个单独的数,例如a=10
2. 向量及其运算
一个向量表示一组有序排列,并可以通过索引获取其中对应位置的数值。一般情况下,我们会选择 NumPy 对向量进行表示和计算。NumPy 是 Python 的一个扩展程序库,能够很好地支持数组、向量、矩阵的运算。
2.1 向量和标量的计算
标量是一个数字,所以标量在跟向量进行加减乘除的时候,实际上与向量中的每一个数字都同步进行了计算。代码如下:
import numpy as np
a=np.array([1, 2, 3, 4])
print(a * 4)
# Get array([4, 8, 12, 16])
print(a + 4)
# Get array([5, 6, 7, 8])
2.2 向量之间的加减操作
2.3 向量之间的乘法操作
1.点乘(内积),向量的内积、数量积
两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量
向量的点乘要求两个向量的长度一致
2.叉乘(外积),向量的外积、向量积:叉乘的运算结果是一个向量而不是一个标量
3.对应项相乘:两个向量对应的位置相乘,得到的结果还是原来的形状
2. 矩阵及其运算
介绍完标量和向量之后,我们再来看矩阵。
矩阵一般是一个 m 行 n 列的矩形阵列,一般的表达方式如下图所示:
矩阵中每个元素都有 m 和 n 两个下标,分别代表行和列的位置,所以矩阵也可以通过索引直接定位元素的值,例如 X[2][1]。不难发现,m=1 的时候,矩阵就成了刚才提到的向量。
3.1矩阵的加减运算:
3.2矩阵的乘法:
第一种情况:两个形状一样的矩阵的对应位置分别相乘。
第二种情况:矩阵乘法
3.范数:
是一种距离的表示(曼哈顿距离),或者说向量的长度,常见的范数有 L0 范数、L1 范数和 L2 范数
L0范数
L0 范数指这个向量中非 0 元素的个数。我们可以通过 L0 范数减少非 0 元素的个数,从而减少参与决策的特征,减少参数。这样一来,自然模型就运算得更快,模型的体积也更小了。
L1范数
指的是向量中所有元素的绝对值之和,它也被称为稀疏规则算子
L0 范数和 L1 范数都能实现权值稀疏。但 L1 范数是 L0 范数的最优凸近似,它比 L0 范数有着更好的优化求解的特性,所以被更广泛地使用。
为什么要实现权值稀疏呢?
在设计模型的过程中,我们有时会使用到大量的特征(例如在推荐系统中,特征维度都是上亿的),每个特征都会从不同的角度体现问题的不同信息。这些特征经过某些方式的组合、变换、映射之后,会按照不同的权重得到最终的结果。
但有时候,有一部分特征对于最后结果的贡献非常小,甚至近乎零。这些用处不大的特征,我们希望能够将其舍弃,以更方便模型做出决策。这就是权值稀疏的意义。
L2范数
也叫它“岭回归”和“权值衰减”,L2 范数是向量中所有元素的平方和的平方根
L2也代表一种距离,即欧式距离
L2的作用防止过拟合
你在考试前一天临时抱佛脚,把去年的考试题、老师画的知识点,背得滚瓜烂熟。第二天考试的时候,卷子发下来,第一页的题都是你前一天背过的。你很开心,三下五除二就写好了,然后把卷子翻到了第二页。结果到了第二页你就傻眼了,都是你没背过的知识点,完全不知道它们在问什么,最后你挂科了,来年再见。
咱们训练模型时,一般会有训练数据和测试数据。有时模型在训练数据上(第一天背的知识点很好地运用在第一页)表现非常好,但一到测试数据上(第二页),效果就会急剧下降。用通俗的话来讲就是模型的应试能力很强,实际应用表现就很差。这种情况就是过拟合【与只会做题,不会实践类似】。
那 L2 是如何解决过拟合的呢?
首先,参数值小的模型一般会比较简单,它能适应不同的数据集,也能在一定程度上避免过拟合。试想一下,如果我们有一个线性回归方程,其中某个参数非常大,那这个参数稍微变化一下,最终结果的区别就会很大,模型的适应性也会下降。所以,我们可以得出一个结论:越小的参数,模型就越简单,越简单的模型,就越不容易过拟合。
我们再回头看公式,可以看到,L2 实际上就是让向量中所有元素的平方和再开方。那么,如果我们要避免模型过拟合,就要使 L2 最小,这意味着向量中的每一个元素的平方都要尽量小,且接近于 0。和 L0 和 L1 不一样,L2 不会让元素等于 0。
由此,L1 和 L2 范数的区别就很显然了。
L1 会趋向于产生少量的特征,而其他的特征都是 0,用于特征选择和稀疏;
L2 会选择更多的特征,但这些特征都会接近于 0,用于减少过拟合。
偏导数
其他变量不变,只有某一个变量发生变化这种情况下的求导我们称之为“偏导数”
梯度:函数所有偏导数构成的函数
梯度是一个向量,梯度向量的方向即为函数值增长最快的方向
4.信息论:
嫡,也称信息嫡
假定我们有一枚标准的硬币
每次投掷得到正面和反面的概率都是1/2,不确定性非常大
假如我们在硬币上做点手脚,在正面加点重量,那么正面朝上的概率就比原来大了
这种正反面的不确定性就减少了
p(xi)就是各个可能事件发生的概率,嫡越大,不确定性越大
KL散度,也称为相对嫡
p(x)为真实事件的概率分布
q(x)为理论拟合出来的该事件的概率分布
因此该公式字面上的含义就是真实事件的信息熵,同理论拟合的事件的信息量与真实事件的概率的乘积的差的累加。
在模型优化、数据分析和统计等场合下,我们就可以使用 KL 散度衡量我们选择的近似分布与数据原分布有多大差异。当拟合事件和真实事件一致的时候 KL 散度就成了 0,不一样的时候就大于 0。
交叉嫡
交叉嫡代表用拟合分布来表示实际分布的困难程度