PowerLZY's Blog

本博客主要用于记录个人学习笔记(测试阶段)

模型在线部署-TensorFlow Serving

TensorFlow Serving 是 TensorFlow 提供的一个高性能、灵活、可扩展的模型服务框架,用于部署和扩展 TensorFlow 模型服务。它支持多种模型格式和多种协议,能够快速部署和扩展模型服务,适用于各种规模和复杂度的深度学习模型。TensorFlow Serving 的主要特点包括:

  1. 支持多种模型格式:TensorFlow Serving 支持多种常见的模型格式,包括 TensorFlow SavedModel 格式、TensorFlow Hub 格式、Session Bundle 格式等,能够适应不同类型和规模的深度学习模型。
  2. 支持多种协议:TensorFlow Serving 支持多种常见的网络协议,包括 gRPC、RESTful API、Apache Kafka、Apache Pulsar 等,能够方便地与其他系统集成,实现模型服务的高效和灵活。
  3. 高性能和高可用性:TensorFlow Serving 提供了多种性能优化和扩展机制,包括模型预热、预加载、多线程和多进程等,能够快速响应请求并保证高可用性。
  4. 易于部署和管理:TensorFlow Serving 提供了多种部署和管理工具,包括 Docker 容器、Kubernetes、Triton Inference Server 等,能够快速部署和管理模型服务,并支持自动化部署和扩展。

通过使用 TensorFlow Serving,用户可以方便地将训练好的 TensorFlow 模型部署到云端或本地服务器上,提供高效、灵活、可扩展的模型服务。TensorFlow Serving 已广泛应用于各种领域,包括计算机视觉、自然语言处理、语音识别等,是深度学习模型部署和推断的重要基础框架之一。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import requests
import numpy as np

# 模型名称和路径
MODEL_NAME = "mnist"
MODEL_BASE_PATH = "./models/mnist"

# 启动 TensorFlow Serving
import subprocess
subprocess.Popen(["tensorflow_model_server",
"--port=8500",
"--rest_api_port=8501",
f"--model_name={MODEL_NAME}",
f"--model_base_path={MODEL_BASE_PATH}"])

# 发送推断请求
data = np.random.rand(1, 28, 28, 1).tolist()
json_data = {"instances": data}

headers = {"content-type": "application/json"}
url = f"http://localhost:8501/v1/models/{MODEL_NAME}:predict"

response = requests.post(url, json=json_data, headers=headers)
print(response.json())

Adversarial Attacks and Defenses in Deep Learning: From a Perspective of Cybersecurity

  • https://dl.acm.org/doi/10.1145/3547330

摘要

深度神经网络的卓越性能推动了深度学习在广泛领域的应用。然而,对抗性样本带来的潜在风险阻碍了深度学习的大规模部署。在这些场景中,人眼无法察觉的对抗性扰动会显著降低模型的最终性能。已经发表了许多关于对抗性攻击及其在深度学习领域的对策的论文。大多数论文都集中在逃避攻击上,即在测试时发现对抗性示例,而不是在训练数据中插入中毒数据的中毒攻击。此外,由于没有标准的评估方法,很难评估对抗性攻击的真实威胁或深度学习模型的稳健性。因此,在本文中,我们回顾了迄今为止的文献。此外,我们试图为系统地理解对抗性攻击提供第一个分析框架。该框架是从网络安全的角度构建的,为对抗性攻击和防御提供生命周期。

说明

机器学习技术已被应用于广泛的场景,并取得了广泛的成功,尤其是在深度学习方面,它正迅速成为各种任务中的关键工具。然而,在许多情况下,机器学习或深度学习模型的失败可能会导致严重的安全问题。例如,在自动驾驶汽车中,无法识别交通标志可能会导致严重事故[1]。因此,在大规模部署之前,训练一个准确稳定的模型至关重要。不幸的是,近年来,许多研究揭示了模型安全中一个令人失望的现象,即深度学习模型可能容易受到对抗性示例的影响,即被对手恶意干扰的样本。以这种方式被篡改的模型很有可能会产生错误的预测,尽管它们可能在良性样本中显示出很高的准确性[2-5]。对抗性攻击可以被广泛定义为一类攻击,其目的是通过将对抗性示例插入训练阶段(称为中毒攻击[6-8])或推理阶段(称称为逃避攻击[2,3])来欺骗机器学习模型。无论哪种攻击都会显著降低深度学习模型的鲁棒性,并引发模型安全问题。此外,最近在现实世界中发现了深受这种模型安全问题困扰的深度学习解决方案的漏洞,这引发了人们对深度学习技术的信任程度的担忧

由于在深度学习技术的实际应用中,隐私和安全的潜在威胁多种多样,越来越多的组织,如ISO、IEEE和NIST,正在参与人工智能标准化的过程。对一些国家来说,这项工作被认为类似于一些国家的新基础设施建设[9]。ISO提出了一个关于人工智能系统生命周期的项目,该项目将技术的生命周期分为八个阶段,包括初始化、设计和开发、检查和验证、部署、运行监控、持续验证、重新评估和放弃[10]。本周期中没有进一步解决的是对抗性攻击如何阻碍深度学习模型的商业部署。因此,评估模型安全威胁是人工智能项目生命周期中的一个关键组成部分。此外,考虑到可能的对抗性攻击和防御的分散性、独立性和多样性,如何分析模型的安全威胁也应该标准化。迫切需要的是一个风险图,以帮助准确确定项目生命周期每个阶段的多种类型的风险。更严重的是,攻击的防御仍处于早期阶段,因此对更复杂的分析技术提出了更高的要求。

近年来,一些与对抗性机器学习相关的调查已经发表。Chakraborty等人[11]描述了安全相关环境中对抗性示例的灾难性后果,并回顾了一些强有力的对策。然而,他们的结论表明,它们都不能成为应对所有挑战的灵丹妙药。Hu等人[12]首先介绍了基于人工智能的系统的生命周期,用于分析每个阶段的安全威胁和研究进展。对抗性攻击分为训练和推理阶段。Serban等人[13]和Machado等人[14]分别回顾了在对象识别和图像分类中关于对抗性机器学习的现有工作,并总结了存在对抗性示例的原因。Serban等人[13]还描述了对抗性示例在不同模型之间的可转移性。与参考文献[14]提供设计防御的相关指导类似,Zhang等人[15]还从防御者的角度对相关工作进行了全面调查,并总结了深度神经网络对抗性示例起源的假设。还有一些关于对抗性机器学习在特定领域的应用的调查,如推荐系统[16]、网络安全领域[17]和医疗系统[18]。

[17]

先前已经观察到,在网络安全背景下,高级持续威胁(APT)通常是高度有组织的,成功的可能性极高[19]。以Stuxnet为例,这是最著名的APT攻击之一。它于2009年发射,摧毁了伊朗的核武器计划[19]。APT的工作流程系统地考虑了安全问题,这使得APT相关技术既能获得出色的成功率,即绕过这些防御,又能以高度有效的方式评估系统的安全性。受APT工作流程的启发,我们将此系统分析工具应用于网络安全问题,作为分析对抗性攻击威胁的潜在方法。APT主要由多种类型的现有底层网络空间攻击(如SQL注入和恶意软件)组成。不同类型的底层攻击的组合策略及其五阶段工作流程意味着,与单一攻击相比,APT的成功率极高。然而,有趣的是,根据现有的对抗性攻击策略,可以将其巧妙地划分为这五个阶段。基于这一观察,我们发现在评估对抗性攻击的威胁时,类似于APT的工作流程是有效的。因此,这构成了我们分析和对策框架的基础。尽管一些综述论文总结了模型安全方面的工作,但攻击方法或防御通常仍分为依赖类和分段类。这意味着不同方法之间的关系尚未明确确定。在这篇文章中,我们从APT的角度系统地对现有的对抗性攻击和防御进行了全面系统的回顾。我们的贡献如下:

  • 我们提供了一个新颖的网络安全视角来研究深度学习的安全问题。我们首次提出将APT概念纳入深度学习中对抗性攻击和防御的分析中。其结果是为模型安全性提供了一个标准的类似APT的分析框架。与之前部分关注机制[13,20]、威胁模型[21]或情景[22]的调查不同,我们的工作可以为理解和研究这个问题提供全局和系统层面的视角。具体而言,先前的研究倾向于在小组中讨论具有类似策略的方法。分别研究了不同策略的对抗性攻击,忽略了不同攻击群之间的关系。相反,我们的工作将对抗性攻击视为一个全球系统,每一组具有相似策略的攻击都只是这个全球系统的一部分。与网络安全类似,考虑不同群体之间的关系有助于进一步提高攻击的有效性;
  • 基于类似APT的分析框架,我们对现有的对抗性攻击方法进行了系统的审查。根据APT的逻辑,对抗性攻击可以明确地分为五个阶段。在每个阶段,都确定了共同的基本组成部分和短期目标,这有助于以深入的顺序提高攻击性能;
  • 我们还回顾了在类似APT的分析框架内对对抗性攻击的防御。同样,防御分为五个阶段,提供自上而下的顺序来消除对抗性例子的威胁。可以识别不同阶段的防御方法之间的关系,从而激发一种可能的策略,将多种防御结合起来,为深度学习模型提供更高的鲁棒性
  • 我们分别从数据和模型的角度总结了对抗性示例存在的假设,并全面介绍了对抗性机器学习中常用的数据集

我们希望这项工作能激励其他研究人员在系统层面上看待模型的安全风险(甚至隐私威胁),并在全球范围内评估这些风险。如果可以建立一个标准,那么各种财产,例如健壮性,就可以在更短的时间内更准确地访问。因此,用户对深度学习模型的信心将会增强。

二、相关研究

深度学习是指建立在深度神经网络(DNN)上的一组机器学习算法,已广泛应用于预测和分类等任务[21]。DNN是一种数学模型,包括具有大量计算神经元和非线性激活函数的多层。典型的深度学习系统的工作流程包括两个阶段:训练阶段和推理阶段。两个阶段的详细流程如下所示,如图1所示:

image-20230402204215480

