1、下载web thinker程序
2、学习resoning论文
推理和演绎,目前的都是推理,没有演绎
inductive reasoning benchmarks
evaluation metric
评估指标
3、test-time
偏好对其
特定分布数据下面,满足人类偏好,。
文本梯度,test-time preference optimizaiton(TPO):
文本梯度
文本梯度是一种通过自然语言反馈优化大模型系统的新方法。它利用大型语言模型(LLMs)提供的文本反馈,反向传播到各个组件中,从而实现系统的自我优化12。
核心概念
文本梯度的核心思想是将LLMs的反馈视为梯度,用于指导系统的优化过程。具体来说,LLMs提供的自然语言反馈描述了如何修改变量,以改进系统的性能。这种方法类似于传统的自动微分,但使用的是自然语言而非数值梯度13。
主要组件
-
变量:计算图中的节点,包含非结构化数据(如文本)。
-
函数:变量转换(如LLM调用、模拟器)。
-
梯度:LLM提供的自然语言反馈,描述如何修改变量。
应用示例
文本梯度在多个领域展示了其通用性和有效性。例如:
-
代码优化:通过优化代码片段,提高处理难题的能力。
-
问题解决:通过优化问题解决方案,提高LLM解决复杂任务的能力。
-
推理能力:通过优化提示,提高大模型推理能力。
-
化学结构设计:在药物研发中优化化学结构设计。
实现示例
以下是使用TextGrad进行解决方案优化的示例代码:
import TextGrad as tg
from TextGrad.tasks import load_task
import numpy as np
import random
def set_seed(seed):
np.random.seed(seed)
random.seed(seed)
def eval_sample(item, eval_fn, model):
x, y = item
x = tg.Variable(x, requires_grad=False, role_description="查询语言模型")
y = tg.Variable(y, requires_grad=False, role_description="查询的正确答案")
response = model(x)
eval_output_variable = eval_fn(inputs=dict(prediction=response, ground_truth_answer=y))
return int(eval_output_variable.value)
def eval_dataset(test_set, eval_fn, model, max_samples=None):
if max_samples is None:
max_samples = len(test_set)
accuracy_list = []
for sample in test_set[:max_samples]:
acc_item = eval_sample(sample, eval_fn, model)
accuracy_list.append(acc_item)
return accuracy_list
set_seed(12)
llm_api_eval = tg.get_engine(engine_name="gpt-4o")
llm_api_test = tg.get_engine(engine_name="gpt-3.5-turbo-0125")
tg.set_backward_engine(llm_api_eval, override=True)
train_set, val_set, test_set, eval_fn = load_task("BBH_object_counting", evaluation_api=llm_api_eval)
system_prompt = tg.Variable(train_set.get_task_description(), requires_grad=True, role_description="系统提示语言模型")
model = tg.BlackboxLLM(llm_api_test, system_prompt)
optimizer = tg.TextualGradientDescent(engine=llm_api_eval, parameters=[system_prompt])
results = {"test_acc": [], "prompt": [], "validation_acc": []}
results["test_acc"].append(eval_dataset(test_set, eval_fn, model))
results["validation_acc"].append(eval_dataset(val_set, eval_fn, model))
results["prompt"].append(system_prompt.get_value())
for epoch in range(3):
for steps, (batch_x, batch_y) in enumerate(train_set):
optimizer.zero_grad()
losses = []
for (x, y) in zip(batch_x, batch_y):
x = tg.Variable(x, requires_grad=False, role_description="查询语言模型")
y = tg.Variable(y, requires_grad=False, role_description="查询的正确答案")
response = model(x)
eval_output_variable = eval_fn(inputs=dict(prediction=response, ground_truth_answer=y))
losses.append(eval_output_variable)
total_loss = tg.sum(losses)
total_loss.backward()
optimizer.step()
results["test_acc"].append(eval_dataset(test_set, eval_fn, model))
results["prompt"].append(system_prompt.get_value())
该代码展示了如何使用TextGrad库对语言模型的系统提示进行基于梯度的优化,从而提高在特定问答任务上的性能12。
结论
文本梯度是一种通过自然语言反馈反向传播优化大模型系统的新范式。它结合了LLMs的表达能力和反向传播的效率,为AI系统的优化提供了一个通用框架13。