当前位置: 首页 > news >正文

关于腾讯广告算法大赛2025项目分析3-重读

一、初始化

1.1 数据处理:MyDataset类

  1. 实例化 _init_
  2. DataLoader:batch 化和并行加载
    train_loader = DataLoader(dataset, batch_size=args.batch_size,shuffle=True, num_workers=12,collate_fn=dataset.collate_fn)
    对MyDataset类的函数调用顺序:
    len→\rightarrowgetitem ( load_user_data→\rightarrowrandom_neq→\rightarrowget_time_diff_bin)→\rightarrowcollate_fn
  3. 数据集self.
    • self.data_dir 文件夹路径,self.data_file_path文件seq.jsonl路径
    • self.seq_offsets 文件seq.jsonl每一行的起始文件指针位置偏移
    • self.maxlen 最大序列长度
    • self.mm_emb_ids 多模态特征ID汇总
    • self.itemnum用户数,self.usernum物品数
    • 字典:self.item_feat_dict物品静态特征,self.mm_emb_dict多模态嵌入embedding,
      self.indexer索引映射(用户id,物品id,特征值映射),self.indexer_i_rev反查字典,self.indexer_u_rev
    • 特征: feat_default_value:特征缺省值,feat_types特征总字典,feat_statistics特征不同类型数量
  4. 一条数据格式:[seq序列ID,pos正样本ID(下一个真实访问的item),neg,token_type 序列类型:用户/物品,next_token_type,seq_feat序列特征,pos_feat正样本特征,neg_feat]
  5. batch:[seq, pos, neg, token_type, next_token_type, next_action_type, seq_feat, pos_feat, neg_feat, time_feat]
    • seq:[seq1,seq2,…,seqnseq_1,seq_2,…,seq_nseq1,seq2,,seqn],由n个用户组成
    • time_feat:[weekday,is_weekend,hour_feat,day_of_year,week_of_year,time_deltas,action_type]
    • seq,pos,neg_feat:全部处理成[batch,maxseqlen] 的二维或者三维 tensor

1.2 模型:BaselineModel类

1.2.1 初始化

  1. 全局配置:self.user_num,self.item_num,self.dev,self.norm_first,self.maxlen
  2. ID Embedding:self.item_emb,self.user_emb
  3. 位置编码:self.pos_emb
  4. HSTU 主干-Transformer(变式)
    • self.emb_dropout,self.emb_layernorm
    • 特征embedding容器:self.sparse_emb离散特征,self.emb_transform连续特征
    • 主干网络容器:self.attention_layers,self.attention_layernorms,self.forward_layers,self.forward_layernorms
  5. 按特征类型分组产生不同的字典,方便声明稀疏特征的Embedding Table:self.USER_SPARSE_FEAT/USER_CONTINUAL_FEAT/ITEM_SPARSE_FEAT/ITEM_CONTINUAL_FEAT/USER_ARRAY_FEAT/ITEM_ARRAY_FEAT/ITEM_EMB_FEAT
  6. user/item特征拼接 -> DNN投影层
  7. 序列建模主干:多层 HSTU + FFN

main中初始化赋值
8. 初始化所有参数
- user_emb,item_emb:全零化处理
- 其他:xavier_normal
9. 所有emb权重 padding 位置(第0行)清零

1.3 优化器:AdamW

1.4 权重衰减:args.l2_emb

1.5 学习率策略:warmup + cosine decay

2 训练

model.train:将模式设置为训练模式
从 dataloader 依次取不同的batch

2.2 model.forward

2.3 计算损失:infonce_loss

2.4 记录日志

2.5 反向传播

2.6 更新参数

3 细节处理

  1. torch.nn.
    • Embedding升维:从 ID 变成向量 ,矩阵形状(B,L)→(B,L,D)(B, L) \rightarrow (B, L, D)(B,L)(B,L,D)
    • Dropout随机丢弃:部分元素变 0,其余放大1/(1-p)
    • RMSNorm均方根归一化:对输入特征进行缩放
    • ModuleDict层字典容器:按Key灵活调用不同的模块→\rightarrow选择
    • ModuleList层列表容器:像 Python 列表一样存储子模块,但会向 PyTorch 注册参数→\rightarrow顺序执行
    • Linear:
http://www.jsqmd.com/news/824244/

相关文章:

  • 3DSC特征详解:从‘球形直方图’到点云‘指纹’,理解局部描述子如何抵抗噪声
  • 终极Vue绘图指南:vue-drawing-canvas快速实现网页画板功能
  • Vibe Coding实践指南:打造高效愉悦的开发环境与工作流
  • 小红书视频怎么提取无水印?小红书视频解析在线提取工具 2026 实测推荐 - 爱上科技热点
  • 第9课:Linux开发工具(四):make与makefile
  • 抖音去水印视频解析用什么工具?免费又安全的解析工具推荐,2026 亲测有效 - 爱上科技热点
  • 互联网大厂Java求职面试:从Spring Boot到微服务的探索
  • Agent从“能用“到“管好“,中间差了什么?
  • 2026年手机免费一键去水印App排行榜 | 手机免费一键去水印App推荐测评 - 爱上科技热点
  • 信道估计模块
  • 【机器人】基于QLearning强化学习的AGV智能搬运机器人快递搬运系统matlab仿真
  • 视频去水印无损工具推荐:去水印后和原视频一样,2026实测最有效的方法 - 爱上科技热点
  • 手机端视频转音频教程 几步搞定不用安装软件 - 爱上科技热点
  • 嵌入式开发利器:核心板如何加速硬件设计并降低风险
  • 基于模板与数据分离的自动化求职信生成工具实践
  • 制造业供应链从“各自为战”到“智能协同”
  • macOS开发者的端口管理利器:Porthole仪表盘的设计原理与实战指南
  • 抖音图片怎样去水印?2026 实测去水印方法与在线工具对比指南 - 爱上科技热点
  • 为什么传统情感分析工具在社交媒体上总是“误判“?VADER如何用词典+规则破解这一难题
  • Windows下基于Cygwin构建ESP32交叉编译工具链全攻略
  • 别再瞎忙活了!Paperxie 本科论文写作,直接把流程给你 “拆碎了喂”
  • Java程序员必看:拥抱AI,掌握大模型,收藏这份零基础进阶教程!
  • 图片去水印软件哪个好用?好用的去水印工具推荐,2026年最新排行榜实测 - 爱上科技热点
  • 【滤波跟踪】轨迹测量Poisson多伯努利混合(TM-PMBM)滤波器的Matlab代码
  • 2026年5月热门的睡篮推车二合一婴儿车/一键折叠婴儿车产品推荐唯乐宝 - 品牌鉴赏师
  • 利用 Taotoken 模型广场为不同智能体任务选择合适的模型
  • 如何用BallonsTranslator快速完成漫画翻译:AI辅助工具的完整指南
  • 打破 “论文焦虑” 怪圈:Paperxie 如何让本科毕业论文写作告别 “从零硬扛”
  • 为Claude Code寻找稳定替代方案,Taotoken接入配置指南
  • B站成分检测器:3分钟快速安装指南,智能识别评论区用户真实身份