Low morale is often the cause of desertion.
Low morale is caused by lack of food.
Keep a close eye on your food situation. If you run your mouse cursor over the food counter, it will give you a status report. if you have a large army it is possible to have a negative food problem.
This can be solved by building more farms, or constantly raiding other players or barbarian camps for food.
If you run out of food, troops will desert until there is enough food for them