Insights \u0026 Innovations

SchNet

SchNet是一种用于分子和材料的量子化学计算的深度学习模型,最初由德国的研究人员在2017年开发。它是一种基于图的神经网络,专门设计来处理三维分子结构中的原子间相互作用。SchNet的独特之处在于它使用了连续卷积操作,可以捕捉到原子之间复杂的距离依赖关系,从而能够预测分子的能量、力以及其他重要的化学性质。这种模型通过学习原子环境的表示来实现高精度的预测,而不依赖于任何人工定义的特征或先验的物理知识。SchNet已经在多种化学和材料科学任务中展现出了卓越的性能,成为了分子模拟领域的一种重要工具。 1.1 SchNet模型结构 SchNet的架构如图1所示,这是一个针对分子和材料建模而设计的深度学习网络。图中分为三个主要部分:架构总览、交互模块和滤波器生成网络。 1.架构总览 如图1左图所示,输入表示为\((Z_1,\cdots,Z_n)\)和\((r_1,\cdots,r_n)\),其中\(\mathbf{z}_{i}\)是原子类型(例如氢、氧、碳等)被编码成的一个one-hot编码的向量。这是基本的化学信息,对于识别不同原子的性质非常重要。\(r_{i}\)是每个原子在分子中的三维坐标,这些位置信息对于模型来说至关重要,因为它们直接决定了原子之间的距离和相互作用,这些都是决定分子性质的关键因素。 输入数据首先经过嵌入层(embedding),这是一个常见的深度学习技术,一般使用神经网络层将每个原子的one-hot节点特征向量转换成一个固定大小的连续特征向量。在这个例子中,每个原子经过神经网络层映射成的新特征向量的维度是64,即每个原子被映射为一个包含64个元素的向量。这个向量编码了原子的某些属性,可以在网络训练过程中进行学习和优化。接下来是多个交互层,每个层都旨在捕捉和更新原子之间的相互作用信息,得到更有效的原子特征向量表示。之后,一个原子级别的操作(atom-wise)对每个原子的特征进行转换。原子级别操作将对每个原子的特征向量独立地进行学习变换。这意味着网络在进行这些操作时,不会考虑原子之间的相互作用或原子的邻居,而是将注意力集中在单个原子的特征向量上。在实践中,这通常通过应用一个全连接层来实现。 Shifted softplus是一种激活函数,用于引入非线性,该激活函数定义为:\(\text{Shifted softplus}(x)=\ln(0.5e^x+0.5)\) 其函数图像如图2所示。 它是一个平滑的非线性函数,可以将非线性引入神经网络。Shifted Softplus类似于激活函数ReLU,但对于负输入值具有非零梯度。即使输入具有负值,也可以帮助网络继续学习,且在x=0的位置过度的更加平滑。值得注意的是,Shifted Softplus 在处理几何数据时往往比ReLU更受欢迎,主要原因有下面几个: (1)平滑的梯度:Shifted Softplus 函数在整个定义域中都有一个平滑的导数。这意味着梯度不会突然变为零(如ReLU在负输入时的表现),从而避免了神经网络在训练过程中的梯度消失问题。在几何结构的数据中,原子或节点的特征可能涉及复杂的相互作用和细微的变化,平滑的梯度允许模型更细致地调整其参数以捕获这些特征。 (2)非饱和性:Shifted Softplus是一个非饱和激活函数,这意味着它的输出不会在较大的正输入值时饱和到一个固定值(与Sigmoid或Tanh不同)。非饱和性有助于减轻训练过程中的梯度饱和问题,提高网络在深层结构中的信息流动。 […]

SchNet Read More »

Graph Attention Network(GAT)

