免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Google Research aptamers_mlpd 学习模块深度指南:Binned/SuperBin 标签体系、LabeledTensor 轴与 TensorFlow 模型训练

Google Research aptamers_mlpd 学习模块深度指南:Binned/SuperBin 标签体系、LabeledTensor 轴与 TensorFlow 模型训练 Google Research aptamers_mlpd 学习模块深度指南Binned/SuperBin 标签体系、LabeledTensor 轴与 TensorFlow 模型训练【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research本指南聚焦于 Google Research 仓库aptamers_mlpd中 learning 子模块的模型训练体系核心围绕 aptamers_mlpd/learning/README.md 展开从 Binned分箱与 SuperBin超级分箱标签的定义与生成到基于 LabeledTensor 的带标签轴labeled axes约定再到train_feedforward的训练配置与论文级参数。读者完成后将掌握该模块的标签语义、张量轴组织方式并能复现论文中 Counts / Binned / SuperBin 三类模型的训练流程。一、模块定位从测序计数到亲和力模型aptamers_mlpd是 Google Research 发布的适配体aptamer机器学习项目整体代码分为四个阶段见 aptamers_mlpd/README.md数据预处理preprocess从原始 fastq 文件对出发产出序列 × 每个 PD 子实验计数的矩阵模型训练learning即本文主题输入预处理后的 SSTable 分折数据与元数据输出训练好的模型序列行走search利用训练好的模型在种子序列局部空间搜索高亲和力突变体数据分析/出图figures以 ipython notebook 复现论文图表。learning模块的入口是train_feedforward.py核心概念则集中在learning/README.md中定义的标签系统与轴axis约定。由于项目源自 Google 内部代码README 明确指出存在内部依赖共享代码无法在 Google 之外直接运行源码中的xxx均表示被遮蔽的内部路径或合作者名称因此本指南侧重讲解可移植的模型设计思想与配置语义。二、Binned 与 SuperBin 标签系统论文中分箱模型binned model基于**正珠分数positive bead fraction**为每条序列在每个子实验中赋予一个三元标签三元标签与分数区间的对应关系如下内容出自 learning/README.md标签正珠分数区间含义0[0, 0.1)低结合1[0.1, 0.9]中等结合2(0.9, 1.0]高结合PD 第 2 轮round 2的三个子实验分别被命名为low_3bins、med_3bins、high_3bins作为三个独立的训练目标target。SuperBin 标签的合成规则这三个 3-bins 标签随后被传入super_bin合并为一个 7 值标签规则如下super_bin 值判定条件-1模糊ambiguous0三个子实验全部为 01全部为 0仅low_3bins 12全部为 0除low_3bins 2或low_3bins 1 且med_3bins 13low_3bins 2med_3bins 14low_3bins 2、med_3bins 2或low_3bins 2、med_3bins 1、high_3bins 15low_3bins 2、med_3bins 2、high_3bins 16low_3bins 2、med_3bins 2、high_3bins 2其语义是按结合强度的单调递增顺序排序-1表示无法判定例如部分子实验数据缺失或矛盾0表示完全无结合数值越大代表序列在各轮、各亲和力等级下表现出越强的结合能力6为最强。这一离散化标签将原本连续的测序计数转换为可解释的结合等级降低了测序噪声对回归目标的影响。从 CSV 生成两种标签的可复现示例learning/create_binned_and_super_bin_labels.ipynb 提供了从论文数据 pd_clustered_input_data_manuscript.csv该文件由仓库对外提供README 中标注了 Google Cloud Storage 下载地址出发、一步到位生成 binned 与 super_bin 标签的 notebook便于验证标签逻辑。标签到亲和力映射的源码落点在 learning/config.py 中DEFAULT_AFFINITY_TARGET_MAPS为每个数据集定义了亲和力分子 → 训练目标输出名列表的映射aptitude_binned: { target: [low_3bins, med_3bins, high_3bins], }, aptitude_super_binned: { target: [super_bin], },这印证了 Binned 模型以low_3bins/med_3bins/high_3bins三个目标训练、SuperBin 模型以单一super_bin目标训练的配置方式。该映射同时服务于FullyObserved输出层在推断阶段的亲和力计算见下文第四节。论文中train_feedforward相应使用--affinity_target_mapaptitude_binned与--affinity_target_mapaptitude_super_binned。三、LabeledTensor 与轴axis约定模块使用 TensorFlow 1.15 的 contriblabeled_tensor库为张量维护有意义的轴名与轴标签。learning/README.md定义了六个共享轴对象轴名称轴标签来源与用途batch_axisbatch无一批训练/评估样本input_position_axisinput_position[0, 1, 2, ..., sequencing_length - 1]核酸距 5 端的整数偏移input_channel_axisinput_channel如[A,T,G,C]不使用二级结构特征时各输入特征对应的通道output_axisoutput每个物理测量/化验assay的名称训练或验证用的输出标签与selection_pb2.Experimentproto 中SequencingReads.name字段一致logit_axislogit取决于具体输出层模型前馈网络部分每个不同预测的标签target_axistargetoutput_axis的子集训练损失目标其中batch_axis、input_position_axis、input_channel_axis、output_axis由预处理例程 learning/data.py 中的create_input_and_outputs生成logit_axis与target_axis则由 learning/output_layers.py 中的输出层模型创建。轴体系在源码中的印证在 data.py 中SEQUENCE_ONE_HOT特征通过tf.one_hot(seq_indices, depth4)生成其通道轴标签为list(dna.DNA_BASES)即[A,T,G,C]对应 config.py 中ORDERED_BASES ATGC该碱基顺序同时须与custom_ops.cc保持一致SEQUENCE_KMER_COUNT特征经count_all_dna_kmers统计后用二项分布解析均值/标准差做标准化_kmer_mean_and_std其中n sequence_length 1 - kmer_size, p 1/4**kmer_size输出张量通过lt.pack(outputs, (output, output_names), axis_position1)打包为[batch_axis, output_axis]输出名依次为所有计数名、绑定阵列名与可选的额外输出名。在 output_layers.py 中FullyObserved输出层的logit_axis被设为lt.Axis(target, target_names additional_output)target_axis为lt.Axis(target, target_names)LatentAffinityoutput_layers.py的logit_axis则为lt.Axis(target, affinity_names additional_output)其中affinity_names来自实验 proto 中所有 target/background 分子名。值得注意的术语约定output_layers.py模块 docstring模块内 target 指被预测的测序计数池对应target轴而选择实验中的目标分子如 SELEX 用蛋白被称为 affinity molecule对应张量上的affinity轴可选的额外输出如最小自由能二级结构配分函数对应additional_output轴。三种输出层函数predict_counts/predict_affinity/predict_additional_output分别产生这三类预测。四、输出层与损失函数两种建模范式的源码解读learning/output_layers.py 把输出层 损失函数封装为AbstractOutputLayer其关键 API 包括average_loss_per_target训练用平均损失、loss_per_example_and_target评估脚本用逐样本损失、predict_counts/predict_affinity/predict_additional_output。输出层output_layer五选一常量说明FULLY_OBSERVED直接预测观测到的标准化/对数变换后的计数亲和力由最后两轮输出的均值计算LATENT_AFFINITY前馈网络输出直接作为适配体结合亲和力分数通过affinity_weights * selection_signs线性映射到各计数池LATENT_WITH_DEPS在 LatentAffinity 基础上加入上一轮观测计数作为先验prev_round_scaleLATENT_WITH_PRED_DEPS使用预测的上一轮计数而非观测计数LATENT_WITH_CROSS_DEPS额外加入亲和力 × 上一轮计数的交叉交互项更好地刻画上一轮出现且亲和力高的物理选择过程其中_get_selection_signsoutput_layers.py根据每个 round 的 target/background 浓度计算{1, -1, 0}符号矩阵用于约束权重方向LatentAffinity用abs(self.affinity_weights) * self.selection_signs保证符号约束。损失函数loss_name四选一与归一化常量说明SQUARED_ERROR平方误差论文 Counts/Binned/SuperBin 模型均采用CROSS_ENTROPYsigmoid 交叉熵针对二值化目标POISSON_LOSS泊松对数似然必须搭配loss_normSKIPZERO_TRUNCATED_POISSON_LOSS零截断泊松对数似然处理测序计数无 0 的物理约束同样要求loss_normSKIPnormalizer工厂函数output_layers.py支持四种归一化方式STANDARDIZE可选 log 变换后标准化统计量取自实验 proto 的mean_log_plus_one/std_dev_log_plus_one等、BINARIZE按阈值二值化、TOTAL_COUNTS按轮总深度归一化为比例、SKIP恒等。其中dependency_norm专门控制LATENT_WITH_*系列中上一轮计数依赖项的归一化——这也解释了论文 SuperBin 模型命令中出现的--dependency_normSKIP。五、运行训练playbook 实战指南learning/playbook.md详细说明了本地与集群两种训练方式。前置条件已由预处理管线将 FASTQ 转为 TF example proto且数据集已登记在 learning/config.py 中——若为新数据集需在INPUT_DATA_DIRS中加入数据路径并在DEFAULT_AFFINITY_TARGET_MAPS中加入计数到亲和力的映射也可直接用目录作为输入但定义数据集更方便。本地调试训练run learning/train_feedforward \ --save_basexxx \ --epochs2 \ --run_name$RUN_NAME \ --num_fc_layers1 \ --datasetaptitude其中RUN_NAME每次运行必须唯一用于生成 checkpoint 与结果保存路径例如export RUN_NAMExxx.debug0。--dataset可换成config.INPUT_DATA_DIRS中其他合法键或直接用--input_dir指定目录。epoch 与 eval 设置要点默认一个 epoch 完整遍历整个数据集大数据集建议用--epoch_size限制每个 epoch 的样本数经验法则约每小时报告一次训练/验证结果模型不会提前停止学习率也不退火必须运行满指定 epoch 数因此需要频繁查看报告以防欠训练或过训练--eval_size控制每轮评估的样本数默认最多 100 万设为 0 表示评估全量数据集评估基于打乱队列使用全量时每次评估会随机子采样本地拷贝数据后每个 epoch 在xxx数据集上约 2 分钟完成。run learning/train_feedforward \ --save_basexxx/train_feedforward/$USER \ --epochs2 \ --epoch_size1e6 \ --eval_size0 \ --run_name$RUN_NAME \ --num_fc_layers1 \ --datasetaptitude集群训练与超参搜索模块区分元参数meta-parameters/model choices与超参数hyper-parameters前者由人固定、不参与自动搜索如num_fc_layers、output_layer后者由 Vizier 在给定范围内取值如学习率、动量。典型做法是对每个元参数组合单独做一轮超参优化固定组合单任务--varsrun_group$RUN_NAME,output_layerLATENT_AFFINITY,loss_nameCROSS_ENTROPY,num_fc_layers2,num_conv_layers0多副本评估训练方差追加num_replicas20,hpconfignonlinearitytanh,learn_rate0.01,momentum0.9,dropouts[0.1,0.4,0.001]随机搜索默认 40 个元参数组合0–3 层全连接 × 5 种输出层 × 2 种损失--varsrun_group$RUN_NAME,num_replicas100,autotunetrue将启动 40×1004000 个训练任务随后人工分析超参结果。对应源码中_default_study_hyperparams与_get_studytrain_feedforward.py定义了默认超参nonlinearitytanh、learn_rate0.005、momentum0.9等及 Vizier 搜索空间如learn_rate取 0.0001–0.01 对数刻度、dropouts取 0.0–0.5 等。预测额外辅助特征--additional_output可附加预测配分函数等 1D 辅助特征多个特征用逗号分隔、整体加双引号合法特征名是learning/data.py中feature_tensors的键... --additional_outputpartition_function,boltzmann_probability实现上output_layers.py该 flag 以逗号切分后传入输出层额外输出与计数损失拼接在一起联合训练。六、论文模型的完整训练参数aptamers_mlpd/README.md提供了论文三种模型的train_feedforward参数与本文标签系统一一对应Counts 模型连续计数回归潜变量亲和力 配分函数辅助输出--affinity_target_mapaptitude --additional_outputpartition_function --epoch_interval_to_save_best5 --epoch_size200000 --epochs50 --input_featuresSEQUENCE_ONE_HOT,SEQUENCE_KMER_COUNT --loss_nameSQUARED_ERROR --loss_normSTANDARDIZE --max_strides1 --mbsz64 --num_conv_layers3 --num_fc_layers3 --output_layerLATENT_AFFINITY --preprocess_modePREPROCESS_SKIP_ALL_ZERO_COUNTS --target_namesALL_OUTPUTS --total_reads_defining_positive1000 --tuner_algorithmRANDOM_SEARCH --tuner_lossauc/true_top_1p --tuner_targetmeanBinned 模型三元分箱标签全观测输出层、无全连接隐藏层--affinity_target_mapaptitude_binned --additional_output --epoch_interval_to_save_best5 --epoch_size20000 --epochs50 --input_featuresSEQUENCE_ONE_HOT,SEQUENCE_KMER_COUNT --loss_nameSQUARED_ERROR --loss_normSKIP --max_strides1 --mbsz64 --num_conv_layers3 --num_fc_layers0 --output_layerFULLY_OBSERVED --preprocess_modePREPROCESS_ALL_COUNTS --target_namesALL_OUTPUTS --total_reads_defining_positive0 --tuner_algorithmRANDOM_SEARCH --tuner_lossauc/true_top_1p --tuner_targetmeanSuperBin 模型7 值超级分箱标签全观测输出层 3 层全连接--affinity_target_mapaptitude_super_binned --additional_output --dependency_normSKIP --epoch_interval_to_save_best5 --epoch_size20000 --epochs50 --input_featuresSEQUENCE_ONE_HOT,SEQUENCE_KMER_COUNT --loss_nameSQUARED_ERROR --loss_normSKIP --mbsz64 --num_conv_layers3 --num_fc_layers3 --output_layerFULLY_OBSERVED --preprocess_modePREPROCESS_ALL_COUNTS --target_namesALL_OUTPUTS --total_reads_defining_positive0 --tuner_algorithmRANDOM_SEARCH --tuner_lossauc/true_top_1p --tuner_targetmean关键参数语义速查依据 train_feedforward.py 的 flag 定义参数默认值说明dataset/input_dirNone二选一dataset必须是config.INPUT_DATA_DIRS的键val_fold0验证折数据共 5 折实践中以 fold0 为测试、其余为训练epochs/epoch_size/eval_size5 / 0 / 1e6训练轮数、每轮样本数0全量、评估样本上限0全量mbsz128训练小批量大小num_conv_layers/num_fc_layers0 / None卷积层与全连接层数output_layerFULLY_OBSERVED见第四节五种输出层loss_nameSQUARED_ERROR见第四节四种损失loss_norm/dependency_normSTANDARDIZE损失归一化 / 依赖项归一化方式input_featuresSEQUENCE_ONE_HOT合法值SEQUENCE_ONE_HOT、SEQUENCE_KMER_COUNT见data.py常量kmer_k_max4使用 kmer 特征时的最大 k-mer 长度preprocess_modePREPROCESS_SKIP_ALL_ZERO_COUNTS另含PREPROCESS_ALL_COUNTSBinned/SuperBin 用与PREPROCESS_INJECT_RANDOM_SEQUENCEStotal_reads_defining_positive0判定阳性所需跨条件的总 reads 数tuner_algorithm/tuner_loss/tuner_targetRANDOM_SEARCH/auc/true_top_1p/meanVizier 搜索算法、优化指标auc/true_top_1p或loss与目标epoch_interval_to_save_best5每隔多少 epoch 检查并保存当前最佳模型train_on_arrayTrue是否用结合阵列microarray数据训练亲和力损失additional_output逗号分隔的附加预测特征值得注意的是Counts 模型使用PREPROCESS_SKIP_ALL_ZERO_COUNTS跳过全零计数样本与total_reads_defining_positive1000而 Binned/SuperBin 使用PREPROCESS_ALL_COUNTS保留全部计数与total_reads_defining_positive0从 data.py 可以看出这两种 preprocess 模式对应不同的样本过滤逻辑。训练过程中FeedForwardTrainertrain_feedforward.py构建输入管线、前向网络与输出层损失并支持 momentum / adam 优化器。七、从训练到搜索模型的消费方训练好的模型在search模块的序列行走walking流程中被用于给突变体打分先选择种子序列实验种子 / 随机种子 / 用模型对大量随机序列打分挑出的高分为 ML 种子再迭代突变-打分-保留最优父序列。相关调用以learning/eval_feedforward.Inferer封装模型推断配合walkers.SamplingWalkersampling_limit1000、max_trials2000、n_parents10、min_distance1、max_distance4执行带步数控制的突变搜索。该流程印证了learning/README.md中output_axis标签与selection_pb2.Experimentproto 字段一致这一约定的实际用途——推断时需按物理测量名对齐预测输出。八、总结aptamers_mlpd/learning模块的技术要点可归纳为三句话Binned/SuperBin 标签将连续的测序计数离散为有物理含义的结合等级是 Binned/SuperBin 两类论文模型的目标定义基础LabeledTensor 轴体系batch/input_position/input_channel/output/logit/target让张量在预处理、前馈网络与输出层之间保持语义可追踪输出层 × 损失 × 归一化的三维配置空间FULLY_OBSERVEDvsLATENT_AFFINITY家族 × 四种损失 × 四种归一化支撑了论文中从连续计数到分箱标签的多种建模路线。结合 learning/playbook.md 的本地/集群运行方法与 train_feedforward.py 的完整参数表读者可以完整复现论文模型配置并将同样的标签化与轴组织思路迁移到其他高通量测序HTS亲和力建模任务中。【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表