当前位置: 首页 > news >正文

ChatGPT大模型极简应用开发-CH1-初识 GPT-4 和 ChatGPT

文章目录

    • 1.1 LLM 概述
      • 1.1.1 语言模型和NLP基础
      • 1.1.2 Transformer及在LLM中的作用
      • 1.1.3 解密 GPT 模型的标记化和预测步骤
    • 1.2 GPT 模型简史:从 GPT-1 到 GPT-4
      • 1.2.1 GPT1
      • 1.2.2 GPT2
      • 1.2.3 GPT-3
      • 1.2.4 从 GPT-3 到 InstructGPT
      • 1.2.5 GPT-3.5、Codex 和 ChatGPT
      • 1.2.6 GPT-4
    • 1.3 LLM 用例和示例产品
      • 1.3.1 Be My Eyes
      • 1.3.2 摩根士丹利
      • 1.3.3 可汗学院
      • 1.3.4 多邻国
      • 1.3.5 Yabble
      • 1.3.6 Waymark
      • 1.3.7 Inworld AI
    • 1.4 警惕 AI 幻觉:限制与考虑
    • 1.5 使用插件和微调优化 GPT 模型
    • 1.6 小结

1.1 LLM 概述

1.1.1 语言模型和NLP基础

GPT-4 和其他 GPT 模型是基于大量数据训练而成的大语言模型 (large language model,LLM),它们能够以非常高的准确性识别和生成人类可读的文本。

GPT-4 和 ChatGPT 基于一种特定的神经网络架构,即 Transformer。 Transformer 就像阅读机一样,它关注句子或段落的不同部分,以理解其上下文并产生连贯的回答。此外,它还可以理解句子中的单词顺序和上下 文意思。这使 Transformer 在语言翻译、问题回答和文本生成等任务中非 常有效。

NLP 是 AI 的一个子领域,专注于使计算机能够处理、解释和生成人类语言。现代 NLP 解决方案基于 ML 算法。NLP 的目标是让计算机能够处理自然语言文本。这个目标涉及诸多任务

  • 文本分类
  • 自动翻译
  • 问题回答
  • 文本生成:给定输入文本(prompt提示词)生成连贯且相关的输出文本

LLM 是试图完成文本生成任务的一类 ML 模型。LLM 使计算机 能够处理、解释和生成人类语言,从而提高人机交互效率。为了做到这一 点,LLM 会分析大量文本数据或基于这些数据进行训练,从而学习句子中 各词之间的模式和关系。

数据源

  • 维基百科
  • Reddit
  • 成千上万本书
  • 甚至互联网本身

在给定输入文本的情况下,这个学习过程使得 LLM 能够预测最有可能出现的后续单词,从而生成对输入文本有意义的回应。

早期发展

始于简单的语言模型,如 n-gram 模 型。n-gram 模型通过使用词频来根据前面的词预测句子中的下一个词,其 预测结果是在训练文本中紧随前面的词出现的频率最高的词。虽然这种方 法提供了不错的着手点,但是 n-gram 模型在理解上下文和语法方面仍需 改进,因为它有时会生成不连贯的文本。

为了提高 n-gram 模型的性能,人们引入了更先进的学习算法,包括循环神经网络(recurrent neural network,RNN)和长短期记忆(long short-term memory,LSTM)网络。这些模型能够学习更长的序列,并且能够更好地分析上下文,但它们在处理大量数据时的效率仍然欠佳。

1.1.2 Transformer及在LLM中的作用

Transformer 架构彻底改变了 NLP 领域,这主要是因为它能够有效地解决之前的 NLP 模型(如 RNN)存在的一个关键问题:很难处理长文本序列并记住其上下文。换句话说,RNN 在处理长文本序列时容易忘记上下文(也就是臭名昭著的“灾难性遗忘问题”),Transformer 则具备高效处理和编码上下文的能力。

这场革命的核心支柱是注意力机制,这是一个简单而又强大的机制。模型不再将文本序列中的所有词视为同等重要,而是在任务的每个步骤中关注最相关的词。交叉注意力和自注意力是基于注意力机制的两个架构模块,它们经常出现在 LLM 中。Transformer 架构广泛使用了交叉注意力模块和自注意力模块

交叉注意力有助于模型确定输入文本的不同部分与输出文本中下一个词的相关性

自注意力机制是指模型能够关注其输入文本的不同部分。具体到 NLP 领域,自注意力机制使模型能够评估句子中的每个词相比于其他词的重要性。这使得模型能够更好地理解各词之间的关系,并根据输入文本中的多个词构建新概念。

