标签: AGI

  • 📰 NPA:个性化注意力的神经新闻推荐

    在当今信息爆炸的时代,如何为用户提供精准的新闻推荐已成为一个亟待解决的难题。NPA(Neural News Recommendation with Personalized Attention)模型应运而生,旨在通过个性化的注意力机制,提升用户的阅读体验。NPA的核心在于两个模型:新闻表示模型和用户表示模型。

    🛠️ NPA的基本构成

    NPA模型主要由以下几个部分组成:

    1. 新闻表示模型:利用卷积神经网络(CNN)从新闻标题中学习隐藏表示。通过对新闻内容的深度挖掘,模型能够提取出能够吸引用户注意的关键信息。
    2. 用户表示模型:从用户点击过的新闻中学习用户的个性化特征。用户的历史行为数据不仅反映了他们的兴趣偏好,还为模型提供了丰富的上下文信息,使得推荐更加精准。
    3. 个性化注意力机制:NPA采用了两种级别的注意力机制:单词级和新闻级。单词级注意力帮助模型关注不同用户感兴趣的关键词,而新闻级注意力则关注用户历史点击的新闻的重要性。

    📊 数据格式与处理

    为了更高效地训练和评估,NPA使用了MIND(Massive Information Network Dataset)数据集的一个缩小版——MINDdemo。MINDdemo数据集包含了5000位用户的行为数据,结构如下:

    • 新闻数据:包括新闻ID、分类、子分类、标题、摘要、新闻链接等信息。
    • 用户行为数据:记录用户在特定时间段内的点击历史。
    | 新闻ID | 分类      | 子分类       | 新闻标题                             | 新闻摘要                                      | 新闻链接                          |
    |--------|-----------|--------------|--------------------------------------|------------------------------------------------|-----------------------------------|
    | N46466 | lifestyle | lifestyleroyals | The Brands Queen Elizabeth Swear By | Shop the notebooks, jackets, and more...    | https://www.example.com/news1     |

    每行数据提供了一条新闻的详细信息,帮助模型在推荐时考虑更多的上下文信息。

    🌐 全局设置与参数准备

    在开始训练之前,首先需要进行全局设置和参数的准备。以下是一些重要的参数设置:

    epochs = 5
    seed = 42
    batch_size = 32
    MIND_type = 'demo'  # 可选:demo, small, large

    这些参数将影响模型的训练过程和最终的推荐效果。

    📥 数据下载与加载

    NPA模型需要下载并加载训练和验证数据。通过MIND数据集的相关API,用户可以直接获取所需数据并进行处理:

    mind_url, mind_train_dataset, mind_dev_dataset, mind_utils = get_mind_data_set(MIND_type)

    确保数据完整性后,模型才能顺利地进行训练和评估。

    ⚙️ 创建超参数

    超参数的设置包括了数据格式、用户数量、词嵌入维度等。通过准备好的超参数,NPA模型能够有效地进行训练:

    hparams = prepare_hparams(yaml_file, 
                              wordEmb_file=wordEmb_file,
                              wordDict_file=wordDict_file, 
                              userDict_file=userDict_file,
                              batch_size=batch_size,
                              epochs=epochs)

    这些超参数的合理设置将直接影响模型的性能。

    💻 训练NPA模型

    模型训练是NPA的核心步骤。在这个阶段,模型将在训练数据上进行学习,并通过验证集来评估效果。训练过程中的信息包括损失值、评估指标等,帮助研究人员监控模型的表现:

    model.fit(train_news_file, train_behaviors_file, valid_news_file, valid_behaviors_file)

    训练完成后,模型将能够针对用户的个性化需求做出更精准的推荐。

    📈 模型评估与预测

    经过训练,模型会在验证集上进行评估,输出的评估指标包括组AUC(group AUC)、平均倒排排名(mean MRR)等。这些指标能够有效地反映模型的推荐能力。

    res_syn = model.run_eval(valid_news_file, valid_behaviors_file)
    print(res_syn)

    在评估过程中,模型的表现将得到验证,确保其推荐的准确性和有效性。

    💾 模型保存与输出预测文件

    最后,模型训练完成后,我们需要将模型的权重保存下来,以便后续的使用和进一步的实验。此外,还可以生成预测文件,以满足实际应用需求。

    model.model.save_weights(os.path.join(model_path, "npa_ckpt"))

    通过这些步骤,NPA模型不仅能够高效地进行新闻推荐,还能为用户提供个性化的阅读体验。

    📚 参考文献

    1. Chuhan Wu, Fangzhao Wu, Mingxiao An, Jianqiang Huang, Yongfeng Huang and Xing Xie: NPA: Neural News Recommendation with Personalized Attention, KDD 2019, ADS track.
    2. Wu, Fangzhao, et al. “MIND: A Large-scale Dataset for News Recommendation” Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. MIND Competition
    3. GloVe: Global Vectors for Word Representation. GloVe Project

    通过以上分析,我们可以看到NPA模型在个性化新闻推荐中的重要性和有效性。未来,随着技术的不断进步,推荐系统将变得更加智能,能够更好地满足用户的需求。

  • xDeepFM:极致深度因子分解机的崛起 🚀

    在推荐系统的世界里,捕捉复杂的特征交互是提升模型性能的关键。随着深度学习的迅猛发展,xDeepFM模型横空出世,成为了这一领域的新宠。本文将深入探讨xDeepFM的设计理念、实现方式以及在真实数据集上的应用表现。

    🌟 xDeepFM的核心概念

    xDeepFM(极致深度因子分解机)是一种基于深度学习的模型,旨在同时捕捉低阶和高阶特征交互,从而为推荐系统提供更为精准的预测。与传统的因子分解机(FM)相比,xDeepFM在特征交互学习上进行了创新,能够显著降低手动特征工程的工作量。它的设计主要包括以下几个关键组件:

    • CIN(Compressed Interaction Network):这一组件以显式方式学习特征交互,采用向量级别的操作,使得模型能够捕捉到复杂的特征交互模式。
    • 传统DNN(深度神经网络)部分:该部分以隐式方式学习特征交互,通过比特级别的处理,进一步增强模型的表达能力。

    通过对这些组件的灵活配置,xDeepFM能够根据需要启用不同的功能部分,例如仅激活线性部分和FM部分时,模型就会退化为经典的FM模型。

    📊 Criteo数据集的应用

    在本次实验中,我们选择了Criteo数据集进行测试。Criteo数据集是业界公认的CTR(点击率)预测模型的基准数据集,广泛用于研究论文的评估。由于原始数据集体积庞大,我们选取了其中的一小部分进行演示。

    Criteo数据的输入格式为FFM(Field-aware Factorization Machine),其格式为:<label> <field_id>:<feature_id>:<feature_value>。每行实例的标签为二进制值,1表示正实例,0表示负实例。特征被分为多个字段,例如用户的性别可以作为一个字段,其中可能值包括男性、女性和未知,而职业可以是另一个字段,包含更多的可能值。

    🔧 模型设置与参数

    在模型的实现过程中,我们使用了TensorFlow 2.7.4,并设置了一些基本参数,如下所示:

    EPOCHS = 10
    BATCH_SIZE = 4096
    RANDOM_SEED = 42  # 将此设置为None以获得非确定性结果

    通过这些参数的设置,我们定义了训练的轮次、批次大小以及随机种子,从而确保实验的可重复性。

    🏗️ 创建和训练模型

    在模型创建过程中,我们为xDeepFM模型配置了一系列超参数,包括特征数量、字段数量,以及各类正则化参数等。以下是部分参数的示例:

    hparams = prepare_hparams(yaml_file, 
                              FEATURE_COUNT=2300000, 
                              FIELD_COUNT=39, 
                              learning_rate=0.002, 
                              batch_size=BATCH_SIZE, 
                              epochs=EPOCHS)

    模型训练的过程通过调用model.fit(train_file, valid_file)来实现,这一过程会根据训练数据和验证数据进行反复迭代,逐步优化模型参数,提高模型的准确性。

    📈 模型评估与性能

    在对模型进行训练后,我们需要对其性能进行评估。通过对测试数据集的评价,我们获得了如下结果:

    result = model.run_eval(test_file)
    print(result)

    评估指标包括AUC(曲线下面积)和logloss(对数损失)。在训练过程中,模型的表现逐渐提高,最终在测试集上的AUC值达到了0.7356,logloss值为0.5017。这表明模型在捕捉特征交互方面表现良好,具备了应用于实际推荐系统的能力。

    🧩 小结

    xDeepFM模型的提出为推荐系统领域带来了新的思路与方法。通过结合显式与隐式特征交互的学习机制,xDeepFM能够有效捕捉复杂的特征关系,降低人工特征工程的需求。在实际应用中,xDeepFM在多个基准数据集上展现了优异的性能,成为现代推荐系统设计中不可或缺的一部分。

    📚 参考文献

    1. Lian, J., Zhou, X., Zhang, F., Chen, Z., Xie, X., & Sun, G. (2018). xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems. Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, KDD 2018, London, UK, August 19-23, 2018.

    通过对xDeepFM的深入探讨,我们不仅看到了其在理论上的创新,更感受到了其在实际应用中的巨大潜力。未来,随着推荐系统的不断发展,xDeepFM或许将成为更多应用场景下的首选模型。

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网