Non-negative matrix factorization (NMF) is a useful dimension reduction tech- nique. Currently, the most effective way to minimize NMF optimization problems is by alternatively solving non-negative least square sub-problems. Some recent stud- ies have shown that projected Barzilai-Borwein methods are very efficient for solving each sub-problem. In this thesis, we study variants of the projected Barzilai-Borwein methods and discuss some useful implementation techniques. We provide an efficient implementation to succeed our popular NMF code via a projected gradient method.