Interesting problem 
In this case, there’s two ideas that come to mind:


Don’t balance your dataset classes. Specifically, balance your classes to represent the real distribution of labels. Typically, we would balance our classes because we’re working off the assumption that we want our model to be equally good or bias towards every class. However, if we have prior knowledge of our distribution, we know that we do in fact want our model to be biased towards, for example, predicting dog if we know that 80% of the time its a dog. However, there will be some trade-offs. Your model will be strictly worse at predicting these other classes. But you will get better accuracy in your target domain.


I don’t have much knowledge of this area, but you can also artificially scale your logits either after the fact or during training. In binary classification, researchers often adjust the threshold to induce a bias of some kind (a cancer detecting model that prefers false-positives than false-negatives). We will still train as normal, we’ll just adjust the cut-off threshold after the fact to get the bias we’re looking for. I’m not sure what this would like in the multi-class case however. I’m assuming there’s a multi-class variant