P-tuning icon indicating copy to clipboard operation
P-tuning copied to clipboard

P-tuuning的一些问题

Open Ming-Qin-tech opened this issue 3 years ago • 4 comments

1.你好,我想问一下,在P-tunning中,[Mask]在一众[unused]中得位置是怎么确定的?是人工选择的吗?如果不是的话,是根据什么方式确定的? 2.原论文中写的当数据量比较少的时候用的anchor-word,比如预测“英国首都”,在几个[unused]中加一个[capital]效果会比较好,这个[capital]应该加在哪个位置是如何确定的呢?

Ming-Qin-tech avatar May 12 '21 07:05 Ming-Qin-tech

1.你好,我想问一下,在P-tunning中,[Mask]在一众[unused]中得位置是怎么确定的?是人工选择的吗?如果不是的话,是根据什么方式确定的? 2.原论文中写的当数据量比较少的时候用的anchor-word,比如预测“英国首都”,在几个[unused]中加一个[capital]效果会比较好,这个[capital]应该加在哪个位置是如何确定的呢?

不是作者哈,试着说一下自己的理解:

  1. 这个项目中的prmopt没有使用[unused] token,这里的[Mask]就和manual prmopt的mask位置一致。你看到的可能是苏剑林大佬文章中用了unused token的setting,他的代码在这里:https://github.com/bojone/P-tuning
  2. 这个项目中其实prompt中大部分的token都是anchor-word,具体到PT_Fewshot/data_utils/task_pvp.py中你可以看各个task的prompt。比如说Rte任务的prompt格式如下: https://github.com/THUDM/P-tuning/blob/368ab8561bab04b44010744a365124efaed6bf16/PT-Fewshot/data_utils/task_pvps.py#L288 它对应的block_flag_a是: https://github.com/THUDM/P-tuning/blob/368ab8561bab04b44010744a365124efaed6bf16/PT-Fewshot/data_utils/task_pvps.py#L290 其中第5个值为1,表示这个词是可以替换成LSTM embedding的,在这个prompt中对应the这个token。 其他的PVP同理,总之它目前的实现中基本除了少部分block_flag==1位置的token以外都是anchor token。 至于为什么这么选择,大概是因为这些token包含的语义信息比较少,替换掉也没事,效果稍微调一下也能上去……

Riroaki avatar May 27 '21 11:05 Riroaki

1.你好,我想问一下,在P-tunning中,[Mask]在一众[unused]中得位置是怎么确定的?是人工选择的吗?如果不是的话,是根据什么方式确定的? 2.原论文中写的当数据量比较少的时候用的anchor-word,比如预测“英国首都”,在几个[unused]中加一个[capital]效果会比较好,这个[capital]应该加在哪个位置是如何确定的呢?

不是作者哈,试着说一下自己的理解:

  1. 这个项目中的prmopt没有使用[unused] token,这里的[Mask]就和manual prmopt的mask位置一致。你看到的可能是苏剑林大佬文章中用了unused token的setting,他的代码在这里:https://github.com/bojone/P-tuning

  2. 这个项目中其实prompt中大部分的token都是anchor-word,具体到PT_Fewshot/data_utils/task_pvp.py中你可以看各个task的prompt。比如说Rte任务的prompt格式如下: https://github.com/THUDM/P-tuning/blob/368ab8561bab04b44010744a365124efaed6bf16/PT-Fewshot/data_utils/task_pvps.py#L288

    它对应的block_flag_a是: https://github.com/THUDM/P-tuning/blob/368ab8561bab04b44010744a365124efaed6bf16/PT-Fewshot/data_utils/task_pvps.py#L290

    其中第5个值为1,表示这个词是可以替换成LSTM embedding的,在这个prompt中对应the这个token。 其他的PVP同理,总之它目前的实现中基本除了少部分block_flag==1位置的token以外都是anchor token。 至于为什么这么选择,大概是因为这些token包含的语义信息比较少,替换掉也没事,效果稍微调一下也能上去……

看了半天没明天,原来是这个意思,谢谢

terrifyzhao avatar Jun 30 '21 08:06 terrifyzhao

@Riroaki 我也看了代码,好像是这个意思,但是他这个block 和论文上说的有出入:

For instance,for RTE task, the token “?” within prompt template “[PRE][prompt tokens][HYP]?[prompt tokens][MASK]” is specially added as an anchor token and affects the performance a lot.

这代码写的,跟论文上的,不一样。。。。不仅prompt 不一样, anchor word 也不一样。。。。难受

rookiebird avatar Oct 12 '21 11:10 rookiebird

PVP 是啥意思啊

sxthunder avatar Oct 31 '21 06:10 sxthunder