神经网络的学习过程,亦如我们设置了一系列的函数,通过学习,让参数更加合理化,从而拟合从输入到输出的映射关系。
下面,通过 ResNet 结构,来理解神经网络的学习过程。
卷积、归一化和池化
卷积可以用于特征提取,归一化可以用于提高模型的泛化能力,池化可以用于减少特征的维度。
进程、线程和协程
进程,是程序运行时的实例,是操作系统分配资源的基本单位。确保了程序运行的独立性。
线程,是进程中的执行单元,是操作系统调度的最小单位。线程共享进程的内存空间,可以访问进程的资源。
协程,是一种用户态的轻量级”线程”,这种机制的关键在于 Python 中的事件循环。事件循环维护着一个就绪队列,通过不断轮询来检查和调度可以执行的协程。所有的协程都在同一个线程中执行,它们通过主动交出控制权来实现任务切换。
装饰器和装饰器模式
装饰,实际上是对函数、对象行为的改变,或是扩展、增强、甚至替换。它接收一个个体,最终输出一个装饰后的个体。
这里,装饰器是 Python 中的概念,而装饰器模式来源于设计模式。把它们放在一起,是因为它们都具备有”装饰”的特性,但也有一些不同。
创建自己的大语言模型
本文翻译自Step-by-Step Guide to Creating Your Own Large Language Model。从大语言模型的基本概念开始,逐步介绍如何创建自己的大语言模型。
AI 和认知卸载:将思考过程与机器共享
翻译 AI and cognitive offloading: sharing the thinking process with machines
AI
我们的大脑天生就能够减轻工作量(协作和使用工具),而 AI 这类工具把它推进到了一个新的高度。
这种与生俱来的能力,让我们可以把 思考 分享给工具、其他个体或技术,这种分布式认知的本质为协作和创新开辟了令人兴奋的可能。
AI 代理工作流程设计模式 — 概述
神经网络隐藏层中的过拟合问题
回顾一下,在 上一篇文章中,我们提到了在反向传播过程中的梯度计算。
梯度,是损失函数(成本函数)对参数的偏导数组成的向量。它的方向是损失函数上升最快的方向,它的值是损失函数上升最快的速率。
如上图示,是一张3D的损失函数图,其中,x轴和y轴分别是参数 w 和 b,z轴是损失函数的值。我们最终的目标是希望损失函数最小,即找到最优的参数 w 和 b。
这就像是一个下山的过程,我们需要找到那个下山最快的方向,但是,山路是曲折的,我们需要不断的调整方向,逐步跨步(按照一个学习率)。跨步太大,可能会错过最优解,跨步太小,可能会收敛太慢。
当然,实际过程要复杂的多,在神经网络中往往会存在很多的隐藏层,而每一层都需要计算梯度,而每一层的梯度计算都需要依赖于前一层的输出以及对后一层结果产生的影响。影响可能会被放大,也可能会被缩小,这就是梯度消失和梯度爆炸的本质原因。
前向传播和反向传播
LangChain Agents
接收输入,理解语言(语境、意图、逻辑关系等),并据此做出动作。