目录

  • 前言
  • 最新ChatGPT GPT-4 文本推理技术详解
    • 1. 什么是推理(Reasoning)?
    • 2. 导入ChatGPT
    • 3. 测试ChatGPT的推理能力
      • 3.1 演绎推理(Deductive Reasoning)
      • 3.2 归纳推理(Inductive Reasoning)
      • 3.3 溯因推理(Abductive reasoning)
      • 3.4 三者之间的关系
    • 4. 调用ChatPT的推理能力
      • 4.1 LLM推理求鼓励,请告诉ChatGPT去思考——Let's think step by step(Zero-shot-COT)
        • 示例
        • 课后问题,这是一个数学题**
      • 4.2 给几个例子,告诉ChatGPT应该这么思考——Chain of Thought Prompting
      • 4.3 任务太难,拆分一下,找个简单的去突破——Least to Most prompting
        • 示例:字符连接
      • 4.4 并非所有问题都需要拆解,不如先问问LLM(比如:ChatGPT)的意见——Self-Ask
      • 4.5 集思广益——Self Consistency
        • 方案1(显式)
        • 方案2(隐式)
    • 5. ChatGPT以及GPT-4的推理能力
    • 6. 本章总结
    • 相关文献
  • 参考资料
  • 其它资料下载

前言

自然语言处理(NLP)在当今人工智能领域中有越来越广泛的应用,其中一个重要的分支是文本推理文本推理可以帮助计算机理解人类的语言逻辑并进行相关决策。然而,由于语言的多义性和模棱两可性传统的文本推理技术往往无法满足高效准确地处理文本信息的需求

为了解决这个问题,在ChatGPT技术的支持下,本文旨在探究如何使用文本推理技术来增强现有NLP系统的性能,提高对话系统的质量和准确度

最新ChatGPT GPT-4 文本推理技术详解

  本文不涉及太多的代码,更多是论文的解读和方法的介绍,里面的方法都是通用的,但这里主要使用ChatGPT来作为演示。

1. 什么是推理(Reasoning)?

  在做出选择或处理问题时,推理是通过使用基于新的或现有信息的逻辑来理性地评价事物的能力。推理使你在决定最佳方案或最能满足你的目标的方案之前,能够平衡两个或多个方案的优点和缺点。它还能帮助你解决困难、处理不确定性、核实索赔,并仔细评估情况,以确保你做出的决定符合你的最佳利益[1]。比如:最近你打算买一台电脑? 决定之前,首先你会考虑你的预算,查看你预算范围的产品;其次如果你追求颜值,接下来你会考虑电脑的外观,如果你追求性价比,你会更关注电脑的硬件,比如CPU、GPU、内存等;此外还有你的需求(学习or工作),时间紧迫性等等,综合考虑多个因素,最终得出一个最合适的方案。这是人类的一项宝贵的技能,在人类的生活中拥有广泛的应用。

本图来源于What are the 4 primary types of reasoning? from Fibonicci.

  常见的推理类型主要包含3种,即亚里士多德在公元前的《前分析篇》中列举了推理的三种类型,为演绎、归纳以及溯回。后来,皮尔斯在此基础上提出了“溯因推理”:

  1. 演绎推理(Deductive Reasoning)[2]

  一般来说,演绎推理是指使用一组给定的事实或数据,通过逻辑推理来推导出其他事实。演绎推理,也称为三段论,通常的理解包括两个前提,一个大的和一个小的,然后一个逻辑结论,可以用来证明这些新的事实是真实的。

  例如,经典的例子:

大前提:人类都是凡人
小前提:苏格拉底是人
结论:苏格拉底是凡人

  在 “苏格拉底是人”(小前提)的具体情况下,对 “所有的人都是凡人”(大前提)的一般规则应用演绎法,可以得出结论:“苏格拉底是凡人”。

  1. 归纳推理(Inductive Reasoning)[2]

  归纳推理是寻找一种模式或趋势,然后对其进行概括。当你对信息进行归纳和推断时,你并不确定这一趋势是否会继续下去,但你假设它会继续下去。因此,你并不确定基于归纳推理的结论会是100%的真实。

一个著名的假说是: “天鹅都是白的”

  这个结论是在没有观察到任何黑天鹅的情况下从大量的观察中得出的,因此在逻辑上假设黑天鹅不存在。所以,归纳推理是一种有风险的逻辑推理形式,因为从天鹅的例子来看,如果发现了一只黑天鹅,那么结论就很容易不正确了。

  在实际能力测试中,另一个常见的归纳推理的例子是数字序列。试着确定模式,归纳和推断,找到该序列的下一个数字。

“6, 9, 12, 15, ?”

  这个趋势的逻辑答案似乎是18,但你不可能100%确定,也许这个数字代表的是天或小时或一些你意想不到的怪事,这可能导致推断出的结果不同。

  1. 溯因推理(Abductive reasoning)[2]

  溯因推理与归纳推理有些类似。它最早是由“猜测”一词引入的,因为这里得出的结论是基于概率的。在归纳推理中,人们假定最合理的结论也是正确的。

  例如:

