Skip to content

AI笔记

统计信息:字数 9057 阅读19分钟

原始笔记链接:https://cloud.seatable.cn/dtable/external-links/59b453a8639945478de2/

0690 日常使用了哪些AI

CHATGPT 等大模型是核心,其他很多套壳的工具和应用

国外的 Codeium Monica CodeGeex 等插件,辅助变成,查询资料

中文的文心一言,豆包等模型

0691 项目中使用了哪些 AI

项目中 AI 主要是后端实现具体逻辑,或者是调用外部大模型,前端目前在 AI 技术上进行集成

1、AI 助手,赋能传统软件:原来的逻辑是用户需要直接点击按钮,或者进行复杂操作,统计数据。现在我们写了一些 AI 助手,根据用户的自然语言描述,使用开源大模型,然后转换成对应的代码,执行对应的 API 或者功能(统计某人本周的任务,统计表格整体的信息,以统计图形式展现出来),实现了传统软件赋能。

2、AI 搜索,增强搜索范围:这是内部实现的一个 Go 服务,前端调用实现 AI 搜索。关键是文本的分词和分析等,然后计算不同文档的匹配度。zincsearch 基础上改动的。替换了原来的 es 搜索,需要的资源更少 https://github.com/zincsearch/zincsearch

3、AI 识别,智能管理图片:识别发票图片,然后进行填写,避免用户手动录入数据。我们内部的技术实现调用了某某的图片识别接口(还有其他身份证,驾照,发票识别等等)市场上有一些开源的工具,例如前端的 tesseract 可以进行识别,但是准确率不是很高,所以我们使用了其他的 AI 接口。

0736 Llm 基本概念

本文介绍了 LLM 的基本概念,通俗易懂,英文原文链接:https://towardsdatascience.com/understanding-llms-from-scratch-using-middle-school-math-e602d27ec876

如何通过简单的加法和乘法来分类对象(如叶子或花朵)并解释了下述的概念——

  • 输入数据:叶子和花朵的RGB颜色和体积。

  • 神经元、权重和层:节点对应神经元、连接线上的数值即为权重,图中可以清晰看到网络的层结构(输入层、中间层、输出层)。

  • 输出解释:使用两个输出神经元分别表示“叶子”和“花朵”,通过比较输出值的大小来进行分类,分类结果。

模型的训练方式:

  • 训练目标:通过调整权重,使模型能够正确地对输入进行分类。

  • 损失函数:说明如何计算损失(loss),以及损失函数在模型训练中的作用。

  • 梯度下降:介绍梯度下降算法如何用于优化模型参数,以最小化损失。

  • 迭代过程:描述训练过程中的迭代步骤,包括多次遍历训练数据(epochs),以及如何避免过拟合。

生成语言的原理:

  • 从字符到句子:讨论如何将神经网络应用于语言生成,通过预测下一个字符来逐步构建句子。

  • 输入和输出的表示:提出将字符映射为数字的方法,以及如何解释模型的输出为下一个字符。

  • 固定的上下文长度:解释在生成过程中,输入的长度是固定的,这被称为“上下文长度”(context length)。模型只能利用有限的上下文信息进行预测。

大型语言模型的有效性原因:

  • 模型的局限性:指出简单的字符预测模型的局限性,如无法捕捉长距离依赖和复杂的语言结构。

  • 改进方法:引入更复杂的技术,如嵌入、子词分词器和自注意力机制,以提升模型的性能。

嵌入(Embeddings):

  • 概念:说明嵌入是如何将离散的字符或词映射为连续的向量表示,以捕捉它们之间的语义关系。

  • 训练嵌入:在训练过程中,同时优化嵌入向量,使模型能够更好地理解输入数据。

  • 向量表示的优势:使用多维向量表示字符或词,可以更丰富地捕捉语言的特征。

子词分词器(Subword Tokenizers):

  • 动机:直接使用词作为基本单元会导致词汇量过大,模型难以处理。

  • 方法:将词分解为更小的子词或字符(如使用SentencePiece分词器),这样可以降低词汇量,同时捕捉词形变化和词缀信息。

  • 示例:展示如何将“cats”分解为“cat”和“s”,从而利用“cat”的已有信息,提升模型的泛化能力。

自注意力机制(Self-Attention):

  • 问题背景:传统的神经网络难以捕捉序列中远距离词之间的依赖关系。

  • 解决方案:自注意力机制允许模型根据输入序列中不同位置的词,动态地调整它们的重要性。

  • 具体实现:

  • 查询(Query)、键(Key)和值(Value):引入这三个概念,说明如何计算注意力权重。

  • 计算过程:通过点积计算注意力得分,使用Softmax函数归一化权重,然后加权求和得到输出。

  • 优势:自注意力机制能够高效地捕捉序列中不同位置的依赖关系,无论它们之间的距离多远。

Softmax函数:

  • 作用:将模型的原始输出转换为概率分布,使得输出的各个元素之和为1。

  • 必要性:在多分类问题中,需要将输出映射为概率,以便进行合理的预测和计算损失。

残差连接(Residual Connections):

  • 问题背景:随着网络层数的增加,训练深层神经网络会遇到梯度消失或爆炸的问题。

  • 解决方案:残差连接通过在层与层之间添加直接的捷径连接,缓解了梯度消失问题,使得信息能够更直接地传递。

  • 效果:这种结构提高了模型的训练稳定性和性能。

层归一化(Layer Normalization):

  • 概念:在每个层对输入进行归一化处理,减去均值,除以标准差,然后应用可训练的缩放和平移参数。

  • 作用:加速模型训练,稳定梯度,提高模型的泛化能力。

Dropout:

  • 概念:在训练过程中,随机丢弃一部分神经元的连接,以防止模型过拟合。

  • 原理:通过让模型在训练时学习多个子模型的集成,从而提高模型的鲁棒性。

多头注意力(Multi-Head Attention):

  • 概念:在自注意力机制的基础上,引入多个“头”,让模型能够从不同的子空间中学习表示。

  • 实现:对输入进行线性变换,生成多个查询、键和值,然后并行地计算注意力,最后将结果拼接起来。

  • 优势:增强模型的表达能力,使其能够捕捉更丰富的特征。

位置嵌入(Positional Embedding):

  • 问题背景:自注意力机制本身不考虑序列中元素的位置信息。

  • 解决方案:通过为每个位置添加一个位置嵌入向量,将位置信息显式地编码到输入中。

  • 方法:使用可训练的嵌入向量,或者采用固定的正弦和余弦函数进行位置编码。

GPT架构:

  • 整体结构:将前面介绍的所有组件组合起来,构建了GPT模型的完整架构。

  • 流程:

  • 输入层:将输入的文本通过词嵌入和位置嵌入进行编码。

  • Transformer块:包含多头自注意力、残差连接、层归一化和前馈神经网络等组件。

  • 输出层:通过Softmax函数,预测下一个词或字符的概率分布。

  • 特点:GPT模型主要用于文本生成,能够根据给定的上下文,生成连贯的文本。

Transformer架构:

  • 背景:Transformer模型最初是为了解决机器翻译等序列到序列的任务。

  • 结构:由编码器(Encoder)和解码器(Decoder)组成。

  • 编码器:对输入序列进行编码,捕捉其语义表示。

  • 解码器:根据编码器的输出和已生成的序列,生成目标序列。

  • 创新点:完全基于注意力机制,摒弃了传统的循环神经网络(RNN)结构,提高了并行计算效率。


Last update: November 9, 2024