The normalized least mean squared (NLMS) algorithm is a specialized version of the least mean squared method which attempts to account for signals with time-varying average power. This is useful for applications whose parameters are nonstationary, such as speech. Using the NLMS algorithm allows for the filter taps to be updated in such a way that they reflect the changes in the energy level of the signal, which improves the convergence behavior of the algorithm. Because nonstationary signals have time-varying average power, NLMS can be a more ideal choice than LMS for certain applications such as echo cancellation, where the eigenvalue spread of the autocorrelation matrix R may be large.

Changes in the adaptive coefficients in a stationary state are dependent on two factors: step size, and signal energy. Hence, in NLMS the step size is reduced (normalized) in cases where the signal energy influences the filter tap weight coefficients in a harmful way. When compared to conventional LMS, NLMS is relatively less susceptible to problems caused by eigenvalue spread because of its ability to adjust its step-size each based on the signal energy.

Recall the basic iterative procedure for the conventional LMS algorithm below. The filter coefficients H are computed as follows:

$\mathbf{H}_{k+1}(n) = \mathbf{H}_{k}(n) + \mu*e(n)\mathbf{X}(n))$

This formula can be modified to NLMS with the following adjustment:

$\mu = \frac{\mu_{norm} }{\alpha + \mathbf{X}^{T}\mathbf{X}(n)}$

where $\alpha$ is a small valued constant, $\alpha << \mathbf{X}^{T}(n)\mathbf{X}(n)$ and $\mu_{norm}$ is some chosen value with a convergence bound $\mu_{norm}<2$ In cases where signal energy $\mathbf{X}^{T}(n)\mathbf{X}(n)$ is very small, a value of $\alpha = 1$ may be used. The $\mu_{norm}$ constant controls the rate of convergence, as well as the amount of misadjustment in the algorithm. A typical application may use a $\mu_{norm}$ value of $\mu_{norm}= 0.5$

NLMS is a common algorithm for adaptive echo cancellation applications. A block diagram displaying this application is shown in the figure below.