# Flat Spot Problem

The Flat Spot Problem is an issue observed by Scott Fahlman in a paper on the Quickprop
training method. Flat spot occurs in certain activation functions, particularly the
Sigmoid/Logistic Activation Function. Encog does not use flat spot on the Hyperbolic
Tangent or ReLU) Activation Functions. Flatspot can make it very difficult for a neural
network to property train with propagation training. Because of the Flatspot problem,
certain hidden neurons can be rendered completely useless. This can greatly increase
training time, and decrease overall efficiency for neural networks. For small neural
networks, with just a few hidden neurons, if enough random weights fall into the flat
spot range, the neural network will fail to ever converge.

To see why the Flatspot problem exists, consider that all propagation training methods
require a derivative of the activation function. Consider the derivative of the sigmoid
activation function.

$$o_j(1 − o_j)$$

Where $o_j$ is the sigmoid output from unit $j$. The above derivative will approach zero
when $o_j$ is near 1.0 or 0.0. The graph illustrates this. You can see the flat spot at
the top of the graph, near zero.

Eliminating the flat spot is as simple as adding a constant, such as 0.1 to the derivative
function. This results in.

$$oj(1 − o_j) + 0.1$$

This, generally, has a very positive effect on all propagation training. No change is
made to the actual activation function, so the flat spot modification is only necessary
at training time.

# Encog Handling of the Flat Spot

By default Encog addresses the flat spot. This has been shown to enhance Encog training.
However, you can disable the flat spot propcessing. To do this set the FixFlatSpot
property, on any propagation training object to false.

# References

• An Empirical Study of Learning Speed in Back-Propagation Networks” (Scott E. Fahlman, 1988)