大前提:罐子里装满了黄色的弹珠
小前提:鲍勃手里有一颗黄色的弹珠
结论:鲍勃手中的黄色弹珠是从罐子里拿出来的。

  通过溯因推理,鲍勃从罐子里拿走黄色弹珠的可能性是合理的,然而这纯粹是基于推测。黄色弹珠可能是任何人送给鲍勃的,也可能是鲍勃在商店里买的黄色弹珠。因此,从“装满黄色大理石的罐子”的观察中推断出鲍勃拿走了黄色大理石,可能会导致一个错误的结论。

  本图来源于:What part of the brain is used in reasoning? from How The Brain Learns

  从上述推理来看,人脑的大脑皮层对许多认知和感觉功能都至关重要,人类推理的过程和大脑皮层的活动密切相关。

  近年来,大型语言模型(Large Language Model,LLM)发展迅速,100B甚至更大参数规模的语言模型出现,它们已经在情感分析和机器翻译等任务上取得了十分优异的表现。特别的,去年12月ChatGPT横空出世,凭借其强大的能力和普遍的适用性直接破圈,引起了各行各业的人群关注。ChatGPT是生成式预训练 Transformer(GPT)语言系列模型中的一个成员。OpenAI在GPT-3改进版“GPT-3.5”上进行微调得到的。ChatGPT拥有非常强大的能力,甚至有研究者发现ChatGPT能够以9岁儿童的能力通过思维理论测试。那么,ChatGPT有多强大呢?它在推理这类任务上有着怎样的表现呢?有没有方法能进一步激发或是增强其处理复杂任务的能力?ChatGPT这种生成模型是否具有大脑的功效呢?不同功能区是如何划分呢?

  下面我将简单地使用ChatGPT回答一个问题(第2节),然后简单测试一下ChatGPT面对三个常见的推理任务的表现(第3节),利用ChatGPT的推理能力更好地完成现有任务(第4节),ChatGPT、GPT4的推理能力的小结(第5节)。

2. 导入ChatGPT

# import the OpenAI Python library for calling the OpenAI API
import openai
# openai.api_key = "填入专属的API key"

  Chatgpt一个对话的API调用包含两个必要的输入:

  • model: 使用的模型名称(例如:gpt-3.5-turbo, gpt-4, gpt-4-0314)。本文写作之初,OpenAI并未公布gpt-4, gpt-4-0314,为测试方便,结果均为gpt-3.5-turbo(也就是我们最常用的ChatGPT的版本)的输出。
  • message: 一个消息对象的列表,每个对象有两个必要的字段:
    • role: 信使的角色,包括:system、user,or assistant)
    • content: 信息的内容,例如: 给我写一首美丽的诗

  其中,消息也可以包含一个可选的名称字段,它给信使一个名字。例如:example-user、Alice、BlackbeardBot。名称中不得包含空格。

  通常情况下,对话会以一个告诉助手如何行事的系统消息开始,然后是用户和助手的消息交替出现, 但可以不遵循这种格式。

# Example OpenAI Python library request
MODEL = "gpt-3.5-turbo"response = openai.ChatCompletion.create(model=MODEL,messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Knock knock."},{"role": "assistant", "content": "Who's there?"},{"role": "user", "content": "Orange."},],temperature=0,
)response
<OpenAIObject chat.completion id=chatcmpl-749WgDEJrldSgYkoyTLsPak41vt19 at 0x28d93ce3ea0> JSON: {"choices": [{"finish_reason": "stop","index": 0,"message": {"content": "Orange who?","role": "assistant"}}],"created": 1681224286,"id": "chatcmpl-749WgDEJrldSgYkoyTLsPak41vt19","model": "gpt-3.5-turbo-0301","object": "chat.completion","usage": {"completion_tokens": 3,"prompt_tokens": 39,"total_tokens": 42}
}

  测试一下是否成功了,如果返回了下面的类似的结果,恭喜你成功了。

<OpenAIObject chat.completion id=chatcmpl-72sVLx6higzowFC3TjE5zLBU8k7TY at 0x2120f316400> JSON: {"choices": [{"finish_reason": "stop","index": 0,"message": {"content": "Orange who?","role": "assistant"}}],"created": 1680920527,"id": "chatcmpl-72sVLx6higzowFC3TjE5zLBU8k7TY","model": "gpt-3.5-turbo-0301","object": "chat.completion","usage": {"completion_tokens": 3,"prompt_tokens": 39,"total_tokens": 42}
}

响应对象包括下面几个字段:

  • id: 请求的ID
  • object: 返回的对象的类型(如chat.completion)
  • created: 请求的时间戳
  • model: 用于生成回复的模型的全名
  • usage: 用于生成回复的token数量,包括提示、完成和总数。
  • choices: 完成对象的列表(只有一个,除非你设置n大于1)
    • message: 由模型生成的消息对象,包括角色和内容
    • finish_reason: :模型停止生成文本的原因(要么是停止,要么是长度,如果达到max_tokens的限制)
    • index: 选择列表中的完成度的索引

若只需要答复,可以使用如下代码:

response['choices'][0]['message']['content']

