I figured out the problem. I was adding the direction_move vector to the camera position incorrectly. I was adding to separate X,Y,Z vector elements based on key input, where I should have been adding the entire vector to the direction_move vector:

This is the incorrect code:

Code:
camera_position[z] += (direction_move[z] * speed); //WS keys (fwd/back)
camera_position[x] += (direction_strafe[x] * speed); //AD keys (strafe)
It should be:

Code:
camera_position += direction_move * speed; //WS keys (fwd/back)
camera_position += direction_strafe * speed; //AD keys (strafe)