Modeling High-Dimensional Discrete Data with Multi-Layer Neural Networks