接下来介绍图注意力网络GAT,GAT可以有两种运算方式,一种被称为全局注意力(Global Graph Attention),顾名思义,就是每一个顶点都对于图上任意顶点都进行Attention运算。这样做的优点是完全不依赖于图的结构,即不依赖图的邻接矩阵,对于Inductive任务无压力。缺点也很明显:首先,丢掉了图结构的特征。其次,当图数据规模很大的时候,运算面临着高昂的成本。第二种被称为掩码图注意力机制(Mask Graph Attention),每个节点的Attention计算仅限于其邻接节点(即邻接矩阵所定义的直接连接)。这样做保留了图的结构特性,并利用了局部邻域信息。与全局注意力相比,掩码图注意力机制大大降低了计算成本,因为每个节点只与其直接邻居进行交互,而不是图中的所有节点。这种方式有效地利用了图的拓扑结构,可以捕捉到节点之间的局部关系,这对于许多图数据分析任务是非常有价值的。值得注意的是,虽然在掩码图注意力机制的GAT中用到了邻接矩阵,但是并不像GCN一样是利用全部的邻接矩阵信息,而是仅利用邻接矩阵查询某节点的邻居是谁。因此可以来处理Inductive任务。换句话说,GAT中节点可以通过注意力权重动态地选择其信息的重要来源,即它的邻居。这些权重是由模型通过学习自动确定的,并不依赖于预先定义的结构。这一点区别于GCN,后者使用的是固定的邻接矩阵加自环的归一化形式来确定节点之间信息传递的权重。 接下来主要讲解GAT中的 Attention机制。类似于Transformer中的注意力机制,GAT的计算也分为两步:计算注意力系数(Attention Coefficient)和加权求和(Aggregate)进行特征重要程度的重分配。对于顶点i,逐个计算它的邻居们(\(j\in N_{i}\))和它的注意力系数\(e_{ij}=\alpha([Wh_i\parallel Wh_j]),j\in\mathcal{N}_i\),具体流程如图1所示。 在图1中\(h_{i}^{l}\)是节点i的特征向量,\({h_j^l}\)是的节点i所有邻居的特征向量的集合,W是一个共享参数,通过一个单层的神经网络层来实现。\([\cdot||\cdot]\)代表对节点i,j经过神经网络层W变换后的特征进行拼接操作(Concat)。最后通过\(\alpha\)把拼接后的高维特征映射到一个实数上,也是通过一个单层的神经网络层来实现。显然学习节点i,j之间的相关性系数,就是通过可学习的神经网络层的参数W和\(\alpha\)映射完成的。有了相关系数,再对其进行Softmax归一化操作即可得到注意力系数\(\alpha_{ij}\)。至于加权求和的实现也很简单,根据计算好的注意力系数,把特征加权求和聚合(Aggregate)一下。即: \(h_i’=\sigma(\sum_{j\in\mathcal{N}_i}\alpha_{ij}Wh_j)\) \(h_i^{\prime}\)就是GAT 输出的对于每个节点i的新特征,这个新特征的向量表示融合了邻域信息,\(\sigma(\cdot)\)是激活函数。最后,与Transformer一样,GAT也可以用多头注意力机制来进化增强: \(h’_i(K)=\|_{k=1}^K\sigma(\sum_{j\in\mathcal{N}_i}\alpha_{ij}^kW^kh_j)\) 其中K是注意力机制的头数,每个头都会维护更新自己的参数,计算得到自己的结果,\(||_{k-1}^K\)表示将所有头的计算结果进行拼接(Concat)得到最后更新好的新节点向量。多头注意力机制也可以理解成用了集成学习的方法,就像卷积中,也要靠大量的卷积核才能有比较好的特征提取效果一样。最后通过一个示例来复习一下GAT的计算过程,图数据如图2所示。 计算注意力系数的两个神经网络层的参数分别是W和\(\alpha\),假设其初始化的值为W=[1,1],\(\alpha\)=[1,1,1,1]。注意,这些参数都是可学习的,随着网络的训练而更新。首先,计算注意力系数\(e_{ij}=\alpha(Wh_i,Wh_j)\),以节点1为例,与其它节点的相关性系数为: \(\begin{aligned}&e_{12}=\alpha\cdot[0.1,0.2,0.2,0.2]=0.7 \\&e_{13}=\alpha\cdot[0.1,0.2,0.25,0.2]=0.75 \\&e_{14}=0

Graph Attention Network(GAT) Read More »

Graph Sample and Aggregate Network(GraphSAGE)

相比GCN,GraphSAGE可以处理Inductive类型的任务。Inductive任务的关键在于设计能够良好泛化到未见过的图或节点上的模型。其挑战在于模型需要能够处理图的结构和特征在训练集和测试集之间可能有显著差异的情况。因此,适用于Inductive任务的GNN模型在设计时,应该侧重于学习能够代表单个节点的通用表示,而不是依赖于整个图的结构。这意味着模型应该能够从节点的局部邻域信息中学习其表示,而不是从整个图的全局结构中学习,GCN利用整个邻接矩阵这一做法就违反了这一点。GraphSAGE对此则进行了改进,更新节点信息的方式就不依赖于图的全局结构。具体来说,其更新过程主要分三步: (1)聚合邻居节点的信息,聚合函数有三种,将在下文展开解释; (2)将聚合后的信息与自身的节点信息进行拼接,进行特征的融合; (3)送入神经网络模型中进行映射,得到更新后的节点信息。 例如:图数据如图1所示,现在使用GraphSAGE对节点1进行更新。 节点1特征向量的更新步骤如下三步: (1)聚合邻居节点:\(h_{\mathcal{N}(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)\) (2)拼接自身信息:\(h_1^1\leftarrow\mathrm{CONCAT}(h_1^0,h_{\mathcal N(1)}^0)\) (3)经过神经网络映射:\(h_1^1\leftarrow\sigma(W^1\cdot\mathrm{CONCAT}(h_1^0,h_{N(1)}^0))\) 假设步骤1中聚合函数AGGREGATE是Mean函数,则代数得: \(h_{N(1)}^1\leftarrow\mathrm{AGGREGATE}(h_3^0,h_4^0,h_5^0,h_6^0)=\mathrm{Mean}([0.3,0.4],[0.2,0.2],[0.7,0.8],[0.5,0.6])\) 另外,在这个计算流程中有两个地方需要额外注意。第一,GraphSAGE在聚合某节点邻居信息的时候,并不是聚合全部的邻居,而是聚合K个邻居,K是一个超参数。举例,在图1中,若K等于3,则在聚合节点1的周围邻居时,随机从节点3、4、5、6中选择3个进行聚合。若K等于5,则除了选择节点1的周围4个邻居以外,再重复从这4个邻居中抽样一个节点。这样做的好处是,当图数据非常庞大时,选取某节点的全部邻居做聚合是非常耗时耗力的,若只选择其中的K个邻居,可以更快的进行计算。超参数K本质上是计算精度和计算速度之间的一种权衡。 第二个需要注意的是GraphSAGE定义了三种不同的聚合函数: \(\begin{aligned}&(1) \mathrm{Mean:}\quad AGG=\sum_{u\in N(\nu)}\frac{h_{u}^{(l)}}{\mid N(\nu)\mid} \leftarrow\\&(2)

Graph Sample and Aggregate Network(GraphSAGE) Read More »

Graph Convolutional Network(GCN)

先来看一下之前讲解的朴素图神经网络,如图1所示。 图1左上角方框部分可以看作图神经网络的初始状态。以1号节点为例,在图神经网络中,信息的传递是先汇聚一号节点的邻居节点信息,得到汇聚后的新向量,这个向量可以看作图神经网络第一层的输入信息\(H^{(l)}\)。然后\(H^{(l)}\) 经过一个 MLP 的映射, 得到一个新的输出向量\(H^{(l+1)}\) , 这个向量则作为第二层图神经网络的输入信息, 依次类推, 可以定义出一个多层的图神经网络。层与层之间的信息传递公式可以写作: \(H^{(l+1)}=\sigma(H^{(l)}W^{(l)})\) 而图卷积神经网络的计算公式则为: \(H^{l+1}=\sigma(\tilde{D}^{-\frac12}\tilde{AD}^{-\frac12}H(l)W(l))\) 两者最主要的区别就是图卷积神经网络比图神经网络多了一个\(\tilde{\boldsymbol{D}}^{-\frac12}\tilde{\boldsymbol{AD}}^{-\frac12}\)。其中,\(\tilde{A}=A+I_N\), \(A\) 就是图的邻接矩阵,\(I_{N}\)是一个全一的对角矩阵,即: \(\begin{aligned}&\boldsymbol{A}=\begin{pmatrix}0.&1.&1.&0.\\1.&0.&1.&0.\\1.&1.&0.&1.\\0.&0.&1.&0.\end{pmatrix}&\boldsymbol{I}_N=\begin{pmatrix}1.&0.&0.&0.\\0.&1.&0.&0.\\0.&0.&1.&0.\\0.&0.&0.&1.\end{pmatrix}\\&\tilde{\boldsymbol{A}}=\boldsymbol{A}+\boldsymbol{I}_N=\begin{pmatrix}1.&1.&1.&0.\\1.&1.&1.&0.\\1.&1.&1.&1.\\0.&0.&1.&1.\end{pmatrix}\end{aligned}\) 邻接矩阵 \(A\)表示的是节点与节点之间的关系,全一的对角矩阵\(I_{N}\)表示的是节点自身,所以\(\tilde{A}=A+I_N\)表示考虑了节点自身信息的邻接矩阵。 先将\(A\)矩阵加入图卷积神经网络的计算公式中,得到:

Graph Convolutional Network(GCN) Read More »

Pong挑战:基于价值、基于策略和演员-评论家强化学习模型的比较

项目背景 随着人工智能和机器学习领域的迅速发展,强化学习作为其中的核心分支,在解决复杂决策问题方面显示出巨大潜力。尤其在游戏领域,不同类型的强化学习算法已被证实能够有效地处理和解决多种挑战。在本项目中,我们将探讨三种主要的强化学习模型——基于价值的Deep Q-Network(DQN)、基于策略的REINFORCE算法以及演员-评论家方法——在经典游戏Pong中的应用和表现。Pong游戏以其简单规则和直观环境,成为评估和比较这些算法的理想平台。 项目目标 本项目旨在通过实现并比较三种不同的强化学习模型来探索Pong游戏的AI实现。具体目标如下: 项目应用 通过本项目,我们期望实现以下应用: 数据集描述 本项目使用的数据集基于经典的Pong游戏,包括以下关键特征和元素,这些将用于训练和评估DQN模型,其他两种强化学习算法也大多采用以下特征,不同的部分会在代码部分讲解: 项目实现 本项目通过以下关键步骤实现DQN算法: REINFORCE的区别在于,在动作选择的时候,REINFORCE基于策略网络生成的action_probabilities (在当前状态下采取每个动作的概率)采取动作。 而AC采取动作时基于演员网络生成的action_probabilities 选择动作action_index;评论家网络则负责评估当前状态state的价值,即state_val。这个价值用于评估当前策略的好坏。 模型选择 在本项目中,我们将使用三种不同的强化学习模型:Deep Q-Network(DQN)、REINFORCE以及演员-评论家模型。以下是对每种模型的详细介绍和所需的依赖库。 Deep Q-Network(DQN)(基于价值的强化学习):

Pong挑战:基于价值、基于策略和演员-评论家强化学习模型的比较 Read More »

心律失常的数据分析与模型分类项目

项目背景 心脏疾病一直是全球健康的主要挑战之一,它不仅影响着数百万人的生活质量,而且还是世界范围内主要的死因之一。近年来,随着数据科学和机器学习的迅猛发展,我们有了新的工具和方法来预测和诊断心脏疾病。在这个项目中,我们利用这些先进技术,尝试通过分析心电图(ECG)数据来识别心律失常,从而实现早期诊断和干预。 项目目标 本项目的主要目标是开发一个能够准确识别和分类心律失常的机器学习模型。通过对心电图数据的深入分析,我们希望能够识别出潜在的心脏问题,特别是冠状动脉疾病和Rjgbt束支传导阻滞这两种最常见的心律失常类型。此外,我们的目标还包括提高医疗专业人员的诊断效率和准确性,从而改善患者的治疗结果。 项目应用 该项目的潜在应用范围广泛,从临床诊断到远程医疗监控都可能受益。机器学习模型的实施可以帮助医生快速准确地诊断心律失常,特别是在资源有限或需要快速决策的情况下。此外,该模型还可以集成到可穿戴设备和智能手机应用中,为用户提供实时的心脏健康监控。 数据集描述 我们的数据集由452个独特的实例组成,这些实例分布在16个不同的类别中。其中,245个实例被标记为“正常”,其余的则涉及12种不同类型的心律失常。在所有这些心律失常类型中,最具代表性的是“冠状动脉疾病”和“Rjgbt束支传导阻滞”。 数据集包含279个特征,这些特征不仅涵盖了患者的基本信息,如年龄、性别、体重和身高,还包括了详细的心电图信息。这种高维度的特征集提供了丰富的信息,有助于我们更深入地理解心律失常的复杂性。 模型选择 在本项目中,我们选择了多种机器学习模型来解决心律失常的识别和分类问题。以下是我们使用的六种主要模型: 这些模型的选择是基于数据集的特性和心律失常识别的特定需求。我们的目标是通过比较这些不同模型的性能,找到最优的解决方案,以提高诊断的准确性和效率。 项目方法 数据探索(EDA) 项目的第一步是进行详尽的探索性数据分析(EDA)。这个阶段关键在于理解数据集的结构、分布及其潜在的问题。我们深入分析了特征间的相关性、各类别样本的分布、以及可能的数据质量问题。这有助于我们在模型训练之前,识别并解决可能影响模型性能的问题。 数据平衡 心律失常数据集中的类别分布不均衡,这可能导致模型对于某些类别过度拟合。为了解决这个问题,我们采用了几种数据采样技术,如过采样少数类别和欠采样多数类别,以平衡数据集。这样做可以提高模型对不常见心律失常类型的识别能力。 数据降维 考虑到数据集有279个特征,存在较高的维度,我们采用了主成分分析(PCA)来进行数据降维。PCA帮助我们减少数据中的冗余特征,同时保留最重要的信息。这不仅减少了计算复杂性,还提高了模型的泛化能力。 模型训练

心律失常的数据分析与模型分类项目 Read More »

Scroll to Top