©作者 | 杨浩
单位 | 阿里达摩院
研究方向 | 自然语言处理
背景
随着 GPT-3 诞生,最大的版本多达 1750 亿参数,是 BERT-BASE 的一千多倍。事实上 GPT-3 的论文叫做 Language Models are Few-Shot Learner,顾名思义 GPT-3 主打的是小样本学习。GPT-3 最大的创新是可以用 prompt 直接前向做下游任务,从而不引进新的参数,打破了传统 pretrain+fintune 的模式,本质是通过挖掘预训练语言模型的知识做下游任务。那么如何用较小的预训练模型充分发挥预训练语言模型作为语言模型的作用,做下游任务。所以引出了最近一系列工作,基于 prompt 的新的训练范式。
好处:
1. 相比之前每个任务定义一套参数,在输入加上特定的信息,不需要改变整个模型的参数,从而提升效率和存储空间。
2. 传统 pretrain+fintune 的训练方式是有 gap 的,需要从大规模无监督数据训练迁移到下游 finetune 的任务,prompt-based 的方式打破了这个方式。
论文整理——按照时间线
1. Parameter-Efficient Transfer Learning for NLP ICML 2019 2019.2.2
motivation:
将 adapter 加入到 transformer 中,在针对某个下游任务微调时,改变的仅仅是 adapter 的参数。
2. To Tune or Not to Tune? Adapting Pretrained Representations to Diverse Tasks 2019 2019.3.14
motivation:
微调还是冻结?这是一个值得考虑的问题。当前有很多工作都集中在了预训练目标函数和模型结构的研究,而少有专门研究模型迁移的工作。本文讨论了冻结(frozen)和微调(fine-tuning)在不同任务上的表现,得到的结论是可以预想到的:不同迁移方式的表现取决于预训练任务和下游任务的相关性。
3. Commonsense Knowledge Mining from Pretrained Models 2019 2019.9.2
motivation:
利用 LM score 完成知识 prompt 的筛选
4. Language Models as Knowledge Bases? ACL 2019 -2019.9.3
motivation:
语言模型可以作为关系知识的潜在表示形式,对预先训练的现成语言模型(例如 ELMo 和 BERT)中已经存在的关系知识提取。在 kownledge-base complete 任务上利用语言模型预测的分数,完成知识提取,相比 elmo 等模型表现要好。需要人工标注 query 也就是模板。
method:
5. E-BERT: Efficient-Yet-Effective Entity Embeddings for BERT EMNLP 2020 2019.11.9
motivation:
将实体信息的 embedding 通过映射到 bert embedding 融入到 Bert 中,来增强 bert 对 LAMA 等知识探测数据集的能力,同时发现模型可以根据表面的实体名称来进行预测,而不是真正学习到了知识。例如,让模型预测某个人的母语时,模型可能会因为这个人的姓名较为偏向意大利的取名风格而直接预测他的母语是意大利语。
6. How Can We Know What Language Models Know? TACL 2020 2019.11.28
motivation:
运用完形填空形式,运用一个检测语言模型是否具有某些知识的探针任务。LPAQA 旨在改进 LAMA 的模版(query),为检测 LM 中的知识提供一个更严格的下界
method:
1. Mining-based Generation:基于远程监督的假设(即出现相同实体对的句子表达相同的关系),在 Wikipedia sentence 中寻找包含头尾实体 h、t 的句子,然后进一步提出了两种 prompt 抽取方法;
2. Middle-word Prompts:对于 h、t 中间包含文本的句子形式,将 h、t 中间的文本当作 prompt;
3. Dependency-based Prompts:对于其他句子,使用句法依赖解析来提取 h 和 t 最短的路径,并将路径上的词作为 prompt;
4. Paraphrasing-based Generation:类似查询拓展技术,在保持原 prompt 语义同时增加词汇的多样性。这种方法依赖反向翻译(back-translation),即翻译到另一种语言再翻译回来,构成多个样本后根据往返概率(round-trip probability)筛选 prompt。
5. ensemble: Top-1 Prompt Selection:用 LM,取 acc 最高的 prompt;Rank-based Ensemble:除了 Top-1 方案,有时候需要保持多个模版来增强效果,即选取前 K 个模版;Optimized Ensemble:通过 LM 的预测为不同的 prompt 赋权。
7. Zero-shot Text Classification With Generative Language Models NeurIPS 2019 2019.12.10
motivation:
针对 zero-shot 任务进行任务统一(转换成 qa 问题),利用 taskdescription(prompt),快速适应新的任务 method:
8. Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference EACL 2021 2020.1.21
motivation:
如何用较小的预训练模型充分发挥预训练模型作为语言模型的作用,做 fewshotlearning,做法是分类转化为完形填空
9. How Context Affects Language Models' Factual Predictions AKBC 2020 2020.5.10
motivation:
模型在进行预训练时使用到的无监督文本语料非常庞大,包含了相当多的知识,很难保证现有的预训练模型能够将这些知识全部存储在模型参数中并且之后可以足够准确的将这些知识提取出来。针对这个问题,尝试通过加入有关的上下文信息来提升模型提取知识的准确率。
method: Oracle-Based(ORA):挑选问题对应的事实样本在维基百科中的周围文本片段作为上下文。Retrieve(RET):选择 DrQA 的检索系统(TF-IDF)检索出的第一段文本作为上下文。
Generate(GEN):将问题作为前缀输入语言模型,对上下文进行自回归生成。Adversary(ADV):利用和问题具有相同关系类型但不同实体答案的问题,以 ORA 的方式挑选出包含无关信息的上下文。
10. It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners NAACL 2021 2020.9.15
motivation:
解决 label mask 预测多 token 问题。method: 选择分数最高的一个 token 为基准计算,替代多个 token 完形填空的分数计算
11. Automatically Identifying Words That Can Serve as Labels for Few-Shot Text Classification COLING 2020 2020.10.26
motivation:
小样本文本分类模型 PET 的基础上进行扩展,将原来目标中的多分类最大似然估计替换为多个 one-vs-rest 分类。这样就能够充分利用输入数据,同时减小标签和填空词之间的映射选择。通过这种方式,提出的方法就能够在小样本上也取得非常好的效果。同时通过实验发现,本文提出的方法找到的映射关系几乎可以与人工构建的映射关系一样好。
12. AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts EMNLP 2020 2020.10.29
motivation:
提出一种基于梯度的模版搜索方案
method:
12. Parameter-Efficient Transfer Learning with Diff Pruning 2020 2020.12.14
motivation:
adapter 的延续,将原来的参数上增加新参数(L0 正则约束稀疏性)
13. Few-Shot Text Generation with Pattern-Exploiting Training 2020 2020.12.22
motivation:
将 PET 运用到文本生成,模型采用谷歌 PEGASES(encoder(mask),decoder(生成 mask 的部分),这种模型结构适合 PET)
14. Making Pre-trained Language Models Better Few-shot Learners ACL 2021 2020.12.31
motivation:
AUTOPROMPT 需要大量样本进行基于梯度搜索,提出基于 t5 进行模板生成的自动化 pipline
method:
a)自动化选择标签词:1. 通过未经微调的预训练模型,对于训练集中的每一个类别,选择 top-k 的单词使得条件概率最大。2. 综合每个类别下的候选标签词,然后找出使得训练集正确率最大的 top-n 个分配方式。3. 通过对 dev 集微调,从 n 个分配方式中选择最佳的一个标签词,构建标签映射关系 M。
b)自动化选择模板 利用 t5 解码生成多个候选模板,然后对每一个候选模板利用 dev 集微调、选择其中一个最佳模板。
15. Prefix-Tuning: Optimizing Continuous Prompts for Generation ACL 2021 2021.1.1
motivation:
提出了 Prefix-Tuning,一种轻量级 fintune 替代方法,用于对自然语言生成任务进行微调,在使语言模型参数冻结的同时,去优化一个参数量少的 continuous task-specific vector(称为 prefix),用词表中的词初始化较好,并且和类别相关。在大多数任务上比 finetune 好。
method:
Prefix-tuning 是做生成任务,它根据不同的模型结构定义了不同的 Prompt 拼接方式,在 GPT 类的自回归模型上采用 [PREFIX, x, y],在 T5 类的 encoder-decoder 模型上采用 [PREFIX, x, PREFIX', y]。
1. 把预训练大模型 freeze 住,因为大模型参数量大,精调起来效率低,毕竟 prompt 的出现就是要解决大模型少样本的适配。2. 直接优化 Prompt 参数不太稳定,加了个更大的 MLP,训练完只保存 MLP 变换后的参数就行了。3. 实验证实只加到 embedding 上的效果不太好,因此作者在每层都加了 prompt 的参数,改动较大。
16. WARP: Word-level Adversarial ReProgramming ACL 2021 2021.1.1
motivation:
不同于 Discrete Prompt 需要手工寻找或者学习离散的 token 作为 prompt,直接优化 embedding 作为 prompt 。在 few shot 效果上超过 PET 和 GPT3(lm-tune),没有超过 iPET,full shot 相差不多。节省效率。
method:
把 prompt tokens 插入到输入序列中,再经过 encoder 和一个 MLM head,然后通过计算分类的概率(分类交叉熵),同时证明了 prompt 少的话性能会下降。
17. What Makes Good In-Context Examples for GPT-3? 2021 2021.1.17
motivation:
根据相似度选择 In-Context, order 根据相似度排序
18. Calibrate Before Use: Improving Few-Shot Performance of Language Models ICML 2021 2021.2.19
motivation:
本文的动机是发现 GPT-3,虽然可以在某种程度上实现 zero/few shot learning,但 performance 非常不稳定,尤其是在三个方面:prompt 的格式、few shot 的训练样本,训练样本的顺序。
Majority Label Bias 这种 bias 和监督学习中的样本不均衡现象类似,GPT-3 总是倾向于预测出常见的 label(其实,不仅是 GPT-3,所有的机器学习模型都有这个问题),所以样本的分布影响着结果。
Recency Bias GPT-3 更倾向于预测离结尾最近的样本 label,直觉上感觉这有点像灾难性遗忘,比如训练样本是 PPNN,更倾向于预测出 N。甚至这种 bias 的影响会大于第一种,比如 PPPN,会大概率预测出 N。
所以,这种 bias 也解释了为什么样本的顺序会影响结果。Common Token Bias GPT-3 倾向于预测一些常见的词(这个现象在前几年对话系统也经常会遇到,生成一个 safe 但 meaningless 的话)
method:
通过一个放射变换将原有的概率 p 映射到 q,这里的 w 和 b 是需要学习的参数。但实际操作时存在一个问题,因为 prompt based learning 是一种 zero/few shot learning 方式,没有足够的样本来训练 w 和 b。
本文提出了一种 context-free input 来解决这个问题,用 N/A 作为输入,提供给 GPT-3 模型,因为 N/A 并不是有效的输入,理想情况下,GPT-3 应该给出 50-50 的 Pos 和 Neg 比例,但实际给出了 61.3% 的 Neg,这正式 recency bias 带来的问题。因此,可以通过手动设定 w 和 b 的值,来 uniform model 的输出。
19. PADA: A Prompt-based Autoregressive Approach for Adaptation to Unseen Domains 2021 2021.2.24
motivation:
利用 t5 的 embedding,选择领域的代表关键词(利用互信息),然后进行领域迁移(挖掘领域共现关键)
20. How Many Data Points is a Prompt Worth? NAACL 2021 2021.3.15
motivation:
论文证明这个 < MASK > 方法比模型加一个线性层做分类任务性能好。这个方法比传统任务(例如:加一个线性层做分类任务)用的样本少,为几分之一。针对任务的不同,只需用到几百到几千的样本。
21. GPT Understands, Too 2021 2021.3.18
motivation:
P-tuning 重新审视了关于模版的定义,放弃了“模版由自然语言构成”这一常规要求,从而将模版的构建转化为连续参数优化问题,虽然简单,但却有效。
22. Improving and Simplifying Pattern Exploiting Training 2021 2021.3.22
motivation:
预测 mask token 的时候,只把和 class 相关的 token 的 logit 过 softmax 算概率,忽略了词表中其他非 class token 的信息。具体来说,adapet 在预测 mask token 的时候,先把词表上所有 token 的 logit 过 softmax 算概率,然后把 class 相关的 token 拿出来,用 bce loss 去优化:最大化 correct class token的概率,最小化非 correct class token 的概率。
对于 label words 是 multi token 的情况,则最大化所有 correct class token 的 subtoken 的概率,最小化非correct class token 的 subtoken 的概率。Label Conditioning:随机 mask 原文中的词,然后用 bce loss。最后超过 pet,没有超过 ipet(用了无标签数据)。
23. Factual Probing Is [MASK]: Learning vs. Learning to Recall NAACL 2021 2021.4.12
motivation:
将 AutoPrompt 离散搜索 prompt 的方式用于连续 tuning 的初始化,同时发现比随机初始化效果好,选择 label 词较好。
24. Learning How to Ask: Querying LMs with Mixtures of Soft Prompts NAACL 2021 2021.4.14
motivation:
利用 ensemble 优化模板,学习哪个模板更有效,和如何融合模板:p-tuning+ensemble+em 算法,prompt 初始化是用挖掘的方式
25. KnowPrompt: Knowledge-aware Prompt-tuning with Synergistic Optimization for Relation Extraction 2021 2021.4.15
motivation:
融入外部知识(实体,关系)的 embedding 当做参数,将关系分类设置成模板,采用 MASK 的方式训练,同时增 KE 的 loss 。
method:
26. Surface Form Competition-Why the Highest Probability Answer Isn’t Always Right 2021 2021.4.16
motivation:
多项选择任务中最高的概率回答是否最优的问题。但是,按字符串概率排序可以由于表面形式竞争而存在问题——其中不同的表面形式竞争概率质量,即使它们代表相同的基本概念,例如:“计算机”和“PC”。由于概率质量是有限的,由于来自其他字符串的竞争(如这是有效的答案,但不是多项选择选项之一),这降低了正确答案的概率。
作者提出领域条件点互信息,一种替代评分函数,通过简单地根据与特定零样本任务上下文中的先验可能性成正比的项重新权衡每个选项,直接补偿表面形式的竞争。它在多种选择数据集,在所有 GPT-2 和 GPT-3 模型上的零样本性能方面取得了一致的收益。
27. The Power of Scale for Parameter-Efficient Prompt Tuning 2021 2021.4.18
motivation:
验证当模型参数变大时候(比如百亿),prompt 的长度,初始化,预训练目标和训练 step 变得不那么重要,同时简单的 ensemble(投票)能提高效果。
method:
总体上 Prompt Tuning 与 P-Tuning ( P-tuning-GPT Understands, Too) 较为相似。但 Prompt Tuning 的 prompt 参数全部置于左侧,并且论文将注意力集中在了冻结模型权重的一系列实验上,更好的验证了 prompt 的效果。初始化prompt: sampled vocab:从 5000 个 T5 字典最常用的 token 中提取。
class label:从任务 label 对应的 token 中提取。由于任务 label 通常数量较少,当任务 label 不够满足 prompt 参数长度时,使用 sampled vocab 进行填充。当一个 label 存在 multi-token 时,取其平均值。简单的 ensemble 能提升 prompt-tuning 的效果。
28. Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity 2021 2021.4.18
motivation:
prompt demonstration permutations,将随机 orders(24 个)利用 Global Entropy 或者 Local Entropy 进行排序,选择最优的。
method:
29. Entailment as Few-Shot Learner 2021 2021.4.29
motivation:
针对 few-shot 任务进行任务统一(转换成蕴含问题),利用 taskdescription(prompt),快速适应新的任务。
method:
30. PTR: Prompt Tuning with Rules for Text Classification 2021 2021.5.24
motivation: prompt tuning + discrete token 解决多分类问题
31. True Few-Shot Learning with Language Models 2021 2021.5.24
motivation:
之前那些 prompt 的方法用了大量验证集信息来调整超参、选择最好的 prompt。他们对性能的提升其实都来自验证集中蕴含的信息。针对在没有验证集的情况下提出了两个方法:k 折交叉验证:将数据集分为 k 个部分,用其中 k-1 个部分作为训练集,剩下的一个部分作为验证集。在后面的实验中,这种方法被称作 CV(cross validation)。
类似在线学习的交叉验证:将数据集分为 k 个部分,第 1 轮用第 1 部分训练,第 2 部分验证,第 i 轮用前 i 部分训练,第 i+1 部分验证。在后面的实验中,这种方法被称作 MDL(minimum description lengthm),因为其本质上遵循的是最小描述长度准则。
result:在理想的验证集里,是能挑选出最好的 prompt 的,因此最好的 prompt 就代表了在理想的巨量验证集中挑选 prompt 最好的结果。在没有验证集时,提出的两个交叉验证方法只能带来理想验证集带来的大约 25% 的性能增益。因此,没了大量数据作为验证集,的确也就不能有很好的交叉验证效果了。
32. Template-Based Named Entity Recognition Using BART ACL 2021 2021.6.3
motivation:
利用 bart 和模版完成 NER 任务,随机抽取 span 长度 1-8,正负样例 1:5,loss 为 cross-entropy。
method:
33. Reordering Examples Helps during Priming-based Few-Shot Learning 2021 2021.6.3
motivation:
prompt demonstration permutations select + tuning separators 迭代多次,寻找最优的 prompt。
method:
34. Can Generative Pre-trained Language Models Serve as Knowledge Bases for Closed-book QA ? ACL 2021 2021.6.3
motivation:
预训练语言模型在一些 QA 数据集上能够较好的完成闭卷问答任务的原因大部分是之前所使用的数据集(NaturalQuestions、WebQuestions 和 Trivia QA)的测试集和训练集的高重叠度,prompt 会自动拟合数据分布,不依赖预训练语言模型中的知识。
为此,基于 SQuAD 构造了一个测试集和训练集低重叠的 Closed-Book QA 数据集,并用 BART 模型进行了一系列实验测试,发现模型的表现的确很差。即使是在包含问题答案的文章语料上(SQuAD 的 passages)进一步预训练后,模型回答问题的准确率也相当低(1.8%),表明模型似乎并不具备较好的利用内部知识的能力。
method:
为了探究模型表现不好的原因,本文进一步构造了两阶段的实验,分别对模型的记忆能力和知识利用能力进行测试:记忆能力:第一部分实验首先让 BART 在包含问题答案的文章上用 Token Infilling 任务进一步训练(LM-finetuning),然后在测试阶段让模型完成一个背诵任务(Reciting),即把文章中的问题答案 mask 掉,让模型进行还原。结果显示模型只能对少量的文章进行记忆,具备较弱的记忆能力。
知识利用能力:第二部分实验则选取上一步实验中能背诵出大于 50% 知识的模型和对应文章。让模型进一步进行 QA-finetune 来做 Closed-book QA,以检验模型是否能利用记住的知识来回答问题。结果显示,即使已经能够背诵出文章中被 mask 掉的问题答案,模型还是无法很好的利用记住的知识对问题进行回答。
35. Adaptable and Interpretable Neural Memory Over Symbolic Knowledge NAACL 2021 2021.6.6
motivation:
在 BERT 的架构基础上加入了一个实体记忆模块和事实记忆模块,通过加入对实体、关系和三元组事实知识的编码信息来增强文本表示,并在一定程度上模块化的将模型中存储的事实知识分离出来。提出的两种记忆模块中分别存储了所有实体和三元组事实知识的嵌入表示,其中事实知识以 Key-Value 对的形式进行存储。模型通过在计算时对事实记忆模块中的相关知识进行检索,以得到有利的知识信息辅助下游任务的完成。
36. Knowledgeable or Educated Guess? Revisiting Language Models as Knowledge Bases ACL 2021 2021.6.17
motivation:
设计实验分析之前的方法所衡量的,并不是模型的信息抽取能力,而是设计的 prompt 对原始数据集的拟合程度。并且验证基于 demonstration 的方法,更多是相似 type 信息泄露,同一 type 的数据进行混合,发现只要 type 一致,最终的信息并不会差太多。
37. Cutting Down on Prompts and Parameters: Simple Few-Shot Learning with Language Models 2021 2021.6.24
motivation:
在 few-shot learning 场景下,通过微调 transformer 中的 bias,超过 full-model finetuning(全量参数),节省参数存储,另外提出 null prompt,效果接近略差于有 prompt 效果。
38. Multimodal Few-Shot Learning with Frozen Language Models 2021 2021.6.25
motivation:
基于 prompt-tuning 的多模态小样本学习模型
39. Meta-tuning Language Models to Answer Prompts Better 2021 2021.7.16
motivation:
针对 few-shot 任务进行任务统一(先转换成蕴含,然后转换成 qa 问题),利用task description(prompt),快速适应新的任务
method:
40. Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classification 2021 2021.8.4
motivation:
对标签词进行扩展,相当于引入外部知识
41. Differentiable Prompt Makes Pre-trained Language Models Better Few-shot Learners 2021.8.30
motivation:
label 和 prompt 都改成连续的,增加模板 mask 词目标(代替 p-tuning 的 lstm),效果优于 p-tuning
41. Finetuned Language Models Are Zero-Shot Learners 2021.9.3
motivation:
利用 Instruction Tuning 进行 multi-task 训练,在 11 个任务上训练(LM-tuning),在另一个没见过的任务上进行 zero-shot 测试,效果优于 gpt3,进一步说明Instruction Tuning 能激发语言模型的理解能力
42. PPT: Pre-trained Prompt Tuning for Few-shot Learning 2021.9.9
motivation:
prompt pretraining 用于下游任务,提供好的初始化 prompt,使得效果更稳定
43. Raise a Child in Large Language Model: Towards Effective and Generalizable Fine-tuning EMNLP 2021 2021.9.13
motivation:
利用大规模预训练模型提供的强大知识,决海量参数与少量标注样本的不匹配问题,在前向传播的时候保持与正常 fine-tune 一样,利用整个模型的参数来编码输入样本;在后向传播传播更新参数的时候,无需利用少量样本来调整海量参数,而是仅仅更新这么庞大的参数网络中的一部分,即网络中的一个 Child Network。在 full-shot 和 few-shot 上超过 finetune。整个方法没有利用 prompt。
method:
Step1:在预训练模型中发现确认 Child Network,并生成对应的 Gradients Mask;
Step2:在后向传播计算完梯度之后,仅仅对 Child Network 中的参数进行更新,而其他参数保持不变。
44. Multitask Prompted Training Enables Zero-Shot Task Generalization EMNLP 2021 2021.9.15
motivation:
和 FLAN 工作整体相似,区别是增加了任务和 prompt 数量(71 个多任务数据集,总共创建了 1939 个 prompt),减小了模型参数,效果超过 FLAN,证明了多任务 prompt 学习能使模型更加鲁棒、泛化能力更强
总结
目前难点:
1. PET:模板方差大,如何寻找好的模板;
2. P-tuning/prompt-tning:局部优化,在初始化附近做 sgd,还是依赖初始化 embedding;
3. 由于训练数据少,如何寻找好的统一任务形式,提升任务效果和泛化能力。
展望:
目前预训练语言模型对于知识和推理能力学习还不够好,导致基于 prompt 的方法效果还没发挥出来。不过从 gpt3 在 few-shot 上某些任务 sota 来看,随着预训练模型的发展越来越成熟,相信会带来 prompt-based 方法的突破。
特别鸣谢
感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
投稿通道:
• 投稿邮箱:[email protected]
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
·