图1:深度学习系统的一般工作流程。在训练阶段,基于训练数据迭代更新参数θ。得到最佳参数θ后 , 在推理阶段,输入将被输入到经过训练的模型中,这将为决策提供相应的输出

  • 在训练阶段,DNN的参数通过迭代前馈和反向传播不断更新。反向传播中的梯度下降方向是通过优化损失函数来引导的,该函数量化了预测标签和地面实况标签之间的误差。具体地,给定输入空间X和标签空间Y,最优参数θ  期望DNN f的损失函数L最小化训练数据集(X,Y)上的损失函数。因此,在训练过程中要找到最佳θ  可以定义为:

    \[ \theta^{\star}=\underset{\theta}{\arg \min } \sum_{x_i \in \mathcal{X}, y_i \in \mathcal{Y}} \mathcal{L}\left(f_\theta\left(x_i\right), y_i\right) \]

    其中fθ是要训练的DNN模型;xi∈X是从训练数据集中采样的数据实例,yi和fθ(xi)分别表示相应的地面真实标签和预测标签。

  • 在推理阶段,训练的模型f  具有固定最优参数的θ  被应用来提供关于未被包括在训练数据集中的看不见的输入的决策。给定看不见的输入xj,可以通过单个前馈过程来计算相应的模型决策yj(即xj的预测标签):yj=f  θ(xj)。值得注意的是,一次成功的对抗性攻击通常会在推理阶段导致被操纵的预测yõ,这可能与xj的正确标签相去甚远。

2.2 针对DNN的威胁模型

为了对这些攻击进行分类,我们通过引入模型攻击的关键组件来指定针对DNN的威胁模型。威胁被分解为三个维度:对手的目标、对手的特异性和对手的知识。这三个维度可以帮助我们识别潜在的风险,并了解对抗性攻击环境中的攻击行为。在图2中,我们概述了对抗性攻击中的威胁模型。

image-20230403202614103
2.2.1 攻击目标
  • 中毒攻击。在中毒攻击中,攻击者可以访问和修改训练数据集,以影响最终训练的模型[23-26]。攻击者在训练数据中注入假样本以生成有缺陷的模型的方式可以被视为“中毒”。中毒攻击通常会导致准确性下降[25]或对给定测试样本的错误分类[26]。•躲避攻击。
  • 在规避攻击中,对手的目标是攻击训练有素且固定的DNN,而没有任何权限修改目标模型的参数[13,18,23]。通过这种方式,攻击者不再需要训练数据集的可访问性。相反,攻击者生成目标模型无法识别的欺骗性测试样本,以逃避最终检测[27,28]。
2.2.2 对抗性特异性

对抗性特异性的差异取决于攻击者是否能够在推理阶段为给定的对抗性样本预先定义特定的欺诈预测。

  • 非目标攻击。在无目标攻击中,对手的唯一目的是欺骗目标模型生成错误预测,而不关心选择哪个标签作为最终输出[29-32]。
  • 有针对性的攻击。在有针对性的攻击中,对于给定的样本,攻击者不仅希望目标模型做出错误的预测,而且还旨在诱导模型提供特定的错误预测[33-36]。一般来说,有针对性的攻击不会像无针对性的那样成功。
2.2.3 敌人的知识
  • 白盒攻击。在白盒设置中,对手能够访问目标模型的细节,包括结构信息、梯度和所有可能的参数[30,34,37]。因此,对手可以通过利用手头的所有信息来精心制作对抗性样本。
  • 黑匣子攻击。在黑盒设置中,攻击者在不了解目标模型的情况下实施攻击。攻击者可以通过与目标模型交互来获取一些信息[36,38,39]。这是通过将输入查询样本输入到模型中并分析相应的输出来完成的。

2.3 对抗性攻击

2.3.1 逃逸攻击

Szegedy等人[2]首先在对抗性攻击中引入了对抗性示例的概念,它可以在推理阶段以高成功率误导目标模型。他们提出了一种通过等式(1)搜索具有目标标签的最小失真对抗性示例的方法:

image-20230402210029648

通过这个方程,他们可以找到最接近的x  通过最小化与良性样本x的距离 x  − x 22,并且将被f(x)的条件错误地分类为目标标签t ) = 时间。这个问题可以导致方程(2)中的目标,该目标可以通过L-BFGS算法来解决:

image-20230402210112765

2.3.2 投毒攻击

与推理攻击中发生的规避攻击不同,中毒攻击旨在通过污染训练数据来降低模型的准确性。攻击者需要一些权限来操纵训练数据,例如数据注入和数据修改[11]。因此,发起中毒攻击的目标可以分为两类:可用性违规和完整性违规。前者旨在降低受害者模型的置信度或准确性,破坏整个系统,而后者试图在不影响其他正常样本的情况下,通过引入后门,在某些特定样本上误导受害者模型[11]。具体而言,针对仅涉及训练样本的神经网络的中毒实例可以通过以下两种策略来制作:双层优化和特征碰撞[23]。

  • 双层优化:修改数据的经典数据中毒可以形式化为双层优化问题[23]。然而,对于非凸神经网络,双层优化问题是棘手的。Mu~noz-Gonz´alez等人[24]提出了“反向梯度下降”来近似内部问题的解,然后对外部损失进行梯度下降,尽管这在计算上仍然很昂贵。为了加快中毒样品的生产,Yang等人[25]引入GAN来产生毒素。MetaPoison等人[26]也被提出作为一阶方法,使用集成策略近似解决生产毒药的双层优化。
  • 特征冲突:基于双层优化的方法通常对迁移学习和端到端训练都有效,而特征冲突策略可以用于在有针对性的错误分类设置中设计针对迁移学习的有效攻击。例如,Shafahi等人[40]开发了一种方法,在特征空间中生成与目标样本相似的中毒样本,同时在输入空间中接近原始良性样本。这两类方法只需要操作训练的权限,而不需要标签,并且训练数据的语义将保持不变。这些带有干净标签的中毒样本将更难被检测到。

此外,除了仅操纵训练数据的中毒攻击外,另一种类型的中毒攻击是后门攻击,它需要在推理阶段向输入插入触发器的额外能力[23]。

后门攻击:后门攻击中的对手通常可以修改训练样本的标签[41]。这些带有后门触发器的错误标记数据将被注入到训练数据集中。因此,基于该数据集的训练模型将被迫为新样本(使用触发器)分配所需的目标标签。大多数后门攻击都需要在制作毒药的过程中给训练样本贴上错误的标签,而这些毒药更有可能被防御者识别出来。因此,还提出了一些干净标签后门攻击[42],并使用参考文献[40]中提出的特征碰撞策略来制作后门样本。

2.4 Advanced Persistent Threats

高级持久性威胁(APT)是一系列新定义的攻击过程,其中攻击是长时间连续的,例如数年。分析APT的工作流程构成了我们对抗性攻击和防御分析框架的基础。

小红书社区反作弊探索与实践

一、社区反作弊的意义

面对已知风险和产业链,下面来讨论下整个作弊防控的策略。所谓策略须先明确作弊防控的目标,以及达到目标的关键路径。

首先明确对于反作弊的预期。反作弊的本质是与作弊者成本的对抗,任何反作弊系统都无法做到 100% 的准确和召回。前面提到,无论何种形式作弊,它都是以牟利为目的的,而利益的来源是作弊成本和收益之间的价值差异。反作弊的工作就是提高作弊成本,尽量压缩作弊利益空间,降低作弊者的动机。因此,合理的目标设定是降低作弊行为在正常行为中的占比,控制风险的浓度。

关键路径是化被动识别为主动防御,如果长期作为被动方,可能没办法有全盘宏观的概念。要做到主动防御,一是构建风险的感知能力,尽早发现风险并且快速反应迭代;二是控制黑产的核心资源(账号,设备),树立高门槛设置准入壁垒,并将有问题的账号进行存量清理。收缩作弊者能使用的账号量和设备量,相应的新账号成本也会变高,这就控制了核心资源。

image-20230401173214898

下面对作弊防控思路做进一步的拆解,也是一个比较通用的方法论,个人认为可以应用到各类风险控制场景里。首先业务风控最大的难点是对抗,无论作弊变成何种形式,唯一不变的就是对抗,它是一直存在的。围绕对抗抽象出几个模块:风险感知、能力建设、风险识别、风险处置、效果评估。在遇到新的对抗时,这几个环节间会进行不断的循环迭代。下面以小红书社区反作弊为例,具体介绍这几个模块的设置。

  • 风险感知层负责更快发现风险,化被动救火为主动防御。具体分为情报运营,黑产卧底和红蓝军对抗,帮助风险识别更早的发现问题,可以说情报是整个风险防控体系的眼睛,解决“看得见”的问题。
  • 能力建设是面向对抗的快速响应能力。这部分涉及的模块,一是端+云联防,在合法合规前提下通过端获取设备信息,并进一步加工为可用特征,供云防策略和算法使用。二是可以快速接入且可灵活配置的风控系统,以实现策略规则的快速迭代。三是为更快的实现从零到一的落地风控场景,搭建可跨场景协同使⽤的风险画像平台,在新风险场景里快速迁移和使用数据基建能力。
  • 风险识别模块,面向对抗需提高识别的准召。从几个角度拓展能力,首先扩充数据,结合设备特征、账号特征、行为特征,以及其他场景下识别的风险画像,做联合使用分析。其次,从挖掘的角度,利用官方平台和作弊者之间的信息不对称性,寻找作弊用户相较于正常用户的异常点:
    • 尝试由点到线,从分析单个行为变成分析一串行为即行为序列挖掘;
    • 从单点到面, 通过账号、IP 或设备等节点之间的拓扑关系进行团伙挖掘,可以带来很大的增益
  • 风险处置方面需要选择更有效的方式提高绕过成本。主要分为两个层面,一是处置对象,二是处置手段。在每个场景下该怎么处置,并没有一个标准答案,建议结合具体业务和业务中的风险来判断,了解风险背后的动机,在考虑应该采取怎样的处置手段才能提高绕过成本。
  • 效果评估可以评估风险水位,一般来说常用的指标有作弊漏过量、漏过率、作弊服务价格、账号价格等。

