Hallo,
Ich habe versucht, Verstärkungslernen (trlx-Bibliothek) zu verwenden, um einen FLAN-T5 zu trainieren. Ich habe gesehen, dass es als Beispiele Sentimentanalyse- oder Zusammenfassungsaufgaben gibt, aber in meinem Fall handelt es sich um eine generische Generierungsaufgabe. Beim Versuch, meinen Datensatz zu verwenden, habe ich die Konfiguration ppo_config_cnn_daily.yml ausprobiert.

Das Ergebnis, das ich bekommen habe, scheint eine Zusammenfassungsaufgabe zu sein:

Prompt: "[some text] ... from 1978, excluding finishing years incoming 62"
Output: "years incoming 62 incoming 62 incoming 62 incoming 62 incoming 62 incoming 62 incoming 62 incoming 62 incoming 62 incoming"
Und ich verwende diesen Code mit meinen persönlichen Prompts:

trlx.train(
    reward_fn=reward_fn,
    prompts=train_prompts,
    eval_prompts=valid_prompts,
    config=config
)
Ich habe zwei Probleme, die möglicherweise durch die Zusammenfassungsaufgabe verursacht werden:

Erstens die Wiederholung am Ende
Zweitens ist die erwartete Ausgabe sehr unterschiedlich
Sollte ich den Code ändern oder gibt es generische Beispiele?

Meine Konfiguration ist:
gen_kwargs:
    max_new_tokens: 100
  gen_experience_kwargs:
    max_new_tokens: 100
    do_sample: True
    temperature: 1.0
    top_k: 50
    top_p: 0.95

Das funktioniert gut für Zusammenfassungen. Haben Sie Vorschläge, wie ich diese Parameter für generische Text-zu-Text-Aufgaben und nicht für Zusammenfassungen ändern kann?
Es scheint, dass das Problem, mit dem du konfrontiert bist, darin besteht, dass die verwendete Beispielkonfigurationsdatei (ppo_config_cnn_daily.yml) für eine Zusammenfassungsaufgabe konzipiert ist und möglicherweise nicht für deine generische Textgenerierungsaufgabe geeignet ist. Daher musst du möglicherweise die Konfigurationsdatei und die Hyperparameter anpassen, um sie besser an deine Aufgabe anzupassen.

Hier sind einige Vorschläge zur Anpassung der Konfigurationsdatei und der Hyperparameter für eine generische Textgenerierungsaufgabe:

1. Passe die maximale Sequenzlänge an: In deinen gen_kwargs- und gen_experience_kwargs-Abschnitten hast du den Parameter max_new_tokens auf 100 gesetzt. Dies legt die maximale Anzahl von Tokens fest, die für jeden Prompt generiert werden können. Je nach Komplexität deiner Textgenerierungsaufgabe musst du diesen Wert möglicherweise erhöhen oder verringern.

2. Passe die Abtastparameter an: In deinem gen_kwargs-Abschnitt hast du die Temperatur auf 1.0, top_k auf 50 und top_p auf 0.95 gesetzt. Diese Parameter steuern die Zufälligkeit und Vielfalt des generierten Textes. Auch hier musst du je nach Aufgabe diese Werte anpassen, um das gewünschte Maß an Zufälligkeit und Vielfalt zu erreichen.

3. Verwende eine andere Belohnungsfunktion: Die von dir verwendete Belohnungsfunktion hängt von den spezifischen Zielen deiner Textgenerierungsaufgabe ab. Wenn du beispielsweise Produktbeschreibungen generierst, möchtest du eine Belohnungsfunktion verwenden, die die Relevanz und Genauigkeit der Beschreibungen maximiert. Wenn du kreatives Schreiben generierst, möchtest du eine Belohnungsfunktion verwenden, die die Kreativität und Originalität des Textes maximiert.

4. Überlege, eine andere Architektur zu verwenden: Die Architektur des FLAN-T5-Modells ist möglicherweise nicht optimal für deine spezifische Textgenerierungsaufgabe. Du könntest mit verschiedenen Architekturen oder vortrainierten Modellen experimentieren, um herauszufinden, welche am besten für deine Aufgabe geeignet ist.

Insgesamt ist es wichtig, mit verschiedenen Konfigurationen und Hyperparametern zu experimentieren, bis du die Kombination findest, die am besten für deine spezifische Textgenerierungsaufgabe funktioniert.