与 RNN 不同,Transformer 架构具有易于并行化的优势。这意味着Transformer 架构可以同时处理输入文本的多个部分,而无须顺序处理。这样做可以提高计算速度和训练速度

Transformer 架构由来自谷歌公司的 Ashish Vaswani 等人在 2017 年的论文“Attention Is All You Need”中提出,最初用于序列到序列的任务,如机器翻译任务。标准的 Transformer 架构有两个主要组件:编码器和解码器,两者都十分依赖注意力机制。

编码器的任务是处理输入文本,识别有价值的特征,并生成有意义的文本表示,称为嵌入(embedding)。

解码器使用这个嵌入来生成一个输出,比如翻译结果或摘要文本。这个输出有效地解释了编码信息。

生成式预训练 Transformer(Generative Pre-trained Transformer,GPT)是一类基于 Transformer 架构的模型,专门利用原始架构中的解码器部分。

在 GPT 中,不存在编码器,因此无须通过交叉注意力机制来整合编码器产生的嵌入,GPT 仅依赖解码器内部的自注意力机制来生成上下文感知的表示和预测结果。

1.1.3 解密 GPT 模型的标记化和预测步骤

GPT 模型接收一段提示词作为输入,然后生成一段文本作为输出,这个过程被称为文本补全,这主要是一个概率问题。

当 GPT 模型收到一段提示词之后,它首先将输入拆分成标记(token)。这些标记代表单词、单词的一部分、空格或标点符号。比如,在前面的例子中,提示词可以被拆分成[The, wea, ther, is, nice, today, so,I, de, ci, ded, to]。几乎每个语言模型都配有自己的分词器。

理解标记与词长的一条经验法则是,对于英语文本,100 个标记大约等于 75 个单词。

为了生成新的句子,LLM 根据提示词的上下文预测最有可能出现的下一个标记。OpenAI 开发了两个版本的 GPT-4,上下文窗口大小分别为 8192 个标记和 32 768 个标记。

带有注意力机制的Transformer 架构使得 LLM 能够将上下文作为一个整体来考虑。基于这个上下文,**模型为每个潜在的后续标记分配一个概率分数,然后选择概率最高的标记作为序列中的下一个标记。**在前面的例子中,“今天天气很好,所以我决定”之后,下一个最佳标记可能是“去”。

接下来重复此过程,但现在上下文变为“今天天气很好,所以我决定去”,之前预测的标记“去”被添加到原始提示词中。这个过程会一直重复,直到形成一个完整的句子:“今天天气很好,所以我决定去散步。”这个过程依赖于 LLM 学习从大量文本数据中预测下一个最有可能出现的单词的能力。

1.2 GPT 模型简史:从 GPT-1 到 GPT-4

1.2.1 GPT1

2018 Improving Language Understanding by Generative Pre-Training

早期需要有大量标记良好的监督数据。这一需求限制了监督学习的性能,因为要生成这样的数据集,难度很大且成本高昂。

在论文中,GPT-1 的作者提出了一种新的学习过程,其中引入了无监督的预训练步骤。这个预训练步骤不需要标记数据。相反,他们训练模型来预测下一个标记。

对于预训练,GPT-1 模型使用了 BookCorpus 数据集。该数据集包含约 11 000 本未出版图书的文本。BookCorpus 最初由Yukun Zhu 等人在 2015 年的论文“Aligning Books and Movies:Towards Story-like Visual Explanations by Watching Movies andReading Books”中给出,并通过多伦多大学的网页提供。然而,原始数据集的正式版本如今已不能公开访问。

人们发现,GPT-1 在各种基本的文本补全任务中是有效的。在无监督学习阶段,该模型学习 BookCorpus 数据集并预测文本中的下一个词。**然而,GPT-1 是小模型,它无法在不经过微调的情况下执行复杂任务。因此,人们将微调作为第二个监督学习步骤,让模型在一小部分手动标记的数据上进行微调,从而适应特定的目标任务。**比如,在情感分析等分类任务中,可能需要在一小部分手动标记的文本示例上重新训练模型,以使其达到不错的准确度。

尽管规模相对较小,但 GPT-1 在仅用少量手动标记的数据进行微调后,能够出色地完成多个 NLP 任务。GPT-1 的架构包括一个解码器(与原始Transformer 架构中的解码器类似),具有 1.17 亿个参数。作为首个GPT 模型,它为更强大的模型铺平了道路。

1.2.2 GPT2

2019 ,OpenAI 提出了 GPT-2。

这是 GPT-1 的一个扩展版本,其参数量和训练数据集的规模大约是 GPT-1 的 10 倍。这个新版本的参数量为15 亿,训练文本为 40 GB。GPT-2 表明,使用更大的数据集训练更大的语言模型可以提高语言模型的任务处理能力,并使其在许多任务中超越已有模型。它还表明,更大的语言模型能够更好地处理自然语言。