小红书的风控体系,分为业务数据接入层,数据加工层,分析决策层,数据采集能力沉淀及运营和评估模块。

  • 业务数据层,覆盖用户全场景的行为风控。从设备激活->账号注册->内容浏览 ->交互->内容发布,从多场景层面实现联防联控。对于明确的作弊用户,直接拒绝访问从而加强准入的防御壁垒; 对于疑似异常用户或高难度作弊注册,建议做延迟处理或在后续关键环节上做拦截处置,可以达到增加绕过成本的目的:具体来说,如果在注册时直接拦截,作弊者可快速验证拦截原因;延迟拦截后作弊者定位识别方法的难度变大,找到绕过方法的成本也更高。
  • 数据接入层,风控引擎支持实时请求接入,也支持准实时流式接入和离线数据接入。
  • 数据加工层重点针对身份特征,网络环境,设备信息、行为数据、时序特征,累计因子等去做加工和挖掘,并输入至决策分析层。
  • 决策分析层由策略引擎、模型引擎和数据引擎组成。其中策略引擎完成实时的规则产出和返回,支持灵活的策略配置和策略上下线。模型引擎,对于简单模型,可以做到线上 Serving;对于复杂模型或需要分析的模型,需通过近线或离线实现。
  • 数据采集的能力沉淀层,包含设备指纹采集、名单系统、风险画像、关系图计算和风险事件模块。一方面,作为分析决策层的数据源做输入。另一方面,实现识别能力的迁移、使用等等。决策分析层也会向能力沉淀层做输出, 将新识别风险点落到能力沉淀里复用至其他风险场景。

我们有一些不同的治理方案:

一、对于影响的治理方案是清理这部分作弊的行为所得。但是,仅清理虚假流量,唯一的损失就是买量付出的钱。但对于买量者,还可以尝试其他作弊服务。因为作弊买量价位不会非常高,不断尝试的可能性就很强。关键点在于尝试作弊是没有边际成本的,比如某人偷东西后只是要求把偷窃所得还回去,而不会把他抓起来,只要不被发现就赚了。

二、对于实现链路,针对刷量作弊的账号做治理。比如识别到一个用于刷量的机器账号,平台将该账号封禁。从账号的成本上考虑,提供刷量服务者手上的账号量会变的越来越少,做账号成本就会变高,刷量的服务价格就会上涨,刷量者尝试新手法时成本也会变高。

三、从作弊动机角度考虑,按作弊程度作流量分发降权或商业权益限制。对买作弊流量的笔记做流量分发限制,作弊后可以获得的流量比不作弊更少。其次是限制买作弊流量博主的商业权益,因为很多买量者想通过商业化实现流量变现,对商业权益限制使齐无法做商业合作,对作弊者来说是很大的损失。该模块治理效果,可以大大降低买量者的作弊意愿。

从实践来说,从治理【风险影响】转变为治理【实现链路】与【作弊动机】,作弊意愿降低,作弊量级下降显著。

数据刷量反作弊实践——风险识别

image-20230401202502284

参考文献

  • https://zhuanlan.zhihu.com/p/599625620

京东零售基于NLP的风控算法模型构建实践

导读:本团队主要负责京东零售领域的风控算法模型构建,针对京东零售风控方面,业务要求不断地更新、模型失效快、更新迭代慢以及成本高昂等情况,我们提出了自己设计研发的 NLP 预训练架构模型和用户行为预训练模型,并进行预训练模型的平台化,方便一键部署开发,快速迭代,简单易用,推理速度提升等,有效解决了业务问题,并在公开数据集上也得到了很好的效果。

一、背景介绍

image-20230401170044956

如上图所示,京东零售风控的任务是维护京东零售平台健康的交易生态环境,主要包括主站 APP、PC 端等。场景包括 C 端和 B 端两大部分。

C 端风控主要针对恶意刷券,使用外挂软件获取权益,比如用一些黑客软件抢茅台等,还有一些广告辱骂的内容,比如发小广告、不合规的内容等,以及价格方面的管控等。B 端风控主要是针对商家刷单行为、恶意套利行为,以及客服防骚扰。

image-20230401170213571

如上图所示,零售风控算法能力整体上分为用户行为和文本两大部分。用户行为这一块,通过上面提到的场景,算法人员可以将这些场景的数据构建成统计特征、序列行为特征,比如浏览页面等。文本这一块,主要是内容风控,包含舆情,地址异常等场景识别作为基础,以 NLP 的文本特征作为识别的基础。风控领域相对于其他领域的 NLP 场景,其主要的特点是异音异形字的识别,比如加微信,如上图中所示,通过一些异形字体,+薇信,躲避文本的风控检测。

以上两大场景,存在以下几个问题:

  • 第一,失效快,比如广告引流场景,模型很快就会有效果衰减,具体原因就是恶意攻击者,会反复尝试不同的字体和形式,用以破解算法模型,从而达到自己的目的,导致模型失效或者效果下降。
  • 第二,针对新的业务场景,需要大量的人工标注数据,人工标注的成本会非常高,而且耗时比较长。
  • 第三,建模的效率低,效果差,因为首先要做特征,特征完之后,再预训练模型,整个链条拉得非常长,等到模型做好之后,业务方可能不需要这个模型了,或是效果不能达到预期,有的模型效果要求准确率达到接近 100%。

针对这三个问题,我们做了一些思考研究。针对失效快的问题,是否可以建立一个长期有效的机制来解决;针对需要人工标注大量数据这个问题,是否可以建立一个小样本学习能力的模型,不需要标注那么多的标签数据,使用无监督的方式进行训练;针对建模效率低、效果差等,是否可建立一个特征,模型平台化自动生成的机制,使预训练模型和大模型更好地发挥作用,快速建模和生成模型。

基于以上思考,我们依赖于预训练技术,做了一些改进优化。

二、NLP 预训练

image-20230401170745015

如上图所示,NLP 是风控内容、舆情、地址等风控能力的基础,而且,近年来,预训练技术是处理 NLP 的最常用的方式。整体的流程如上图所示:首先数据采集,然后进行模型预训练,最后对模型进行微调。

image-20230401170908842

三、用户行为预训练

参考文献

  • https://zhuanlan.zhihu.com/p/600326545

智能风控体系总览

一、智能风控体系介绍

智能风控是利用大数据、人工智能技术和科学决策方法,通过自动化预测、评级和决策等方式,提高风控效果和效率、降低成本的一套综合体系。智能风控包括智能风控的方法论,智能风控的算法,工程技术的实现以及深入业务场景的应用。

智能风控方法包含模型搭建方法、数据挖掘方法、风控策略制定方法,通过一系列方法,我们可以构建智能风控的基本架构。

智能风控算法包括机器学习算法、深度学习和关系网络等算法,这些算法是方法体系中的核心部件,也是智能风控得以展现智能的关键部分。

工程技术实现是运用智能风控的方法论以及智能算法,结合工程技术,实现自动化的风控决策和智能交互。

应用方面,在业务流程的全过程中,只要有风险点的环节都可以加入智能风控进行决策。根据不同的业务场景灵活的选取模型规则的组合进行自动决策。自动体系要达到的最终目的是提高企业风控的精准度和效率,将风险控制在合理的范围内,减少风险损失提高企业的盈利能力。

二、智能风控详细体系架构

img

我们可以将智能风控体系拆解为图示的详细架构。该架构包含四层,分别为数据层、特征层、模型层和决策层。

  • 如果将整个智能风控体系比作一栋建筑,那么数据层是智能防控体系最基础的原材料。我们通过大量的历史数据来训练模型,通过数据构建特征,通过数据作为新决策的判断输入。
  • 特征层是智能风控的砖瓦,基于数据构建特征,通过提取数据中的关键信息,形成可以用于模型和决策的特征。
  • 模型层是智能风控的主体结构,通过历史样本数据和目标数据,利用各类机器学习算法基于丰富的特征,训练出满足各类业务场景的模型。
  • 策略层是智能风控的门面,特征和模型最终将服务于业务的特定场景。在不同的业务场景参与决策,策略层通过模型和规则的各种组合完成决策过程。

智能风控的每一层,再进行横向划分,包括关键内容、流程步骤、算法方法、工具平台。

  • 关键内容列包含每一层的主体内容和重要结果。
  • 流程步骤列是每一层构建关键的内容的流程和主要步骤。
  • 算法方法列是构建每一层结果采用的主要智能算法方法。
  • 工具平台列是包含构建流程管理关键结果的工具,是自动化管理的技术落地。

以上是整体的智能风控的体系架构。接下来展开每一层进行详细介绍。

2.1 数据层

img

首先是数据层。数据是所有智能风控的基础,数据中包含识别风险的信息,智能风控数据层包含不同类型的数据。根据来源我们可以将数据分为其内部数据第三方数据。以金融风控场景中常见的数据为例,企业内部数据包含基础信息,比如身份信息、学历信息、设备相关的信息包含 app 行为数据、设备指纹数据等。交易数据包含授信记录数据、还款记录数据等。第三方数据就更加广泛,包括多头借贷数据、征信相关数据等。

清楚自己的数据都有哪些?waflog、router、环境、埋点、设备指纹

数据处理上,按照处理的实效性划分,可以分为实时计算和离线计算。实时计算通常是用于实时决策场景。比如线上金融业务的授信审批,需要实时获取各类信贷决策的数据。离线计算通常用于定时任务,比如信贷风控中的贷中风控识别场景。从数据处理的方式上划分,可以分为流式数据处理和批量数据处理。

  • 数据处理的步骤通常分为数据采集、数据校验、数据清洗、数据存储、标准输出和数据监控。数据采集步骤对企业内部数据通常是从业务系统产生的数据元素获取需要的数据字段。对外是从第三方接口获取数据。
  • 数据校验是对数据做基本的验证判断,确保指定对象的数据有效。数据清洗是对数据做规范标准化处理,排除异常和杂乱数据。数据存储分为线上实时数据和离线数据存储,以满足不同使用场景和目的。
  • 标准化输出是将数据处理的结果对外提供使用接口或者其他的查询服务。
  • 数据监控是对整个数据处理结果的过程进行监控预警,及时发现数据层的应用异常。
  • 数据平台是数据层的支撑工具,通过数据平台来实现数据层的管理。通常数据平台包含内外部数据接入整合的功能,数据管理和服务的功能,数据校验和监控的功能。

2.2 特征画像层详解

img

