Closed gghhoosstt closed 2 years ago
Hello ghhoosstt,
Thanks for the question. Here is a clarification.
For each task (i.e. label), we randomly create an episode from this task's data. Hence, each episode samples support set and query set from the same data pool, while ensuring not to pick one element twice.
Your idea would be interesting to try. But this is not what we did in this work.
I hope it answers your question.
Thank you for your efficiency! Consider that you meta-test for 1000 episodes in your paper, I also wonder that each episode samples support set and query set from the same data pool is true for meta-test?
Yes it is.
To do meta-learning, we have 3 data pools: train, val, test which are defined by their set of labels (i.e. tasks).
During training: an episode's support & query sets come from the train data pool (from goemotions) During validation: an episode's support & query sets come from the val data pool (from goemotions) During test: an episode's support & query sets come from the test data pool. Plus, the data source (goemotions or dailydialog) can be changed.
Feel free to ask other questions.
ok , thank you for clear reply. But, I have a new question: considering that you meta-test for 1000 episodes, suppose a case that example A is sampled from episode #1 as a support data, later, example A is sampled from episode #100 as a query data, Because example A has ever seen by the model in episode #1, how to compute accuracy ? I may have misunderstood you, Please advise me, thank you!
Accuracy (and other metrics) are computed for each episode. Reported results are the average scores of all metrics and their standard deviation across episodes. This is why we set multiple queries per way, the computed score can then be much more precise. If you look at the code, you will see we compute metrics directly from the model base class's methods.
so can I understand during meta-test, each episode is finetune the model got in meta-train from scratch rather than continued finetune from last episode?
During meta-test, the model is not fine-tuned, it only uses the support set to compute the prototypes for the current episode. In the paper in Table 2, we report the effect of fine-tuning the meta trained model (it makes the performance drop a lot).
ok,I see. Thank you very much!
Hello , I have a question that does every task need to split into a support set and a query set? So, each episode samples support data from the support set and samples query data from the query set?