人工智能基础总结

概念

人工智能(Artificial Intelligence,简称AI)

人工智能旨在生产出一种能以人类智能相似的方式做出反应的智能机器,能够帮助人类完成各种任务。

它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

人工智能可以对人的意识、思维的信息过程的模拟。其核心在于让机器具备类似于人类的感知、学习、推理、思维、决策等能力

涉及的学科

哲学和认知科学,数学,神经生理学,心理学,计算机科学,信息论,控制论,不定性论等

应用

几乎所有领域

智能家居、自动驾驶、医疗诊断、金融服务、教育等

发展历程

1956-1970 定义问题,通用求解

1970-2010 知识工程,多模态信息,机器学习

2010-2020 深度学习,框架归一

2021-现在 强人工智能涌现

强ai和弱ai

强ai:是指一种具备与人类同等智慧或超越人类的人工智能。能够像人类一样感知周围世界,并从中学习、理解和推理,展现出正常人类所具有的所有智能行为。

弱ai:指专门设计用于自动化需要特定认知技能的任务的AI应用程序,。这类人工智能利用为特定任务量身定制的机器学习模型,例如对象识别、聊天机器人交互、个人语音助手等,弱AI在多个领域具有广泛的应用,如无人驾驶/自动驾驶、数字助手、智能推荐、人脸识别等

为什么国内要有自己的大模型

因为国外大模型训练的数据对国内是有安全隐患、不符合国内的道德伦理、不利于国内和谐统一的内容,也会存在数据泄露的风险,所以国内要有符合自己国内场景的大模型。

大模型与小模型区别

  • 参数数量:大模型的可调参数数量通常非常巨大,以百万甚至亿计,这使得其在复杂数据集上的表现往往更优越。相反,小模型的参数数量较少,相对简单明了。
  • 训练时间和计算成本:由于大模型具有更多的参数,因此需要更长的时间进行训练,更高的计算成本以及更高的硬件需求。小模型的训练时间和计算成本则相应地减少。
  • 数据集应用范围:大模型通常适用于大型和复杂的数据集,例如大规模的文本、图像和语音数据集,以及广泛的人工智能应用场景。小模型则适用于小规模的数据集以及一些较简单的人工智能应用场景,例如轻量级机器学习的应用。

大模型训练过程

  1. 数据准备
    • 收集数据:根据模型的需求和问题特点,收集相关的数据集。这可以是通过爬虫、购买、公开数据集等方式获取的。
    • 数据清洗和预处理:对收集到的数据进行清洗,去除噪声、处理缺失值、异常值等。同时,对数据进行格式化,以满足模型的输入要求。
    • 特征提取和归一化:从原始数据中提取有用的特征,并进行归一化,使得不同特征之间具有可比性。
  2. 模型选择
    • 根据问题的特点和数据的情况,选择合适的机器学习算法和模型。这可能涉及监督学习、无监督学习、半监督学习等。
  3. 模型训练
    • 使用清洗和预处理后的训练数据集对选择的模型进行训练。这通常涉及到梯度下降等优化算法,用于迭代更新模型参数,以最小化损失函数。
    • 损失函数的选择也是关键,不同的模型和算法需要选择不同的损失函数。
  4. 模型调参
    • 在模型训练的过程中或训练后,根据模型评估的结果,使用诸如网格搜索、随机搜索、贝叶斯优化、遗传算法等方法对模型进行调参,以进一步提高模型的性能。
  5. 模型评估与验证
    • 常用的评估指标包括精度、召回率、F1值等。通过交叉验证等方法,将数据划分为训练集和测试集,使用测试集对模型的性能进行评估。
    • 混淆矩阵是另一种评估方法,用于比较模型的分类结果与真实标签。
  6. 模型保存和部署
    • 当模型训练完成并经过验证后,需要将训练好的模型保存下来。
    • 将模型部署到实际应用中,以进行预测、分类等任务。

 