特征是对数据的再次加工,将智能风控建筑的原材料变成砖瓦。特征是从数据中抽取有效的、针对特定目的的部分信息,从数据产生特征的过程就是特征挖掘。数据质量决定了特征质量的上限,但是好的特征挖掘过程是尽量的从数据中挖掘出最有价值的信息。有些特征是直接从数据中获取的比如性别、年龄、居住区域这类身份特征和基础信息特征。另外一些特征就需要对原始数据进行汇总加工比如借款次数、额度使用占比等。还有一些特征需要基于关系图谱机器学习的方法进行深度加工才能提取,比如二度关系里人的特征、收入指数、消费能力指数等。

  • 特征提取的方法包括基于统计聚类的 RFM 方法,基于时序特征的提取方法,基于机器学习 NLP 图特征图算法等特征提取方法。虽然特征提取的方法不同,但是特征提取的关键步骤基本是一致的。
  • 源数据分析和清洗是对原始数据的流转、时效、质量等进行分析并清洗处理成标准格式。中间数据构造是按照不同特征提取的方法构建中间数据集,比如二分类特征提取方法要求数据集为标准的宽表数据格式。
  • 特征设计和生成是根据不同特征提取方法设计并生成特征,比如 RFM 特征方法中需要选取特征汇总的不同维度、汇总的对象以及汇总的计算方式。
  • 特征评估是对特征效果进行分析,选择效果好、稳定性高的特征。
  • 特征回溯是对历史数据进行回测,通常服务于特征提取后的建模场景。
  • 特征监控是对已经进入使用阶段的特征进行持续监控以确保有效性和稳定性。
  • 特征平台是为了支撑特征从开发到应用的工具平台。通常特征平台包括特征挖掘模块、特征计算模块和特征管理模块。

2.3 模型算法层详解

模型算法层是智能风控的核心,是构成智能风控建筑的主体结构。通过模型算法层实现智能化的预测评估。风控中典型的场景就是预测风险,计算发生风险的概率,再复杂的算法本质上还是可以理解为概率问题。风控场景中的模型有很多种类,这些都是根据业务场景来决定的。金融风控场景中我们构建模型计算评分来预测用户的欺诈概率、违约概率、贷中风险发生的概率、贷后催收回款的概率。在营销场景中我们构建模型来判断营销成交转化的概率、识别作弊的概率。在内容风控场景中构建模型来判定内容违规的概率。

模型是机器学习算法构建的结果。为了构建模型我们可以选择的算法是多种多样的,新的算法也在不断产生和更新迭代。风控领域常用的算法包括基础算法如逻辑回归算法、决策树算法等。集成学习算法包括随机森林、xgboost 等。深度学习算法包括神经网络、图神经网络等等。

算法和场景虽然不同,但是构建模型的流程也是基本相似的。可以划分为如下几个步骤:

  • 问题定义是对业务场景的问题进行明确和界定。
  • 样本定义及划分是选择合适的样本定义标签,选择可用的特征范围。
  • 模型架构设计是确定算法,确定模型结构。
  • 数据准备与 EDA 是对样本数据进行整理探索性分析。检查样本的可靠性。
  • 特征选择是从大量的被选特征当中选择效果好和覆盖率高的特征。
  • 模型训练与评估是完成模型训练并评估模型效果,此过程可以循环迭代多次。
  • 模型监控是在模型应用之后持续的监控,确保模型的有效性和稳定性。

模型平台是支持模型管理的工具。通常模型平台包括自动建模功能模块、模型计算功能模块、模型管理功能模块。

2.4 决策应用层详解

决策应用层是整个智能风控体系的最后环节。这一层针对业务场景,基于特征和模型结果制定决策方案,对最终的业务决策和流程产生影响。

策略环节通常需要设计一套决策流程,在流程中的每一个环节设置决策规则。这些规则包括直接使用特征制定的规则和基于模型制定的规则。通过规则实现业务流程的通过或者拒绝、差异化的分流等动作。在金融风控贷前场景中,通常的决策包括欺诈识别、信用风险识别以及其他一些准入拦截。对于通过的客户在进行差异化的审核操作、差异化的授信额度决策、差异化的定价政策等等。在策略制定的过程中,可以选择多种的决策算法进行支持的,包括决策树,异常点检测等等算法来支持我们制定决策规则,用最优化的算法来支持我们进行最优化决策点的选择。

风控策略制定中最常见的就是进行风控规则策略的制定通常的流程如下:

  • 识别业务场景中常见的风险点;
  • 选择合适的分析样本;
  • 基于历史数据选择算法生成规则;
  • 对规则的有效性和稳定性进行评估;
  • 设计规则测试的方案;
  • 通常进行 AB 实验来验证规则的效果
  • 对规则的有效性和稳定性进行持续监控;

决策引擎是支持策略部署执行的一个工具。决策引擎通常包括规则配置、决策流的配置、审批管理等功能模块。

三、智能风控平台交互逻辑

企业在风控体系搭建的初期,不一定会有标准化的平台工具来支持。但是随着企业智能风控体系的这个发展和成熟,更加高效的方式还是去建立每个功能模块的平台化工具。

智能风控体系中几个关键平台工具之间的交互关系如上图所示:

  • 数据平台主要是为特征平台提供数据的输入,同时,它也支持各类样本数据、分析数据的提取。
  • 特征平台主要是为模型平台和决策引擎提供特征计算和输入。
  • 模型平台主要是为决策引擎提供模型计算结果的输入。
  • 决策引擎主要是基于特征平台和模型平台的结果进行决策,几个工具平台之间的相互依赖和配合,形成了智能风控全流程的一个闭环。

四、发展趋势展望

智能风控技术发展到今天,各种机器学习算法层出不穷。但是这些技术发展和其他新鲜事物是一样的,会从高速发展逐步进入稳定期。这个阶段新的技术不会有明显的颠覆性,更多的是在原有的基础上进行一定的改良。那么现在智能风控技术目前就处于这样一个阶段,但是在应用场景上随着智能风控技术的持续发展和应用场景的不断创新探索,智能风控会越来越深入到每一个业务场景的每一个环节。传统的通过人工完成的大部分工作都可以被智能风控技术所替代。不论是从风控识别的效率还是效果上,这类场景智能技术都比人工更好。但是另一方面,在一些特殊的复杂度较高的情况下,还是需要一些进行人工补充的,尤其是在数据量较少、新的风险模式变化不确定性又非常大的领域还是有人工发挥的余地。智能风控会占据大多数的通用场景,人工是趋于在一些细分领域或者小众的场景继续发挥价值。

关于智能风控体系,我在《智能风控实践指南:从模型特征到决策》的书里面也有更多的一些介绍,有兴趣的朋友可以参考。

参考文献

  • DataFunTalk:https://zhuanlan.zhihu.com/p/606786916

Malware Classification With Machine Learning Enhanced by Windows Kernel Emulation

论文:http://i.blackhat.com/USA-22/Thursday/US-22-Trizna-Malware-Classification-with-machine-learning.pdf

项目:https://github.com/dtrizna/quo.vadis

作者:Dmitrijs Trizna

我们提出了一种混合机器学习架构,该架构同时使用多个深度学习模型来分析Windows可移植可执行文件的上下文和行为特征,并根据元模型的决策生成最终预测。当代机器学习Windows恶意软件分类器中的检测启发式通常基于样本的静态属性,因为通过虚拟化进行的动态分析对于大量样本是具有挑战性的。为了克服这一限制,我们采用了一种Windows内核仿真,它允许以最小的时间和计算成本跨大型语料库获取行为模式。我们与一家安全供应商合作,收集了超过10万个类似于当代威胁场景的野生样本,其中包含执行时应用程序的原始PE文件和文件路径。获取的数据集至少比行为恶意软件分析相关工作中报告的数据集大十倍。训练数据集中的文件由专业威胁情报团队使用手动和自动逆向工程工具进行标记。我们通过在获得训练集三个月后收集样本外测试集来估计混合分类器的操作效用。我们报告了一种改进的检测率,高于当前最先进模型的能力,特别是在低误报要求下。此外,我们还发现了元模型在验证和测试集中识别恶意活动的能力,即使没有一个单独的模型表达足够的信心来将样本标记为恶意。我们得出结论,元模型可以从不同分析技术产生的表示组合中学习恶意样本的典型模式。此外,我们公开发布预先训练的模型和仿真报告的非命名数据集。

因此实现了与虚拟化相比的高分析速率。由于数据异构性,我们考虑使用多个单独的预训练模块和元模型的组合解决方案,而不是构建具有端到端可训练架构的单个特征向量。该架构允许通过仅重新训练元模型,以最小的努力扩展决策启发式的模块性。在本出版物的范围内,混合ML体系结构的评估依赖于三种不同的分析技术

缺乏出版物人工制品是任何研究中一个臭名昭著的缺陷,并导致了科学的再现性危机。因此,我们披露了源代码和预训练的PyTorch[19]和scikit learn[25]模型,并为我们的模型提供了类似scikit learn[20]的API,遵循机器学习对象广泛采用的接口。据我们所知,我们是安全研究社区中第一个发布基于(a)上下文、(b)静态和(c)PE文件动态属性的单一决策启发的模型。

模型训练三个月后,我们收集了一个样本外数据集。我们承认,与任何单独的方法能力相比,基于软件混合表示的恶意软件分类可以提高检测性能,降低针对恶意逻辑不断演变的误报率

仿真器不需要调动成熟的操作系统操作,因为它们允许以合理的速度获取大量遥测数据,而不需要虚拟化基础设施。因此,利用仿真器作为ML模型的遥测源进行动态恶意软件分析研究很有前景,但尚未普遍采用。据我们所知,Athiwaratkun和Stokes在2017年首次报告了系统调用收集的仿真器利用率[4]。他们的模型类似于自然语言处理(NLP)中使用的递归方案。Agrawal等人[2]进一步发展了这项工作,他们提出了一种类似的架构,用于在仿真器的帮助下获取的任意长API调用序列。Mandiant的数据科学团队通过基于仿真的动态分析进行了有前景的研究。具体而言,Li等人[16]提供了一个扩展摘要,报告了仿真器[18]在与我们的架构类似的混合分析中的使用情况

基于仿真的行为分析工作的稀疏性是由于它们的局限性。仿真是在模拟器运行的操作系统之上的抽象,不会与硬件发生直接交互。理论上,完美的仿真器可以欺骗任何系统调用背后的逻辑。尽管如此,像Windows N这样的内核并没有集成大量的功能,从而实现了难以置信的一对一复制。我们在第3.2节中报告了与相关的基于虚拟化的工作数据集的详细错误率和数据多样性比较。根据经验证据,我们认为现代Windows内核仿真在ML恶意软件检测器中具有巨大潜力。仿真报告生成丰富多样的遥测,绕过静态分析限制。它包含可执行文件调用的一系列内核API调用,并描述对文件或注册表项的操作以及尝试的网络通信。