1.2.3 GPT-3

2020 年 6 月,OpenAI 发布了 GPT-3。

GPT-2 和 GPT-3 之间的主要区别在于模型的大小和用于训练的数据量。GPT-3 比 GPT-2 大得多,它有1750 亿个参数,这使其能够捕捉更复杂的模式。

GPT3的数据集:

  • Common Crawl(它就像互联网档案馆,其中包含来自数十亿个网页的文本)
  • 维基百科
  • 网站、书籍和文章的内容

能力:

  • 它在文本生成方面还展示出更强的连贯性和创造力。

  • 它甚至能够编写代码片段,如 SQL 查询,并执行其他智能任务。

  • GPT-3 取消了微调步骤,而这在之前的 GPT 模型中是必需的。

问题:

  • GPT-3 存在一个问题,即最终用户提供的任务与模型在训练过程中所见到的任务不一致
  • 训练过程不一定与最终用户希望模型执行的任务一 致
  • 增大语言模型的规模并不能从根本上使其更好地遵循用户的意图或指令
  • 用于训练模型的数据仍然可能包含虚假信息或有问题的文本,比如涉及种族歧视、性别歧
  • 模型有时可能说错话,甚至说出有害的话

2021年,OpenAI 发布了 GPT-3 模型的新版本,并取名为 InstructGPT。

与原始的 GPT-3 基础模型不同,InstructGPT 模型通过强化学习和人类反馈进行优化。这意味着 InstructGPT 模型利用反馈来学习和不断改进。这使得模型能够从人类指令中学习,同时使其真实性更大、伤害性更小。

使用标准的 GPT-3模型也能够得到所需的回答,但需要应用特定的提示词设计和优化技术。这种技术被称为提示工程(prompt engineering)

1.2.4 从 GPT-3 到 InstructGPT

instructGPT Training Language Models to Follow Instructions with Human Feedback

从 GPT-3 模型到 InstructGPT 模型的训练过程主要有两个阶段:

  • 监督微调(supervised fine-tuning,SFT)
  • 通过人类反馈进行强化学习(reinforcement learning from human feedback,RLHF)

每个阶段都会针对前一阶段的结果进行微调,SFT 阶段接收 GPT-3 模型并返回一个新模型。RLHF 阶段接收该模型并返回 InstructGPT 版本。

在 SFT 阶段中,原始的 GPT-3 模型通过监督学习进行微调。OpenAI 拥有一系列由最终用户创建的提示词。

  • 首先,从可用的提示词数据集中随机抽样
  • 然后,要求一个人(称为标注员)编写一个示例来演示理想的回答。重复这个过程数千次,以获得一个由提示词和相应的理想回答组成的监督训练数据集
  • 最后,使用该数据集微调 GPT-3 模型,以针对用户的提问提供更一致的回答。此时得到的模型称为 SFT 模型

图 1-6:获取 InstructGPT 模型的步骤

RLHF 阶段分为两个子步骤:

  • 首先训练奖励模型

    • 奖励模型的目标是自动为回答给出分数。
      • 当回答与提示词中的内容匹配时,奖励分数应该很高;
      • 当回答与提示词中的内容不匹配时,奖励分数应该很低;
    • OpenAI 首先随机选择一个问题,并使用 SFT模型生成几个可能的答案。通过一个叫作温度(temperature)的参数,可以针对同一输入生成许多回答。
    • 要求标注员根据与提示词的匹配程度和有害程度等标准给这些回答排序。在多次重复此过程后,使用数据集微调 SFT 模型以进行评分。
  • 然后使用奖励模型进行强化学习

    • 迭代的过程。它从一个初始的生成式模型开始,比如 SFT 模型;
    • 根据得到的奖励分数,相应地更新生成式模型。这个过程可以在无须人工干预的情况下重复无数次,从而自动、高效地提高模型的性能;

1.2.5 GPT-3.5、Codex 和 ChatGPT

2022 年 3 月,OpenAI 发布了 GPT-3 的新版本。新模型可以编辑文本或向文本中插入内容。(训练数据截至 2021 年 6 月)。2022 年 11 月底,OpenAI 正式称这些模型为GPT-3.5 模型。

OpenAI 还提出了 Codex 模型,这是一个在数十亿行代码上进行了微调的GPT-3 模型。Codex 模型在 2023 年 3 月被OpenAI 弃用。GitHub 发布了基于 GPT-4 的 Copilot X 版本,功能比之前的版本多得多。

