complex
**ComplEx** (Complex Embeddings for Simple Link Prediction) is a **knowledge graph embedding model that extends bilinear factorization into the complex number domain** — using complex-valued entity and relation vectors to elegantly model both symmetric and antisymmetric relations simultaneously, achieving state-of-the-art link prediction by exploiting the asymmetry inherent in complex conjugation.
**What Is ComplEx?**
- **Definition**: A bilinear KGE model where entities and relations are represented as complex-valued vectors (each dimension has a real and imaginary part), scored by the real part of the trilinear Hermitian product: Score(h, r, t) = Re(sum of h_i × r_i × conjugate(t_i)).
- **Key Insight**: Complex conjugation breaks symmetry — Score(h, r, t) uses conjugate(t) but Score(t, r, h) uses conjugate(h), so the two scores are different for asymmetric relations.
- **Trouillon et al. (2016)**: The original paper demonstrated that this simple extension of DistMult to complex numbers enables modeling the full range of relation types.
- **Relation to DistMult**: When imaginary parts are zero, ComplEx reduces exactly to DistMult — it is a strict generalization, adding expressive power at 2x memory cost.
**Why ComplEx Matters**
- **Full Relational Expressiveness**: ComplEx can model symmetric (MarriedTo), antisymmetric (FatherOf), inverse (ChildOf is inverse of ParentOf), and composition patterns — the four fundamental relation types in knowledge graphs.
- **Elegant Mathematics**: Complex numbers provide a natural geometric framework — symmetric relations correspond to real-valued relation vectors; antisymmetric relations require imaginary components.
- **State-of-the-Art**: For years, ComplEx held top positions on FB15k-237 and WN18RR benchmarks — demonstrating that the complex extension is practically significant, not just theoretically elegant.
- **Efficient**: Same O(N × d) complexity as DistMult (treating complex d-dimensional as real 2d-dimensional) — no quadratic parameter growth unlike full bilinear RESCAL.
- **Theoretical Completeness**: Proven to be a universal approximator of binary relations — given sufficient dimensions, ComplEx can represent any relational pattern.
**Mathematical Foundation**
**Complex Number Representation**:
- Each entity embedding: h = h_real + i × h_imag (two real vectors of dimension d/2).
- Each relation embedding: r = r_real + i × r_imag.
- Score: Re(h · r · conj(t)) = h_real · (r_real · t_real + r_imag · t_imag) + h_imag · (r_real · t_imag - r_imag · t_real).
**Relation Pattern Modeling**:
- **Symmetric**: When r_imag = 0, Score(h, r, t) = Score(t, r, h) — symmetric relations have zero imaginary part.
- **Antisymmetric**: r_real = 0 — Score(h, r, t) = -Score(t, r, h), perfectly antisymmetric.
- **Inverse**: For relation r and its inverse r', set r'_real = r_real and r'_imag = -r_imag — the complex conjugate.
- **General**: Any combination of real and imaginary components models intermediate symmetry levels.
**ComplEx vs. Competing Models**
| Capability | DistMult | ComplEx | RotatE | QuatE |
|-----------|---------|---------|--------|-------|
| **Symmetric** | Yes | Yes | Yes | Yes |
| **Antisymmetric** | No | Yes | Yes | Yes |
| **Inverse** | No | Yes | Yes | Yes |
| **Composition** | No | Limited | Yes | Yes |
| **Parameters** | d per rel | 2d per rel | 2d per rel | 4d per rel |
**Benchmark Performance**
| Dataset | MRR | Hits@1 | Hits@10 |
|---------|-----|--------|---------|
| **FB15k-237** | 0.278 | 0.194 | 0.450 |
| **WN18RR** | 0.440 | 0.410 | 0.510 |
| **FB15k** | 0.692 | 0.599 | 0.840 |
| **WN18** | 0.941 | 0.936 | 0.947 |
**Extensions of ComplEx**
- **TComplEx**: Temporal extension — time-dependent ComplEx for facts valid only in certain periods.
- **ComplEx-N3**: ComplEx with nuclear 3-norm regularization — dramatically improves performance with proper regularization.
- **RotatE**: Constrains relation vectors to unit complex numbers — rotation model that provably subsumes TransE.
- **Duality-Induced Regularization**: Theoretical analysis showing ComplEx's duality with tensor decompositions.
**Implementation**
- **PyKEEN**: ComplExModel with full evaluation pipeline, loss functions, and regularization.
- **AmpliGraph**: ComplEx with optimized negative sampling and batch training.
- **Manual PyTorch**: Define complex embeddings as (N, 2d) tensors; implement Hermitian product in 5 lines.
ComplEx is **logic in the imaginary plane** — a mathematically principled extension of bilinear models into complex space that elegantly handles the full spectrum of relational semantics through the geometry of complex conjugation.