例如,我们在训练和验证数据集报告中获取了2822个唯一的API调用。与相关工作数据集相比,这种行为的异构性明显更高-Athiwaratkun和Stokes[4]总共有114个独特的API调用,Kolosnjaji等人[14]报告了60个独特的API调用,Yen等人[33]有286个不同的API调用。Rosenberg等人[23]有314个单独的API调用。由于独特调用的数量与样本数量正相关,因此我们的数据集的较大容量可以部分地描述这种观察。然而,我们强调这是仿真技术效率的证据。仿真报告生成丰富多样的遥测数据,其质量相当于用于动态分析目的的沙箱。

三、数据集

本工作中提出的混合解决方案的功能基于输入数据,包括(a)适用于动态分析的武装PE文件和(b)上下文文件路径信息。获取上下文数据的必要性导致无法利用公共数据收集,因为对于每个数据样本,我们都需要拥有原始PE字节和文件路径数据。

据我们所知,所有已知数据集均未提供文件执行时具有文件路径值的PE样本的上下文信息。例如,Kyadige和Rudd等人[15]依赖专有的Sophos威胁情报源,不公开发布其数据集。上下文数据的私有性质是可以理解的,因为这种遥测将包含敏感组件,如个人计算机上的目录。

因此,我们与一家未公开的安全供应商合作,收集了大量数据集,其中包含原始PE文件和来自个人客户系统的样本文件路径,类似于最新的威胁场景。根据所有客户接受的隐私政策处理数据。因此,我们不会公开发布文件路径和原始PE数据集。敏感数据组件(如用户名或自定义环境变量)来自预处理阶段的遥测,在模型参数或仿真报告中没有相似之处。

3.1 数据集结构

我们分两次收集数据集。第一部分构成了我们分析的基础,包括98966个样本,329GB的原始PE字节。80%的语料库被用作固定的训练集,20%形成样本内验证集。我们使用这些数据对模型进行预训练,并研究我们的混合解决方案配置。

第二次数据集采集会议发生在三个月后,从27500个样本(约100GB的数据)形成了样本外测试集。该语料库用于评估混合模型的实际效用,并研究模型在进化的恶意景观上的行为。

数据集中的PE文件由专业威胁情报团队标记,利用恶意软件分析师操作的手动和自动逆向工程工具。数据集涵盖七个恶意软件家族和benignware,详细分布参数如表1所示。除“干净”外,所有标签均表示恶意文件。因此,我们收集了相对更多的“干净”样本,以平衡数据集中的恶意和良性标签。

由于大多数恶意软件被编译为x86二进制文件,因此我们关注32位(x86)图像,并有意跳过64位(x64)图像的集合,以保持数据集的同质性和标签平衡。此外,恶意软件作者更喜欢x86二进制文件,因为Microsoft向后兼容性允许在64位系统上执行32位二进制文件,但反之亦然。数据集由可执行文件(.exe)组成,我们有意省略库PE文件(.dll)。

3.2 样本评估

表1中表示的所有示例都是用Windows内核仿真器处理的。我们使用Mandiant根据MI T许可证发布并积极维护的Speakeasy[18]基于Python的仿真器。我们测试中使用的Speakeasy版本是1.5.9。它依赖于QEMU[6]CPU仿真框架。我们获得了108204个成功的仿真报告,每个报告的平均运行时间为12.23秒,仿真了来自训练和验证集的90857个样本,以及测试集中的17347个样本。

不幸的是,一些示例模拟是错误的,主要是由于写入汇编指令的无效内存读取。然而,模拟错误的另一个常见原因是调用了不受支持的API函数或反调试技术。图1显示了不同恶意软件系列的错误率。

据推测,模拟数据集的一个潜在缺点可能是,与沙箱中实时执行样本相比,其相对稀疏。然而,经验证据表明,我们的数据集比使用全Windows系统虚拟化执行类似数据采集的其他组报告的数据更为多样。例如,我们在训练和验证数据集报告中获得2822个唯一的API调用。与相关工作数据集相比,这种行为的异构性明显更高-Athiwaratkun和Stokes[4]总共有114个独特的API调用,Kolosnjaji等人[14]报告了60个独特的API调用,Yen等人[33]有286个不同的API调用。Rosenberg等人[23]有314个单独的API调用。这种观察部分可以通过我们数据集的更大容量来描述,因为唯一调用的数量与样本数量正相关。然而,我们强调这是仿真技术效率的证据。仿真报告生成丰富多样的遥测数据,其质量相当于用于动态分析目的的沙箱。

四、系统结构

image-20220918180837521

图2显示了混合模型体系结构的总体概述𝜙, 它们被“融合”在一起,由元模型生成最终决策𝜓. 三种早期融合模型𝜙 是:

  • file-path 1D convolutional neural network (CNN), 𝜙𝑓𝑝
  • emulated API call sequence 1D CNN, 𝜙𝑎𝑝𝑖
  • FFNN model processing Ember feature vector, 𝜙𝑒𝑚𝑏

每个子模型从输入数据获取的128维表示向量。此外,所有三个模型的输出连接在一起形成384维向量。因此,给定输入样本𝑥, 由原始PE(字节)及其文件路径(字符串)组成,早期融合过程统称为:

image-20220918180145232

中间向量𝜙 (𝑥) 传递给元模型𝜓, 其产生最终预测:

image-20220918180255048

所有早期融合网络都是单独预训练的,在第4.3节中详细定义了模型配置和训练过程。我们想强调,构建具有多个单独预训练组件的模块化系统而不是构建单个端到端可训练架构的决策是经过深思熟虑的。首先,Yang等人[32]表明,具有高概率的复合神经网络优于单个预训练组件的性能。

「 然而,主要原因是通过仅重新训练元模型,扩展具有互补模块的混合决策启发式的巨大潜力」。恶意活动分类问题依赖于原始PE字节以外的高度异构的信息源,这种体系结构保留了添加依赖于系统日志记录的启发式的能力。在本次发布之时,我们已经合并了文件路径信息,例如可以从Sysmon2遥测中获取。然而,可以进一步提取Sysmon数据或Speakeasy报告中的知识。

4.1 API 调用处理

Json_normalize:json to pandas

为了获取API调用序列的数值,我们根据可变词汇表大小选择最常见的调用𝑉 . 保留的API调用是标签编码的,不属于词汇表的调用将替换为专用标签。使用填充标签将最终序列截断或填充到固定长度𝑁.

image-20220918181408143

表2显示了数据集多样性和各自模型性能背后的统计数据。尽管100个最常见的调用在一个数据集中包含95%以上的API调用,但实验表明该模型仍然受益于相对较大的词汇表大小值,因此我们选择𝑉 = 600用于我们的最终配置。这种现象可以通过每个样本的API调用分布来解释。具有数百个调用的冗长可执行文件会影响系统调用频率,而具有适度API序列的可执行文件则执行更独特的函数组合。

4.2 路径处理

路径预处理的第一部分包括路径规范化,因为文件路径语义的某些部分具有与通过深度学习模型进行的安全分析无关的可变性。如果使用通用命名约定(UNC)格式,则包括特定的驱动器号或网络位置,以及单个用户名。因此,在规范化过程中,我们为这些路径组件引入了通用占位符,如下所示:

[drive][user]\04-ca\8853.vbs [drive][user].tmp [net]2021.xlsm

此外,有必要分析Windows环境变量,使其类似于实际的文件路径,而不是用作变量名的环境别名。因此,我们构建了一个由大约30个环境变量组成的变量映射,这些变量表示系统上的特定路径,并在当代和传统Windows系统中使用。变量映射的一些示例如下所示:

r"%systemdrive%": r"[drive]", r"%systemroot%": r"[drive]", r"%userprofile%": r"[drive][user]"

分别使用100和150个最频繁的UTF-8字节。频率阈值以下的罕见字符将被丢弃,并由单个专用标签替换。

4.3 早期融合模型架构

如第3节所述,我们不能依赖于公开发布的恶意软件集合,因为该模型在执行时需要文件路径形式的上下文信息,而这些信息不是公开的。因此,与现有研究相比,为了保持评估模型性能的能力,我们只能依赖其他研究小组发布的带有预训练参数的恶意软件分类模型,并进一步评估我们数据集上的模型。不幸的是,没有任何混合或动态分析出版物[14、17、23、27、33]提供这样的伪影。

幸运的是,多个静态分析出版物伴随着代码库形式的工件[3,21,24]。例如,可以直接使用Ember LightGBM[12]模型,该模型是在Endgame3于2019年发布的Ember数据集[3]上预训练的。然而,我们不将该模型包括在我们的复合解决方案中,因为决策树模型不学习元模型可以使用的表示,只提供标量形式的最终预测。我们仍然依赖Ember特征提取方案[3],但使用Rudd等人[24]发布的FFNN,分别具有三个隐藏层或512、512和128个隐藏神经元,均使用ELU[9]非线性,具有层归一化[5]和丢失率[30]𝑝 = 0.05。我们在来自Ember训练集[3]的600k个特征向量和来自我们训练集的72k个样本上重新训练了200个周期的FFNN。

「 文件路径和API调用序列的分析可以被表述为相关的优化问题,即一维(1D)序列的分类 」。我们在受Kyadige和Rudd等人[15]影响的两种模型中使用了类似的神经结构,即嵌入层,具有用于表示提取的一维卷积神经网络(CNN)和完全连接的神经网络学习分类器功能。我们知道,有多种选择可以用交替结构(如递归神经网络(RNN)[8,10])来建模序列分类问题。然而,如API调用序列分类的相关工作所示,两种模型体系结构都报告了类似的性能[14,23],但表明1D CNN的计算要求明显降低[34]。

编码输入向量𝑥 定长𝑁 为嵌入层提供尺寸𝐻 词汇量𝑉 . 这些参数受到超参数优化的影响。通过验证集上的超参数优化获得的文件路径模型的最佳值为:输入向量𝑥𝑓𝑝 长𝑁 = 100,嵌入维数𝐻 = 64、词汇量𝑉 = 150.模拟API调用序列模型的相应值为:输入向量𝑥𝑒𝑚 长𝑁 = 150,嵌入尺寸𝐻 = 96和词汇量𝑉 = 600.文件路径模型的词汇表由最常见的UTF-8字节形成,对于API调用序列模型,选择最常见的系统调用两个词汇表都有两个用于填充和稀有字符的标签「 嵌入层的输出被传递到四个单独的1D 卷积层 」,内核大小为2、3、4和5个字符,输出通道的数量𝐶 = 128.带较低𝐶 价值模型表现不佳。例如𝐶 = 64文件路径的模块验证集F1分数低至0.962,而𝐶 ∈ {100,128,160}得分在0.966左右。

