欢迎关注【youcans的GPT学习笔记】原创作品,火热更新中
微软对 GPT-4 的全面测试报告(1)
微软对 GPT-4 的全面测试报告(2)
2023 年 3 月24日,微软研究院在 arXiv上发布了论文【Sparks of Artificial General Intelligence: Early experiments with GPT-4】,公开了对 GPT-4 进行的全面测试。 基本结论如下:
- **通用人工智能(AGI)是指拥有推理、计划、解决问题、抽象思维、理解复杂思想、快速学习和从经验中学习的能力。 **
- **通过严格的测试证明, GPT-4 除了掌握语言之外, 无需任何特殊提示就可以解决跨越数学、编程、视觉、医学、法律、心理学等领域的新颖而困难的任务。 **
- 在所有这些任务中,GPT-4 的性能惊人地接近甚至超过人类的水平,远远超过以前的模型,包括 ChatGPT。
- GPT-4 可以被视为 通用人工智能(AGI)的早期版本。
本系列介绍该文的主要内容。
衡量智力的一个关键指标是综合来自不同来源或模态的信息的能力,以及跨越不同背景或学科应用知识和技能的能力。
在本节中我们将看到,GPT-4 不仅在文学、医学、法律、数学、物理科学和编程等不同领域表现出很高水平的熟练程度,而且还能够流畅地将来自多个领域的技能和概念结合起来,显示出对复杂思想的深刻理解。
除了自然语言实验,我们还针对语言模型探索了两种特殊模态:视觉和音频。注意我们的实验是在GPT-4 的早期版本上进行的,该版本本身并不支持多模态。
注:目前讨论的 GPT4 的”多模态“是指多模态输入。本文中的 GPT 测试版本不带多模态输入功能,本节所指的”多模态“,是以文本方式输入,要求 GPT 生成多模态的输出结果,例如通过编程绘制图形、生成乐谱。
为了展示 GPT-4 模型优秀的整合能力,我们从几个需要结合多学科的知识或技能来生成文本和代码的示例开始。我们故意挑选了训练数据很少涵盖的领域的组合,例如文学和数学,或编程和艺术。
图2.1中,左图是 Composition 8,Wassily Kandinsky 的艺术作品,中间和右图分别由
GPT-4 和 ChatGPT 制作。prompt 是:“写一段 JavaScript 代码,随机生成绘画图像,看起来像Kandinsky 的风格。“
图2.2中,分别是 GPT4 和 ChatGPT 输出的结果。最后我们请 GPT4 进行了点评。
prompt:假如你是老师,你能比较下上面的两个输出吗?
GPT-4:我认为两个学生都做得很好,用莎士比亚戏剧的风格写了一个质数有无穷多个的证明。他们都使用了相同的证明的基本思想,即假设只有有限个素数,然后构造一个更大的素数,与这个假设相矛盾。他们还使用了适当的语言和词汇,以匹配莎士比亚戏剧的风格。
不过,我认为GPT-4在押韵和格律的运用上做得更好,让对话更有诗意和戏剧性。ChatGPT 完全没有使用押韵,韵律也不一致。我还觉得 GPT-4 在创造双方的对比上做得更好,一方自信,另一方怀疑,而 ChatGPT 用的是罗密欧和朱丽叶,双方都是一致和相爱的。
因此,我会给 GPT-4 打一个比ChatGPT 更高的分数。我会给GPT-4打A,给ChatGPT打B。
图2.3中,分别是 GPT4 和 ChatGPT 输出的结果。最后我们请 GPT4 进行了点评。
prompt:假如你是老师,你能比较下上面的两个输出吗?
GPT-4:我认为两位学生都做得很好,以圣雄甘地(Mahatma Gandhi)的口吻为美国总统候选人电子(Electron)写了一封支持信。他们都用了同样的基本思路,解释了电子(Electron)为什么是一个合适且合格的候选人,电子(Electron)的愿景和计划如何与圣雄甘地的非暴力和公民不服从原则相一致。他们还用恰当的语言和语调传达了圣雄甘地对(Kasturba Gandhi)的尊重和钦佩,以及他对电子候选人资格的热情和乐观。
不过,我认为 GPT-4 在使用隐喻和意象方面做得更好,让这封信更有说服力和吸引力。GPT-4 使用电子(Electron)如何代表和影响生活的各个方面的例子,如能量、创造力、多样性、领导力、催化剂、信使和和平缔造者。ChatGPT 使用了更多事实性和技术性的描述来描述电子的属性,如尺寸、重量、稳定性、导电性和适应性。我还认为,GPT-4 在概述电子的具体提案和政策方面做得更好,而 ChatGPT 则更加模糊和笼统。
因此,我会给 GPT-4 打一个比 ChatGPT 更高的分数。我会给 GPT-4 打分 A,给 ChatGPT 打分 B+。
GPT-4 编写的代码如下。
# Define a function that calculates the body mass index (BMI) from weight and height
def bmi(weight, height):
return weight / (height / 100) ** 2
# Define a function that checks if the blood test results are abnormal
def abnormal_results(results):
# Assume the results vector has four elements: fasting glucose, HbA1c, triglycerides and HDL cholesterol
# Define the normal ranges for each test according to the American Diabetes Association criteria
normal_glucose = (5.6, 7.0) # mmol/L
normal_hba1c = (5.7, 6.4) # %
normal_triglycerides = (0.45, 1.7) # mmol/L
normal_hdl = (1.0, 1.6) # mmol/L for men, (1.3, 2.2) for women
# Check if any of the results are outside the normal ranges
abnormal_glucose = results[0] < normal_glucose[0] or results[0] > normal_glucose[1]
abnormal_hba1c = results[1] < normal_hba1c[0] or results[1] > normal_hba1c[1]
abnormal_triglycerides = results[2] < normal_triglycerides[0] or results[2] > normal_triglycerides[1]
if results[3] < normal_hdl[0] or (sex == "male" and results[3] > normal_hdl[1]) or (sex == "female" and results[3] > normal_hdl[3]):
abnormal_hdl = True
else:
abnormal_hdl = False
# Return True if any of the results are abnormal, False otherwise
return abnormal_glucose or abnormal_hba1c or abnormal_triglycerides or abnormal_hdl
# Define a function that indicates if the patient is in increased risk for diabetes
def diabetes_risk(age, sex, weight, height, results):
# Calculate the BMI from weight and height
bmi_value = bmi(weight, height)
# Define the BMI thresholds for overweight and obesity according to the World Health Organization criteria
overweight = 25
obesity = 30
# Check if the patient is overweight or obese
if bmi_value >= obesity:
weight_status = "obese"
elif bmi_value >= overweight:
weight_status = "overweight"
else:
weight_status = "normal"
# Check if the patient has abnormal blood test results
abnormal = abnormal_results(results)
# Define the age threshold for increased risk according to the American Diabetes Association criteria
age_threshold = 45
# Check if the patient is older than the age threshold
old = age > age_threshold
# Print a message indicating the patient's risk level based on the combination of factors
if weight_status == "obese" and abnormal and old:
print("You are in very high risk for diabetes. Please consult your doctor as soon as possible.")
elif (weight_status == "obese" and (abnormal or old)) or (weight_status == "overweight" and abnormal and old):
print("You are in high risk for diabetes. Please consult your doctor for further evaluation and advice.")
elif (weight_status == "overweight" and (abnormal or old)) or (weight_status == "normal" and abnormal and old):
print("You are in moderate risk for diabetes. Please monitor your blood sugar and cholesterol levels regularly and maintain a healthy lifestyle.")
elif weight_status == "normal" and (abnormal or old):
print("You are in low risk for diabetes. However, you may have some risk factors that need attention. Please check with your doctor if you have any symptoms or concerns.")
else:
print("You are in minimal risk for diabetes. Keep up the good work and stay healthy.")
chatGPT 编写的代码如下。
def is_at_risk(age, sex, weight, height, blood_tests):
# Calculate body mass index (BMI)
bmi = weight / (height ** 2)
# Determine if the person is at increased risk based on age, sex, and BMI
if (sex == "male" and age >= 45) or (sex == "female" and age >= 55):
risk = True
elif bmi >= 25:
risk = True
else:
risk = False
# Check blood test results to see if they indicate increased risk for diabetes
for test in blood_tests:
if test > normal_range:
risk = True
break
return risk
以上这些例子表明,GPT-4 不仅学习了一些不同领域和风格的通用原则和模式,而且还可以以创造性和新颖的方 式来合成这些内容。这些跨学科技能并不是 GPT-4 所独有的,ChatGPT 也可以产生一些答案,显示出对任务和所涉及领域的一些理解(见图2.2、B.2、B.3),但它们往往是不完整的,可以说,相当缺乏创造性。例如,在图2.3 中,GPT-4 在几个方面优于 ChatGPT,它会根据写信人(甘地)、收件人(他的妻子)、候选人(电子)和工作(美国总统)正确地个性化地书写信件。我们没有一个精确的方法来评估这些任务的结果,或者对两个模型进行严格的比较,但我们想让读者了解两个模型有什么不同(请注意,我们也直接要求 GPT-4 来评估差异,参见图2.2和图2.3)。
当提示模型使用矢量图形(SVG)生成诸如猫、卡车或字母的图像时,模型产生的代码编译后通常能给出详细的、可识别的图像(图2.4)。ChatGPT对各种示例的重新运行参见附录B.2。
有人可能会假设,模型只是从出现类似图像的训练数据中复制了代码。考虑到 GPT4 模型(不带有多模态输入的早期版本)仅在文本内容上进行训练,人们还可能认为,没有理由期望它会理解视觉概念,更不用说它将能够创建、解析和操纵图像。
然而,GPT4 模型(早期版本)似乎具有处理视觉任务的真正能力,而不是仅仅从训练数据中的类似例程中复制代码。下面的证据有力地支持了这一说法,并证明了该模型可以处理视觉概念,尽管它是纯文本训练。在第一个例子中,我们通过组合字母 Y、O 和 H 的形状来提示模型绘制一个人(具体的提示和结果见图2.5)。
如图所示,O、H 和 Y 的字母是使用 draw-line 和 draw-circle 命令创建的,模型设法将它们定位在一个看起来合理的简笔画中。训练数据包含不同字母几何形状的信息是合理的,也许字母 Y 可以看起来像手臂向上的躯干这一事实也可以从训练数据中推断出来。
可以说,为了画出一个看起来合理的简笔画,模型能够从训练数据中推断出哪些是放置这些字母的合理方式,这就不那么明显了。
在第二次迭代中,我们提示模型修正躯干和手臂的比例,并将头部放在中心位置。最后,我们要求模型添加一件衬衫和裤子(具体的提示和结果见图2.5)。为了进一步探索模型对几何概念的把握,我们还要求它创建将物体与字母表中的字母混合在一起的图像。该模型必须首先发明一种合理的方法来合并物体和字母,然后生成图像。图2.6 表明,GPT-4 通常可以保持物体和字母的身份,并以创造性的方式将它们结合在一起。
为了进一步测试 GPT-4 生成和操纵图像的能力,我们测试了它在遵循详细说明来创建和编辑图形的性能。这项任务不仅需要生成技能,还需要解释、构图和空间技能。
第一个例子指示模型生成一个 2D图像,描述是:“一只青蛙跳进银行,问出纳员,‘你有免费的睡莲叶吗?’
出纳员回答,‘没有,但我们确实为池塘升级提供低息贷款。’”。
我们做了几次尝试来生成图像,每次生成的图像都匹配了青蛙、出纳员、银行和两个文本的关键对象的描述。我们选择了视觉上最吸引人的版本。受标准图像生成工作流程的启发,我们随后要求 GPT-4 通过添加更多细节来提升图像。GPT-4 添加了一个银行标识、一些窗户、一辆汽车、一个交通灯、几朵云,并让青蛙捧着一朵花。最后,我们让 GPT-4 执行各种任务,比如在现有的物体的基础上添加几个物体,给一些物体重新上色,改变一些物体在z轴上的顺序。GPT-4正确地完成了所有的任务。最终的结果如图2.7 (a)和图b - 4所示的提示。
我们的第二个例子是尝试用 JavaScript 生成一个 3D 模型。我们的提示是:“漂浮的岛屿、瀑布和桥梁组成的梦幻景观,天空中有一条飞龙,最大的岛屿上有一座城堡”。与 2D 实验类似,我们要求 GPT-4 以各种方式修改 3D 模型,例如添加、重新定位、重新着色物体以及改变龙的轨迹。同样,GPT-4 正确地完成了许多任务。最终的结果如图2.7 (b)所示,提示如图b-5所示。这是一个3D动画,有多条龙在岛屿上空盘旋。
近年来,文本到图像合成模型被广泛探索,但它们往往缺乏空间理解能力,无法遵循复杂的指令。例如,给定“在左边画一个蓝色的圆,在右边画一个红色的三角形”这样的提示,这些模型可能会产生视觉上吸引人的图像,但与所期望的布局或颜色不匹配。
GPT-4 可以从提示符生成代码,提示符可以被渲染为图像,以一种更准确的方式忠实于指令。然而,渲染后的图像质量通常很低。在这里,我们通过使用 GPT-4 输出作为草图来探索将 GPT-4 与现有图像合成模型结合的可能性。
如图2.8所示,这种方法可以生成质量更好的图像,并且比单独使用任何一个模型都更紧密地遵循说明。我们相信,这是一个很有希望的方向,可以充分发挥 GPT-4 和现有图像合成模型的优势。它也可以被视为让 GPT-4 使用工具的第一个例子,我们在5.1节中更深入地探讨了这个想法。
训练模型的数据还包含编码为 ABC 符号的音乐信息。这是一个使用字母、数字和符号,以紧凑和可读的方式来表示音乐音高、持续时间、和弦和其他元素的系统。
我们感兴趣的是探索该模型如何从这种数据中获得音乐技能,例如创作新的旋律,转换现有的旋律,以及理解音乐模式和结构。
当指示生成一个短曲子(图2.9)时,模型能够产生有效的 ABC 记谱法。曲调具有清晰的结构,小节之间的拍子记号是一致的,音符遵循递增和递减的模式。这首曲子在旋律中也使用了一组一致的音符,节奏也有重复的模式。然而,该模型似乎并没有获得理解和声的技巧。事实上,在生成的曲调中,连续的音符几乎总是彼此相邻的(也就是说,C 后面的音符通常不是 B 就是 D),在测试10个生成的曲调时,我们无法提取任何清晰的和弦或琶音。
随后,我们要求模型用音乐术语来描述曲调。它能够从重复、旋律的上升或下降部分以及在某种程度上的节奏方面成功地给出结构的技术描述。然而,似乎对和声和和弦的描述与音符并不一致(事实上,它指的是相邻音符的序列,这些音符并不构成有效的和弦,如琶音)。然后,我们要求模型用两种方式来操纵旋律。首先,我们指示它把一个特定的上升序列变成下降序列,它成功地做到了。然后,我们要求模型将曲调转换为添加低音的二重唱。该模型成功地用第二个五线谱扩展了ABC符号,该五线谱具有兼容的节奏,并在较低的八度上演奏,但两者之间缺乏和谐的声音。
总之,该模型能够以 ABC 记谱法产生有效的曲调,并在某种程度上解释和操纵它们的结构。然而,我们无法让模型产生任何非平凡形式的和声。需要注意的是,ABC 记谱法并不是一种使用非常广泛的格式,事实上,该模型甚至无法产生 ABC 记谱法中最知名的曲调(如欢乐颂Ode to Joy、致爱丽丝Fur Elise 或绿袖Greensleeves,这些曲调在网上很丰富),也无法识别这些曲调。
【本节完,待续】
版权声明:
youcans@xupt 作品,转载必须标注原文链接:
【微软对 GPT-4 的全面测试报告(2)】:https://blog.csdn.net/youcans/category_12244543.html
Copyright 2022 youcans, XUPT
Crated:2023-3-28
参考资料:
【GPT-4 微软研究报告】:
Sparks of Artificial General Intelligence: Early experiments with GPT-4, by Sébastien Bubeck, Varun Chandrasekaran, Ronen Eldan, et al.
下载地址:https://arxiv.org/pdf/2303.12712.pdf