【论文复现赛】第六期冠军项目-MetaHeac-推荐系统

P粉084495128
发布: 2025-08-01 13:48:43
原创
475人浏览过
本文复现论文提出的MetaHeac模型,基于PaddlePaddle 2.3.0框架,在腾讯Look-alike数据集上进行,解决look-alike建模挑战,复现AUC达0.7112,还介绍了数据集、环境、步骤、代码结构及复现心得。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【论文复现赛】第六期冠军项目-metaheac-推荐系统 - php中文网

论文复现-MetaHeac

一、简介

在推荐系统和广告平台上,营销人员总是希望通过视频或者社交等媒体渠道向潜在用户推广商品、内容或者广告。扩充候选集技术(Look-alike建模)是一种很有效的解决方案,但look-alike建模通常面临两个挑战:(1)一家公司每天可以开展数百场营销活动,以推广完全不同类别的各种内容。(2)某项活动的种子集只能覆盖有限的用户,因此一个基于有限种子用户的定制化模型往往会产生严重的过拟合。为了解决以上的挑战,论文《Learning to Expand Audience via Meta Hybrid Experts and Critics for Recommendation and Advertising》提出了一种新的两阶段框架Meta Hybrid Experts and Critics (MetaHeac),采用元学习的方法训练一个泛化初始化模型,从而能够快速适应新类别内容推广任务。

MetaHeac训练流程如下: 【论文复现赛】第六期冠军项目-MetaHeac-推荐系统 - php中文网        

模型核心结构如下: 【论文复现赛】第六期冠军项目-MetaHeac-推荐系统 - php中文网        

为了复现文献中的实验结果,本项目基于paddlepaddle深度学习框架,并在Lookalike数据集上进行训练和测试。

论文 :

  • [1] Yongchun Zhu, Yudan Liu, Ruobing Xie, Fuzhen Zhuang, Xiaobo Hao, Kaikai Ge, Xu Zhang, Leyu Lin, Juan Cao. Learning to Expand Audience via Meta Hybrid Experts and Critics for Recommendation and Advertising

项目参考 : https://github.com/easezyc/MetaHeac

二、复现精度

基于paddlepaddle深度学习框架,对文献MetaHeac进行复现后,测试精度如下表所示。

模型 auc batch_size epoch_num Time of each epoch
MetaHeac 0.7112 1024 1 3个小时左右

超参数配置如下表所示:

超参数名 设置值
batch_size 1024
task_count 5
global_learning_rate 0.001
local_test_learning_rate 0.001
local_lr 0.0002

三、数据集

本项目使用的是Tencent Look-alike Dataset,该数据集包含几百个种子人群、海量候选人群对应的用户特征,以及种子人群对应的广告特征。出于业务数据安全保证的考虑,所有数据均为脱敏处理后的数据。本次复现使用处理过的数据集,直接下载propocessed data。

数据集链接: https://paddlerec.bj.bcebos.com/datasets/lookalike/Lookalike_data.rar

笔目鱼英文论文写作器
笔目鱼英文论文写作器

写高质量英文论文,就用笔目鱼

笔目鱼英文论文写作器87
查看详情 笔目鱼英文论文写作器

四、环境依赖

  • 硬件:
    • x86 cpu
    • NVIDIA GPU
  • 框架:
    • PaddlePaddle == 2.3.0

五、快速开始

In [1]
# step1: 确认您当前所在目录为PaddleRec/models/multitask/metaheac %cd PaddleRec/models/multitask/metaheac
登录后复制
       
/home/aistudio/PaddleRec/models/multitask/metaheac
登录后复制
       
In [ ]
# step2: 进入paddlerec/datasets/目录下,执行该脚本,会从国内源的服务器上下载我们预处理完成的Lookalike全量数据集,并解压到指定文件夹。%cd ../../../datasets/Lookalike
!sh run.sh
登录后复制
   
In [ ]
# step3: train%cd ../../models/multitask/metaheac/ 
!python -u ../../../tools/trainer.py -m config_big.yaml
登录后复制
   
