Well, it's important to understand that face recognition (just like object recognition process) is a two-stage process, the first one is the Computer Vision phase, which is to represent the image (face) in feature space that works well (depending on the task you want to do) so for example, the image itself is a set of ordered pixels (let's say 300x300), which makes each image representative by 90000 numbers, this is the dimensionality of your data points (images) and just FYI, 90000 is insanely huge, if you try to use Neural Networks, Support Vector Machines, or any other classification tool using this high dimensions, you will absolutely learn nothing - this is the curse of dimensionality (you will need to provide tremendously larger set for training, in other words, to learn any classifier you will need many more images than 90000, which is hard and unreasonable thing to do).
So you will need to represent the images in a different space (called feature space), for face recognition, there is something called eigenfaces (look it up), but the idea is that you find the most discriminate features of the faces then for each image, you convert that image to a set of numbers that will use the discriminant features to describe the image, so each image will be represented as a set of numbers (.3, .1, .1, ...) which will be much smaller than 90000. By the way (.3, .1, .1, ...) will mean something like for example .3 there's a difference between hair and face, .1 there's difference between face and background and so... However, this is a really hard step (feature selection) and it may vary based on the kind of images you have (like the basic eigenfaces only work when your images are aligned, are your images aligned?). Of course using Color Histograms is another approach to represent the image/face (personally (this is only my opinion), I think that color histograms won't be so efficient for face recognition, I might be wrong and would love to know if anyone knows)
The second step is the classification step, here you can use Neural Networks (which also needs a lot of parameter tuning), Support Vector Machines (popular), or decision trees (simple and interpretable), adaboost (popular), and some other approaches. - so you will provide your images in the feature space instead of the pixel-representative and hopefully you'll learn a good classifier that will classify with high accuracy.
Hope that helps