项目
是否了解 GDBT 等推荐算法
分类问题的交叉熵、是否可以用MSE
不可以。主要原因如下:
物理意义上,MSE 衡量的是几何空间的欧氏距离,而分类问题中每个类别的标签是离散的 和 ,本身不具备几何空间的意义;
信息学中,交叉熵衡量的是两个分布之间的差异,可用于衡量模型预测的概率分布和真实标签的类别分布是否相似。
计算上,分类模型输出的概率一般会经过 softmax 归一化,归一化后的值使用 MSE 会导致不符合预期的梯度,而使用交叉熵则无此问题。
如三分类问题中,标签为 ,模型输出为 ,此时的损失值为:
可以看到,MSE 会考虑各个类别的概率,其最小化的目标除了让正确类别的概率最大化外,还会让错误类别的概率平均(这一步是不必要的,可能会导致梯度不符合预期,这也是其优化函数非凸的难以优化的直接表现);
而交叉熵则只针对正确的类别进行计算,就没存在 MSE 中的问题。
推荐系统中,相比于余弦相似度,是否可以用欧几里得距离判断相似度
不可以。
过拟合怎么处理
Dropout、正则化、数据增强、残差连接等。
L1、L2 正则化的效果、区别、原理
Dropout 的原理、在训练和测试时的区别
有两类不同的处理,其目标都是保证训练和测试时特征分布相同:
SGD、Adam、动量优化的 SGD
Adam 和动量优化的 SGD 效率上是否有区别
相比于 SGD 的一阶动量优化,Adam 额外考虑了二阶动量,因此有着更快的收敛速度,学习的效率更高。
显存不足怎么处理
数据并行、模型并行、降低精度、降低 Batch Size 和特征维度。
多卡训练的细节
梯度平均等。
推荐系统中,如何进行负采样
可以优先考虑此前推荐过但是用户没有点击过的物品作为负样本。
快排思想
分治。
每次在区间中选择一个元素作为“哨兵”,通过并依据“哨兵”进行初步位置调整使得区间内所有数相对“哨兵”有序(如比“哨兵”大的在“哨兵”右边,小的在其左边),再对“哨兵”左右区间递归分治。
SQL 中,对 A、B 两个字段有高频的查询需求,如何优化
比较 A、B 的字段的不同数据量并建立索引,将数据量少的建立为第一索引,另一个为第二索引。
有A、B、C三个矩阵,A 和 C 为 的单列矩阵、B为 的单行矩阵, 的矩阵计算如何优化
。先计算 得到 的矩阵,再和 的 A 相乘,复杂度是 ;若先计算 得到是 的矩阵,再和 C 相乘时,复杂度是 。
是否了解使用 Flask 部署模型
项目中的困难、成就感
意向城市