Transformer简介

最初在2017年的论文《Attention is all you need》中提出

Transformer是一个基于自注意力机制的神经网络模型,最初被设计用于解决自然语言处理中的序列到序列(sequence-to-sequence)任务。

Transformer的网络结构主要包括编码器和解码器两部分。编码器负责将输入序列转化为一系列中间表示,而解码器则根据这些中间表示生成输出序列。在解码过程中,其前面的输出会作为当前的输入,然后重复下去。

自注意力机制:核心思想是将输入序列中的每个元素(如单词或字符)都视为一个向量,并计算每个元素与其他元素之间的相似度。这种机制帮助模型在处理序列数据时更好地理解上下文信息,并关注输入序列中的关键部分。具体来说,模型会计算每个查询与其他所有查询之间的相似度,然后根据这些相似度分配权重。

 

token介绍

Token是文本处理的基本单位,其本质是将文本分割为最小语义单元供模型处理。

Token是自然语言处理(NLP)和大语言模型(如GPT、BERT)处理文本数据的基础单元。它可以是单词、子词(subword)、字符,甚至特殊符号,具体形式取决于分词器(Tokenizer)的规则。例如,英文单词“unhappily”可能被拆分为“un”、“happy”、“ly”三个子词Token,而中文“人工智能”可能被视为一个整体Token或拆分为“人工”和“智能”两个子词。

Token的本质是将文本转换为模型可理解的数字形式(即Token ID)的关键步骤。每个Token对应模型词汇表中的一个唯一标识符,模型通过这些标识符识别和操作语义片段。

  • 单词级Token:将完整单词视为一个Token(如“hello”)。适用于英语等空格分隔的语言,但受限于罕见词处理。
  • 子词级Token:通过算法(如字节对编码BPE)将单词拆分为更小单元(如“unhappily”→“un”、“happy”、“ly”)。平衡词汇覆盖与计算效率,是主流模型(如GPT、BERT)的常用方式。
  • 字符级Token:将每个字符视为一个Token(如“cat”→“c”、“a”、“t”)。适用于中文等无空格语言,但可能丢失语义信息。
  • 混合级Token:结合单词级和子词级,根据上下文动态调整拆分策略(如“New York”视为一个整体Token)。

大模型Token计算机制

总 Token = 初始输入 + 所有工具调用结果

初始输入 = SystemPrompt +用户问题 + Rules + 对话历史

用户问题 : 我们输入的文字 + 主动添加的上下文(图片、项目目录、文件)

Rules:project rule + user rule + memories

工具调用结果:如读取文件内容工具,代码搜索工具,语法检查,对文件和代码库进行特定编辑的工具等

代码库检索原理

 代码库工具的检索和构建,都是经过 Codebase Indexing 流程实现的,它其实就是在对整个代码仓库做 RAG,即:将你的代码转换为可搜索的向量。

如Cursor的处理,在用户导入项目时,Cursor 会启动一个 Codebase Indexing 流程,它的进度可以在 Preference - Cursor Settings - Indexing & Docs 中看到。

据官方文档描述,这一步主要有 7 个步骤:
1. 你的工作区文件会与 Cursor 的服务器安全同步,确保索引始终最新。
2. 文件被拆分为有意义的片段,聚焦函数、类和逻辑代码块,而非任意文本段。
3. 每个片段使用 AI 模型转为向量表示,生成能捕捉语义的数学“指纹”。
4. 这些向量嵌入存储在专用的向量数据库中,支持在数百万代码片段中进行高速相似度搜索。
5. 当你搜索时,查询会用与处理代码相同的 AI 模型转为向量。
6. 系统将你的查询向量与已存储的嵌入向量进行比对,找到最相似的代码片段。
7. 你会获得包含文件位置和上下文的相关代码片段,并按与查询的语义相似度排序。

 

posted @ 2024-02-04 11:17  星光闪闪  阅读(103)  评论(0)    收藏  举报