大概记录一下题目以及自己欠缺的地方。
一、选择
1. 相机内参
单目摄像头内参:(1/dx,1/dy,Cx,Cy,f);外参:(旋转矩阵R和平移向量t)
其中dx dy表示相机单个感光单元芯片的长和宽,Cx Cy代表感光芯片中心点在x、y方向上的偏移量,f表示相机的焦距。
2. L2范数
范数是具有“距离”概念的函数。
Lp范数:一组范数,随着p的变化,范数也有不同的变化。
L0范数:非0元素的个数;
L1范数: 非0元素的绝对值之和;
L2范数(欧几里得范数):通常被当做优化目标函数的正则化项,防止模型为了迎合训练集而过于复杂而造成的过拟合情况,从而提高模型的泛化能力。
2.1 L1范数、L2范数在机器学习中的不同点
1) L1范数可进行特征选择,让特征的系数变为0;会产生稀疏;
2) L2范数可防止过拟合,提升模型的泛化能力(L2对大数以及离群点更加敏感);
3) L1范数会趋于产生少量的特征,其他特征均为0;而L2范数会选择更多的特征,这些特征接近0.
2.2 L2范数防止过拟合的机理
在回归中,有人称L2的回归为“岭回归”(Ridge Regression), 也有人称它为“权值衰减”(weight decay)。
要使L2范数的规则项||W||最小化,需要使得W的每个元素都尽可能的小,接近0,与L1范数不同,它会使所有特征趋近于0,而非等于0。越小的模型越简单,越简单的模型越不容易产生过拟合现象。(限制参数的大小,实际上就是限制了某些分量的大小,使分量的影响变小,这样相当于减少参数的个数)
3 卷积神经网络输出特征图的大小
(参考:卷积神经网络中特征图大小计算公式总结_L888666Q的博客-CSDN博客)
K:kernel size: 卷积核的宽和高
P: padding: 填充的大小
S:stride:步长
width_out: 卷积后输出特征图的宽
height_out: 卷积后输出特征图的高
3.1 普通卷积
width_out = [ (W - K + 2 * P) / S ] + 1 (向下取整)
height_out = [(H - K + 2 * P) / S] + 1 (向下取整)
3.2 池化
width_out = [(W - K) / S] + 1 (向下取整)
height_out = [(H - k) / s] + 1 (向下取整)
3.3 上采样UpSampling2D
相当于放大多少倍;
width_out = W * size;
height_out = H * size;
3.4. 转置卷积
转置卷积也称“反卷积”,是上采样的一种,用来增大特征图的分辨率。
width_out = (W - 1) * S - 2 * P + K;(与卷积互为逆过程)
height_out = (H - 1) * s - 2 * + K.
(图片来源:转置卷积这样算就简单多了~_哔哩哔哩_bilibili)
4. KNN(K-Nearest Neighbor)算法 最近邻算法
K为需要选取的最近邻样本数,KNN算法的基本原理为:选取目标点周围K个最邻近的像素点,那个类型的多,当前目标点的类别就判定为这一类。
注意点:
1.样本特征需量化,便于计算距离;
2.样本特征需归一化,避免使绝对值较小的特征被淹没;
3.需使用合适的距离函数计算两样本之间的距离;
4.需选择合适的K值,K值过大容易引起欠拟合,而过小易引起过拟合,可通过交叉验证选取K值。
算法优点:
1.简单,无需训练和参数估计,容易实现;
2.适用于对稀有事件进行分类;
3.适用于多分类问题。
算法缺点:
1.当样本量不平衡时,容易出错;
2.计算量大,对每一个待分类的样本,需要计算它到全体已知样本的距离,才能求得它最近的K个样本点。
(来源:机器学习之KNN最邻近分类算法_knn分类_pengjunlee的博客-CSDN博客)
5.二分查找
条件:
1.有序;
2.查找一个对象。
最大查找次数:,其中N为元素数量,为向下取整。
时间复杂度:
6.堆排序
(参考:堆排序详细图解(通俗易懂)_右大臣的博客-CSDN博客)
堆是一种完全二叉树的数据结构,可分为大根堆和小根堆。
大根堆:每个节点的值都大于等于它左右子节点的值;
小根堆:每个节点的值都小于等于其左右子节点的值。
升序排列用大根堆,降序排列用小根堆。
排序思想(升序):
1.将待排序数组构造成一个大根堆。此时,堆结构顶端的值为整个数组最大的值。
2.将顶端的数与末尾的数交换。
3.将剩余n-1个数构造大根堆,将顶端的数与n-1位置的数交换,反复执行。
7.激活函数
常用的激活函数合集(详细版)_常见激活函数_小wu学cv的博客-CSDN博客
8.过拟合的解决方法
1.增加训练数据;
2.控制模型的复杂度,在设计模型时,优先选择简单、合适的模型;
3.降低特征的数量,手动删除冗余特征;
4.L1、L2正则化;
5.dropout机制,一种trike,相当于在隐藏单元增加了噪声。在训练过程中,每次按照与一定概率(如50%)随机的“删除”一部分隐藏单元(神经元)。
6.Early stopping,模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
二、编程
力扣第48题,旋转矩阵
三、简答
对抗神经网络比常用的数据增强方式更有效,为什么?有效在哪里?
(没学过深度,以下回答来源于gpt3.5)
对抗神经网络(Adversarial Neural Networks,简称GANs)和传统的数据增强方式是两种不同的方法,用于改善机器学习模型的性能。它们各自在不同情况下发挥作用,而哪种方法更有效取决于具体的任务和数据。
以下是对抗神经网络相对于传统数据增强方式的一些潜在优势以及有效性体现的方面:
-
生成高质量数据: GANs可以生成逼真的合成数据,这些数据在视觉和语义上与真实数据非常接近。这有助于模型学习更丰富和复杂的特征,从而提高性能。传统的数据增强方法通常是基于图像变换,无法生成新的、具有多样性的数据。
-
提供更多多样性: GANs生成数据的能力使其能够创建多样性的样本,而不仅仅是简单的变换。这有助于模型更好地泛化到不同的情况和变化。传统的数据增强方法通常受到限制,因为它们通常只能应用已知的变换。
-
难以获取数据: 在一些任务中,获取大规模、多样性的真实数据可能非常昂贵或困难。在这种情况下,使用GANs生成数据可以填补数据缺口,使模型训练更充分。传统的数据增强方法无法提供这种数据填补功能。
-
对抗性训练: GANs的训练方式涉及到对抗性训练,其中生成器网络和判别器网络相互对抗,这可以促使模型学习更复杂的特征和更高级的表示。这种对抗性训练方式在某些任务上具有优势。
然而,也需要指出的是,GANs并不是适用于所有任务和情境的通用解决方案。它们有时会面临训练不稳定、模式崩溃等问题。此外,GANs需要更多的计算资源和训练时间,而且在某些情况下可能会导致模型生成不现实或不符合任务要求的数据。
因此,哪种方法更有效取决于具体的应用场景和任务需求。在某些情况下,传统的数据增强方式可能足够,而在其他情况下,使用对抗神经网络可能能够提供更好的结果。通常,需要根据具体问题的性质和可用资源来选择适当的方法。