In [ ]
# step4: infer 此时test数据集为hot!python -u ./infer_meta.py -m config_big.yaml
登录后复制
   
In [ ]
# step5:修改config_big.yaml文件中test_data_dir的路径为cold!python -u ./infer_meta.py -m config_big.yaml
登录后复制
   

config_big.yaml配置文件中参数如下:

参数选项 默认值 说明
--batch_size 1024 训练和测试时,一个batch的任务数
--task_count 5 子任务类别数
--global_learning_rate 0.001 全局更新时学习率
local_test_learning_rate 0.001 测试时学习率
local_lr 0.0002 局部更新时学习率
embed_dim 64 嵌入向量的维度
mlp_dims [64, 64] 全连接层的维度
num_expert 8 专家数量
num_output 5 批评者数量

六、metaheac目录下代码结构与详细说明

├── data #样例数据
    ├── train #训练数据
        ├── train_stage1.pkl
    ├── test #测试数据
        ├── test_stage1.pkl
        ├── test_stage2.pkl
├── net.py # 核心模型组网├── config.yaml # sample数据配置├── config_big.yaml # 全量数据配置├── dygraph_model.py # 构建动态图├── reader_train.py # 训练数据读取程序├── reader_test.py # infer数据读取程序├── readme.md #文档
登录后复制
       

数据集说明

为了测试模型在不同规模的内容定向推广任务上的表现,将数据集根据内容定向推广任务给定的候选集大小进行了划分,分为大于T和小于T两部分。将腾讯广告大赛2018的Look-alike数据集中的T设置为4000,其中hot数据集中候选集大于T,cold数据集中候选集小于T.

infer_meta.py说明

infer_meta.py是用于元学习模型infer的tool,在使用中主要有以下几点需要注意:

  1. 在对模型进行infer时(train时也可使用这样的操作),可以将runner.infer_batch_size注释掉,这样将禁用DataLoader的自动组batch功能,进而可以使用自定义的组batch方式.
  2. 由于元学习在infer时需要先对特定任务的少量数据集进行训练,因此在infer_meta.py的infer_dataloader中每次接收单个子任务的全量infer数据集(包括训练数据和测试数据).
  3. 实际组batch在infer.py中进行,在获取到单个子任务的数据后,获取config中的batch_size参数,对训练数据和测试数据进行组batch,并分别调用dygraph_model.py中的infer_train_forward和infer_forward进行训练和测试.
  4. 和普通infer不同,由于需要对单个子任务进行少量数据的train和test,对于每个子任务来说加载的都是train阶段训练好的泛化模型.
  5. 在对单个子任务infer时,创建了局部的paddle.metric.Auc("ROC"),可以查看每个子任务的AUC指标,在全局metric中维护包含所有子任务的AUC指标.

七、复现心得

7.1 模型组网成功,但是精度相差较大

基于论文开源的代码实现基于Paddle的代码还是比较简单的,但是模型组网成功后,精度与原论文精度相差很大。 很可能是模型在前向传播时就已经出现问题了,建议基于官方提供的reprod_log,与参考代码进行一步步的前向对齐,才能保证模型组网万无一失。

7.2 前向传播基本对齐,但是精度达不到

在本项目复现时,遇到最大的问题是前向对齐时的误差很小,但是无论如何第一轮的loss就是对不齐。找了很久问题,最后直接将参考代码的初始化参数加载到paddle复现的模型上,成功跑出了原论文精度,所以如果前向没大问题,也有可能是模型初始化参数的问题,可以设置下随机种子和加载可复现的初始化参数。

7.3 数据读取

由于元学习训练方式与传统训练方式有所区别,所以要单独写train和infer的数据读取。细节部分在infer_meta.py说明中有提到,主要是关掉dataloader默认的组batch方式,自己写组batch。

八、模型信息

信息 说明
发布者 宁文彬
时间 2022.06
框架版本 Paddle 2.3.0
应用场景 元学习
支持硬件 GPU、CPU

以上就是【论文复现赛】第六期冠军项目-MetaHeac-推荐系统的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号