# Group Theory, Irreducible Representations, and Tensor Products

and How to Use them in e3nn to Build Euclidean Neural Networks

Mario Geiger

MRS Fall Meeting Tutorial

1. The math of rotations and parity

2. Creating and manipulating equivariant functions (polynomials)
Which is useful for
1. Compute spherical harmonics
2. Create invariant polynomials (Thomas and Martin talk)
3. Create the linear part of equivariant neural networks

3. Non linearities (non-polynomial)
Which is useful for
1. For the activation functions of the neural networks

intro

polynomials

examples & code

nonlinearities

Polynomial part

1. Define properly what is an equivariant polynomial
2. Give the tools to create them

Examples and Code

1. Spherical Harmonics
2. Tensor Product with weights (cornerstone of e3nn)
3. Decomposition of Cartesian Tensors

Nonlinearities

1. Gates

intro

polynomials

examples & code

nonlinearities

intro

polynomials

examples & code

nonlinearities

intro

polynomials

examples & code

nonlinearities

# Group and Representations

"what are the operations"

"how they compose"

intro

polynomials

examples & code

nonlinearities

# Group and Representations

"what are the operations"

"how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

# Group and Representations

"what are the operations"

"how they compose"

"vector spaces on which the action of the group is defined"

rotations, parity, (translations)

scalars, vectors, pseudovectors, ...

intro

polynomials

examples & code

nonlinearities

# Group and Representations

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

Equivalent notation $$D(g) x$$

• $$D(g) : V\to V$$
• $$D(g) \in \mathbb{R}^{d\times d}$$
• $$D(gh) = D(g) D(h)$$

⚠️ We use this notation in the code

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

Equivalent notation $$D(g) x$$

• $$D(g) : V\to V$$
• $$D(g) \in \mathbb{R}^{d\times d}$$
• $$D(gh) = D(g) D(h)$$

⚠️ We use this notation in the code

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

Equivalent notation $$D(g) x$$

• $$D(g) : V\to V$$
• $$D(g) \in \mathbb{R}^{d\times d}$$
• $$D(gh) = D(g) D(h)$$

⚠️ We use this notation in the code

intro

polynomials

examples & code

nonlinearities

Group $$G$$

• $$\text{identity} \in G$$
• stability $$g h \in G$$
• inverse $$g^{-1} \in G$$

Representation $$D(g, x)$$

• $$g\in G$$, $$x \in V$$
• Linear $$D(g, x+y) = D(g,x) + D(g,y)$$
• Follow the structure of the group
$$D(gh,x) = D(g, D(h,x))$$

# Group and Representations

"what are the operations" "how they compose"

"vector spaces on which the action of the group is defined"

Equivalent notation $$D(g) x$$

• $$D(g) : V\to V$$
• $$D(g) \in \mathbb{R}^{d\times d}$$
• $$D(gh) = D(g) D(h)$$

⚠️ We use this notation in the code

intro

polynomials

examples & code

nonlinearities

# Examples of representations

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

Representations are like data types

It tells you how to interpret the data...

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

Knowing that $$a_1, a_2, a_3$$ are scalars tells you that they are not affected by a rotation of your system

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

If the system is rotated, the 3 components of the vector change together!

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

The two vectors transforms indepentently

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

system rotated by $$g$$

$$D(g)\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

Representations are like data types

It tells you how to interpret the data with respect to the $$G$$!

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

e3nn notation:

irreps = "3x0e + 2x1o"

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

e3nn notation:

from e3nn import o3

irreps = o3.Irreps("3x0e + 2x1o")

intro

polynomials

examples & code

nonlinearities

# Examples of representations

3 scalars

a vector

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}\in \mathbb{R}^9$$

a vector

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

from e3nn import o3

irreps = o3.Irreps("3x0e + 2x1o")

import torch

alpha, beta, gamma = torch.randn(3)
irreps.D_from_angles(alpha, beta, gamma)

intro

polynomials

examples & code

nonlinearities

# Examples of representations

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

system rotated by $$g$$

$$\begin{bmatrix} a^1\\a^2\\a^3\\a^4\\a^5\\a^6\\a^7\\a^8\\a^9\end{bmatrix}$$