可以说,ChatGPT 是由 LLM 驱动的应用程序,而不是真正的LLM。ChatGPT 背后的 LLM 是 GPT-3.5 Turbo。然而,OpenAI 在发布说明中将 ChatGPT 称为“模型”。

ChatGPT 是由 LLM 驱动的应用程序,而不是真正的LLM。ChatGPT 背后的 LLM 是 GPT-3.5 Turbo。然而,OpenAI 在发布说明中将 ChatGPT 称为“模型”。

1.2.6 GPT-4

2023 年 3 月,OpenAI 发布了 GPT-4。与 OpenAI GPT 家族中的其他模型不同,GPT-4 是第一个能够同时接收文本和图像的多模态模型。这意味着 GPT-4 在生成输出句子时会考虑图像和文本的上下文。

1.3 LLM 用例和示例产品

1.3.1 Be My Eyes

自 2012 年起,Be My Eyes 已通过技术为数百万视障人士提供了帮助。它的应用程序是志愿者与需要帮助的视障人士之间的纽带,使视障人士在日常生活中得到帮助,比如识别产品或在机场导航。只需在应用程序中点击一次,需要帮助的视障人士即可联系到一位志愿者,后者通过视频和麦克风提供帮助。GPT-4 的多模态能力使得它能够处理文本和图像。Be My Eyes 开始基于GPT-4 开发新的虚拟志愿者。这个虚拟志愿者旨在达到与人类志愿者相当的理解水平和帮助能力。

1.3.2 摩根士丹利

作为财富管理领域的领头羊,摩根士丹利拥有数十万页的知识和见解内容库,涵盖投资策略、市场研究与评论,以及分析师意见。这些海量信息分散在多个内部网站上,其文件格式主要是 PDF。这意味着顾问必须搜索大量文档才能找到他们想要的答案。可以想象,搜索过程既漫长又乏味。

由公司内部开发的模型将驱动一个聊天机器人,对财富管理内容进行全面搜索,并高效地解锁摩根士丹利积累的知识。通过这种方式,GPT-4 提供了一种更易使用的格式来分析所有相关信息。

1.3.3 可汗学院

Khanmigo 是由 GPT-4 驱动的新型 AI 助手。Khanmigo 可以为学生做很多事情,比如引导和鼓励他们,提问并帮助他们准备考试。Khanmigo 旨在成为对用户友好的聊天机器人,帮助学生完成课堂作业。它不会直接给出答案,而会引导学生进行学习。除了帮助学生,Khanmigo 还可以帮助教师准备教案、完成行政任务和制作教材等。

1.3.4 多邻国

多邻国已经使用 GPT-4 为其产品添加了两个新功能:“角色扮演”和“解释我的答案”。这两个功能在名为 Duolingo Max 的新订阅级别中可用。借助这两个功能,多邻国填补了理论知识和语言应用之间的鸿沟。多亏了LLM,多邻国让语言学习者能够沉浸在真实世界的场景中。

  • “角色扮演”功能模拟与母语人士的对话,让用户能够在各种场景中练习语言技能。
  • “解释我的答案”功能针对语法错误提供个性化反馈,帮助用户更深入地理解语言结构。

1.3.5 Yabble

Yabble 是一家市场研究公司,它利用 AI 技术分析消费者数据,为企业提供可用的见解。Yabble 的平台将原始的非结构化数据转化为可视化形式,使企业能够根据客户需求做出明智的决策。

1.3.6 Waymark

Waymark 提供了一个创作视频广告的平台。该平台利用 AI 技术帮助企业轻松创作高质量的视频,无须技术知识或昂贵的设备。

显著地改进了平台用户的脚本编写过程。这种由 GPT 驱动的增强功能使得平台能够在几秒内为用户生成定制脚本。用户能够更专注于他们的主要目标,因为他们无须花费太多时间编辑脚本,从而有更多的时间来创作视频广告

1.3.7 Inworld AI

Inworld AI 为开发人员提供了一个平台,用于创建具有独特个性、多模态表达能力和上下文意识的 AI 角色。Inworld AI 平台的主要应用领域之一是视频游戏。

将GPT 与其他 ML 模型结合,该平台可以为 AI 角色生成独特的个性、情感、记忆和行为。这个过程使游戏开发人员能够专注于叙事和其他主题,而无须花费大量时间从头开始创建语言模型。

1.4 警惕 AI 幻觉:限制与考虑

LLM 根据给定的输入提示词逐个预测下一个词(也就是标记),从而生成回答。在大多数情况下,模型的输出是与提问相关的,并且完全可用,但是在使用语言模型时需要小心,因为它们给出的回答可能不准确。这种回答通常被称为 AI 幻觉,即 AI 自信地给出一个回答,但是这个回答是错误的,或者涉及虚构的信息。

