心法利器[127] | 24年算法思考-特征工程和经典深度学习
心法利器
本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
2023年新的文章合集已经发布,获取方式看这里:又添十万字-CS的陋室2023年文章合集来袭,更有历史文章合集,欢迎下载。
往期回顾
因为很多原因,今年应该是我做的算法最杂的一年了,传统NLP、大模型、RAG、机器学习等多个领域内容基本我都有涉及,同时,很多技术也在今年有了很多革新和进步,因此我想在这里总计一下我的视角下这些算法的情况以及我使用下来的经验感受。具体我就按照下面几个方面来划分,系统总结一下。
大模型的应用与训练(心法利器[124] | 24年算法思考-大模型的应用与训练篇)
RAG技术论文与实践小结(心法利器[125] | 24年算法思考-RAG技术论文和实践小结)
小模型的生存空间(心法利器[126] | 24年算法思考-小模型的生存空间)
机器学习与特征工程的必要性
个人的成长小结——打开思路
今天是第四篇,讲讲特征工程和经典深度学习的重要性,重新品味这些经典方案在现在环境的地位。
我这一年在这方面的工作
特征工程
特征工程必要性
特征工程学习和实践的差距
经典深度学习的应用
小结
我这一年在这方面的工作
之前是没想到,在2024年,我竟然要做特征和经典深度学习、机器学习方面的工作,不过从实际场景来看,确实非常需要,因此我大胆承担起自己并不擅长的这方面工作,相比大模型,这个挑战让自己获得了在超乎想象的提升和收获。
我所需要面对的任务是对给定的一堆结构化的数据,达成一些分析和预测,以支持业务运营策略的实施,此时,便不可避免地要用到一系列特征工程和机器学习方法,在现在这个AI大环境下,真的挺令人意外的,而一顿操作下来,确实带来了比预期更多的收益,惊喜满满。
下面我简单列举一下这块需要包含的工作:
特征的获取、挖掘。即确定,有哪些特征,哪些是可靠的、有用的,可能缺少的部分,要去看什么渠道能获取或者计算出来。
特征工程。从无到有搭建一套基础的特征工程体系,说实话这里更多是体力活,每个特征都有自己相对独立的处理方式,有部分通用的,但也有些需要定制的,这里需要抽象成函数并暴露一些参数出来。
模型层面的迭代实验。离线我其实试了不少模型,但最终确定采用的是简单的机器学习模型,上线后通过观测和优化,逐步升级到深度学习,现在视角看路径是基本正确的。
下面我就来分章节讲这些工作的一些经验。
特征工程
如果把整个算法开发流程比作烹饪,那特征工程就是前面对食材的预处理,冷热、调味、腌制后的食材再经过煎炸炒煮,会有更特别的口感和滋味,如果我们能从数据中找到更好表达信息的模式,那方法如模型后就能得到更好的效果。
特征工程的必要性
首先,还是想先强调特征工程的必要性,早在深度学习真正进入大家的视野,从机器学习过渡到深度学习,就有不少人提出特征工程已经没必要了,但实际直至今日,无数人仍旧坚持要做特征工程,从包括我在内的实验经验来看,特征工程仍旧是非常重要。
首先,原始的特征,并非都能直接放入模型进行计算,例如文本特征需要经过embedding,在实际应用中,就有性别、地址、学历、行为等,需要进行转化和计算。
其次,即使是我们熟知的数字,也有必要做具体的转换。很多类型的数字,经过归一化、对数、分桶之类的操作,仔细观察,转化后,对最终效果的提升不言而喻。
第三,很多特征来自二次甚至三次的计算,例如次数统计,比值、增长率等,还有就是推荐里常说的特征交叉,这里其实也侧面说明,模型对一些加减乘除等的计算其实并不敏感,我们提前提取和模型来学习识别的效率差距非常大。
第四,无效、冗余、错误的特征是会让最终效果出现问题的,因此要经过仔细的筛查分析。
所以,这里要破除一些可能在学习这些知识过程中产生的错误观念,以便更好地进行实践。
不能“一把梭”,我们不能简单地理解机器学习就是把数都扔进去进行计算。
不能偷懒,每个特征最好都有一定的了解和认识,以便进行各自最合适的特征工程配置。
特征工程之所以被称为工程,就是因为特征的可以做很多事,而且收益非常明显。
特征工程学习和实践的差距
然后是深入学习后的误区了,我们通常能在书籍、课程内学到很多特征工程的方法,包括但不限于缺失值、标准化、异常值、哈希、one-hot、交叉等,但是往往比较难教到这几个方向内容:
方法具体要在什么时候用,怎么选择。
实操些细节操作,如分桶怎么分,缺失值怎么选该怎么做。
特别地数据类型改怎么处理,如序列特征等。
常说的数据清洗,很模糊,这些东西看着很通用,就都是这些方法,学到即可,甚至能有快速的工具完成,但难点在使用的时机、方式,只有我们对业务场景、实际问题、特征内容有足够的了解,我们才能调制出合适的方案,从而真正解决实际问题,带来收益。
另外一个难点是,挖掘特征的意识,这个意识是需要培养的,因为一旦想不到有这个思路,就没法做后面的很多事。举个例子,基于时间片的分割,能挖掘出很多东西,以推荐系统为例,1天内点击,1周内点击,1月内点击,能看出不同时间维度下的兴趣,这种概念换到股票里,就是日线、周线、月线等等,表达中长期股票的走势,跌破和涨破都可以说是股票的关键变化,同时还有增长率、相关系数之类的指标,都是可以考虑的,能主动构造这类型的特征,往往就能体现出一个人在这个方面的基础功底和业务方面的理解深度。
经典深度学习的使用
其实NLP在bert那个阶段下,魔改深度学习模型的人就开始减少了,到了大模型时代,现在能说出模型内部结构的就少之又少的,今年面试来看梳理pytorch的训练脚本会成为一个有一定区分度的问题,说实话还是挺让我吃惊。虽说大模型能一定程度解决很多问题,但短期内仍旧不能一统天下,现在仍有大量的原因会让大模型无法派上用场,因此类似的技术仍然要好好学。
类似上面的特征学习,对NLP技术型的人,有个比较简单的模型可以使用——那就是文本化特征然后直接当NLP任务进行训练,类似的实践从bert时代就已经有了,后续在大模型时代也有类似的方(前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习),将特征整理成这样就能用文本类深度学习模型轻松完成baseline。
然而从个人的实践发现了许多细节问题:
序列类复杂特征并不好转化,硬转效果不好。
从实验中看,数字类特征的变化,对预测结果的敏感性很低。
数字特征多的场景效果就会很差。
最重要的是,真的比不过专门定制的机器学习和深度学习模型。
在24年末,我翻阅了很多推荐系统的模型(不得不说,这方面的研究,推荐系统还是走得快,值得借鉴!)及各方大神复现的源码,发现内部有很多细节操作,是不看源码就无法发现的。在datawhale开源的项目“https://github.com/datawhalechina/torch-rechub”中,最经典的youtubeDNN模型(Deep Neural Networks for YouTube Recommendations),他的模型结构也有说法,直接看model。
YoutubeDNN(
(embedding): EmbeddingLayer(
(embed_dict): ModuleDict(
(user_id): Embedding(3, 16)
(gender): Embedding(3, 16)
(age): Embedding(3, 16)
(occupation): Embedding(3, 16)
(zip): Embedding(3, 16)
(movie_id): Embedding(94, 16)
)
(0): Linear(in_features=96, out_features=128, bias=True)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
(3): Dropout(p=0, inplace=False)
(4): Linear(in_features=128, out_features=64, bias=True)
(5): BatchNorm1d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU(inplace=True)
(7): Dropout(p=0, inplace=False)
(8): Linear(in_features=64, out_features=16, bias=True)
(9): BatchNorm1d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(10): ReLU(inplace=True)
(11): Dropout(p=0, inplace=False)
)
)
每个特征,都有构造出一个embedding,即ModuleDict下有多个Embedding。
小结
至此,有关去年在技术上的总结就已经结束,可以看到我去年做的还挺杂,应该可以说是我最杂的一年了,但从中我也是感受到了各个技术方案在各个场景业务的一席之地,对于算法学习而言诚然要有深度,让自己的东西更容易拿得出手使用,但在后期,广度和应用能力,也将会是让自己突破成长的关键,在下一篇,我将会展开聊技术灵活应用和学习方面的思路,敬请期待。
原文地址:https://blog.csdn.net/baidu_25854831/article/details/145250708
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!