Doesn’t the network need to use a fully-connected layer in order for the weights to be updated properly?

No, don’t see what you mean properly.

How would the network be able to update its weights if there is no output to evaluate and give to the loss function?

If you meant the LSTM weights, it would depend on what you are doing with the outputs of the LSTM in the first place. Consider a setting, where there aren’t any additional fully connected layers. In such a case, if you take the outputs of the LSTM (hidden representations) and let’s say, compared against word2vec representations of some target words (using a distance metric like cosine similarity - PyTorch). You can do a .backward() on the distances and the network’s weights will update without a problem.

How would the network “know” to associate one with the other?

It depends on what you want the network to associate. If your intention is supervised learning, I believe there exists some form of ground truth at hand, using which you could propagate the loss.