搜广推校招面经四十九

embedded/2025/3/15 9:32:06/

tiktok广告算法

一、倒排索引原理及Map中Key的处理

具体使用方法见【搜广推校招面经三十六】
倒排索引(Inverted Index)是信息检索系统中常用的一种数据结构,用于快速查找包含某个关键词的文档。以下是倒排索引的原理及Map中Key的处理方式的详细说明。

1.1. 倒排索引的原理

(1) 基本概念

  • 正排索引:以文档为单位,记录每个文档包含的关键词。
  • 倒排索引:以关键词为单位,记录每个关键词出现在哪些文档中。

(2) 数据结构

倒排索引通常由两部分组成:

  1. 词典(Dictionary):存储所有关键词。
  2. 倒排列表(Posting List):记录每个关键词对应的文档列表及其相关信息(如词频、位置等)。

2. Map中Key的处理

在实现倒排索引时,通常使用Map(或字典)来存储词典和倒排列表。以下是Map中Key的处理方式:

(1) Key的选择

  • Key:关键词(Term)。
  • Value:倒排列表(Posting List),通常是一个列表或数组,存储文档ID及其相关信息。

(2) Key的存储

  • 哈希表:使用哈希表(如Python的dict或Java的HashMap)存储Key-Value对,确保快速查找。
  • 排序存储:将Key按字典序排序,便于范围查询和前缀匹配。

(3) Key的冲突处理

  • 哈希冲突:当两个不同的Key映射到同一个哈希值时,使用链地址法或开放地址法解决冲突。
  • 重复Key:在倒排索引中,Key是唯一的,不会出现重复。

二、Transformer的结构、原理、优点、除 d k \sqrt{d_k} dk 、手写自注意力机制一套。

见【搜广推校招面经三十四、搜广推校招面经二】

三、MMoE与PLE的计算方式及区别

MMoE(Multi-gate Mixture of Experts)和PLE(Progressive Layered Extraction)是多任务学习(Multi-task Learning, MTL)中常用的模型结构。它们通过共享部分参数和引入特定机制来处理多任务学习中的任务冲突问题。

3.1. MMoE(Multi-gate Mixture of Experts)

(1) 核心思想

MMoE通过引入多个专家(Experts)和一个门控网络(Gating Network)来建模任务之间的关系,从而缓解任务冲突。

(2) 计算方式

  • 专家网络:多个独立的子网络(Experts),每个专家负责学习不同的特征表示。
  • 门控网络:为每个任务分配一个门控网络,用于动态调整各专家对当前任务的贡献。

(3)公式

对于任务 k k k,其输出 y k y_k yk 计算如下:
y k = h k ( ∑ i = 1 n g i k ( x ) ⋅ f i ( x ) ) y_k = h^k \left( \sum_{i=1}^{n} g_i^k(x) \cdot f_i(x) \right) yk=hk(i=1ngik(x)fi(x))
其中:

  • x x x:输入特征
  • f i ( x ) f_i(x) fi(x):第 i i i 个专家的输出
  • g i k ( x ) g_i^k(x) gik(x):任务 k k k 的门控网络对第 i i i 个专家的权重(通过一个softmax计算)
  • h k h^k hk:任务 k k k 的输出层

3.2. PLE(Progressive Layered Extraction)

(1) 核心思想

PLE通过分层提取共享特征和任务特定特征,逐步分离任务间的共享信息和特定信息,从而更好地处理任务冲突。

(2) 计算方式

  • 共享专家:多个共享专家(Shared Experts),用于提取任务间的共享特征。
  • 任务特定专家:每个任务有自己的特定专家(Task-specific Experts),用于提取任务特定特征。
  • 门控网络:为每个任务分配一个门控网络,用于动态调整共享专家和任务特定专家的贡献。

(3)公式

