The model didn't really integrate the difference between relationship and emotion, didn't really integrate the subtleties about the character personnality, but didn't totally hallucinate : it integrate the output format, didn't repeat himself, and proposed a pretty relevant IR (not totally absurd). The result is quite the same as for the first model, but a little better (more content).
This time, the model didn't hallucinate. It only decided that no changes were required, which is not absurd.
![NOTE]
This examples and the following ones are from the dataset, but the model wasn't trained on these.
Prediction - held-out example 3
RAW OUTPUT:
"emotion|contentment|increases_a_little\nemotion|warmth|increases_a_little\nbelief|increases_a_little\nbelief|increases_a_little\nbelief|increases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a_little\nbelief|decreases_a"
This time, the result is very good. While the model wasn't trained over this examples (he didn't know this one), its prediction is adequate : he predicted contentment, but also added warmth, which is not absurd.
We still have a problem : the hallucination. The model repeated himself. Anyway, thanks to the internal parser, this doesn't affect the final output.
Prediction - held-out example 4
RAW OUTPUT:
"no_changes"
Output of the model :
state_changes: no_changes
Output of the dataset :
state_changes: no_changes
While the model wasn't trained over this example, it prediction is correct. He 'understands' that there are no changes or minor changes in basic conversations.
Prediction - held-out example 5
RAW OUTPUT:
"emotion|determination|increases\nemotion|determination|increases\nemotion|determination|increases\nemotion|determination|increases\nrelationship|determination|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nbelief|exhaustion|increases\nreflection|required"
This examples is more complex. It manages to predict something coherent (exhaustion, determination, null memory is right...), but not totally right : exhaustion is NOT a belief, reflection wasn't really required, and closeness was required.
Current model's behaviour :
Situation type
Behaviour
Very simple
Almost always correct
Casual conversation
Very good, sometimes even better than the dataset (warmth)
Situation complex with emotions
Understands concepts but makes magnitude and classification errors
Situation very complex
Begins mixing classes, forgets elements, hallucinate more
Next steps
I think the real bottleneck is the model size : a 360M parameters could be more appropriate. Also, a larger dataset would make the model understand more situations and more complex ones.
Next things to do are :
train a larger model (~360M parameters) with a larger dataset / the same one (~500 examples) and ~100 epochs (to avoid overtraining and memorization)
train a LoRA instead of finetuning all the model.
train with an even datasets : 500, 1500, 2500 examples.