学习
实践
活动
专区
工具
TVP
写文章

Atom2Vec

最近在腾讯新闻上看到报道张首晟组做的一个工作发在了PNAS上面, 原文章有个前词 Atom2Vec. 习惯原因我就继续用atom2vec 来指代这份工作了. 戳链接可看新闻. 感叹老板牛逼真的是可以为所谓欲为啊哈哈. 刚好半年之前导师让我重复过这篇文章(最近可算是重复出来了, 有个小地方神坑啊=.=), 所以放在这里讲讲.

idea

2013, Google开发的一套Word2Vec工具, 把词的one-hot表示推进到分布表示, 并且有了类比: king-queen ~= man - woman. 网上关于这个已经有很多相关的工作, 感兴趣的可以自己去查阅相关文章. 这里不做这方面的具体阐述, 我也不是完全了解. 不过Atom2vec的想法跟word2vec可以说是很像: 一个原子的性质可以由他周围的原子表示. 对比word2vec: 一个词的词义由周围的词表示.

基于这样的类似想法, 就可以构建一整套工具来得到原子的向量表示. 只不过这里用的方法跟word2vec里面的不太一样. 其实方法很简单, 真的...

workflow

构建(atom, environment)数据

SVD

聚类

构建数据

按照原文章, 用 Bi2Se3 做例子说明(原因的话有兴趣的读者可以了解一下 Bi2Se3 为何物). Bi2Se3这种物质包括两种原子(Bi, Se), 按照一个原子由周围原子表示的想法: 取 Bi 原子(atom), 2个 Bi 原子周围有3个 Se 原子 (environment) , 得到一个(Bi, 2Se3). 再取Se原子, 3个 Se 原子对应2个 Bi 原子, 得到一个(Se, 3Bi2). 对大概六万种化合物做类似的划分得到许许多多个 pair.

文章有些图很形象说明了这个方法.

示例用的几种化合物

Bi2Se3分解的pair

SVD

接着, 构造一个大的零矩阵, 行号对应所有元素, 列号对应上面得到的所有environment. 这样每一个pair就等价成了这个矩阵的坐标了. 把得到的所有pair对应位置 += 1. 这个矩阵记作 X .

其实到这里本质的事情就已经全部做完了. X 矩阵的shape可能是 (100, 100000). 每一个原子的表示可能是十万维, 拿来用不方便. 考虑到X矩阵其实是个稀疏矩阵, 可以对这个矩阵进行归一化然后奇异值分解降维. 按照文章取的值, 降维之后取d=20.

UDV = svd(X)

f ~= U[:d] D[:d]

聚类

X 矩阵降维之后得到的f是近似的, 但是基本上可以表示 X. 这样就可以拿 f 进行聚类. 文中用的聚类方法是single, 先把每一原子分为一类. 然后逐步提高聚类, 将相近的原子(或类)合并, 直到全部合并成一个类. 距离衡量的方法是 cosine.

主族分类的结果挺好的. 基本上同一个族的元素都能分类到一起. 个别元素不行

过渡金属区的结果一团糟来形容吧

用更加容易看的结果是(这是我自己做的)

基本上主族同族元素能够靠在一起, 过渡金属的镧系和锕系聚集在两个角落.其他的元素吗, 散落各地...

小结:

这种方法只考虑了原子的价态, 如果一个元素的价态稍多, 如过渡金属, 基本上这个方法就崩溃了. 如果能考虑具体化合物的结构, 相信会好很多. 至于说这个有什么用吗, 就有可能有很多用途了. 看谁脑洞大了.

这篇文章其实方法还挺简单的, 但是这个idea真的很厉害就是了. 至于新闻稿吗, 有时候看看就好, 感觉跟AI没啥关系. 这里面坑真的很多啊, 简简单单的一个方法, 哎......

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180630G0RHP300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券