因为想学习Neural ODE视角下的diffusion方法,所以先从入门Neural ODE开始。本篇文章从ODE的定义开始,通过Euler数值法求解ODE与ResNet架构之间的关系引出Neural ODE,并推导其训练所需的reverse-time算法。
Molecule Generation by Principal Subgraph Mining and Assembling
This is a blog for our paper Molecule Generation by Principal Subgraph Mining and Assembling which is accepted by NeurIPS 2022. Molecule generation is critical for various applications in domains like drug discovery and material science. Current attention has been paid to generating molecular graphs based on subgraphs. However, there are two critical problems in existing subgraph-level generation methods. First, these methods usually construct the vocabulary of subgraphs with external chemical libraries (Yang et al., 2021) or with hand-crafted rules (Jin et al., 2020). From the perspective of data science, these subgraphs are not designed to capture the combination patterns of atoms and bonds in molecules. The second problem is that they assemble the subgraphs in a sequential manner, which focuses mostly on the local arrangement. To tackle the above problems, we propose a novel notion, principal subgraph, along with an theoretically efficient algorithm to extract them to construct the vocabulary. We further propose a two-step generation framework which first generate a sequence of subgraphs and then globally assemble them into a molecule.
DDIM与最优逆向过程方差
上一篇讲解了最基础的diffusion model (Sohl-Dickstein et al., 2015),基于其简化的denoising diffusion probabilistic model (Ho et al. 2020, DDPM)以及对DDPM的优化 (Nichol & Dhariwal, 2021)。本篇讲解抽象程度更高的denoising diffusion implicit model (Song et al., 2020, DDIM)和分析逆向过程最优方差取值的论文 (Bao et al., 2022, Analytic-DPM)。
基础Diffusion生成模型与DDPM
目前基于diffusion的生成模型已经逐渐从CV迁移到其他领域,并均展现出不错的效果。正好最近研究项目是生成式的任务,就想应该学习一下diffusion,说不定可以有不错的效果。打算分两篇文章对这个领域的基础知识进行记录,本篇先讲解最基础的diffusion model (Sohl-Dickstein et al., 2015),再学习denoising diffusion probabilistic model (Ho et al. 2020, DDPM)及对其的优化 (Nichol & Dhariwal, 2021)。下一篇讲解抽象程度更高的denoising diffusion implicit model (Song et al., 2020, DDIM)和分析逆向过程最优方差的论文 (Bao et al., 2022, Analytic-DPM)。
使用 Zerotier 进行 p2p 连接
在一些场景下需要在两台不同内网中的主机间建立连接。例如在家里放了一台常开的电脑,电脑处于家中内网中,平时我们在外面无法直接访问。此时有两种解决方案。第一种是利用Sakura Frp等内网端口映射的工具,但是如果通信流量较大(比如在家里电脑上开网站、代理等),就会被内网映射服务的限速、限额影响。第二种方案就是进行p2p连接,公网服务器只用于协助建立两台主机的连接,建立完连接后两台主机之间直接通信,而不用再通过公网服务器。Zerotier就提供这样的服务,并且提供一台免费的公网服务器。
Linux 非 Root 用户安装与使用 conda
虽然python的包管理基本都可以用pip执行,但在很多服务器上用户没有root权限,因此不能直接pip install
。此时可以选择用conda作为包管理器。由于Anaconda包含很多科学计算包,体积十分庞大且大多数我都不太用得到,因此我选择用conda的精简版——miniconda。miniconda只包含一个包管理器,不会预装科学计算包。
Linux 下使用 Wine 安装 windows 版的微信
一个令 Linux
用户十分头痛的问题就是QQ和微信的使用。目前腾讯有Linux版的QQ,但是界面十分简陋,仿佛上世纪的产品,且没有Linux版的微信。之前一直在用的微信是
electronic-wechat
,是基于网页版微信用electron进行UI展示的开源软件,虽然一定程度上可以用了,但毕竟只是基于网页版重新写了个UI,bug很多,而且近两年注册的微信号因为不能登录网页版微信所以不能用。于是就想能不能用
Wine 装一个 windows 下的微信客户端解决问题。
Linux Network Namespace(netns)使用——以PPPoE实验为例
netns是用来建立隔离的网络协议栈的,学习netns是因为计算机网络原理课程作业中有一个研究 PPPoE 网络协议的实验,需要有一个 server 和一个 client,通过对两者通信的抓包来理解协议内容和过程。Windows 有 wsl2,和 Windows 本身不共用网络层,因此可以一个当 server,一个当 client,但我只有一台 Linux 电脑,所以就需要用 netns 建立隔离的网络栈来模拟两台电脑。
Minecraft Java版服务器搭建(Linux)与客户端连接
因为自己的服务器不小心装了32位系统,导致Minecraft基岩版的服务器没有办法运行,因此就尝试换用 java 版进行联机。但是因为之前已经有基岩版了,所以这次不太想因为换版本再给 mojang 氪金,然后发现offline模式不需要氪金,但是只能进行局域网连接。思考一阵以后觉得反正是用 Linux 建的服务器,那完全可以用 ssh 端口转发的方式把远端服务器加进局域网(实际是加到127.0.0.1),尝试了一下果然成功了!但成功以后发现原来其实offline模式也是可以连私人服务器的。。。anyway记录一下整个过程!
GNN(二):图神经网络——深层编码器、GCN、GAT
浅层的node2vec的方法相当于一个单层的映射关系,存在许多局限性。例如不同的节点之间没有共享的参数,所有节点都有自己单独的embedding,导致模型的泛化能力不好,只能针对训练中给定的图的节点。因此需要更复杂有效的深层网络来应对实际场景中复杂多变的图网络。