type
status
date
slug
summary
tags
category
icon
password

引言:从图像描述到分子翻译

图像描述(Image Caption)是深度学习中一个经典任务——模型"看到"一张图片,然后生成描述这张图片内容的文字。这种技术在社交媒体、辅助技术等领域已有广泛应用。
今天想和大家分享我在一个类似但更专业领域的实践——分子翻译(Molecular Translation)。在这个任务中,我们需要构建模型将分子结构图像准确转换为标准化的文本表示——InChI(国际化学标识符)。这项技术对药物开发、材料科学和化学信息学具有重要意义,能够加速科研人员从历史文献中提取和数字化分子信息的过程。

BMS分子翻译任务简介

BMS(Bristol-Myers Squibb)分子翻译挑战是一个将分子结构图像转换为InChI文本表示的任务。InChI是一种标准化方式来表示分子结构,形如:
其中包含了版本信息、分子式和详细结构信息,这种表示法可以唯一确定一个分子结构。

解决方案概述

我采用了经典的编码器-解码器(Encoder-Decoder)架构来处理这个问题:
  1. 编码器:使用EfficientNet-V2-S提取分子图像的视觉特征
  1. 解码器:使用LSTM生成对应的InChI序列
  1. 训练策略:teacher forcing和交叉熵损失函数
整体流程是将图像输入编码器获取特征表示,然后解码器基于这些特征逐字符生成InChI字符串。

数据预处理

数据集结构

数据集包含分子图像和对应的InChI标签。通过分析,我发现InChI字符串可以分为三个主要部分:
首先对InChI字符串进行拆分,以便更好地理解数据:
这样处理后,可以更有针对性地分析不同部分的特点,比如分子式的长度分布、常见元素组合等。

图像处理

分子图像需要标准化处理才能输入神经网络。在实践中,我使用Albumentations库进行预处理:
值得一提的是,我没有使用过多的数据增强,因为分子结构图中的每个细节都可能影响最终的解释,不像自然图像可以接受更激进的变换。

字符级别的标记化

将InChI字符串转换为模型可处理的数字表示是关键步骤。考虑到InChI的特点,我采用了字符级别的标记化:
这种简单的标记化方法对于化学公式特别有效,因为每个字符(包括数字、大小写字母和符号)都具有特定的化学意义。

模型架构设计

编码器 (EfficientNet)

在尝试了几种不同的卷积神经网络后,我选择了EfficientNet-V2-S作为编码器backbone,它在参数效率和特征提取能力之间取得了很好的平衡:
输入图像经过编码器处理后,输出特征图的形状为[batch_size, 64, 512],其中64是空间位置数量(8×8=64),每个位置有512维特征。
在实践中我注意到,保持这种空间维度信息比简单地将特征压缩为一个向量更有效,因为分子结构中的空间关系非常重要。

解码器 (LSTM)

解码器的设计是这个项目的核心部分。初期我考虑过GRU和Transformer,但经过实验后发现LSTM在这个任务上表现更稳定:
解码器的工作流程分为训练和推理两个阶段:
训练阶段 (Teacher Forcing):
推理阶段 (自回归生成):
在实践中,我发现全局图像特征(通过平均池化得到)比保留空间维度信息的特征更适合这个任务,可能是因为分子结构的整体表示对于生成InChI更重要。

训练过程

优化策略

经过多次尝试,我选择了以下优化配置:
学习率是一个关键参数,我发现1e-4是一个比较合适的起始值。过高的学习率会导致训练不稳定,特别是在处理复杂的分子结构时;而过低的学习率会使训练过程过于缓慢。

训练循环

训练循环包括标准的训练和验证阶段:
训练过程中我遇到的主要挑战是内存管理。由于分子图像需要较高的分辨率才能保留细节,而且LSTM处理长序列也比较耗内存,所以在有限的GPU资源下需要谨慎设置批量大小。

模型评估与结果分析

评估指标

为了全面评估模型性能,我使用了多种指标:
  1. 平均编辑距离:预测序列与真实序列之间需要的编辑操作数
  1. 精确匹配准确率:预测序列完全匹配真实序列的比例
  1. BLEU分数:衡量预测序列与参考序列的n-gram重合度
  1. METEOR分数:考虑同义词和单词顺序的评估指标

实验结果分析

在验证集上,我的模型取得了以下性能:
  • 平均编辑距离: 1.27
  • 精确匹配准确率: 68.5%
  • BLEU-1: 0.923
  • METEOR: 0.941
这些结果表明模型能够相当准确地识别和转换大多数分子结构,但对于某些复杂情况仍有改进空间。
在错误分析中,我发现模型主要在以下情况下出现问题:
  1. 复杂支链结构:含有多个支链的分子结构识别准确率较低
  1. 罕见元素组合:数据集中不常见的元素组合(如含硼、锗等元素的分子)
  1. 低质量图像:部分图像中的键或原子标记不清晰

经验总结与优化方向

实践中的经验教训

  1. 数据质量至关重要:分子图像的质量和清晰度直接影响模型性能
  1. 平衡模型复杂度与训练效率:尝试了更复杂的架构(如基于Transformer的编码器-解码器),但在有限计算资源下难以有效训练
  1. 领域知识的价值:了解化学结构表示的基本规则有助于设计更合理的模型和评估策略

未来改进方向

  1. 引入注意力机制:实现空间注意力,让模型更精确地关注分子结构的关键部分
  1. 多任务学习:同时预测分子的其他属性(如SMILES表示、物理化学特性等)
  1. 采用更高效的编码器:探索如Swin Transformer等更现代的视觉backbone
  1. 集成规则约束:结合化学领域知识,对生成过程添加有效约束,确保输出符合化学规则

结语

分子翻译是一个融合计算机视觉和序列生成的有趣任务,它不仅具有学术研究价值,也有广阔的实际应用前景。通过这个项目,我深入理解了编码器-解码器架构在跨模态任务中的应用,以及如何针对特定领域数据进行模型优化。
希望这份经验分享能给正在研究类似问题的同学提供一些参考。如果有任何问题或建议,欢迎在评论区交流讨论!

参考文献与资源
  1. BMS Molecular Translation Challenge: https://www.kaggle.com/c/bms-molecular-translation
  1. InChI标准: https://iupac.org/who-we-are/divisions/division-details/inchi/
  1. 《Show, Attend and Tell》经典图像描述模型论文
  1. EfficientNet系列论文: https://arxiv.org/abs/1905.11946