对于任务 k k k,其输出 y k y_k yk 计算如下:
y k = h k ( ∑ i = 1 n s g s , i k ( x ) ⋅ f s , i ( x ) + ∑ j = 1 n t g t , j k ( x ) ⋅ f t , j k ( x ) ) y_k = h^k \left( \sum_{i=1}^{n_s} g_{s,i}^k(x) \cdot f_{s,i}(x) + \sum_{j=1}^{n_t} g_{t,j}^k(x) \cdot f_{t,j}^k(x) \right) yk=hk(i=1nsgs,ik(x)fs,i(x)+j=1ntgt,jk(x)ft,jk(x))
其中:

  • f s , i ( x ) f_{s,i}(x) fs,i(x):第 i i i 个共享专家的输出
  • f t , j k ( x ) f_{t,j}^k(x) ft,jk(x):任务 k k k 的第 j j j 个特定专家的输出
  • g s , i k ( x ) g_{s,i}^k(x) gs,ik(x):任务 k k k 的门控网络对第 i i i 个共享专家的权重(通过一个softmax计算)
  • g t , j k ( x ) g_{t,j}^k(x) gt,jk(x):任务 k k k 的门控网络对第 j j j 个特定专家的权重(通过一个softmax计算)
  • n s n_s ns:共享专家的数量
  • n t n_t nt:任务特定专家的数量

3.3. MMoE与PLE的区别

特性MMoEPLE
核心思想通过门控网络动态调整专家权重分层提取共享特征和任务特定特征
专家类型所有任务共享一组专家共享专家 + 任务特定专家
门控网络每个任务一个门控网络每个任务一个门控网络
任务冲突处理动态调整专家权重分层分离共享信息和任务特定信息
适用场景任务相关性较弱的多任务场景任务相关性较强的多任务场景

3.4. 参考资料

  • MMoE论文
  • PLE论文

http://www.ppmy.cn/embedded/172731.html

相关文章

高级java每日一道面试题-2025年2月18日-数据库篇-MySQL 如何做到高可用方案?

如果有遗漏,评论区告诉我进行补充 面试官: MySQL 如何做到高可用方案? 我回答: 在Java高级面试中,讨论MySQL如何实现高可用性方案是一个重要话题。这不仅涉及到数据库的稳定性和可靠性,还关系到系统的整体性能和用户体验。以下是结合提供的信息进行综…

超级课程表项目结尾

L3-17-05-main.py def __init__(self):app QApplication([])self.window QMainWindow()self.window.setWindowTitle("超级课程表")cusWidget CourseWidget()self.window.setCentralWidget(cusWidget)self.showCourse()self.showNotes()# 1. 创建菜单栏self.menuba…

Linux基础开发工具—vim

目录 1、vim的概念 2、vim的常见模式 2.1 演示切换vim模式 3、vim命令模式常用操作 3.1 移动光标 3.2 删除文字 3.3 复制 3.4 替换 4、vim底行模式常用命令 4.1 查找字符 5、vim的配置文件 1、vim的概念 Vim全称是Vi IMproved,即说明它是Vi编辑器的增强…

C++ primer plus 类和对象

文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 接着上一篇继续 一 this指针 我们可能看到这个this指针是不知道干什么的,但是我们可以通过一个问题来引入这个,就比如我们上一章的程序,…

【redis】zset 类型:基本命令(上)

set 集合: 唯一无序。(顺序不重要)孙行者、行者孙>同一只猴 list 有序。(顺序很重要)孙行者、行者孙>不同的猴 zset 有序。升序/降序 有序集合 排序的规则是什么? 给 zset 中的 member 引入了…

问问 DeepSeek 什么是网络爬虫

在现代互联网时代,信息的获取和整理变得至关重要,而爬虫(Web Crawler) 是一种自动化工具,帮助我们从网页上提取数据。爬虫在新闻采集、商品比价、天气数据收集等方面应用广泛。 爬虫的工作原理 爬虫的基本工作流程如下…

基于javaweb的SpringBoot宠物平台系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

P6772 [NOI2020] 美食家

训练角度:图上的状态转移,倍增 → \rightarrow → 优化状态转移; ▍ 题意 精灵王国共有 n n n 座城市,城市从 1 1 1 到 n n n 编号,其中城市 i i i 的美食能为小 W 提供 c i c_i ci​ 的愉悦值。精灵王国的城市…