所有四个卷积层的输出连接到大小为 4×𝐶 并传递到具有四个隐藏层的FFNN,其中包含1024、512、256和128个神经元。FFNN的隐藏层使用整流线性单元(ReLU)[1]激活。最后一层使用S形激活。在ReLU激活之前,将批量归一化[11]应用于FFNN的隐藏层。此外,为了防止过度装配,使用 𝑝 = 0.5的速率。

使用二进制交叉熵损失函数拟合所有早期融合网络:

image-20220918183415081

𝜙 (𝑥; 𝜃) 表示由深度学习模型给定参数近似的函数𝜃, 和𝑦 ∈ {0,1}是地面真相标签。使用Adam优化器[13]进行优化,学习率为0.001,批量大小为1024个样本。我们使用PyTorch[19]深度学习库构建了一维卷积网络、EMBER FFNN和训练例程

4.4 元模型

早期融合模型的输出𝜙 (𝑥) 用于训练元模型𝜓. 评估了三种不同的架构类型,使用scikit学习库[20]实现了逻辑回归和FFNN,并基于xgboost[7]实现了梯度提升决策树分类器

自元模型𝜓 执行相对复杂的非线性映射 [0,1]^384→ [0,1],基于表3中的性能指标,我们得出结论,融合的分类表面不平滑,并呈现了利用所有三种特征提取方法的表示进行最终决策的组合,而逻辑回归等简单模型无法学习。我们选择具有384、128、64和16个神经元的四层FFNN作为最终评估的元模型,因为它具有接近最佳的分数。

image-20220918183736944

五、实验结果

实验表明,同时利用静态、动态和上下文信息的检测率明显高于单个模型的性能,特别是在低误报要求下。这种需求通常表达为安全行业中的机器学习解决方案。不符合低误报需求的解决方案通常不允许为人类分析师生成警报[22]。图3显示了样本外测试集给定固定假阳性率(FPR)的检测率(%)。

在100000个案例中,在FPR仅为100个错误分类的情况下设置警报阈值,Ember FFNN、filepath和仿真模型的个体模型检测率分别为56.86%、33.31%和33.89%。 然而,通过结合从所有三种处理技术中学习到的表示,混合解决方案可以从训练三个月后收集的测试集中的所有样本中正确分类86.28%。

令人惊讶的观察结果产生了文件路径和仿真模型。两种模型各自表现相对较差,尤其是与余烬FFNN相比。这一观察结果背后的一个潜在解释是由原始ember出版物[3]中的600k个特征向量组成的ember FFNN训练集。这种训练语料库比我们的100k样本更好地概括了“真实”恶意PE分布,反映了特定时间窗口中的威胁情况。

然而,在低误报要求下,仅文件路径和仿真模型的组合,忽略静态分析,优于在更广泛的数据集上训练的最先进的余烬特征提取方案,在10000个样本中的一个样本的FPR下,检测率为77.36%对55.86%。

此外,将这两种模型结合在一起会导致检测率高于单个模型的累积能力,从而更加突出了混合元模型相对于狭义解决方案的优势。例如,虽然单个文件路径和仿真模型在105个错误警报的FPR中仅检测到33.31%和10.24%的样本,但它们的组合产生了77.36%的检测率。

这一观察结果适用于从不同系统和不同时间框架收集的样本内验证和样本外测试集,使我们能够得出结论,这是具有元模型的混合检测启发式的一般属性,而不是特定数据集的伪影。对于文件路径、仿真和组合启发式,在105种情况下,给定一次错误分类的样本内验证集的值分别为34.46%、13.52%和97.25%

这一观察结果可以得出结论,元模型可以学习不同分析技术产生的恶意样本表示外组合的典型模式,例如组合特定的API调用序列和Trizna文件路径n-gram。这些表示中的每一个单独产生的证据都不足以将样本归类为恶意,因为它也发生在良性应用中。因此,只有当良性和恶意样本都被标记时,检测才会解除假阳性要求。然而,来自文件路径和API调用的表示的组合允许元模型在384维空间中构建决策边界以隔离此类情况,从而产生超过40%的检测率。

因此,我们看到,静态、动态和上下文数据的综合利用解决了独立方法的弱点,允许最小化FPR和假阴性率(FNR)。 表4中报告了所有集合的F1得分、精确度、召回率、精确度和AUC得分,元模型决策阈值为0.98,类似于FPR≈ 验证集为0.25%。虽然样本

内验证集的报告结果允许得出模型几乎没有过度拟合的结论,但我们仍然观察到样本外测试集F1和AUC得分下降了≈ 4.− 4.5%. 尽管恶意软件家族的比例相同,但检测分数仍会下降,我们认为这种现象的因果关系源自恶意逻辑的进化本质。

六、结论

我们已经证明,ML算法受益于混合分析,从而提高了性能,特别是在低误报要求下。我们确实报告了基于余烬特征向量[3]的当前最先进的恶意软件建模方案的异常性能,该方案报告的检测率明显高于单独的文件路径或仿真模型,如图3所示。然而,将余烬模型与文件路径或模拟或两种模型相结合,可以显著提高检测能力,在某些情况下,如低误报要求,几乎30%。

此外,我们报告说,混合解决方案可以检测恶意样本,即使没有一个单独的组件表示足够的信心来将输入分类为恶意。例如,对于100000个错误分类案例的FPR,单个文件路径和仿真模型仅检测到33.31%和10.24%的样本。它们的组合产生77.36%的检测率,如果两个模型一起使用但独立使用,则检测能力提高了40%以上。

我们得出结论,元模型可以从不同分析技术产生的表示组合中学习恶意样本的典型模式。此外,这一结论得到了数据集大小的支持,数据集大小明显大于行为恶意软件分析的相关工作。

我们认为,动态和语境分析的积极特征可以进一步扩展。虽然我们用API调用序列表示系统上的PE行为,但并非所有可执行功能都是通过API调用表示的。==额外的可见性源对于最小化模型决策启发式中的模糊性可能至关重要,我们认为扩展组合解决方案的模块性是一个有前途的研究方向。我们的分析中省略了大部分仿真遥测。==

我们公开发布了108204个样本的模拟报告,并期望在这方面进一步开展工作。文件系统和注册表修改、网络连接和内存分配可能为检测提供关键信息。我们解决方案的架构允许我们通过只重新训练元模型的参数,以最小的努力扩展决策启发式的模块性。

代码结构

data/

  • adversarial.emulated

  • emulation.dataset

  • path.dataset

  • pe.dataset

  • train_val_test_sets

evaluation/【评估】

img/【图片】

modules/【模型保存】

preprocessing/【数据预处理】

  • arrary

utils/

models.py 【模型结构】【CompositeClassifier 类】

example.py 【代码样例】

阿里妈妈-“广告主套利”风控技术分享

一、背景介绍

1.1 套利的影响

由于平台的有效总曝光有限,当套利广告主占据了高质量位置后,真实点击率和成交率低于模型预期,平台产生的总点击、总成交就会相应减少,从而导致该资源位的收入降低。这里我们统一使用千次展现收益(Revenue Per Mile,以下简称:RPM)来代表地价。即套利会在一定程度上使对应位置的RPM降低

由于现阶段ctr、cvr预估模型有在线更新机制,从长周期来看是具备自愈能力的。但模型的更新有一段时间延迟,在每个模型更新的空窗期内,广告主不会恰好都补单补量至模型的预期水平。最终就导致了模型不断被欺骗又修复的过程。如下图所示。

图片

因此,在与排序模型的博弈中,广告主周期性地实现着套利。随着online模型更新的时效性提升,套利空间在不断被压缩。也导致广告主更加倾向于高频、低程度地进行操作,识别难度进一步增大。

1.2 困难与挑战

由于作弊手法千变万化真实标签难以界定作弊Ground-Truth未知,风控场景很难通过监督训练等手段获得通用解。具体到广告主套利上,我们还面临着一些其他的问题。

1.2.1 众包人工流量的识别

相比于以往的无效流量甄别,众包人工流量往往更加贴近平常用户的行为。难度远超以往的爬虫、机械性攻击。高并发的广告场景,对识别的精度和召回,要求都非常高。而且即使是刷手,也会产出正常的流量。

如何精细化区分刷手的每次行为以及是否是受雇佣的,是极具挑战的一个课题。

1.2.2 精度难评价

由于众包人工流量会有一定比例的成交,不符合0转化假设。高效评价流量识别模型的精度和召回,是很困难的。此外,套利广告主检测本身也需要找到合适的假设,没有客观高效的评价方式,难以指导模型迭代。

1.2.3 区分主动与被动

存在任务流量的广告主,不仅是主动套利的,还有一部分是被其他广告主雇佣的刷手误伤、或者受到人工攻击消耗的。如何无监督、高精度、高召回、鲁棒地挖掘广告主的主动性,也是我们需要重点关注的。

二、方案概览

在正式开始介绍方案之前,我们针对1.3节的问题,分别介绍一下思路。为了解决1.3中提到的3个问题,我们针对广告主套利开发了一套同样集感知洞察处置、评价于一体的检测框架,其架构图如下图所示。框架理念可以参考这篇文章:《阿里妈妈流量反作弊算法实践》

图片
  1. 众包流量识别,分别由统计基线、行为序列、图关系3个模型一起召回,并使用黑话模型的产出评价标准,指导模型迭代;
  2. 感知部分,通过对RPM的鲁棒预估,计算广告主实际产生的RPM与平台预期的diff,从而召回RPM偏低的广告主;
  3. 通过洞察分析平台对列表中的实例进行分析,获取新模式认知的同时进行标注作为验证样本;
  4. 将认知抽象为策略或模型(当前为双模型因果推断),产出了套利广告主名单用于区分“主动”与“被动”,最后在下游中进行分类处置

三、众包流量识别

在介绍感知、洞察、处置体系之前,我们首先对挖掘套利广告主的基础能力进行介绍——众包人工流量识别。该流量不满足0成交转化,模型的迭代和监控保障,也显然不能依赖低效的人工抽检。首先需要寻找一种可以批量校验、又和处置严格正交的评价方法。整体方案如下图所示。

图片

3.1 黑话模型

考虑到直通车场景下,刷手需要高频地进行搜索,从而定位到自己的任务目标,不可能所有的内容都手敲。风控工程团队基于淘宝的搜索记录,对历史文本信息进行了系统地整合,使得黑话凝聚在标准化的文本库中。

3.1.1 特性

黑搜索的文本信息采集,受设备型号、手滑粘贴、误点搜索的影响,导致产出上并不稳定,所以没有直接用于召回。但同设备类型、应用、天维度同比是有意义的,可以作为精度和召回的评价指标。因此,我们构造了和众包流量构成强相关、但召回有限的黑话模型。

典型的黑话如下所示:

  • "3️⃣看图👆拍苐一个,π下多少仮溃"

根据我们的分析显示,黑话具有以下特点:1)文字语序混乱;2)拼音、中、英文混输;3)表情、形近字替代;4)快速迭代、分析低效。这涉及到多种语义的还原,并且新的变种不断产生。基于文本出发的黑话模型开发非常困难。

3.1.2 用户维度、关键词与树

综合考虑各个方案的性价比后,我们尝试不完全依赖文本,而是从用户出发,2段式、半监督地召回黑话。

  1. 首先构造用户维度的处罚特征,无监督的召回候选人群集;
  2. 再以变换后的关键词为目标,天维度更新Cart回归树模型,选择额外80%召回的动态阈值,得到离线样本库;
图片
3.1.3 Bert提效

我们基于黑话样本库与大盘可信白样本,训练了基于Bert的2分类模型,用于对全量文本进行打分,从而减轻黑话样本库覆盖度不足的影响。使用召回人群多日黑话得分均值,来作为众包流量识别的精度指数,指导模型快速迭代,并持续以黑话精度作为模型的监控指标。

3.2 统计基线

众包人工流量虽然更难以识别,但是我们始终相信黑灰产用户是不可能完美隐藏的。我们从用户行为角度设计了一系列的异常检测方案。首先调研了黑灰产平台。发现用户需要通过一系列行为来完成任务的交付(考虑到攻防属性,暂不透出具体行为)。据此我们构造了本质、鲁棒性的统计特征,结合统计异常检测模型,产出了套利识别的基线。在《阿里妈妈流量反作弊算法实践》中介绍过,本质特征更有助于挖掘异常;如用“偏离对应人群的分布的程度”,代替“绝对数量”。

由于统计特征的粒度偏粗,导致我们并不能区分刷手当天的哪部分流量属于众包,哪部分属于正常流量。所以还需要更加精细化的识别能力建设。

3.3 行为序列

近期我们一直在尝试,使用更为细粒度的原始行为序列良好的序列设计、以及合理的辅助任务,训练大规模无监督预训练模型。Zero-shot在下游进行应用,实现精细化地捕捉众包流量特点。当前行为序列研究的整体框架如下图所示。

图片
3.3.1 序列信息

首先是通用的行为选择。为了更好地适用于大多数场景,我们只选择了搜索和点击两个行为,并辅以行为的属性与时间信息,共同组成行为序列。

为了方便刻画行为模式,我们使用下划线拼接行为和属性,构造类似于NLP中单词概念的行为元素,形式为:()()()_()。例如:clk_true_3_2 表示为 一次点击 & 是广告点击 & 商品属性为编号3 & 距离上一次行为时间间隔属于分箱编号2。

由于刷手需要接单大量的任务,产品类型、任务目的可能各不相同。通过合理的session划分,将不同的基础行为进行聚合,可以使信息更加凝聚。

结合搜索广告的特点,我们限制一个session必须以搜索开始,时间间隔在一定范围内都同属于一个session。

3.3.2 辅助任务设计

为了使模型学习到session排列的模式,我们使用Transformer结构 + Cut-paste任务,对序列整体进行表示。

Cut-paste算法是用于图像异常检测的一种辅助任务。通过对原始图片进行随机地局部剪裁,再随机粘贴至新的位置,原位置以黑色阴影覆盖(向量值均为0),从而获得大量的负样本,并以大量的数据增强产生正样本。然后通过原图与新图的二分类任务,促使模型学习到剪裁边缘的连续性。算法内容详见[1]。

类似地,根据刷手行为特点,对序列进行Cut-paste衍生,得到大量的样本用于二分类任务,从而得到完整序列表示。最终的预训练网络结构如下所示。

图片

3.3.3 异常检测

根据序列表示的结果,我们得到了N维的Embedding向量:

  1. 将序列Embedding与COPOD模型结合,产出Embedding每个维度偏离分布的异常分(1);
  2. 固定基础行为的Embedding层权重,二次训练Seq2Seq模型,将重构误差产出异常分(2);

将2个方案计算的异常分结合,得到下游任务的打分。

3.4 图关联挖掘

截止目前,我们通过统计基线 + 行为序列对众包人工流量进行了识别。在阿里妈妈广告场景下,这些流量会在受害者/套利者维度上呈现出聚集。且因为模型的评估依赖于人工抽检,为了保证精度符合预期,显然单体识别模型的精度与召回都会受限。

因此我们增加了基于图关联的召回。以统计基线为基础节点,用行为序列结果剪枝,最终通过半监督的GAT网络对行为稀疏、但访问宝贝和基础节点重合度高的人工众包流量进行扩召回。

图片

下图是2021年至今为止,最新挖掘的每日人工众包的设备数量趋势(具体数字已隐藏)。除大型节日外外,流量基本趋于稳定。相比于原始统计基线,组合模型可以精细定位到刷手与宝贝的对应关系,目前已额外新增30%的广告点击召回。

图片

四、套利感知

为了建立内部自驱循环的异常检测框架,感知系统是必备的。在《阿里妈妈流量反作弊算法实践》文章中我们介绍过:感知重召回,其理念是召回一切认知之外的异常。从作弊的结果(果性)出发,才能召回受害者可感知的全部流量。

在广告主套利场景下,受害者是平台。但广告主的手法各不相同,从结果上看,未必会成功。虽然都需要处置,但在感知角度,我们更关注那些成功套利的案例。因此,我们从RPM低于平台预期的广告主的流量出发,召回套利成功流量的超集

除了作为感知手段以外,估准RPM才能计算出该问题究竟为平台带来了多大影响。而且先找到一批RPM低于预期的广告主,才能用于最终,套利广告主名单的精度、召回评价。

4.1 评价方案

阿里妈妈-流量反作弊算法实践

不光要思考需要哪些技术能推动产品成熟,还要思考一个产品成熟的样本;

一、广告风控流程

下图是广告主投放内容与风控团队、下游业务团队的简易交互流程。广告素材通过内容风控审核后,即可以在线上进行展示。在展示期间,广告主可能会主动作弊、也可能受到其他广告主攻击。风控团队需要对无效流量进行过滤,保护广告主的利益,维护健康的广告投放环境。本文重点介绍在线展示期间,流量、淘客交易场景下的业务风险与算法体系。详细的解决方案在未来的文章中逐一介绍。

图片

离线无监督样本库:标签指导(误报率)对准实时进行修正;

二、无效流量

流量反作弊系统的核心能力就是清洗、过滤无效流量。但是无效流量并不等价于作弊流量。我们将这部分流量的定义分为2个层面:

1)低质量:重复点击计费策略、频率控制策略、剧烈波动策略等;

2)作弊:转化效果概率为0的流量;

作弊流量转化期望概率一定为0,比如爬虫产生的点击流量(重复traceid)。但后续实际频率为0的流量不一定是作弊。比如新商品累计1万点击后仍没有转化,只能说频率为0。不能直接断定为作弊流量。

常见的无效流量包括:

1)消耗竞争对手;

2)提升自身排名;

3)自然宝贝刷单误伤广告主;

4)非恶意无效流量。如下图所示,一名诚信投放的广告主,可能受到多种维度的影响。

网约车业务的冒转率可能受到哪些影响?

图片

2.1 消耗竞争对手

广告主在设置投放策略的时候,通常有预算限制。一些广告主,通过构造虚假流量,攻击其他广告主,消耗预算致使广告下架。如原定计划可以投放7日的广告内容,在第2天突然被完全消耗。这种情况下,很容易引起受害广告主的投诉,影响恶劣。

图片

2.2 提升自身排名

广告排名由出价和质量评分决定。一些广告主会雇佣黑产刷单,提高广告的转化率。通过低成本获得靠前的广告排名。这些作弊利益驱动属性也很强,比较容易被平台和相关广告主感知到。对平台的影响也较为恶劣。

2.3 自然宝贝刷单

一些广告主通过雇佣黑产提高店铺的成交数、好评数、加购收藏数等。刷手为了更好地隐藏自己,往往会装作“货比三家”,查看多个宝贝信息。该过程偶尔会误伤了广告展示宝贝。这种作弊对广告生态的影响比较弱。感知程度会偏低一些。此外,人工刷手往往伪装的更好,在流量甄别上难度比较大。

2.4 非恶意无效流量

除上述带有恶意的虚假流量。还有非恶意、非薅羊毛的无效流量需要被过滤。比如一些浏览器在打开淘宝首页时,会预加载所有的宝贝链接后续跳转网页。显然这些是无效流量。又比如,爬虫或浏览器劫持而产生的流量,不应该计入广告主的费用中。

2.5 淘客交易作弊

淘宝联盟是阿里妈妈平台给淘宝客推广者搭建的推广平台,在淘宝联盟后台可以完成取链、推广和提现等一系列操作。而淘客交易作弊,不满足作弊流量转化概率为0的假设。根据计费方式不同,常见的2种作弊形式为:1)流量劫持;2)黑灰产淘客拉新。

2.5.1 流量劫持

CPS计费下的主要作弊手法是流量劫持。常见的流量劫持有2种。第一种,是篡改记录用户流量来源,将其他淘宝客的拉新流量据为己有。广告主会明显感知到自然流量变少,拉新流量增加。第二种,是修改用户跳转链接,使得用户跳转到自己的宝贝页面。会导致用户在不知情的情况下购买了另一家店铺的商品。此时商家会在销量层面有一定感知。

2.5.2 黑灰产淘客拉新

CPA计费下的主要问题是虚假地址。常见的CPA通常发生在产品拉新中,如用户注册、用户下单...等。在一些淘宝客拉新场景中,需要拉新用户完成注册、下单等一系列流程。此时一些淘宝客通过批量注册,下单廉价商品来赚取拉新差价。

图片

2.6 下游任务影响

对于阿里妈妈来说,虚假流量不单影响着其他广告主的权益,同时影响着阿里生态的下游业务。搜索、推荐、广告等业务的收益,强依赖于其基于用户行为数据的在线学习。如:个性化推荐、点击率预估、流量分发、广告定价等。而当这些任务中混入虚假流量时,会对其真实线上的精度造成极大影响

虚假的无效流量对下游任务的影响;

三、算法实践

相比于其他正向业务,流量反作弊对于精度的要求尤其高。 多过滤导致平台收益减少、少过滤引起广告主投诉,破坏投放生态。而且业务场景对实时返款的诉求越来越强烈,同时作弊对抗升级,从集中式、大规模转向分布式、稀疏化攻击,识别难度增大。亟需基于高维异常检查的新系统能力。为此,我们建立了集异常主动感知、人工洞察分析、自动处置过滤、客观评价高效循环一体的风控系统。

 1、被动反馈case驱动、领域经验处置 --> 主动感知、洞察分析、标准化的处置体系、成熟的指标大盘

 2、领域经验驱动算法迭代 --> 数据驱动算法迭代

图片

3.1 感知

在历史的风控体系中,往往是Case驱动的。即遇到问题通过滞后的算法或策略迭代来覆盖风险。为了提前发现问题,尽可能减少投诉,净化投放环境,我们引入了感知。通过感知捕捉与常见分布不同的数据,输出异常列表。

我们将可感知异常流量分为:

  • 受害者可感知:业务本身可感知,冒转率,高峰期流量、营销流量不属于;
  • 平台可感知:接口安全(接入层、风控)、业务安全;
  • 实战攻防可感知
  • 假想攻防可感知
  • 算法挖掘可感知

感知是重召回的,但并不是单纯为了更多地召回现有风险,它设计的核心是去感知所有的“异常”。以2020年初为例,由于骑行政策的调整,售卖头盔商家的访问量显著偏高,连带着必然影响到点击率、转化率等一系列指标。这些异常是商铺可感知的,需要被我们捕捉到。但并不属于作弊流量。所以不会被流量反作弊系统所过滤。

图片

那感知究竟如何来做呢?以“点击流量反作弊”来说,作弊一定会导致点击量增加。如果可以预估出一个商品每天的点击数量。则超出该值的点击一定为作弊。因此流量反作弊感知的核心之一,就是如何在大盘召回率未知的情况下,精准预估正常流量值。这部分内容在后续文章中进行介绍。

接口画像:预估出一个接口每天的点击量, 因此流量反作弊感知的核心之一,就是如何在大盘召回率未知的情况下,精准预估正常流量值

3.2 洞察

为了确认感知到的异常流量哪些属于作弊,分析人员需要进行洞察分析 “洞察 ”的目的是从“感知”到的异常中将风险抽离出来,进而发现新的风险模式。我们将洞察分为:1)受害者洞察;2)攻击者洞察;3)套利漏洞洞察;4)流量实例洞察。

传统洞察需要人工挑选可疑特征(如停留时长、注册时长、ua、token_str),并与大盘好样本(正常业务曲线)进行比较。如下图。这就对领域经验有强依赖。而领域专家毕竟是少数。并且随着作弊越发高级,单一维度或少量维度下逐渐难以发现作弊。为此,我们引入了高维数据下的可视化洞察分析技术

图片

在洞察环节,首先需要对样本进行高度抽象表示。如何在高维数据中选择合适的子空间投影,是非常具有挑战性的课题。后续文章会展开介绍。确定合适的子空间后,除了和大盘比较,我们还引入了时间维度的分布同比,如下图所示。对于分布稳定的某个广告,3月6日降维图中突然出现明显不同的一簇(红圈内),很可能是新的异常模式。(图中“样本库”指最终被识别为作弊的流量,在3.3节进行介绍)

图片

洞察的难点在于,如何减轻未召回的作弊对正常分布的污染。比如上图中蓝色线条内部分可能也存在作弊,这时通过同比就无法发现异常。如何跳出既有认知去召回未知异常模式,以及非常棘手的冷启动问题,这些都是后续文章的重点内容。

3.3 处置

处置,指对风险进行处置。对于不同的风险实体、风险类型,会使用不同的处置方法。

3.3.1 流量反作弊的处置

所有的策略和模型都可以用标准的统计学习方法来描述;

传统的算法迭代模式,是根据洞察分析的结果,指导规则、统计模型为主的无监督过滤系统。对领域经验比较依赖,而且效率低下、难以形成沉淀。因此,对于流量反作弊的处置,我们部署了实时流式、小时批处理双重防线。其逻辑如下图所示。

图片

实时有监督过滤系统,依赖数据维度的多样性(场景要区分端、app、小程序和web的数据维度不同)+ 低代价特征 + 高效的模型结构;

在线实时过滤系统,综合了无监督、半监督的特征工程,以及监督的集成(Ensemble)异常检测器。相比于单条策略的独立决策,集成的容错性更高(召回能力下降,适用于精度高的场景)。例如,PC端反作弊策略依赖于网页采集的前端行为、鼠标点击行为等,当数据采集出错时,过渡依赖某一策略将导致大面积误差。

同时, 我们会尽可能使用更触及作弊本质、更具有鲁棒性的特征。和正向业务不同,我们不会在特征设计层面,过分聚焦于正样本的区分度。比如绝大部分爬虫流量都是PC端带来的,“是否是PC”就是一个极强的特征。但一旦这种作弊没有继续攻击,模型的效果就大打折扣。因此更多会使用各个维度上计算与Normal分布的偏差、到Normal簇的距离...等。

实时过滤系统基本可以解决90%的问题。为了更好地拟合高级作弊,我们又引入了小时级别过滤系统,使用开销更大的特征与更复杂的模型。而且广告结算支持事后返款,可以使用小时级结果对实时流模型进行修正,用于结算与展示。当然,处置能力最终收敛于实时流过滤系统,会是我们更长期的追求。

小时级的离线策略的意义:能否对准实时修正,

此外,在线实时过滤系统可以让新同学快速上手迭代其中的组件,将不同同学的产出解耦,更客观的评价业务贡献。

3.3.2 淘客交易反作弊的处置

对于过滤系统判定作弊的淘客,我们首先冻结其佣金。搜集证据后下达处罚结果。并通过“预估佣金”、“异常特征”来对待处罚淘客进行分级处置。

图片

此外,传统的处罚机制为月结,从媒体开始作弊到下达处罚有一定延迟。一方面不利于及时管控风险,另一方面会导致非主观恶意作弊淘客的强烈反弹,为提升管控的时效,减少淘客的损失,同时提升用户体验,我们在原有的月结机制基础上,增加周/天的处罚机制

3.4 评价

拦截率和攻击量:相当于对已知攻击的覆盖能力;

准确率和召回率:相当于对全量攻击的防御能力;

对于整个流量反作弊系统,我们有4部分需要评价:

  • 在线有监督精度;
  • 在线有监督召回;
  • 离线无监督精度;
  • 离线无监督召回;

因为没有Ground Truth,为了客观评价在线有监督过滤系统的精度召回,我们建立了离线无监督样本库。使用离线无监督样本库的最终结果,作为在线有监督系统的Groud truth,就可以评估其分类效果。但也引入了后面2部分无监督评价问题。

3.4.1 有监督过滤系统的评价

在线与离线2者的关系如下图所示。基于纯无监督的挖掘体系,我们的底线是消灭3.2.1中提到的5种可感知异常流量中的作弊流量,终局则是消灭不可感知的作弊流量。 通过天级别的事后信息引入,以无监督的方式对线上实时系统过滤结果进行修正,并将标签用于后续在线监督系统学习。

图片

基于现有标签的AUC、KS、MAX-F1...等指标,会过分高估风控模型效果。例如,实时模型的AUC很容易高于0.99。然而这其中绝大多数的样本都来自于简单的爬虫、或傻瓜式疯狂点击,如下图离散分布的红点。在更高级的作弊上AUC可能不足0.8,如下图红圈中的样本。为了更客观地评价模型,我们引入了“样本库分级”,将“简单作弊”与“高级作弊”区分开。并通过结构化采样构造封闭评测集,指导模型迭代。

图片

3.4.2 无监督精准评价

无监督系统的精准与召回评价一直是业内的难题。传统的评价方法是通过数据抽样,由专家进行标注进行评估。效率低下且非常主观。为此我们借助淘系生态数据,为无监督系统引入了自动化评价体系。基于无效流量转化概率为0的假设,通过统计推断,得到模型在指定置信度下的精度指数下限。基于区间估计的精度推断方法,在后续专题文章中进行介绍。

3.4.3 无监督召回评价

真实环境下的召回评价,是难以定量的。除了大盘抽样巡检外,由于引入了完备的感知、洞察体系。将所有的异常流量,均归纳至一个风险池。无论何时有需要对流量进行处置(临时止血或迭代模型),我们都可以迅速定位到问题根源。于是将安全感最大化。

四、总 结

高维数据下的异常检测、大规模图学习、机器学习可解释性、数据可视化方法等,都是我们的重点研究方向。在我们看来,风控可能是当前机器学习领域,对算法鲁棒性和解释性要求最高、精度要求最极致、系统规模和时效性挑战最大、最能用钱衡量的工业级业务。这就需要我们具备卓越的业务数据洞察能力、工程架构能力,让研究成果转换成坚实的工业级解决方案。

本文重点介绍了我们在流量反作弊场景下所遇到的问题,以及相应的解决方案。希望通过这篇文章,可以让读者理解我们在流量反作弊领域所遇到的问题,以及解决问题的思路。

当前思路总结

  • 离线无监督样本库:标签指导(误报率)对准实时进行修正;

  • 网约车业务的冒转率可能受到哪些影响?

  • 虚假的无效流量对下游任务的影响;

  •  1、被动反馈case驱动、领域经验处置 --> 主动感知、洞察分析、标准化的处置体系、成熟的指标大盘

     2、领域经验驱动算法迭代 --> 数据驱动算法迭代

  • 接口画像:预估出一个接口每天的点击量, 因此流量反作弊感知的核心之一,就是如何在大盘召回率未知的情况下,精准预估正常流量值

  • 所有的策略和模型都可以用标准的统计学习方法来描述;

  • 实时有监督过滤系统,依赖数据维度的多样性(场景要区分端、app、小程序和web的数据维度不同)+ 低代价特征 + 高效的模型结构;