Training multiple keras models and combining outputs to determine losses
In keras a model can have multiple outputs, for example:

model = Model(inputs=[a1, a2], outputs=[b1, b2, b3])


Aand if you have multiple outputs you can have multiple losses, for example:

model.compile(loss=[loss1, loss2, loss3], optimizer='sgd')


By doing this, when you train and backpropagate your model you are using all the losses to train your model since you are minimizing all the losses. In this way you can couple your two models as you suggested.

Additionally compile has the parameter loss_weights in which you can change the weights of the different losses.