
人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载本指南围绕 google-research 仓库中的ara_optimization模块展开介绍如何针对 Privacy Sandbox Attribution Reporting APIARA的汇总报告Summary Reports机制通过优化贡献预算contribution budget与裁剪阈值clipping threshold两类超参数来降低聚合查询的误差。读完本文你将掌握完整的实验运行流程run_experiment调用范式、合成数据集生成、误差指标配置并理解优化目标函数、基线算法与底层噪声模型的实现原理。一、项目背景与定位ara_optimization是 Google Research 公开发布的研究代码对应论文Hidayet Aksu, Badih Ghazi, Pritish Kamath, Ravi Kumar, Pasin Manurangsi, Adam Sealfon, Avinash Varadarajan.Summary Reports Optimization in the Privacy Sandbox Attribution Reporting API.注意仓库在 ara_optimization/README.md 中明确声明 This is not an officially supported Google product非 Google 官方支持产品。该模块解决的核心问题是在 ARA 汇总报告中广告技术adtech平台需要对切片slice即按某些维度分组的用户群体聚合统计值value与计数count等查询结果同时满足差分隐私约束。贡献预算和裁剪阈值的选择直接影响噪声大小本仓库提供了一套基于训练集自动调优这两组超参数、并在独立测试集上评估误差的完整工具链。二、环境准备与依赖安装2.1 依赖清单代码基于 Python 生态实现核心依赖为 Numpy、Scipy 与 Pandas详见 ara_optimization/requirements.txtabsl-py1.0.0 numpy~1.21 pandas1.5.3 scipy~1.7其中absl用于命令行参数与日志absl.loggingnumpy/pandas承担数据处理scipy提供优化器scipy.optimize.minimize与统计分布scipy.stats.dlaplace即离散拉普拉斯分布用于隐私噪声建模。2.2 安装方式在仓库根目录下执行pip install -r requirements.txt三、在自定义数据集上运行 ARA 汇总报告优化3.1 数据结构约定run_experiment的输入是三个 Pandas DataFrame 列描述理解它们的含义是正确使用的前提参数类型含义df_slice_columnslist[str]用于定义切片分组聚合的列名列表df_value_columnslist[str]用于定义被查询变量的列名列表df_count_columnstr包含计数变量的列名3.2 标准调用范式README 给出的完整调用方式如下来自 ara_optimization/README.mddataset_rmsre_metrics util.rmsre_tau_error_metrics(df_train, df_value_columns [df_count_column]) result run_experiment.run_experiment(df_train, df_test, df_slice_columns, df_value_columns, df_count_column, dataset_rmsre_metrics)其中df_train与df_test分别是训练集与测试集 DataFrame。run_experiment在 ara_optimization/run_experiment.py 中定义其完整签名含默认值为run_experiment(train_df, eval_df, slice_columns, value_columns, count_column, error_metric, privacy_budgets(1, 2, 4, 8, 16, 32, 64), baseline_quantiles(95, 99))参数含义如下train_df/eval_df训练数据集用于调超参数与独立评估数据集用于报告误差二者必须分开否则会产生信息泄露式的高估error_metric针对每个 value 列和 count 列使用的误差指标列表privacy_budgets需要评估的整体隐私预算ε列表默认从 1 递增到 642 的幂次baseline_quantiles基线裁剪阈值采用的分位数百分比默认同时评估 95 分位与 99 分位两条基线。返回值结构一个字典键为Optimization、95、99等分别对应优化算法与各分位数基线值为每个隐私预算下的误差列表。例如result[Optimization][2]即优化算法在总隐私预算为 4下标 2 对应privacy_budgets第 3 个元素时的误差。四、误差指标配置RMSRE_tau 与 RMSE4.1 指标定义误差指标定义在 ara_optimization/metrics.pyRMSRE_tau阈值化均方根相对误差RMSRETauMetric(tau)误差计算为((bias^2 variance) / true_value.clip(lowertau)^2)^0.5。tau是阈值用于避免真实值过小时相对误差爆炸对聚合结果中大量接近 0 的切片尤其重要RMSE均方根误差RMSEMetric()误差计算为(bias^2 variance)^0.5适合绝对值误差敏感的场景。两者的平均误差聚合方式均为 L2 范数平均np.linalg.norm(errors) / sqrt(len)继承自L2Metric基类见 metrics.py。ErrorMetric是所有指标的抽象基类接口为error(bias, variance, true_value)与avg_error(errors)。4.2 自动选择 tau 参数util.rmsre_tau_error_metrics见 ara_optimization/util.py为给定数据集自动确定合适的 taudef rmsre_tau_error_metrics(df, value_columns, mult_factor5.0): error_metrics [] for col in value_columns: tau mult_factor * df[col].median() error_metrics.append(metrics.RMSRETauMetric(tau)) error_metrics.append(metrics.RMSRETauMetric(mult_factor)) return error_metrics其策略是每个 value 列的 tau 取该列中位数的mult_factor默认 5.0倍count 列追加在value_columns末尾的 tau 直接取mult_factor本身。这样既避免手工指定 tau又能让指标对数据尺度自适应。五、优化原理贡献预算与裁剪阈值5.1 被优化的两组超参数ARA 机制的误差主要由两部分构成见 ara_optimization/dataset_evaluation.py 的方差计算裁剪阈值clipping threshold将每个 value 列截断到[0, threshold]区间引入截断偏差bias 真实值 − 裁剪后值贡献预算contribution budget决定离散化粒度randomized_snap_row将值舍入到contribution_cap 1个均匀分布的水平之一影响噪声方差——近似模式下方差为2 * clip_threshold^2 / privacy_budget^2精确模式下为(clip_threshold / contribution_budget)^2 * Var(dlaplace(...))。阈值越小偏差越大但噪声越小贡献预算分配越均匀则各列误差越均衡二者存在此消彼长的权衡这正是优化空间所在。5.2 优化算法optimize_ara核心入口在 ara_optimization/optimize_ara.pydef optimize_ara(train_dataset, eval_dataset, error_metrics, total_privacy_budget): objective ARAObjective(train_dataset, error_metrics, total_privacy_budget) initial_point objective.initial_value() ... result optimize.minimize(objective.evaluate_objective, x0initial_point, boundsbounds)流程为构建目标函数ARAObjectiveoptimize_ara.py其中evaluate_objective调用dataset.evaluate_objective(..., approximate_objectiveTrue)使用平滑近似目标以利于数值优化初始化贡献预算在各 value 列间均分裁剪阈值取训练集每列的 99% 分位数。注意优化器内部裁剪阈值以log2形式存储_combine_hyperparameters中np.log2(clipping_thresholds)解码时2**y还原便于在正数域外自由搜索约束与搜索超参数数量为2 * num_features每列一个贡献预算 一个裁剪阈值边界为[1e-10, inf)调用scipy.optimize.minimize进行无梯度/有界数值优化若优化失败会通过absl.logging输出警告见 optimize_ara.py精确评估用优化出的超参数在eval_dataset上以approximate_objectiveFalse进行精确误差评估考虑离散化与随机舍入返回ConfigurationError包含贡献预算、裁剪阈值与测试集误差。5.3 基线算法baselinebaselineoptimize_ara.py提供两类对比基线贡献预算在所有查询value 列 count 列间均分裁剪阈值取训练集的某个固定分位数如 95% 或 99%count 列的裁剪阈值为 1并以separate_count_estimationTrue将 count 作为独立特征处理。run_experiment默认同时输出 95/99 分位两条基线的误差曲线用于与优化算法对比。5.4 ARADataset 内部评估链路ara_optimization/dataset_evaluation.py 中的ARADataset类封装了整个误差评估过程默认总贡献预算DEFAULT_TOTAL_CONTRIBUTION_BUDGET 2**16可通过构造函数参数覆盖_rescale_contribution_budgets近似模式下按比例缩放贡献预算使之和等于总预算精确模式下调用util.snap_contribution_bounds将预算舍入为严格正整数且总和等于总预算见 util.py_clip_and_group_data近似模式仅做clip(upper...)截断后分组求和精确模式额外做util.randomized_snap_row离散化随机舍入到最近整数见 util.py_compute_column_error/_compute_inferred_count_error分别计算各列误差与由其他列推断的 count 误差separate_count_estimationFalse时使用。六、生成与使用合成数据集6.1 一键生成命令README 提供的命令会生成 6 个 CSV 文件到./synthetic-datasets目录python -m ara_optimization.synthetic_data_exports入口脚本 ara_optimization/synthetic_data_exports.py 会生成三组带 train/test 划分的合成数据集每组对应论文中的一类场景数据集label关键参数数据规模特征criteorate_of_size_10.50,rate_of_size_20.0675, impression 维度[20, 10, 8, 2]模拟 Criteo 式大规模展示广告数据adtech_real_estaterate_of_size_10.51,rate_of_size_20.25, 维度[2, 90]模拟房地产广告值域经5000 * x放大adtech_travelrate_of_size_1≈0.4405,rate_of_size_20.20, 维度[90, 2]模拟旅游广告同样放大 5000 倍三者共享average_conversion_per_impression10每次曝光的平均转化数对应泊松分布参数 λ。命令行支持--seed参数控制随机种子默认 42且脚本内部调用np.random.seed(seed)保证结果可复现。生成的文件名格式为synthetic-counts_and_values-{label}-raw.csv表头为Impression_ID, Attributed_Key, Count, Value见 synthetic_dataset.py。6.2 合成数据生成原理合成数据生成逻辑位于 ara_optimization/synthetic_dataset.py遵循曝光→转化→价值三级流水线曝光侧分布_generate_slice_distribution_for_impressions用离散幂律分布power-law实现自论文 Power-law distributions in empirical data 的 D.6 近似方法生成各切片的曝光数幂律形状参数b由rate_of_size_1单转化切片占比与rate_of_size_2双转化切片占比通过b log2(rate_of_size_2 / rate_of_size_1)反推见 synthetic_dataset.py以对齐 NoiseLab 等隐私沙盒工具的经验数据形态转化侧分布每个切片的转化数由Poisson(λaverage_conversion_per_impression)采样再在转化侧各维度组合出的键之间均匀分配get_conversion_distribution_uniformly价值分布每次转化的 value 从对数正态分布采样其 μ/σ 由value_mean与value_mode众数换算得到get_mu_sigma见 synthetic_dataset.py。七、测试验证与复现检查仓库为每个核心模块都配备了单元测试可用于验证环境与理解语义ara_optimization/optimize_ara_test.py覆盖initial_value验证 99% 分位数初始化与 log2 编码、optimize_ara验证优化后误差与理论值(Var(dlaplace(1/2^16)) * 3 / 2^33)^0.5一致、baseline验证均分贡献预算 分位数裁剪的误差公式ara_optimization/metrics_test.py覆盖各误差指标计算ara_optimization/dataset_evaluation_test.py覆盖 ARADataset 的评估逻辑ara_optimization/util_test.py覆盖随机舍入与贡献预算快照等工具函数ara_optimization/synthetic_dataset_test.py覆盖合成数据生成。测试使用absl.testing.absltest可参考 optimize_ara_test.py 中构造最小 DataFrame单切片、单值列、单计数列的写法快速验证误差公式与隐私预算分配每个贡献预算份额对应的隐私预算为budget * total_privacy_budget / total_contribution_budget见 dataset_evaluation.py的数值一致性。八、目录速览与进一步阅读ara_optimization/ ├── README.md # 官方使用说明本指南依据 ├── requirements.txt # 依赖清单 ├── run_experiment.py # 实验编排入口 ├── optimize_ara.py # 超参数优化与基线算法 ├── dataset_evaluation.py # ARADataset 误差评估 ├── metrics.py # RMSRE_tau / RMSE 误差指标 ├── util.py # 随机舍入、预算快照、tau 选择等工具 ├── synthetic_dataset.py # 合成数据生成 ├── synthetic_data_exports.py # 一键导出命令入口 └── *_test.py # 各模块单元测试使用要点回顾先用pip install -r requirements.txt安装依赖用python -m ara_optimization.synthetic_data_exports生成或自行准备带 train/test 划分的数据按切片列 值列 计数列三元组组织 DataFrame调用util.rmsre_tau_error_metrics与run_experiment.run_experiment得到优化算法与基线算法在各隐私预算下的误差对比若需深入定制可从ARADataset的evaluate_objective与optimize_ara的ARAObjective入手调整total_contribution_budget、privacy_budgets、baseline_quantiles等参数。该代码库完整复现了论文中基于训练集优化 ARA 汇总报告超参数、在测试集上评估误差的完整方法链是理解 Privacy Sandbox 归因报告机制及其误差权衡的实用参考实现。赞分享人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载相关推荐Google Chrome Privacy Sandbox深入理解归因报告APIGoogle Chrome Privacy Sandbox深入理解归因报告API 概述 归因报告APIAttribution Reporting API是文档/教程技术博客Rucksack CSS最佳实践企业级CSS架构设计模式终极指南 Rucksack CSS最佳实践企业级CSS架构设计模式终极指南 Rucksack CSS是一款基于PostCSS构建的强大CSS工具包为企业级CSSGitHub Desktop中文汉化终极指南三步实现完美中文界面GitHub Desktop中文汉化终极指南三步实现完美中文界面 还在为GitHub Desktop的英文界面感到困扰吗每次进行Git操作时都要在英文菜单中桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考