电子说
就其运营规模而言,TikTok 推荐系统被广泛认为是世界上最好的推荐系统之一。 它可以推荐视频或广告,甚至其他大型科技公司也无法竞争。 在 TikTok 这样的平台上进行推荐很困难,因为训练数据是非平稳的,用户的兴趣可能在几分钟内发生变化,而且用户、视频和广告的数量不断变化。
社交媒体平台上的推荐系统的预测性能在几个小时内就会恶化,因此需要尽可能频繁地更新。 TikTok 构建了一个流引擎,以确保模型以在线方式持续训练。 模型服务器生成模型的特征来推荐视频,作为回报,用户与推荐的项目进行交互。 此反馈循环会产生立即发送到训练服务器的新训练样本。 训练服务器保存模型的副本,模型参数在参数服务器中更新。 每分钟,参数服务器都会将自身与生产模型同步。
推荐模型的大小为几 TB,因此通过网络同步如此大的模型非常慢。 这就是模型仅部分更新的原因。 非平稳(概念漂移)的主要原因来自于嵌入表表示的稀疏变量(用户、视频、广告等)。 当用户与推荐的项目交互时,仅与用户和项目关联的向量以及网络上的一些权重得到更新。 因此,只有更新后的向量会以分钟为单位进行同步,而网络权重会在较长的时间范围内进行同步。
典型的推荐系统使用固定的嵌入表,并且稀疏变量的类别通过哈希函数分配给向量。 通常,哈希大小小于类别数,并且多个类别会分配给同一向量。 例如,多个用户共享相同的向量。 这使我们能够处理新用户的冷启动问题,并且它对整个表将使用的最大内存进行了限制。 但这也往往会降低模型的性能,因为用户行为会被混淆。 相反,TikTok 使用动态嵌入大小,以便新用户可以添加到他们自己的向量中。 他们使用无冲突哈希函数,因此每个用户都可以获得自己的向量。 低活动用户不会对模型性能产生太大影响,因此他们会动态删除那些低出现率的 ID 以及过时的 ID。 这使得嵌入表很小,同时保持了模型的质量。
科技行业的每个人都在等待 TikTok 公布其推荐系统实施情况,以便从中学习。 我的猜测是,许多科技公司在 TikTok 论文发表时仔细研究了它,并开始实现自己的版本:“Monolith:具有无碰撞嵌入表的实时推荐系统”! 您可以在他们的 GitHub 上找到开源版本:https://github.com/bytedance/monolith。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !