1 神经网络中的参数以及超参数
拿一个具有分类、回归任务的神经网络层来说(输入层、隐藏层、输出层三大基本结构)。比如输入的是好几张猫和狗的照片,目的是经过模型让系统自动输出是猫或者狗的概率(大于70%便认为可能性很大),利用神经网络非常强大的非线性拟合能力,于是便经过隐藏层中的神经单元所组成的“核”,提取一些边缘、固定特征,并以此为依据,进一步进行分析。
简单的来说,就是把某些像素点(图像的基本单元),拿过来,根据0~255个不同的数字(表示黑到白不同的“色重”),组成一个个的矩阵形式,进行输入。
重要的两个参数便是W(权重)和B(偏置)。在对输入进行线性组合以及激活函数的作用下,电脑就可以输出一个0~1的概率(正向传播),但怎么检验参数(W和B)取得合适呢?就建立一个损失函数或者称之为代价函数,求其参数的偏导(不是求导哈,多个参数求极值问题),直至“损失”达到最小(反向传播)。
无论说好是在正向传播或者方向传播的过程中,本质就是尽可能的将预测值与实际值之间的差距尽可能减小,于此相关的指标比如(回归:MSE、MAE、R2,分类:Accurancy、Recall、F1_Score)。
那么(W和B)的取值就显得很重要了。
实质上,那些能控制(W和B)的参数,比如(learning rate 𝑎(学习率)、iterations(梯度下降法循环的数量)、𝐿(隐藏 层数目)、𝑛[𝑙](隐藏层单元数目)、choice of activation function(激活函数的选择))都需要手动选择,这些等等就成为超参数。至于超参数的最优值,只能是想法-代码-实验-想法 不断的循环。
还有一点,其实所谓的“最优值”是会变的!!!(在开发过程中,即使用当天最优的参数调节,还是会变得。和电脑的基础设施有关:CPU或是GPU可能会变化很大)
有一条经验规律:经常试 试不同的超参数,勤于检查结果,看看有没有更好的超参数取值,你将会得到设定超参数的 直觉。
2 机器学习中的无偏估计
无偏估计是统计学中的一个重要概念,用于描述估计量的性质。具体来说,如果一个估计量的期望值等于被估计参数的真实值,那么这个估计量被称为无偏估计量。
无偏评估算法性能的目的是为了确保对模型性能的评估是准确、可靠且具有代表性的,从而帮助我们更好地理解模型的真实表现,并做出合理的决策。以下是具体原因:
1. 避免过拟合
机器学习模型容易在训练数据上过拟合,即模型在训练集上表现很好,但在新数据上表现不佳。
无偏评估(如使用独立的测试集或交叉验证)可以避免模型在训练数据上的过拟合,确保评估结果反映模型在未见数据上的泛化能力。
2. 反映真实性能
如果评估方法有偏(例如直接使用训练集进行评估),模型可能会因为“记住”训练数据而表现过于乐观。
无偏评估方法(如测试集或交叉验证)能够更真实地反映模型在真实场景中的性能。
3. 公平比较不同模型
在比较不同模型或算法的性能时,无偏评估方法可以确保比较的公平性。
如果评估方法有偏,某些模型可能会因为过拟合训练数据而显得更优,但实际上它们的泛化能力可能更差。
4. 指导模型选择和调优
无偏评估方法(如交叉验证)可以帮助我们选择最佳的超参数或模型结构。
如果评估方法有偏,可能会导致选择的模型或超参数在实际应用中表现不佳。
5. 减少数据泄露
数据泄露(Data Leakage)是指模型在训练过程中间接地“看到”了测试数据的信息,导致评估结果过于乐观。
无偏评估方法通过严格分离训练数据和测试数据,可以有效防止数据泄露。
6. 提高模型的可信度
无偏评估方法能够提供更可靠的性能指标,从而增强模型在实际应用中的可信度。
这对于需要高可靠性的领域(如医疗、金融等)尤为重要。
常用的无偏评估方法
测试集评估:
将数据集划分为训练集和测试集,模型在训练集上训练,在测试集上评估。
确保测试集完全独立于训练过程。
交叉验证(Cross-Validation):
将数据集划分为多个子集,轮流使用其中一个子集作为验证集,其余作为训练集。
常见方法包括k折交叉验证(k-fold CV)和留一法交叉验证(Leave-One-Out CV)。
时间序列评估:
对于时间序列数据,使用时间顺序划分训练集和测试集,避免未来信息泄露到过去。