数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
1.3 Multi-Turn Evaluation
在本节中,我们提出并研究了一种
multi-step program synthesis
范式,其中program synthesis
被分解成多步,系统在每个步骤中合成一个子程序。为了研究这种范式,我们首先开发了一个Multi-Turn Programming Benchmark: MTPB
。MTPB
包括115
个由专家编写的问题,每个问题都包括一个自然语言的multi-step description
(即,prompt
)。为了解决一个问题,一个模型需要合成功能上正确的子程序:遵循当前步骤的description
、考虑当前的description
以及前面步骤已经合成的子程序(例如,对前面步骤中定义的函数和/或变量的正确back-reference
)。下图给出了一个例子。benchmark
构建:我们(4
位作者)首先定义了一组115
个需要不同编程知识的问题,包括数学、数组操作、字符串操作、算法、数据科学以及需要其他知识的问题,使得每一类问题的数量大致平衡。对于每个问题,我们构建一个由multi-turn prompts
$ P $ 、测试用例输入 $ I $ 、测试用例输出 $ O $ 组成的triplet
。multi-turn prompts
$ P $ 的设计遵循两个约束条件:问题被分解成3
个或更多的turns
、单个turn
无法解决该问题。例如,实现一个线性回归模型可以被表述为
"Perform linear regression on x and y"
。由于main task
在这个prompt
中得到了充分的表达,所以理解这个prompt
就足以执行这个任务。我们通过人工检查来避免这种情况,使得多个turn
才能解决问题。与
prompt
一起,我们要求问题作者准备5
组测试用例的输入 $ I $ 和输出 $ O $ ,以评估模型输出的功能正确性。为了减少错误地奖励那些给出无意义程序、但通过测试的false positive
方案,我们检查并修改这些案例以确保测试质量。
在
HumanEval
中,模型要补全一个部分定义的函数。 与HumanEval
不同的是,MTPB
问题只提供prompt
,因此模型必须从头开始生成解决方案。虽然自由形式的生成可能允许更多潜在的解决方案,但缺乏一个入口来提供测试用例的输入,因此使得在不同的测试用例上测试生成的代码具有挑战性(因为自由生成的情况下,函数签名可能都不是固定的,因此难以提供测试接口)。为了克服这一挑战,我们在prompt
中嵌入了测试用例的输入。具体而言,prompt
是用Python
的格式化字符串编写的,当一个特定的测试用例应用于问题时,输入值会被替换成变量名。例如,一个prompt
,"Define a string named ’s’ with the value {var}."
,连同测试用例输入var = 'Hello'
将被格式化为"Define a string named ‘s’ with the value 'Hello'."
。参考Figure1
的①。这里将测试用例的输入嵌入到
prompt
中,而不是作为函数接口来调用。问题:
执行环境和解决方案评估:对于执行,
prompt
和生成的completion
组成的pair
,会被拼接起来从而构成一个独立的程序(如Figure 1
中的③)。然后遵从single-turn HumanEval benchmark
在一个孤立的Python
环境中执行该程序。然而,HumanEval
中的问题中,函数签名是已知的,因此在一组功能性的单元测试下调用生成的代码是很简单的。在我们的multi-turn case
中,无法保证生成这样的入口点(或返回值)。为了避免missing return signature
,MTPB
中multi-turn problem
的最后一个prompt
总是被指定为向终端打印出结果状态。然后,benchmark
执行环境重载了Python print(args)
函数,并将args
存储在栈上。如果一个问题的最后一个
prompt
的sampled code
不包括print()语句
,那么生成的代码的AST
将被突变以注入print()
的调用。最后,针对问题的pre-defined gold output
,对args
进行类型放松的等价检查(例如,list
和tuple
之间的隐式转换),以确定测试的失败或成功。multi-step
编程能力随模型大小和数据大小的变化而变化:在这个分析中,我们研究了模型大小和数据大小是如何影响multi-turn
范式下program synthesis
能力的。在MTPB
中,每个问题有5
个测试案例,我们用每个模型为每个测试案例采样40
个样本,在此基础上计算每个问题的通过率。我们的CODEGEN
模型、baseline
和OpenAI Codex
模型的MTPB
评估结果(平均通过率)如下表所示。很明显,
MTPB
的性能随着模型大小和数据大小的变化而提高。这表明,multi-step program synthesis
的能力随着模型大小和数据大小的变化而扩大。这些模型只是用autoregressive language modeling objective
进行训练。当模型和数据规模scale up
时,multi-turn program synthesis
的能力就涌现了,也就是以multi-turn
方式合成程序的能力。用
multi-trun factorization
更好地理解用户规范:我们假设,multi-trun factorization
增强了模型对用户意图规范的理解,这反过来又导致了更高的program synthesis
能力。为了测试这个假设,我们通过将每个规范拼接成single turn
,形成multi-turn specification
对应的single-turn
版本。如前所示,我们采用prompt perplexity
作为用户意图理解的代理。因此,我们比较了四种CODEGEN-MONO
模型下的multi-turn prompt
和concatenated single-turn prompt
的困惑度。这里比较了相同的
prompt
对应于multi-turn
和single-turn
之间的效果差异:对于
multi-turn
,直接使用原始的多个prompt
。对于
single-turn
,将多个prompt
拼接起来形成单个长的prompt
。
下表的左侧显示了
MTPB
中所有问题的平均困惑度。对于所有的模型,single-turn specification
比multi-turn specification
的平均困惑度高。这意味着multi-turn
用户规范可以被模型更好地理解。我们注意到,在较大的模型下,multi-turn
和single-turn
的意图规范的平均困惑度都略低于较小的模型,这说明较大的模型比小的模型更能理解用户意图。我们比较了使用
multi-turn prompt
的program synthesis
通过率、以及使用concatenated single-turn prompt
的program synthesis
通过率。结果显示如下表右侧所示。在所有的模型规模中,multi-turn specification
都接近或超过了single-turn specification
的10
个百分点。结合上面的困惑度分析,似乎将用户规范分解成多个步骤,并利用大型语言模型的涌现能力emerged capacity
,使他们更容易理解规范,更成功地合成程序。此外,我们根据问题的平均通过率按难度分类(低于
30%
表示"难",大于70%
表示 "易"),并研究问题难度和模型大小对multi-turn factorization
的改进的影响。如Figure2
所示。在几乎所有的模型大小和难度级别中,
multi-turn prompt
都会比single-turn prompt
带来明显的改善,而且大多数改善接近或高于10
个百分点。有趣的是,更大的模型(6.1B and 16.1B
)对容易的问题的multi-turn factorization
是不变的(见Figure 2
中的两个短条,0.19%
和-0.25%
)。这意味着,当问题可以很容易地被模型理解时(由于问题的简单性和较大模型的高容量的综合影响),对规范进行分解是没有必要的,也没有收益的。这实际上与我们的动机假设是一致的,即把complicated specification
进行分解,会使问题容易理解并改善program synthesis
。定性的例子:为了进一步了解模型行为在模型规模上的差异,我们研究了大型模型与小型模型具有不同性能的案例。我们特别选择了
CODEGEN-MONO 16.1B
和CODEGEN-MONO 2.7B
在性能上表现出明显差异的问题。在CODEGEN-MONO 16.1B
表现明显较差的问题上(与CODEGEN-MONO 2.7B
相比),我们观察到,由于按字面意思理解prompt
,更大的模型变得不灵活。例如:初始化一个数字的结果总是一个整型,
prompt
提示要求cast
成一个字符串(Figure 3
)。prompt
中的"return"
关键字触发了一个函数定义,而其用户意图是直接生成一个可执行程序(Figure 4
)。
然而一般来说,较大规模的模型克服了由于小模型对
prompt
的误解而导致的错误,包括同时赋值多个变量(Figure 5
)或理解任何comparison
的概念(Figure 6
)。我们还在
Mostly Basic Python Problems: MBPP
上评估了我们的模型。结果如下表所示。遵从Codet
的做法,我们从sanitized MBPP
中为我们所有的模型采样program
, $ n=100 $ ,温度为0.8
。最后四行来自于原始论文。总的来说,我们观察到在不同的版本(
NL, Multi, Mono
)上性能提高的一致趋势,我们最大的CODEGEN-MONO 16.1B
接近于code-cushman-001
的结果。我们不知道
OpenAI
模型中是否是《Evaluating large language models trained on code》
报告的"Codex 12B"
,但我们相信我们的模型在MBPP
上也取得了合理的结果。我们还注意到,我们的CODEGEN-MONO 6.1B
的表现明显优于INCODER 6B
。生成的程序长度和通过率的关系:
生成的程序长度和
prompt
长度之间的关系:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论