微信公众平台开发微网站,北京市工程建设交易中心,广西医科大学网站建设,carousel wordpress心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍#xff1a;仓颉专项#xff1a;飞机大炮我都会#xff0c;利器心法我还有。 2023年新的文章合集已经发布#xff0c;获取方式看这里#xff1a;又添十万字-CS的陋室2023年文章合集来袭#xff0c;更… 心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍仓颉专项飞机大炮我都会利器心法我还有。 2023年新的文章合集已经发布获取方式看这里又添十万字-CS的陋室2023年文章合集来袭更有历史文章合集欢迎下载。 往期回顾 心法利器[122] | 效果提升的根本来源讨论心法利器[123] | 算法面试的八股和非八股讨论心法利器[124] | 24年算法思考-大模型的应用与训练篇心法利器[125] | 24年算法思考-RAG技术论文和实践小结心法利器[126] | 24年算法思考-小模型的生存空间前沿重器[48-54] 合集四万字聊搜索系统 因为很多原因今年应该是我做的算法最杂的一年了传统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_features96, out_features128, biasTrue)(1): BatchNorm1d(128, eps1e-05, momentum0.1, affineTrue, track_running_statsTrue)(2): ReLU(inplaceTrue)(3): Dropout(p0, inplaceFalse)(4): Linear(in_features128, out_features64, biasTrue)(5): BatchNorm1d(64, eps1e-05, momentum0.1, affineTrue, track_running_statsTrue)(6): ReLU(inplaceTrue)(7): Dropout(p0, inplaceFalse)(8): Linear(in_features64, out_features16, biasTrue)(9): BatchNorm1d(16, eps1e-05, momentum0.1, affineTrue, track_running_statsTrue)(10): ReLU(inplaceTrue)(11): Dropout(p0, inplaceFalse))
) 每个特征都有构造出一个embedding即ModuleDict下有多个Embedding。 小结 至此有关去年在技术上的总结就已经结束可以看到我去年做的还挺杂应该可以说是我最杂的一年了但从中我也是感受到了各个技术方案在各个场景业务的一席之地对于算法学习而言诚然要有深度让自己的东西更容易拿得出手使用但在后期广度和应用能力也将会是让自己突破成长的关键在下一篇我将会展开聊技术灵活应用和学习方面的思路敬请期待。