I want to fine tune an LLM to “steer” it in the right direction. I have plenty of training examples in which I stop the generation early and correct the output to go in the right direction, and then resume generation.
Basically, for my dataset doing 100 “steers” on a single task is much cheaper than having to correct 100 full generations completely, and I think each of these “steer” operations has value and could be used for training.
So maybe I’m looking for some kind of localized DPO. Does anyone know if something like this exists?
Oh I see the origin of my confusion. The terminology “supervised learning” got repurposed.
It’s all supervised learning if the model is learning the relationship between input and expected output (using supervised learning as described in (1)). The methodology of “pre-training” is the same as that of “supervised fine tuning”.
There’s no unsupervised learning happening, as described in (2)
No, it’s unsupervised. In pre-training, the text data isn’t structured at all. It’s books, documents, online sources, all put together.
Supervised learning uses data with “ground truth” labels.
Have you worked with (variational) auto-encoders? I think they’re a great example of what I would call unsupervised learning.
What are “ground truth” labels?
Ground truth labels are just prescriptive labels that we recognize as being true. The main thing that distinguishes unsupervised from supervised is that in unsupervised learning, what is “good” is learned from the unstructured data itself. In supervised learning, what is “good” is learned from some external input, like “good” human-provided examples.
Would you call token (N+1), given tokens (1 to N) as a ground truth?
No, in that case there’s no labelling required. That would be unsupervised learning.
https://en.wikipedia.org/wiki/Unsupervised_learning
So supervised vs unsupervised, according to you, is a property of the dataset?
Sorry, I really don’t care to continue talking about the difference between supervised and unsupervised learning. It’s a pattern used to describe how you are doing ML. It’s not a property of a dataset (you wouldn’t call Dataset A “unsupervised”). Read the Wikipedia articles for more details.
It’s alright :)