线性代数是重要的:因为是数学基础,对机器学习、算法调优等必不可少。
向量:
线性代数的主体就是向量和向量规则,这与代数是相互对应的。
与向量相关的概念
矩阵:
矩阵可以极大地提高计算机的运算效率,因为GPU可以同时运算矩阵,无需并行计算。
矩阵运算:普通乘、哈达玛积(对应元素相乘)、克罗内克积(Matlab运用kron()函数计算Kronecker乘法_yyywww666的专栏-CSDN博客_matlab 克罗内克积)
线性方程求解:
- 直接法。但理论上的高斯消元法不能处理大规模数据
- 间接法。实际应用中用数值迭代法,构造迭代公式和残差公式,使得随着迭代次数增加残差越小,逼近真实值。(常见的迭代法有两类,定常迭代法(Stationary iterative method)和 Krylov 子空间方法)
其余概念:线性无关、生成空间(span)、基、秩(图像中,信息量大的秩也会大)。
矩阵的仿射变换(平移、放缩、旋转)(平移矩阵_wo的博客-CSDN博客_平移矩阵),有趣的是这些变换矩阵需要增加成n+1的方阵。
解析几何:
重要概念:范数,内积,向量的长度、距离和角度,正交投影。
范数是“距离”的广义版,数学上用几个性质来描述它,其中欧几里得距离是常用的平面距离,被称作L2范数;
内积是“点积”的广义版,数学上同样用对应的几个性质描述它。
应用:
矩阵可以解决图论的问题,解答过程很有启发性,因为之前的思想被框定在了代数层面;
大规模线性代数方程组的求解,用到迭代法,可以通过控制迭代次数来控制解的精度和求解时间,我认为这个应用非常完美地体现了迭代思想,也非常能体现计算机思维的应用;
为了充分利用有限的计算资源,当从计算机角度来执行矩阵运算时,需要考虑很多方面:
- 精度,计算机是离散的,就是说能画出来光滑曲线是因为点与点之间离得很近;
- 内存,实际场景中有很多是稀疏矩阵,如果不做存储方式的优化是很浪费内存的;
- 速度,IPO中每一步都可能是速度的瓶颈;
- 扩展,当运算体量过大时,得用分布式。