According to Sparse Dictionary Learning (wiki),
Sparse dictionary learning is a representation learning method which aims at finding a sparse representation of the input data (also known as sparse coding) in the form of a linear combination of basic elements as well as those basic elements themselves. These elements are called atoms and they compose a dictionary. Atoms in the dictionary are not required to be orthogonal, and they may be an over-complete spanning set.
I think matrix factorization methods require their basis (a column of $W$ in $V \approx WH$) to be orthogonal? How does Dictionary Learning work differently from matrix factorization?