当要求它进行检查并重新计算时,它仍然给出了一个错误的答案

强烈推荐在创意型应用程序中使用纯 GPT 解决方案,而不是在医疗咨询工具等真相至关重要的问答类应用程序中使用。对于这类用例,插件可能是理想的解决方案。

1.5 使用插件和微调优化 GPT 模型

除了简单的文本补全功能,还可以使用更高级的技术来进一步利用 GPT 模型的能力:

  • 插件
  • 微调

局限性:

GPT 模型有一定的局限性,例如其计算能力有限。正如你所见,GPT 模型可以正确回答简单的数学问题,如 2 + 2 等于多少,但在面对更复杂的计算时可能会遇到困难,如 3695 × 123 548。此外,它没有直接访问互联网的权限,这意味着 GPT 模型无法获取新信息,其知识仅限于训练数据。对于 GPT-4,最后一次知识更新是在 2021 年 9 月。截至 2023 年 11 月下旬,GPT-4 的训练知识已更新至 2023 年 4 月。

**OpenAI 提供的插件服务允许该模型与可能由第三方开发的应用程序连接。**这些插件使模型能够与开发人员定义的应用程序接口(application program interface,API)进行交互。这个过程可以极大地增强 GPT 模型的能力,因为它们可以通过各种操作访问外部世界。

在其网站上,OpenAI 表示可以通过插件让 ChatGPT 执行以下操作:

  • 检索实时信息,如体育赛事比分、股票价格、最新资讯等;
  • 检索基于知识的信息,如公司文档、个人笔记等;
  • 代表用户执行操作,如预订航班、订购食品等;
  • 准确地执行数学运算。

微调过程涉及使用特定的一组新数据重新训练现有的GPT 模型。新模型专为特定任务而设计,这个额外的训练过程让模型能够调节其内部参数,以适应给定的任务。经过微调的模型应该在该任务上表现得更好。比如,采用金融文本数据进行微调的模型应该能够更好地回应针对该领域的查询并生成相关性更强的内容。

1.6 小结

从简单的 n-gram 模型发展到 RNN、LSTM,再到先进的 Transformer 架构,LLM 已经取得了长足的进步。LLM 是可以处理和生成人类语言的计算机程序,它利用 ML 技术来分析大量的文本数据。通过使用自注意力机制和交叉注意力机制,Transformer 极大地增强了模型的语言理解能力

相关文章:

ChatGPT大模型极简应用开发-CH1-初识 GPT-4 和 ChatGPT

文章目录 1.1 LLM 概述1.1.1 语言模型和NLP基础1.1.2 Transformer及在LLM中的作用1.1.3 解密 GPT 模型的标记化和预测步骤 1.2 GPT 模型简史:从 GPT-1 到 GPT-41.2.1 GPT11.2.2 GPT21.2.3 GPT-31.2.4 从 GPT-3 到 InstructGPT1.2.5 GPT-3.5、Codex 和 ChatGPT1.2.6 …...

python学opencv|读取图像(三十九 )阈值处理Otsu方法

【1】引言 前序学习了5种阈值处理方法,包括(反)阈值处理、(反)零值处理和截断处理,还学习了一种自适应处理方法,相关文章链接为: python学opencv|读取图像(三十三)阈值处理-灰度图像-CSDN博客 python学o…...

统信V20 1070e X86系统编译安装mysql-5.7.44版本以及主从构建

设备信息 操作系统版本架构CPU内存备注统信UOS V20 1070eX864C8G此配置仅做编译安装验证,持续运行或数据量增长大请自行评估资源配置。统信UOS V20 1070eX864C8G 资源包 该包包含mysql-5.7.44源码包、boost资源包、统信编译mysql-5.7.44安装包 通过网盘分享的文件…...

麒麟LINUX V10SP3 2401安装ORACLE 12.2.1 runInstaller直接报UNZIP格式不对

好久没有安装ORACLE了,一般都是RHEL上安装得比较多,这不,现在大家都是选择国产操作系统来安装数据库了,以前在龙蜥,欧拉,麒麟上也安装过,都没有问题,想来在麒麟LINUX v10sp3 2401上面…...

10 为什么系统需要引入分布式、微服务架构

java技术的发展 在java开始流行起来之后,主要服务于企业家应用,例如ERP,CRM等等,这些项目是为企业内部员工使用,我们的思维是怎么用设计模式,如何封装代码。让开发人员关注到业务上去,系统也就那么几十几百…...

【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)

