Deepmind用机器学习指导数学直觉

image
Featurize 平台可以运行代码: AI 辅助直觉 (DeepMind)

在这里插入图片描述

发表在 Nature 的封面文章AI 辅助直觉(AI-guided intuition) 希望通过机器学习辅助发现纯数学的猜想和定理。

Dave 用大白话概括一下:

  • 对于两个数学对象 X(z), Y(z) ,如果 机器学习 能够学到 f 使得 f(X(z)) 约等于 Y(z) ,说明X与Y之间有一定关系
  • 其中利用 归因技术(Attribution Techniques) 来辅助发现哪些特征更加重要。(归因技术:计算输入关于输出的梯度,梯度大说明该输入(特征)重要,梯度小说明该输入(特征)不重要)

流程

  1. 提出猜想(数学家)
  2. 生成数据(采样)(AI)
  3. 训练监督学习模型 (AI)
  4. 发现模式,归因技术减小空间 (AI)
  5. 猜想候选(数学家)
  6. 证明理论(数学家)

image.png

论文中的实验

通过节(Knot)的几何不变量预测它的 signature (https://knotinfo.math.indiana.edu/descriptions/signature.html)

该关系是在之前的研究中没有发现过的

在这里插入图片描述

代码

安装必要的包

from IPython.display import clear_output

!pip install dm-haiku
!pip install optax
clear_output()

导入各种包

import tempfile

import haiku as hk
import jax
import jax.numpy as jnp
import matplotlib.pyplot as plt
import numpy as np
import optax
import pandas as pd
import seaborn as sns
from sklearn.model_selection import train_test_split
import seaborn as sns
import matplotlib.pyplot as plt

下载数据集

!featurize -t [token] dataset download ea22c102-a9c5-4ce5-aa31-576bd52ff7c1

对数据进行载入以及前处理

对于一个节 k, X(k) 是一个由这些量组成的向量,在这种情况下,这些量是这个节的几何不变量

full_df = pd.read_csv('/home/featurize/data/knot_theory_invariants.csv')
display_name_from_short_name = {
    'chern_simons': 'Chern-Simons',
    'cusp_volume': 'Cusp volume',
    'hyperbolic_adjoint_torsion_degree': 'Adjoint Torsion Degree',
    'hyperbolic_torsion_degree': 'Torsion Degree',
    'injectivity_radius': 'Injectivity radius',
    'longitudinal_translation': 'Longitudinal translation',
    'meridinal_translation_imag': 'Re(Meridional translation)',
    'meridinal_translation_real': 'Im(Meridional translation)',
    'short_geodesic_imag_part': 'Im(Short geodesic)',
    'short_geodesic_real_part': 'Re(Short geodesic)',
    'Symmetry_0': 'Symmetry: $0$',
    'Symmetry_D3': 'Symmetry: $D_3$',
    'Symmetry_D4': 'Symmetry: $D_4$',
    'Symmetry_D6': 'Symmetry: $D_6$',
    'Symmetry_D8': 'Symmetry: $D_8$',
    'Symmetry_Z/2 + Z/2': 'Symmetry: $\\frac{Z}{2} + \\frac{Z}{2}$',
    'volume': 'Volume',
}
column_names = list(display_name_from_short_name)
target = 'signature'

分割训练数据集和测试数据集

random_seed = 2
random_state = np.random.RandomState(random_seed)
train_df, validation_and_test_df = train_test_split(
    full_df, random_state=random_state)
validation_df, test_df = train_test_split(
    validation_and_test_df, test_size=.5, random_state=random_state)

train_df.head(2)

在这里插入图片描述

print('训练集样本数量:', len(train_df))
print('测试集样本数量:', len(test_df))
训练集样本数量: 182809
测试集样本数量: 30469

使用 AutoML 工具 AutoGluon 来快速验证

!pip install autogluon
clear_output()

from autogluon.tabular import TabularPredictor

predictor = TabularPredictor(label=target).fit(
    train_df[column_names + [target]],
    tuning_data=validation_df[column_names + [target]],
    time_limit=60
)

leaderboard = predictor.leaderboard(test_df, silent=True)
feature_importance = predictor.feature_importance(test_df, silent=True)
predictor.plot_ensemble_model()

from PIL import Image
Image.open('AutogluonModels/ag-20220208_122919/ensemble_model.png')

在这里插入图片描述

选择出来的 Ensemble 模型

  • KNeighborsDist (Accuracy: 0.9483)
  • NeurallNetFastAI (Accuracy: 0.9485)
  • LightGBMXT (Accuracy: 0.8522 应该是因为时间关系没有充分训练)

最终 Accuracy:0.9689

训练过的模型的详细信息

leaderboard

在这里插入图片描述

特征的重要程度

plt.figure(figsize=(16,8))
sns.barplot(x=feature_importance.importance.values, y=feature_importance.importance.index);

在这里插入图片描述

发现特征

可以从上图看到最重要的三个特征

通过 AI 辅助的方法,作者发现了这些几何不变量Signature 相关,提出了假设

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZErLrUoV-1644382987435)(attachment:8dc4ac2f-2c76-4b44-b390-2a9f23cc22b8.png)]

并且进行了证明(由于 Dave 并非数学专业,就不详述了,对数学证明感兴趣的同学可以戳下方链接):

THE SIGNATURE AND CUSP GEOMETRY
OF HYPERBOLIC KNOTS

drawing

我个人对这些应用于不同领域的机器学习方法很感兴趣,所以把 DeepMind 的研究搬运过来进行翻译,希望能够帮助到同样感兴趣的同学。

image

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dave 扫地工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值