回顾一下,在 上一篇文章中,我们提到了在反向传播过程中的梯度计算。
梯度,是损失函数(成本函数)对参数的偏导数组成的向量。它的方向是损失函数上升最快的方向,它的值是损失函数上升最快的速率。
如上图示,是一张3D的损失函数图,其中,x轴和y轴分别是参数 w 和 b,z轴是损失函数的值。我们最终的目标是希望损失函数最小,即找到最优的参数 w 和 b。
这就像是一个下山的过程,我们需要找到那个下山最快的方向,但是,山路是曲折的,我们需要不断的调整方向,逐步跨步(按照一个学习率)。跨步太大,可能会错过最优解,跨步太小,可能会收敛太慢。
当然,实际过程要复杂的多,在神经网络中往往会存在很多的隐藏层,而每一层都需要计算梯度,而每一层的梯度计算都需要依赖于前一层的输出以及对后一层结果产生的影响。影响可能会被放大,也可能会被缩小,这就是梯度消失和梯度爆炸的本质原因。
前向传播和反向传播
LangChain Agents
接收输入,理解语言(语境、意图、逻辑关系等),并据此做出动作。
LangChain Runnables
在实际的应用场景中,输入、决策、输出过程是复杂、递进、动态的。可能需要路由、并行、串行、甚至这些机制的进一步组合。
LCEL 概述
LECE(LangChain Expression Language)提供了 可高度组合化 的组件,涵盖 Prompt(输入)、Retriever(检索)、LLMs(大语言模型)、Tool(工具/函数) 以及 OutputParser(输出处理) 等。它隐藏了诸多底层的实现细节,以声明式的形式,简化 AI 产品的实现过程。
这些组件,实现了统一的底层协议 – Runnable 接口。
Runnable 接口中,定义了以 同步 或 异步 的方式对数据的流式处理、对 Chain 的调用、批处理等功能。
初次 “域” 见
我们能够抓住的东西,总是有限的、离散的,也就是有边界的、有数量的。
我认为,在一个边界内的自治对象,就是一个 域。所谓自治,有事物(对象),有事务(动作),有状态,有驱动(动作)。
下面,我想通过 DDD 领域设计、PDDL 规划和 ChatGPT Prompt 编写三个方面去谈谈自己对 域 的具体理解,刚好,最近接触到了这三个 域,也算是做一总结。
Milvus 初识
让计算机理解非结构化数据,就像发现了一座蒙尘已久的矿山。
本节,我们通过 Milvus 来认识一种解决该问题的方式。
LangChain 初识
随着 OpenAI 的兴起,LLM 仿佛是在一夜之间,忽然闯入到普通人的生活。我们该如何和它对话,如何把它带入到这个现实世界,类似 LangChain 这样的框架,或许给我们提供了一整套的解决方案。
LangChain 初次见面,这里,先去认识它的基本概念。
Seaport - fulfillOrder
本文,主要描述 Seaport 中 fulfillOrder 的过程。前序准备工作可参见 Seaport - Order。
在该过程中,可以看到,Seaport 中的交易过程更加灵活,ERC20,ERC721,ERC1155 之间,可以自由兑换。
Seaport - Order
Seaport 是 OpenSea 下一代交易协议。
本文讨论 Seaport 版本 1.1.0 中 Order 实体/ Order Hash/ Order 签名过程以及 Order 创建,为下一篇 fulfill order 做准备。