SELU
SELU is designed to help a deep network keep its internal signals in a healthy range as they pass through many layers. Instead of letting activations steadily shrink, explode, or drift away from zero, it nudges them back toward a stable mean and variance—a property called self-normalization.
How the activation works
For a positive input, SELU is a scaled linear function. For a negative input, it follows a smooth exponential curve, like ELU:
- if x > 0: SELU(x) = λx
- if x ≤ 0: SELU(x) = λα(ex − 1)
The constants are fixed: α ≈ 1.6733 and λ ≈ 1.0507. The negative branch has a lower bound rather than dropping all negative values to zero. That helps gradients continue flowing, avoiding the permanently inactive units associated with plain ReLU. More importantly, the chosen scaling makes layer outputs move back toward mean 0 and variance 1 under the right conditions.
Conditions behind “self-normalizing”
SELU is not a universal replacement for ReLU. Its stability argument relies on a specific setup:
- Use LeCun normal initialization, not He/Kaiming initialization.
- Use ordinary dense feed-forward layers with suitably independent activations.
- Use AlphaDropout, rather than standard dropout, because it preserves SELU’s target activation statistics during training.
With ordinary dropout, zeroed activations shift the mean and variance, weakening the mechanism. Batch normalization is also usually unnecessary in a carefully constructed SELU network; adding it changes the statistics SELU is trying to regulate. In architectures with residual connections, attention, or heavily correlated features, the clean theoretical guarantee becomes less direct.
Why it matters in training
In a very deep multilayer perceptron, poor activation statistics can make early-layer gradients fade or cause activations to grow until loss values diverge. SELU can make such networks train reliably without inserting a normalization layer after every block, saving some computation and complexity. In PyTorch, it appears as torch.nn.SELU; pair it deliberately with LeCun-style initialization and nn.AlphaDropout, rather than treating it as an interchangeable activation.
SELU (Scaled Exponential Linear Unit) is an activation function that applies a scaled linear response to positive inputs and a scaled exponential curve to negative inputs. With its prescribed scaling constants, SELU drives layer activations toward zero mean and unit variance, enabling self-normalizing networks. This stabilizes signal and gradient propagation in deep fully connected networks when paired with appropriate initialization and AlphaDropout.
Imagine a long line of people passing buckets of water. If each person passes far too much or too little, the flow soon becomes unmanageable. SELU is a setting in some AI networks designed to keep that flow steady as information travels through many layers.
SELU stands for Scaled Exponential Linear Unit. It is a rule that decides how strongly each small part of the network responds to incoming information. Its special aim is self-normalization: helping signals stay in a healthy, predictable range without constant manual correction.
This can make certain deep networks easier and more stable to train, especially when they are built under the right conditions.