难度挺大的,做完不能不回头看
一、单选:
1、float==double:float会被转成double,即便如此,仍有可能返回false
2、AdaBoost算法确实会加大此前决策树(或其他弱分类器)分类错误的权重,使下一个模型尽可能正确,所以依赖之前的模型;
3、GBDT(Gradient Boosting Decision Tree,梯度提升决策树)是一种集成学习方法,它通过迭代地构建决策树来优化损失函数,从而组合成一个强学习器。其核心思想是通过计算损失函数在当前模型上的梯度(或近似梯度),来定位模型的不足之处,并基于这些梯度信息来构建新的决策树模型,以逐步减少损失函数的值。
4、AdaBoost和GBDT都属于决策树模型boosting方法
5、生成式预训练(Generative Pre-Training)是一种在自然语言处理(NLP)和计算机视觉等领域广泛使用的技术,其核心思想是通过在大规模无标签数据上进行预训练,使模型学习到数据的内在规律和表示,从而能够更好地适应下游任务,生成式预训练本身并不直接与目标函数绑定,有助于缓解过拟合问题,不一定直接保证有助于鉴别的精细化;
6、鉴别性预训练通常指的是那些直接针对特定任务(如分类或回归)进行优化的预训练方法,分类准则可以用交叉熵,回归准则可以用最小均方误差
7、鉴别性训练在机器学习,特别是语音识别和自然语言处理等领域中,是一种通过最小化目标函数来优化模型性能的训练方法。在最小化目标函数的过程中,可能会导致底层权重向最终目标过多调整,从而忽略了隐藏层的重要性;
8、DNN(深度神经网络)参数确实可以使用鉴别性预训练(Discriminative Pre-Training,简称DPT)来进行鉴别初始化。
9、状态模式实际上很好地体现了封装性;
10、状态模式通过将状态逻辑分散到多个状态类中来解决复杂的逻辑问题,但这确实可能导致类的数量增加;
11、状态模式非常适合处理包含大量分支判断语句的代码
12、在状态模式中,通常会有一个抽象状态角色(State interface或抽象类),它定义了所有状态类共有的接口。这个接口包括了一些方法,这些方法对应于环境类在不同状态下可能需要执行的行为
13、Adam结合了动量法和RMSProp算法的思想,使得Adam能够适应不同参数的更新需求,加快收敛速度;
14、SGD容易受到数据噪声的影响,导致训练过程不稳定,可能更容易达到全局最优解;
15、处理大规模数据集和复杂模型时,Adam通常是一个不错的选择;而在处理小规模数据集或需要精细调整模型时,SGD或RMSProp可能更加合适
16、稀疏数据是指数据集中包含大量零值或缺失值的数据。对于这类数据,使用学习率自适应的优化算法确实是一种有效的策略。学习率自适应算法能够根据数据的特性和训练过程中的梯度变化动态调整学习率,从而在稀疏数据上获得更好的训练效果
17、2个长度为N的vector进行swap操作时间复杂度是O(1)
18、5g的磁盘,2kb一个的簇,共有2621440个簇,使用位图法,2kb有2048字节,也就是16384位,一位标识一个簇,那么需要2621440 / 16384= 160个簇
19、贝叶斯是先验推后验
二、编程题:1道栈,2道图论,对应难度:简单、中等、困难,各15分