array([[ 1.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
[ 0.  ,  1.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
[ 0.  ,  0.  ,  1.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ],
[ 0.  ,  0.  ,  0.  ,  0.77,  0.22, -0.6 ,  0.  ,  0.  ,  0.  ],
[ 0.  ,  0.  ,  0.  , -0.1 ,  0.97,  0.23,  0.  ,  0.  ,  0.  ],
[ 0.  ,  0.  ,  0.  ,  0.63, -0.12,  0.76,  0.  ,  0.  ,  0.  ],
[ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.77,  0.22, -0.6 ],
[ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  , -0.1 ,  0.97,  0.23],
[ 0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.  ,  0.63, -0.12,  0.76]],
dtype=float32)
from e3nn import o3

irreps = o3.Irreps("3x0e + 2x1o")

import torch

alpha, beta, gamma = torch.randn(3)
irreps.D_from_angles(alpha, beta, gamma)

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

$$D(g)$$

$$D'(g)$$

$$V$$

$$V'$$

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

$$D(g)$$

$$D'(g)$$

$$V$$

$$V'$$

$$f$$

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

$$D(g)$$

$$D'(g)$$

$$V$$

$$V'$$

$$f$$

$$f$$

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

$$D(g)$$

$$D'(g)$$

$$V$$

$$V'$$

$$f$$

$$f$$

$$f(D(g) x)$$

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

$$D(g)$$

$$D'(g)$$

$$V$$

$$V'$$

$$f$$

$$f$$

$$f(D(g) x)$$

$$D'(g) f(x)$$

intro

polynomials

examples & code

nonlinearities

# Equivariance

$$V$$

$$V'$$

$$D(g)$$

$$D'(g)$$

$$V$$

$$V'$$

$$f$$

$$f$$

$$f(D(g) x)$$

$$D'(g) f(x)$$

$$=$$

intro

polynomials

examples & code

nonlinearities

# Polynomials

Most simple yet powerful functions

intro

polynomials

examples & code

nonlinearities

# Polynomials

Most simple yet powerful functions

Be able to create polynomials compatible with rotations is a powerful tool

intro

polynomials

examples & code

nonlinearities

# Polynomials

$$x \mapsto x^2 + 2(x-4)$$

intro

polynomials

examples & code

nonlinearities

# Polynomials

$$x \mapsto x^2 + 2(x-4)$$

$$\begin{bmatrix} x\\ y\\ z \end{bmatrix} \mapsto x^2 + 2(y-z)x$$

intro

polynomials

examples & code

nonlinearities

# Polynomials

$$x \mapsto x^2 + 2(x-4)$$

$$\begin{bmatrix} x\\ y\\ z \end{bmatrix} \mapsto x^2 + 2(y-z)x$$

$$\begin{bmatrix} x\\ y\\ z \end{bmatrix} \mapsto \begin{bmatrix} x^2 + 2(y-z) \\ z^4 + 100 x y z\end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# Equivariant Polynomials

$$P(D(g) x) = D'(g) P(x)$$

$$\begin{bmatrix} x\\ y\\ z \end{bmatrix} \mapsto \begin{bmatrix} x^2 + 2(y-z) \\ z^4 + 100 x y z\end{bmatrix}$$

😟

Not equivariant

$$\begin{bmatrix} x\\ y\\ z \end{bmatrix} \mapsto \begin{bmatrix} x^2 + y^2 + z^2 \end{bmatrix}$$

😌

Equivariant

intro

polynomials

examples & code

nonlinearities

# 3 Tools to Make Polynomials

• 🔨Composition $$\circ$$
• 🔧Addition $$+$$
• 🔩Multiplication $$\otimes$$

equivariant 😊

intro

polynomials

examples & code

nonlinearities

# 🔨Composition

two equivariant functions

$$f: V_1 \rightarrow V_2$$

$$h: V_2 \rightarrow V_3$$

$$h\circ f$$ is equivariant!! 😊

$$h(f(D_1(g) x)) = h(D_2(g) f(x)) = D_3(g) h(f(x))$$

intro

polynomials

examples & code

nonlinearities

two equivariant functions

$$f: V_1 \rightarrow V_3$$

$$h: V_2 \rightarrow V_3$$

$$h + f$$ is equivariant!! 😊

$$f(D_1(g) x) + h(D_2(g)x) = D_3(g) (f(x) + h(x))$$

intro

polynomials

examples & code

nonlinearities

# 🔩Multiplication

$$\begin{bmatrix} {\color{red} x_1}\\{\color{red} x_2}\\{\color{red} x_3}\end{bmatrix}$$

$$\begin{bmatrix} {\color{blue} y_1}\\{\color{blue} y_2}\\{\color{blue} y_3}\\{\color{blue} y_4}\\{\color{blue} y_5} \end{bmatrix}$$

transforming with $$D(g)$$

transforming with $$D'(g)$$

$$= \begin{bmatrix} x_1y_1 & x_1y_2 & x_1y_3 & x_1y_4 & x_1y_5 \\ x_2y_1 & x_2y_2 & x_2y_3 & x_2y_4 & x_2y_5 \\ x_3y_1 & x_3y_2 & x_3y_3 & x_3y_4 & x_3y_5 \end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

# 🔩Multiplication

$$\otimes$$

$$= \begin{bmatrix}{\color{red} x_1} {\color{blue} y_1}&{\color{red} x_1} {\color{blue} y_2}&{\color{red} x_1} {\color{blue} y_3}&{\color{red} x_1} {\color{blue} y_4}&{\color{red} x_1} {\color{blue} y_5}\\{\color{red} x_2} {\color{blue} y_1}&{\color{red} x_2} {\color{blue} y_2}&{\color{red} x_2} {\color{blue} y_3}&{\color{red} x_2} {\color{blue} y_4}&{\color{red} x_2} {\color{blue} y_5}\\{\color{red} x_3} {\color{blue} y_1}&{\color{red} x_3} {\color{blue} y_2}&{\color{red} x_3} {\color{blue} y_3}&{\color{red} x_3} {\color{blue} y_4}&{\color{red} x_3} {\color{blue} y_5}\end{bmatrix}$$

Tensor Product

transforms with $$D(g) \otimes D'(g)$$ 😊

$$\dim( D \otimes D' ) = \dim( D ) \dim( D' )$$

$$\begin{bmatrix} {\color{red} x_1}\\{\color{red} x_2}\\{\color{red} x_3}\end{bmatrix}$$

$$\begin{bmatrix} {\color{blue} y_1}\\{\color{blue} y_2}\\{\color{blue} y_3}\\{\color{blue} y_4}\\{\color{blue} y_5} \end{bmatrix}$$

intro

polynomials

examples & code

nonlinearities

$$\text{vector} \otimes \text{vector} \otimes \text{vector} \otimes \dots$$

tensors of shape $$3\times3\times3\times\dots$$

Cartesian Tensors

The grow in dimension is problematic

Luckily the tensor product is reducible

# Reducible representations

intro

polynomials

examples & code

nonlinearities

$$D$$ defined on $$V$$

is reducible if

$$\exists W \subset V$$

such that

$$D|_W$$ is a representation

intro

polynomials

examples & code

conclusion

intro

polynomials

examples & code

nonlinearities

# Reducible representations

### Famous Example

$$\begin{bmatrix}{\color{red} x_1} {\color{blue} x_2}&{\color{red} x_1} {\color{blue} y_2}&{\color{red} x_1} {\color{blue} z_2}\\{\color{red} y_1} {\color{blue} x_2}&{\color{red} y_1} {\color{blue} y_2}&{\color{red} y_1} {\color{blue} z_2}\\{\color{red} z_1} {\color{blue} x_2}&{\color{red} z_1} {\color{blue} y_2}&{\color{red} z_1} {\color{blue} z_2}\end{bmatrix}$$

$$D$$ defined on $$V$$

is reducible if

$$\exists W \subset V$$

such that

$$D|_W$$ is a representation

$$\begin{bmatrix} {\color{red} x_1}\\{\color{red} y_1}\\{\color{red} z_1}\end{bmatrix}\otimes\begin{bmatrix} {\color{blue} x_2}\\{\color{blue} y_2}\\{\color{blue} z_2}\end{bmatrix} =$$

intro

polynomials

examples & code

nonlinearities

# Reducible representations

$${\color{red}x_1}{\color{blue}x_2} + {\color{red}y_1}{\color{blue}y_2} + {\color{red}z_1} {\color{blue}z_2}$$

$$\begin{bmatrix}c ( {\color{red}x_1} {\color{blue}z_2} + {\color{red}z_1} {\color{blue}x_2} ) \\ c ( {\color{red}x_1} {\color{blue}y_2} + {\color{red}y_1} {\color{blue}x_2} ) \\ 2 {\color{red}y_1} {\color{blue}y_2} - {\color{red}x_1} {\color{blue}x_2} - {\color{red}z_1} {\color{blue}z_2} \\ c ( {\color{red}y_1} {\color{blue}z_2} + {\color{red}z_1} {\color{blue}y_2} ) \\ c ( {\color{red}z_1} {\color{blue}z_2} - {\color{red}x_1} {\color{blue}x_2} ) \\\end{bmatrix}$$

$$\begin{bmatrix}{\color{red}y_1}{\color{blue}z_2}-{\color{red}z_1} {\color{blue}y_2}\\ {\color{red}z_1}{\color{blue}x_2}-{\color{red}x_1}{\color{blue}z_2}\\ {\color{red}x_1}{\color{blue}y_2}-{\color{red}y_1}{\color{blue}x_2}\end{bmatrix}$$

$$\begin{bmatrix}{\color{red} x_1} {\color{blue} x_2}&{\color{red} x_1} {\color{blue} y_2}&{\color{red} x_1} {\color{blue} z_2}\\{\color{red} y_1} {\color{blue} x_2}&{\color{red} y_1} {\color{blue} y_2}&{\color{red} y_1} {\color{blue} z_2}\\{\color{red} z_1} {\color{blue} x_2}&{\color{red} z_1} {\color{blue} y_2}&{\color{red} z_1} {\color{blue} z_2}\end{bmatrix}$$

$$3\times3=1+3+5$$

These can be seen as polynomials!

$$D$$ is reducible if

$$\exists W \subset V$$

such that

$$D|_W$$ is a representation

intro

polynomials

examples & code

nonlinearities

# Irreducible representations

For the group of rotations ($$SO(3)$$)

They are index by $$L=0, 1, 2, \dots$$

Of dimension $$2L+1$$

 L=0 d=1 scalar L=1 d=3 vector L=2 d=5 no name?

intro

polynomials

examples & code

nonlinearities

# Irreducible representations

For the group of rotations + parity ($$O(3)$$)

They are index by $$L=0, 1, 2, \dots$$

Of dimension $$2L+1$$

 L=0 d=1 scalar L=1 d=3 peudo vector L=2 d=5 no name?
 L=0 d=1 pseudo scalar L=1 d=3 vector L=2 d=5 no name?

Even

Odd

# 🔩Multiplication

intro

polynomials

examples & code

nonlinearities

$$L_1 \otimes L_2 = |L_1-L_2| \oplus \dots \oplus (L_1+L_2)$$

generalization of $$3\times3=1+3+5$$

• $$2 \otimes 1 = 1 \oplus 2 \oplus 3$$
• $$2 \otimes 2 = 0\oplus 1 \oplus 2 \oplus 3 \oplus 4$$

intro

polynomials

examples & code

nonlinearities

# 🔩Multiplication

Composition of equivariant polynomials ✅

Tensor Product of equivariant polynomials ✅

$$L_1 \otimes L_2 = |L_1-L_2| \oplus \dots \oplus (L_1+L_2)$$

p2(p1(x, y), z)
p1(x, y) + p2(w, z)
from e3nn import o3

p = o3.FullTensorProduct("1o", "1o")

p(x, y)

intro

polynomials

examples & code

nonlinearities

# 🔩Multiplication

Composition of equivariant polynomials ✅

Tensor Product of equivariant polynomials ✅

$$L_1 \otimes L_2 = |L_1-L_2| \oplus \dots \oplus (L_1+L_2)$$

p2(p1(x, y), z)
p1(x, y) + p2(w, z)
from e3nn import o3

p = o3.FullTensorProduct("1o", "1o")

p(x, y)

intro

polynomials

examples & code

nonlinearities

# Spherical Harmonics

Representation of highest order ($$l$$) in $$\vec x \otimes \vec x \otimes \dots$$

https://e3nn.org/mrs

intro

polynomials

examples & code

nonlinearities

# Tensor Product with weights

$$3\times3=1+3+5$$

$$\begin{bmatrix}{\color{red} x_1} {\color{blue} x_2}&{\color{red} x_1} {\color{blue} y_2}&{\color{red} x_1} {\color{blue} z_2}\\{\color{red} y_1} {\color{blue} x_2}&{\color{red} y_1} {\color{blue} y_2}&{\color{red} y_1} {\color{blue} z_2}\\{\color{red} z_1} {\color{blue} x_2}&{\color{red} z_1} {\color{blue} y_2}&{\color{red} z_1} {\color{blue} z_2}\end{bmatrix}$$

$${\color{red}x_1}{\color{blue}x_2} + {\color{red}y_1}{\color{blue}y_2} + {\color{red}z_1} {\color{blue}z_2}$$

$$\begin{bmatrix}{\color{red}y_1}{\color{blue}z_2}-{\color{red}z_1} {\color{blue}y_2}\\ {\color{red}z_1}{\color{blue}x_2}-{\color{red}x_1}{\color{blue}z_2}\\ {\color{red}x_1}{\color{blue}y_2}-{\color{red}y_1}{\color{blue}x_2}\end{bmatrix}$$

$$\begin{bmatrix}c ( {\color{red}x_1} {\color{blue}z_2} + {\color{red}z_1} {\color{blue}x_2} ) \\ c ( {\color{red}x_1} {\color{blue}y_2} + {\color{red}y_1} {\color{blue}x_2} ) \\ 2 {\color{red}y_1} {\color{blue}y_2} - {\color{red}x_1} {\color{blue}x_2} - {\color{red}z_1} {\color{blue}z_2} \\ c ( {\color{red}y_1} {\color{blue}z_2} + {\color{red}z_1} {\color{blue}y_2} ) \\ c ( {\color{red}z_1} {\color{blue}z_2} - {\color{red}x_1} {\color{blue}x_2} ) \\\end{bmatrix}$$

$$\begin{bmatrix} {\color{red} x_1}\\{\color{red} y_1}\\{\color{red} z_1}\end{bmatrix}\otimes\begin{bmatrix} {\color{blue} x_2}\\{\color{blue} y_2}\\{\color{blue} z_2}\end{bmatrix} =$$

"1o" time "1o"
"1o"
"1o"
"0e"
"1e"
"2e"

https://e3nn.org/mrs

intro

polynomials

examples & code

nonlinearities

# Tensor Product with weights

first argument

second argument

output

$$3\times3=1+3+5$$

https://e3nn.org/mrs

intro

polynomials

examples & code

nonlinearities

# Tensor Product with weights

3 vectors times 3 vectors given 3 pseudovectors

each output is the weight sum of 9 pseudovectors

This operation contains 27 parameters

https://e3nn.org/mrs

intro

polynomials

examples & code

nonlinearities

# Reduce Tensor Product

Consider for instance the inertia tensor

$$\displaystyle I_{ij} = \int dx \; \rho(x) \; (\|x\|^2 \delta_{ij} - x_i x_j)$$

It is a $$\text{vector} \otimes \text{vector}$$ symmetric tensor ($$I_{ij} = I_{ji}$$)

It can be decomposed into a scalar and a $$l=2$$ irrep

https://e3nn.org/mrs

intro

polynomials

examples & code

nonlinearities

intro

polynomials

examples & code

nonlinearities

# Nonlinearities

## Gate

$$\phi(P(x)) Q(x)$$

invariant polynomial

equivariant polynomial

sigmoid like function

# Conclusion

• Group and representations
• 😊 Equivariance $$f({\color{purple}D(g)} x) = {\color{darkgreen}D'(g)} f(x)$$
• 🔨Composition
• Polynomials
•  🔩 Tensor Product  $$L_1 \otimes L_2 = |L_1-L_2| \oplus \dots \oplus (L_1+L_2)$$
• Polynomials with weights
• ​Nonlinearities
• ​Gate

https://e3nn.org/mrs

Thank you for listening!

https://e3nn.org/mrs

By Mario Geiger

• 2,855