Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
killiansheriff committed Dec 12, 2022
0 parents commit ce74a47
Show file tree
Hide file tree
Showing 33 changed files with 444,787 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/.DS_Store
/.vscode
/blog/_build/
/poster/*pptx
/6s989_proposal.pdf
37 changes: 37 additions & 0 deletions blog/_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Book settings
# Learn more at https://jupyterbook.org/customize/config.html

title: Demistiyfing E(3)-equivariant NN
author: Killian Sheriff, Yifan Cao
logo: square.png

# Force re-execution of notebooks on each build.
# See https://jupyterbook.org/content/execute.html
execute:
execute_notebooks: force

# Define the name of the latex output file for PDF builds
latex:
latex_documents:
targetname: book.tex

# Add a bibtex file so that we can create citations
bibtex_bibfiles:
- references.bib

# Information about where the book exists on the web
repository:
url: https://github.com/killiansheriff/blog_e3nn/ # Online location of your book
path_to_book: docs # Optional path to your book, relative to the repository root
branch: master # Which branch of the repository should be used when creating links (optional)

# Add GitHub buttons to your book
# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository
html:
use_issues_button: true
use_repository_button: true

sphinx:
config:
html_js_files:
- https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js
14 changes: 14 additions & 0 deletions blog/_toc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Table of contents
# Learn more at https://jupyterbook.org/customize/toc.html

format: jb-book
root: index
chapters:
- file: notebooks/group_representation
- file: notebooks/irreducible_representations
- file: notebooks/transformation_under_e3
- file: notebooks/spherical_harmonics
- file: notebooks/equivariance_and_polynomials
- file: notebooks/tensor_product
- file: notebooks/data_efficiency

Binary file added blog/equiv.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions blog/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Index

## Demistifying E(3)-equivariant neural networks!

Welcome to our blog post on demistifying E(3)-equivariant neural networks! This blog aim to introduces the following concepts, in order to understand the mathematical tools leading to learnable equivariant operations:

```{tableofcontents}
```
## Poster

![poster]('../../../poster/shared/poster.png)

## Disclaimer

This post serves as an explanation of the paper by ``Geiger et al [1]``. It was written as a final project for the ``Fall 2022 Final Project`` section of the ``6.S898: Deep Learning`` course at the ``Massachusetts Institute of Technology``. Needless to say that the intuition presented herein are heavily influenced by the explanations of Geiger et al.

## References

1. Geiger, M. & Smidt, T. e3nn: Euclidean Neural Networks. Arxiv (2022).

## Citation

If used, please cite:

```citation
@software{killian_sheriff_2022_7430281,
author = {Killian Sheriff and
Yifan Cao},
title = {killiansheriff/blog\_e3nn: blog\_e3nn},
month = dec,
year = 2022,
publisher = {Zenodo},
version = {blog\_e3nn},
doi = {10.5281/zenodo.7430281},
url = {https://doi.org/10.5281/zenodo.7430281}
}
```

Binary file added blog/irrep.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/irrep_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions blog/notebooks/.ipynb_checkpoints/Untitled2-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
6 changes: 6 additions & 0 deletions blog/notebooks/.ipynb_checkpoints/Untitled3-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
138 changes: 138 additions & 0 deletions blog/notebooks/data_efficiency.ipynb

Large diffs are not rendered by default.

167 changes: 167 additions & 0 deletions blog/notebooks/equivariance_and_polynomials.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Equivariance and Polynomials\n",
"\n",
"In this section we will define what it means for a function to be ``equivariant``, and what tools are available to create ``equivariant polynomials``. This latter is of great importance as almost any functions can be approximated by polynomials, and that the role of our neural network is to estimate an (equivariant) function."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Equivariance\n",
"We say that a function $f: V \\rightarrow V'$ is equivariant to the action of the symmetry element $g$, represented by $D(g)$ on it's input $x$, if it gives rise to a similar action $D'(g)$ of its output, i.e:\n",
"\n",
"$$\n",
"f(D(g)x) = D'(g)f(x).\n",
"$$\n",
"\n",
"This principle is illustrated in figure 1.\n",
"\n",
"For a concreate example, consider a 3D rotation of $\\theta$ degrees around the x axis:\n",
"\n",
"$$\n",
"R_{x}(\\theta )=\\begin{bmatrix}1&0&0\\\\0&\\cos \\theta &-\\sin \\theta \\\\[3pt]0&\\sin \\theta &\\cos \\theta \\\\[3pt]\\end{bmatrix},\n",
"$$\n",
"\n",
"and the following functions function:\n",
"\n",
"$$\n",
"f: \\begin{bmatrix}\n",
" x \\\\\n",
" y \\\\\n",
" z\n",
" \\end{bmatrix} \n",
"\\rightarrow\n",
"\\begin{bmatrix}\n",
" x^2+y^2+z^2\n",
" \n",
" \\end{bmatrix} \n",
"$$\n",
"\n",
"Then $f$ is equivariant to rotation as:\n",
"\n",
"$$\n",
"f(R_x(\\theta) \\vec{x}) = f(\\begin{bmatrix}\n",
" x \\\\\n",
" cos(\\theta)y-sin(\\theta)z \\\\\n",
" sin(\\theta)y+cos(\\theta)z\n",
" \\end{bmatrix} ) = \\begin{bmatrix}\n",
" x^2+y^2+z^2\n",
" \n",
" \\end{bmatrix} = R'_x(\\theta) f(x) = f(x).\n",
"$$\n",
"\n",
"especialy in this case the function is actually invariant to rotations: $R'_x(\\theta) =1 \\space \\forall \\theta \\in \\mathcal{R}$.\n",
"\n",
"An example of a non equivariant polynomials would be $p$:\n",
"\n",
"$$\n",
"p : \\begin{bmatrix}\n",
" x \\\\\n",
" y \\\\\n",
" z\n",
" \\end{bmatrix} \n",
"\\rightarrow\n",
"\\begin{bmatrix}\n",
" x^2+2(y-3z) \\\\\n",
" y^2x \\\\\n",
" \n",
" \\end{bmatrix}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"| ![square](../equiv.png) |\n",
"|:--:|\n",
"| <b>Fig.1 - Principle of equivariance.</b>|"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Equivariant polynomials\n",
"\n",
"In this section we will discuss the tools to create equivariant polynomials.\n",
"\n",
"We will first show that the compositon of 2 equivariant polynomial is equivariant: \n",
"\n",
"Consider two equivariant function:\n",
"\n",
"$$ \n",
"f: V_1 \\rightarrow V_3,\n",
"$$ \n",
"\n",
"$$ \n",
"g: V_2 \\rightarrow V_3,\n",
"$$ \n",
"\n",
"then: \n",
"\n",
"### ``Addition`` of equivariant polynomials is equivariant:\n",
"\n",
"Indeed, $f+g$ is equivariant as:\n",
"\n",
"$$\n",
"D_3(g)(f(x)+g(x)) = D_1(g)f(x)+D_2(g)g(x) = f(D_1(g)x)+g(D_2(g)x).\n",
"$$\n",
"\n",
"\n",
"### ``Composition`` of equivariant polynomials is equivariant:\n",
"\n",
"Indeed, $f \\circ g$ is equivariant as:\n",
"\n",
"$$\n",
"D_3(g)(f(g(x))) =f( D_2(g) g(x)) = f(g(D_1(g)x)).\n",
"$$\n",
"\n",
"### The ``Tensor Product`` of two polynomial is equivariant:\n",
"It is denoted $f \\otimes g$. The ``Tensor Product`` section is dedicated to it."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5 (default, May 18 2021, 12:31:01) \n[Clang 10.0.0 ]"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "a429a41e61deb9ee9f43170a4271c5d42eef99359a9088d8c58f4b96e2ffedc5"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Binary file added blog/notebooks/figs/2_only4.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/3_only4.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/4_only4.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/5_only4.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/data_efficiency_schematic.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/l0.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/l1.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/l2.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/tp.pdf
Binary file not shown.
Binary file added blog/notebooks/figs/tp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/notebooks/figs/transformation.pdf
Binary file not shown.
Loading

0 comments on commit ce74a47

Please sign in to comment.