**已关闭。**此问题为not about programming or software development。目前不接受回答。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
19小时前关闭
Improve this question的
我一直在对Keras的GPT-2实现进行微调,以用于问题回答。总体而言,结果似乎很有希望,但如果我包含非常相似的问题,我会看到问题。我看到的行为是模型会混淆,并对两个问题给出相同的答案。
import keras_nlp
import tensorflow as tf
import keras
import json
preprocessor = keras_nlp.models.GPT2CausalLMPreprocessor(
sequence_length=128,
)
gpt2_lm = keras_nlp.models.GPT2CausalLM.from_preset(
"gpt2_base_en", preprocessor=preprocessor
)
questionsWithAnswers = []
... // populate with several lines of text
questionsWithAnswers.append("What is Joe's phone number? Joe's phone number is 555-555-5555")
questionsWithAnswers.append("What is Mary's phone number? Mary's phone number is 444-444-4444")
loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)
gpt2_lm.compile(
optimizer='Adam',
loss=loss,
weighted_metrics=["accuracy"],
)
gpt2_lm.fit(epochs=50, verbose=2, batch_size=2, x=questionsWithAnswers)
output = gpt2_lm.generate("What is Joe's phone number?", max_length=200)
字符串
在上面的例子中,我可以问:“乔的电话号码是多少?”和“玛丽的电话号码是多少?"不幸的是,模型似乎只是选择其中一个答案,并为两个问题生成相同的回复。
我认为问题是问题之间的相似性,唯一的区别是人的名字。
如何教模型区分两个问题/答案?
1条答案
按热度按时间kuuvgm7e1#
不知道为什么这个问题一再被否决,但无论如何,我分享我想出的解决方案。
因为我怀疑这个问题是由问非常相似的问题引起的,所以为了解决这个问题,我最终在提示和训练数据中添加了一个额外的上下文参数。
我没有问原来的问题:“Joe的电话号码是多少?",而是在上下文参数中添加了前缀。新的问题是“朋友:Joe的电话号码是多少?”和“同事:玛丽的电话号码是多少?”。
似乎添加额外的上下文参数足以让模型区分这些问题并回答正确的答案。