目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显,发现可以打SSTI 本地起一个服务,折半查找fuzz黑名单,不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…...

openharmony应用开发快速入门

开发准备 本文档适用于OpenHarmony应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用(如下图所示),快速了解工程目录的主要文件,熟悉OpenHarmony应用开发流程。 在开始之前,您需要了解有关OpenHarmon…...

解决npm install安装出现packages are looking for funding run `npm fund` for details问题

当我们运行npm install时,可能会收到类似以下的提示信息:“x packages are looking for funding.” 这并不是错误提示,也不会影响项目的正常运行。其实实在提醒有一些软件包正在寻求资金支持。 根据提示输入npm fund可以查看详细的信息&#…...

python助力WRF自动化运行

对大部分人而言,特别是新用户,WRF模式的安装繁琐且不必要,可以作为后续进阶掌握的技能,本学习跳过繁琐的安装步骤,直接聚焦模式的运行部分,通过短平快的教学,快速掌握模式运行。进一步将python语…...

Go-知识 版本演进

Go-知识 版本演进 Go release notesr56(2011/03/16)r57(2011/05/03)Gofix 工具语言包工具小修订 r58(2011/06/29)语言包工具小修订 r59(2011/08/01)语言包工具 r60(2011/09/07)语言包工具 [go1 2012-03-28](https://golang.google.cn/doc/devel/release#go1)[go1.1 2013-05-13]…...

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解: 一、Last-Modified 头部 定义:Last-Modified 表示服务器上资源…...

Android渲染Latex公式的开源框架比较

对比主流框架,介绍如下几款 1、AndroidMath 官网:https://github.com/gregcockroft/AndroidMath/tree/master 基于android原生view方式渲染 优点:速度快,开源协议 MIT license 缺点:不支持文字公式混合渲染 2、Ma…...

ARM学习(42)CortexM3/M4 MPU配置

笔者之前学习过CortexR5的MPU配置,现在学习一下CortexM3/M4 MPU配置 1、背景介绍 笔者在工作中遇到NXP MPU在访问异常地址时,就会出现总线挂死,所以需要MPU抓住异常,就需要配置MPU。具体背景情况可以参考ARM学习(41)NXP MCU总线挂死,CPU could not be halted以及无法连…...

Sam Altman亲自确认:o3-mini即将上线!GPT和o系列模型合并!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…...

数据结构-队列

目录 前言一、队列及其抽象数据类型1.1 队列的基本概念1.2 队列的抽象数据类型 二、队列的实现2.1 顺序表示2.1.1 结构定义2.1.2 基本操作的实现 2.2 链式表示2.2.1 结构定义2.2.2 基本操作的实现 总结 前言 本篇文章介绍队列的基础知识,包括队列的抽象数据类型以及…...

Go Map 源码分析(一)

Go语言中的map是通过哈希表实现的,其底层结构和实现机制如下: 一、hash 结构 hmap结构体:是map的头部结构,主要字段及含义如下: count:表示当前哈希表中的元素数量,与len()函数相对应。flags…...

天机学堂5-XxlJobRedis

文章目录 梳理前面的实现:Feign点赞改进 day07-积分系统bitmap相关命令签到增加签到记录计算本月已连续签到的天数查询签到记录 积分表设计签到-->发送RabbitMQ消息,保存积分对应的消费者:**消费消息 用于保存积分**增加积分查询个人今日积…...

SpringBoot整合junit

SpringBoot 整合 junit 特别简单,分为以下三步完成: 1在测试类上添加 SpringBootTest 注解2使用 Autowired 注入要测试的资源3定义测试方法进行测试 1.实验准备: 创建一个名为 springboot_junit_test 的 SpringBoot 工程,工程目录结构如下…...

Jenkins-pipeline Jenkinsfile说明

一. 简介: Jenkinsfile 是一个文本文件,通常保存在项目的源代码仓库中,用于定义 Jenkins Pipeline 的行为。使用 Jenkinsfile 可以使 CI/CD 流程版本化,并且易于共享和审核。 二. 关于jenkinsfile: jenkins的pipeline…...

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章:三层架构和MVC 三层架构: 开发服务器端,一般基于两种形式,一种 C/S 架构程序,一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序,B/S 架构又分成了三层架构三层架构: 表现…...

结合帧级边界检测和深度伪造检测,定位部分伪造音频攻击中的篡改区域

Integrating frame-level boundary detection and deepfake detection for locating manipulated regions in partially spoofed audio forgery 摘要: 部分伪造音频是一种深度伪造的变体,它通过引入伪造或外部来源的善意音频片段来操纵音频语句&#xf…...

人工智能之深度学习_[2]-PyTorch入门

文章目录 PyTorch1.PyTorch简介1.1 什么是PyTorch1.2 PyTorch特点1.3 PyTorch发展历史 2 张量创建2.1 什么是张量2.2 基本创建方式2.3 线性和随机张量2.4 0、1、指定值张量2.5 指定元素类型张量 3 张量类型转换3.1 张量转换为NumPy数组3.2 NumPy数组转换为张量3.3 提取标量张量…...

vue2与vue3的区别

目录 1. 性能 2. 组合式 API 3. 生命周期钩子 4. 片段(Fragments) 5. 递归组件 6. 自定义渲染器 7. 全局 API 8. 组件内部的 this 9. 模板语法 10. 兼容性 总结 Vue 2 和 Vue 3 是 Vue.js 框架的两个主要版本,它们在多个方面有所不…...

八股学习 Mysql

八股学习 Mysql 常见面试问题优化其他 定位慢查询方案一:开源工具方案二:MySQL自带慢日志 SQL执行计划示例场景名词解释 索引概念底层数据结构聚簇索引、二级索引(非聚簇索引)覆盖索引覆盖索引应用场景创建原则索引失效 SQL优化表…...

主从复制

简述mysql 主从复制原理及其工作过程,配置一主两从并验证。 主从原理:MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二…...

服务器数据恢复—Zfs文件系统数据恢复案例

服务器数据恢复环境&故障: 一台zfs文件系统的服务器,管理员误操作删除了服务器上的数据。 服务器数据恢复过程: 1、将故障服务器中所有硬盘做好标记后取出,硬件工程师检测后没有发现有硬盘存在硬件故障。以只读方式将所有硬盘…...

Linux安装docker,安装配置xrdp远程桌面

Linux安装docker,安装配置xrdp远程桌面。 1、卸载旧版本docker 卸载旧版本docker命令 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine现在就是没有旧版本的d…...

Windows11电脑总是一闪一闪的,黑一下亮一些怎么解决

Windows11电脑总是一闪一闪的,黑一下亮一些怎么解决 1. 打开设备管理器2. 点击显示适配器3. 更新下方两个选项的驱动3.1 更新驱动Inter(R) UHD Graphixs3.2 更新驱动NVIDIA GeForce RTX 4060 Laptop GPU 4. 其他文章快来试试吧🥰 1. 打开设备管理器 在电…...

Low-Level 大一统:如何使用Diffusion Models完成视频超分、去雨、去雾、降噪等所有Low-Level 任务?

Diffusion Models专栏文章汇总:入门与实战 前言:视频在传输过程中常常因为各种因素(如恶劣天气、噪声、压缩和传感器分辨率限制)而出现质量下降,这会严重影响计算机视觉任务(如目标检测和视频监控)的性能。现有的视频修复方法虽然取得了一些进展,但通常只能针对特定的退…...

使用 Blazor 和 Elsa Workflows 作为引擎的工作流系统开发

开发一个完整的工作流系统使用 Blazor 和 Elsa Workflows 作为引擎,可以实现一个功能强大的工作流管理和设计系统。下面将提供详细的步骤和代码实现,展示如何在 Blazor 中开发一个基于 Elsa Workflows 的工作流系统。 项目概述 我们的工作流系统将包含以…...

调试Hadoop源代码

个人博客地址:调试Hadoop源代码 | 一张假钞的真实世界 Hadoop版本 Hadoop 2.7.3 调试模式下启动Hadoop NameNode 在${HADOOP_HOME}/etc/hadoop/hadoop-env.sh中设置NameNode启动的JVM参数,如下: export HADOOP_NAMENODE_OPTS"-Xdeb…...

mkv转码mp4(ffmpeg工具)

基于windows,Linux也可以用,都是命令行 下载路径(https://github.com/BtbN/FFmpeg-Builds/releases) 下载安装包:ffmpeg-n6.1-latest-win64-lgpl-6.1.zip,(根据自己的平台选择下载)并…...

前端项目搭建和基础配置

这个模块主要是介绍从零开始搭建项目的一些操作,包含一些前端常用的配置,这里只是一部分,会在后续的文章中逐步进行补充和完善 一、创建项目 在项目路径下使用以下命令生成前后端项目 npm create vite输入项目名称,框架选择Vue…...

计算机网络 (49)网络安全问题概述

前言 计算机网络安全问题是一个复杂且多维的领域,它涉及到网络系统的硬件、软件以及数据的安全保护,确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施,保…...

【Qt】02-信号与槽函数

发生的原因与事件 前言一、什么是信号与槽(Signals and Slots)?1.1 信号(Signals)1.2 槽(Slots)1.3 连接方式 二、调用基本的信号与槽函数2.1 代码分析connect()的用法 2.2 结果展示 三、自定义…...

CVPR 2024 机器学习方向总汇(多任务、联邦学习、迁移学习和对抗等)

1、Machine Learning(机器学习)多任务、联邦学习、迁移学习和对抗等 Molecular Data Programming: Towards Molecule Pseudo-labeling with Systematic Weak Supervision 👍摘要Improving Physics-Augmented Continuum Neural Radiance Field-Based Geometry-Agnos…...

spring中bean的循环依赖细节描述

首先,循环依赖不是一件好事,设计上几乎不会这么设计。但是总有时候要碰到一起奇怪的循环依赖。 spring bean循环依赖之所以能实现,也是有条件的,构造函数的依赖显然不行。而bean生命周期的实例化和属性设置是分阶段的&#xff0c…...

LeetCode - #187 Swift 实现重复的DNA序列

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

【gin】gin中使用protbuf消息传输go案例

在 Gin 中使用 Protobuf 进行高效消息传输 Protobuf(Protocol Buffers)是一种高效的二进制序列化协议,广泛用于高性能场景的数据传输。相比 JSON,Protobuf 具有更小的体积和更快的解析速度,非常适合服务间通信或前后端…...

Vue.js 动态设置表格最大高度的实现

概述 在现代 Web 开发中,响应式设计至关重要,尤其是在处理复杂的布局和数据表格时。表格通常会受到多种因素的影响,如分页、合计行或动态内容,这可能导致表格高度的变化。本文将介绍一个基于 Vue.js 的方法 setMaxHeight&#xf…...

Springboot 注解缓存使用教程

Spring Boot Cache 注解使用教程 Spring Boot 提供了强大的缓存抽象,开发者可以通过注解快速实现缓存功能,从而提高系统性能。本教程将全面介绍 Spring Boot 提供的缓存相关注解及其作用,并结合示例讲解实际应用。 1. 常用缓存注解概览 Spring Boot 缓存提供以下核心注解…...

TCP协议与TCP SYN Flood攻击

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一, TCP握手二&#xf…...

Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry 使用Scaling an Application Using App Autoscaler插件,基于资源使用情况触发简单扩缩容 CPU、内存、Http带宽、延时等 监控这些资源的使用情况决定扩缩容策略:实例是增加还是减少 Instance Limits 限制实例数量范围,定义…...

python轻量级框架-flask

简述 Flask 是 Python 生态圈中一个基于 Python 的Web 框架。其轻量、模块化和易于扩展的特点导致其被广泛使用,适合快速开发 Web 应用以及构建小型到中型项目。它提供了开发 Web 应用最基础的工具和组件。之所以称为微框架,是因为它与一些大型 Web 框架…...

Git实用指南:忽略文件、命令别名、版本控制、撤销修改与标签管理

目录 1.忽略特殊文件 1.1.那如何配置我们需要忽略的文件的呢? 1.2.如何检验效果? 2.给命令配置别名 3.基本操作之版本回退 3.1.使用场景: 3.2.使用方法: 4.撤销修改 情况一:对于工作区的代码,还没…...

神经网络常见面试题

梯度消失和梯度爆炸 1. 梯度消失(Vanishing Gradient) 定义: 梯度消失是指在反向传播过程中,梯度逐渐变得非常小,导致前面几层的权重更新非常缓慢,甚至几乎不更新,从而影响网络的学习过程。特…...

数据结构漫游记:动态实现栈(stack)

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...

PyTorch使用教程- Tensor包

### PyTorch使用教程- Tensor包 PyTorch是一个流行的深度学习框架,它提供了一个易于使用的API来创建和操作张量(Tensors)。张量是一个多维数组,类似于NumPy中的ndarray,但它是基于GPU的,支持自动求导。本文…...

在 Vue 3 项目中集成和使用 vue3-video-play

前言 随着视频内容的普及,视频播放功能在现代 Web 应用中变得越来越重要。如果你正在开发一个 Vue 3 项目,并且需要快速集成视频播放功能,vue3-video-play 是一个轻量级且易于使用的 Vue 3 组件。本文将介绍如何在 Vue 3 项目中使用 vue3-vi…...

02_登录窗口

新建场景 重命名为GameRoot 双击GameRoot进入新场景 同样摄像机清除格式 删除平行光并关闭渲染灯光的天空盒 新建空节点重命名为GameRoot GameRoot为游戏的根节点 在整个游戏中都不会被删除 在游戏的根节点下创建UI的根节点Canvas 创建一个空节点 作为UI根节点下的 登录场景UI…...