问ChatGPT一个关于DataWhaled的问题,看看回答怎么样~

# example without a system message
response = openai.ChatCompletion.create(model=MODEL,messages=[{"role": "user", "content": "你知道DataWhale吗?"},],temperature=0,
)print(response['choices'][0]['message']['content'])
作为AI语言模型,我知道DataWhale是一个开源的数据科学社区,致力于推广数据科学和人工智能知识,为数据科学爱好者提供学习和交流的平台。DataWhale的成员来自于各大高校和知名企业,包括华为、腾讯、百度等。他们通过组织线上线下的学习活动、分享课程和资源等方式,帮助更多人学习和掌握数据科学和人工智能技术。

  可以看到,ChatGPT真的很厉害的,把DataWhale的属性、目标、成员组成、工作都做到了非常好的回答

最新ChatGPT GPT-4 文本推理技术详解(附ipynb与python源码及视频讲解)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(二)相关推荐

  1. 最新ChatGPT GPT-4 NLU应用之实体分类识别与模型微调(附ipynb与python源码及视频)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(六)

    目录 前言 最新ChatGPT GPT-4 自然语言理解NLU实战之实体分类识别与模型微调 主题分类 精准分类解决手段 模型微调步骤 核心代码 其它NLU应用及实战 相关文献 参考资料 其它资料下载 ...

  2. 最新ChatGPT GPT-4 NLU实战之文档问答类ChatPDF功能(附ipynb与python源码及视频)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(五)

    目录 前言 最新ChatGPT GPT-4 自然语言理解NLU实战之文档问答类ChatPDF功能 引言 ChatGPT 接口 Qdrant数据库Embedding存储 核心代码 测试 其它NLU应用及 ...

  3. 最新ChatGPT GPT-4 相似匹配Embedding技术详解(附ipynb与python源码及视频讲解)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(一)

    目录 前言 最新ChatGPT GPT-4 相似匹配Embedding技术详解 1. 何为Embedding 2. 相关API 2.1 LMAS Embedding API 2.2 ChatGPT S ...

  4. Python 进阶之路 (八) 最用心的推导式详解 (附简单实战及源码)

    什么是推导式 大家好,今天为大家带来问我最喜欢的Python推导式使用指南,让我们先来看看定义~ 推导式(comprehensions)是Python的一种独有特性,推导式是可以从一个数据序列构建另一 ...

  5. python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...

    Python开发技术详解适合Python爱好者.大中专院校的学生.社会培训班的学生以及用Python语言进行系统管理.GUI开发.Web开发.数据库编程.网络编程的人员使用. 内容提要 Python是 ...

  6. python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...

    (附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...

  7. java反射源码_java反射技术详解附源码

    在学校学习Java时,由于学的不扎实,也没经历过太多实战项目,所以很多重要的知识点瞟一眼就过去了,比如现在要讲的反射,当时直接就忽略掉了,可现在发现很多地方需要反射,不得不重新学习一下,上学欠了太多债 ...

  8. java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动

    在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...

  9. word2vec 中的数学原理详解(六)若干源码细节

    word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Miko ...

最新文章

  1. 10-1-直接插入排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
  2. 关于signal和fork的思考
  3. notepad 查找php函数,Notepad++中常用的技巧总结
  4. [算法] 2-4 组合游戏
  5. 系统地学学喝酒的技巧
  6. 遍历元素根据状态显示不同颜色
  7. java初学者面试_Java面试的前50个问题,面向初学者和经验丰富的程序员
  8. [Project Euler] 来做欧拉项目练习题吧: 题目013
  9. 双击获取GridView控件行信息
  10. Android9王者荣耀卡顿,王者荣耀卡顿掉帧?教你如何让王者荣耀流畅爆表
  11. 第一篇博客——开天辟地
  12. EMC测试、安规测试、环境测试
  13. 使用pascal voc训练测试faster rcnn
  14. python 特征选择卡方_文本特征选择(信息熵、Gini、IV、卡方值)
  15. python既是无序序列又不可重复的是_python 在set里随机选一个元素_Python序列--集合(set)...
  16. 老挑毛 U盘 winPe 制作 流程
  17. 坎坎坷坷的深度学习之路(三)-Hello world(2)-------MNIST数据集1-MNIST格式
  18. 传播延迟与传输延迟以及带宽时延积
  19. 各种分布(distribution)
  20. C++ 时间戳 时间相关函数

热门文章

  1. Cassandra在海量数据存储及大型项目案例介绍-part4
  2. 原生RedHat OpenStack搭建
  3. 计算机专业想考银行,我是计算机专业的毕业后想进银行需要考哪些证...
  4. 1.你知道自己的未来是什么样子的吗?
  5. 代码随想录打卡day1(补卡)
  6. 为什么1个字节(byte)是8个比特(bit)
  7. 古代美女偷情之后的12种结局
  8. springboot向数据库插入数据
  9. 毕业设计 基于STM32单片机的汽车防撞与控制系统
  10. 西华师范大学计算机学院刘博,我院学子在西华师范大学第五届 “互联网+”大学生创新创业大赛中喜获佳绩...