当前位置: 首页 > 科技观察

算法工程师日常,训练出来的模型翻车怎么办?

时间:2023-03-20 02:06:15 科技观察

大家好,今天跟大家聊聊算法工程师的职场日常——模型翻车。我们都知道算法工程师的工作重点是模型训练。很多人的日常工作就是做特征,调参数,然后训练模型。所以,对于算法工程师来说,最常见的问题就是模型被推翻,最后训练出来的模型结果还是很差。很多初学者遇到这种情况都会一头雾水,不知道哪里出了问题。所以今天我就简单的跟大家分享一下,我个人总结的一点简单的经验,遇到这种情况应该怎么处理。检查样本和整个模型训练结果不佳的故障排除过程可以按照从大到小,从浅到深的顺序进行。也就是说,我们先从整体上、宏观上进行考察,再从一些细节上进行考察。很多新手可能会有点懵,一上来就去查看特征的细节,而忽略了整体的检查。结果花了很多时间才发现样本比例不对或者样本数量不对,这是一个很容易发现的问题。不仅浪费时间,还会给老板等人留下不好的印象。所以我们先从整体开始,检查正负样本的比例,检查训练样本的数量。与通常的实验相比,是否有任何变化,这种检查往往比较简单,几分钟就可以得出结果。发现问题最好,没有发现问题也不亏,至少可以排除一部分原因。检查完样本的比例和数量之后,我们接下来可以检查特征的分布,看新做的特征是否有问题。这里有很多可能的问题。例如,如果大部分特征为空,则有两种情况。一种是制作功能的代码有问题,可能隐藏了bug。还有一个就是特征本身很稀疏,只有少量的样本才有价值。根据我的经验,如果特征过于稀疏,效果其实很差,甚至可能适得其反。最好不要添加。另一个可能的问题是特征的取值范围分布很不均匀。比如80%的特征小于10,剩下的20%最多可以达到100w。这种分布极不平衡的特征也会拉低模型的效果。更好的方法是将其分割成桶特征。通常,通过查看分布很容易调查特征问题。看训练曲线,很多新手判断模型的标准就是最终的结果,比如AUC或者accuracy,而忽略了模型在整个训练过程中的变化。这其实不是一个很好的习惯,会丢失很多信息,忽略很多情况。建议习惯使用tensorboard查看模型训练过程。Tensorboard基本都有主流的深度学习框架。通过它,我们可以看到训练过程中一些关键指标的变化。它的主要作用是帮助我们发现过拟合或者欠拟合。我们经常遇到的一种情况是,在原来的特征集中,模型没有问题,但是一旦我们添加了一些新的特征,效果就开始崩溃了。我们查看日志,发现在模型训练结束前的这段时间,AUC或者其他指标还在上升,所以误以为没有问题。其实很有可能是模型中途陷入了过拟合,只是因为训练时间比较长而被忽略了。许多人经常遭受这种损失,尤其是新手。浪费了很多时间,也没发现问题。其实打开tensorboard就可以看到模型中途出现了过拟合或者欠拟合的情况,所以我们可以采取一些有针对性的措施来补救。参数考察除了以上两点外,还有一个考察点就是参数。这里的参数不限于模型的训练参数,比如学习率、迭代次数、batch_size等,还包含模型本身的一些参数,比如embedding初始化的方差、嵌入等。举个简单的例子,很多人实现的embedding的初始化都是默认初始化,默认方差为1。这个方差对于很多场景来说其实有点太大了,尤其是一些深度神经网络,容易出现梯度爆炸.很多时候我们调整到0.001,效果往往会有所提升。虽然模型的结构是主体,参数只是辅助,但这并不代表参数不会影响模型的效果。相反,有时影响还不小,我们不能忽视。当然,要做到这一点,我们不仅需要知道每个参数对应的含义,还需要了解模型的结构和模型运行的原理,这样才能推测出参数。否则,光是生搬硬套显然是不行的。情景思维上面提到的三点是比较明显的。接下来,让我们谈谈一些隐藏的。这也是最考验算法工程师功力的。很多时候,在某个场景下表现很好的模型在另一个场景下就表现不佳,或者一些有用的特性突然就不能用了。这可能不是因为有隐藏的bug,而可能只是模型不适合当前场景。以推荐场景为例。比如在首页的推荐中,由于我们没有任何额外的输入信息,所以只能根据用户的历史行为偏好进行推荐。这个时候,我们会格外关注用户的历史行为和当前产品的信息的交集和重叠,重点把这些信息做成特征。但是,如果将同样的功能迁移到商品详情页底部的GuessYouLike,可能就不是很合适了。原因也很简单。详情页底部的guessyoulike召回产品基本都是同一个品类甚至是同一个产品,也就是说这些产品的大部分信息都是相同或者高度相似的。由于信息高度相似,模型很难从这些差别不大的特征中学习到关键信息,自然很难得到相同的效果。这不是功能或模型的问题,可能只是场景不合适。对场景、特征、模型的理解和思考,是最考验算法工程师能力和经验的部分。新手往往不关注这方面,更多局限于功能和机型本身。有时候,我们的思路不能顺畅无阻,需要经常停下来反省一下,自己这样想是不是忽略了什么问题。本文转载自微信公众号「TechFlow」,可通过以下二维码关注。转载请联系TechFlow公众号。