[大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠
[大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠
目录
文章目录
- [大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠
- 目录
- 0. 摘要
- 1. 核心内容
- 3. 创新点
- 4. 算法模型
- 5. 实验效果
- 6. 重要数据与实验结论
- 7. 推荐阅读指数:
- 8. 推荐理由
- 后记
论文信息:
@article{zhou2024larger,title={Larger and more instructable language models become less reliable},author={Zhou, Lexin and Schellaert, Wout and Mart{\'\i}nez-Plumed, Fernando and Moros-Daval, Yael and Ferri, C{\`e}sar and Hern{\'a}ndez-Orallo, Jos{\'e}},journal={Nature},pages={1--8},year={2024},publisher={Nature Publishing Group UK London}
}

更大且更可指导的语言模型变得不那么可靠
0. 摘要
本文探讨了大型语言模型(LLMs)在规模扩大(即增加模型大小、数据量和计算资源)和定制优化(包括后处理、微调或使用人类反馈)后,其可靠性如何受到影响。研究发现,尽管这些模型在处理简单任务时与人类表现一致,但在低难度区域(即模型不出错或人类监督可以发现错误的区域)的可靠性并未得到保障。此外,早期模型倾向于回避用户问题,而扩大规模和优化后的模型则更频繁地给出看似合理但错误的答案,包括人类监督者经常忽视的难题错误。研究还观察到,对同一问题的不同自然表述的稳定性通过扩大规模和优化干预得到了改善,但难度水平上的变异性仍然存在。这些发现强调了在高风险领域,需要在设计和开发通用人工智能时进行根本性的转变,这些领域对错误分布的可预测性至关重要。
1. 核心内容
数以百万计的人们正在使用基于大型语言模型(LLMs)的通用人工智能(AI)系统,这些系统已经在教育、医学、科学和行政等领域变得司空见惯。由于这些模型经常犯错误,用户必须监督模型的操作并管理他们的期望,以可靠地使用这些系统。 随着语言模型变得更大、更易于指导,我们需要分析这种可靠性是如何发展的。自从早期的LLMs以来,模型已经被扩大规模——用更多的参数、更大的数据集和更长的训练时间进行训练——并且也通过人类反馈进行了定制化塑造——使用如指令微调、人类反馈的强化学习(RLHF)或输出过滤调节技术。
人们可能想当然地认为,随着模型变得更强大,通过使用这些策略更好地与人类对齐,它们也从人类的角度变得更可靠,即它们的错误遵循人类可以理解和调整查询的可预测模式。例如,早期模型在执行如“20 + 183”这样的简单加法运算时失败。性能非常容易预测:失败是常见的。因此,用户很容易理解,对于这项任务没有操作范围:没有人使用这些模型进行加法运算。几代扩大规模和定制化的模型之后,模型不仅看似掌握了这些加法运算,而且还成功地执行了50位或更多数字的加法运算。由于这种能力,人们可能开始将它们用作计算器(例如,用于将测量单位转换为不同的单位)。只有在这种情况下,当模型在如“3913和92相加”这样的简单提示上失败时,用户驱动的可靠性就会受到严重损害。当用户认为这些数字在操作范围内时,模型失败了。当用户稍微调整问题,例如“3913 + 92 =”,或者根本没有改变——因为许多模型被配置为非确定性的——用户得到正确答案时,体验变得更加令人困惑。尽管这种提示敏感性已经被广泛分析,但人们很少理解为什么一个过度勤勉的系统会为100位数字的加法给出错误答案,而不是简单地回答“恐怕我做不到”。这种鲁莽的行为已经被开发者激励,他们构建了“从不回避”的模型。
为了理解可靠性的演变,我们分析了几个LLMs家族的发展轨迹:由OpenAI开发的生成预训练(GPT)系列,由Meta开发的LLaMA系列,以及由BigScience开发的BLOOM套件。GPT在过去几年中一直处于最先进的水平,并且根据几项调查,它在LLM生态系统中处于中心地位,影响着基于变换器的架构、训练数据、评估框架和对齐技术。LLaMA是权重已经发布的家族中最好的例子,BLOOM是来自科学界的更加开放的努力的结果。每个家族都代表了使LLMs更有能力和更好地对齐的真诚努力。

表1总结了这三个家族的模型细节。规模扩大(增加参数数量、数据大小和计算量)被认为是整体性能的关键预测因素,而塑造/塑形(修改训练系统)提高了它们的可指导性和对齐性。 这创造了两类模型。第一类包括“原始”模型——GPT-3 ada、babbage、curie和davinci——非聊天LLaMA模型和基础(非z)BLOOM模型。第二类包括定制化的模型(或指导或聊天模型),它们结合了某种指令适应、微调或输出安全调节。为了我们的分析,方便的是BLOOM和LLaMA分别有六个和三个完全配对的原始和定制化模型,以区分规模扩大和塑造扩大。图1表示一些关键指标显示定制化模型(蓝色)对提示变化更稳定,并且更正确,但与人类难度的一致性较低,并且有更多的总体失败(更不谨慎)。这些指标总结了五个精心选择的基准测试的行为,这些基准测试在简单算术(“加法”)、词汇重组(“字谜”)、地理知识(“地方性”)、多样的科学技能(“科学”)和以信息为中心的转换(“转换”)领域。这涵盖了一系列领域和答案的开放性程度。我们确定了前两个领域(“加法”和“字谜”)中人类难度的良好内在代理,或者通过识别需求相关特征(不包括“科学”,对于所有实例已经有多个人类难度评估)。
为了确定它们的质量,我们进行了广泛的人类研究(S1),以评估哪些难度代理最符合人类期望,并将代理校准为一个从0到100的标准化难度分数,代表预期的“平均人类”失败百分比。表2提供了五个基准测试的概述,用作人类难度的内在难度函数(在方法中讨论),一些示例和给定示例的校准人类难度值。我们分析中的另一个必要和创新的元素是,我们考虑了回答的三个类别:正确、不正确和回避,分别用c、i和a表示。人类参与者中的回避行为在心理学中已经得到了广泛的探索。这种回避行为包括拖延、偏离、找借口或根本不回答。对于LLMs来说,回避也被称为对冲、拒绝或回避,包括偶然的发言或延续,它们不是答案(不符合要求的),以及那些在元级别解释为什么不回答问题的回答(出于认识论或道德原因)。补充表11展示了五个基准测试中一些任务的回避类型。难度一致性、任务回避和提示稳定性必须从与LLMs交互的人类用户的角度来考虑。我们的第一个人类研究S1(见补充说明6)分析了人类对一般难度的感知是否与实际的人类表现和自信一致,因为这在人类决定委托给语言模型的任务和他们的提示制定中具有重要的影响。但是,输入和输出的使用环境同样重要,决定了这些系统的使用是多么可靠。我们进行了第二个人类研究S2(见补充说明7),在这项研究中,我们探索了人类参与者是否能够准确评估模型的输出,从而补偿不同类型的错误。通过一个带有正确性、回避和不正确性的三值混淆矩阵,我们可以关注非回避情况的频率,人类认为输出是正确的,但它不是(图3)。通过这种设置,我们调查了从人类角度影响LLMs可靠性的三个核心和相互关联的元素。1. 难度一致性。错误是否更可能发生在人类认为困难的项目上?规模扩大和塑造是否消除了简单项目的误差,从而创造了可靠操作的区域?2. 任务回避。语言模型给出看似合理但错误答案的频率是多少,而不是安全地回避回答问题?扩大规模、定制化的模型是否更擅长避免错误或使错误对人类可检测?3. 提示稳定性。正确性和回避性如何受到提示的间接变化的影响?扩大规模、定制化的模型是否对提示变化的敏感性较低,跨越难度水平?

我们将通过使用每个基准测试的人类难度度量(见表2),检查不同类型的回避(补充表11),并使用每个基准测试的15种自然提示变化——由人类提供的真实指令或问题——来回答问题。难度、回避和提示以及它们的演变已经从不同的角度进行了分析。在这里,我们专注于从LLMs规模扩大和塑造的角度,这三个元素的系统相互作用。

结果
图2显示了GPT和LLaMA家族中选定模型在五个领域:“加法”、“字谜”、“地方性”、“科学”和“转换”中随着难度增加的表现。我们看到,随着我们接近最后一列,正确响应的百分比增加了。这是预期的结果,并且对于在扩展数据图1(GPT)、扩展数据图2(LLaMA)和补充图14(BLOOM家族)中显示的其余模型也是一致的。让我们关注正确性与难度的演变。对于“加法”,我们使用总的进位操作数量(fcry)。对于“字谜”,我们使用给定字谜的字母数量(flet)。对于“地方性”,我们使用城市知名度的倒数(fpop)。对于“科学”,我们直接使用人类难度(fhum)。对于“转换”,我们使用输入和输出字数的组合以及Levenshtein距离(fw+l)(表2)。正如我们在方法中讨论的,这些被选为人类期望的好的代理,根据人类研究S1(见补充说明6)。随着难度的增加,所有模型的正确性明显下降。 为了确认这一点,补充表8显示了正确性与人类难度代理之间的相关性。除了BLOOM对加法之外,所有这些都是高的。然而,尽管人类难度度量对正确性有很强的预测能力,即使在非常低的难度水平上也没有实现完全的可靠性。尽管模型可以解决极具挑战性的实例,但它们在非常简单的实例上仍然失败。这在“字谜”(GPT)、“科学”(LLaMA)和“地方性”和“转换”(GPT和LLaMA)中尤为明显,证明了难度不一致现象的存在。这种不一致性在所有LLMs中都有观察到,通过扩大规模和塑造策略没有明显的改善, 这通过图1中显示的聚合度量得到了证实。特别是对于GPT-4,与其前身GPT3.5-turbo相比,主要在中等到高难度实例上提高了性能,而对于简单任务没有明显的改善。对于LLaMA家族,没有模型在最简单的难度水平上达到了60%的正确性(对于“科学”不计算25%的随机猜测)。 唯一的例外是“科学”的低难度区域与GPT-4,几乎完美的结果直到中等难度水平。专注于模型趋势,我们还看到了更多:从GPT-3 ada到text-davinci-003,不正确结果的百分比显著增加,这是由于大大减少了回避(对于GPT-4几乎消失了)。

在图2中,回避区域从GPT-3 ada到text-davinci-003显著减少,并被越来越多的错误答案所取代。然后,对于GPT-3.5-turbo,回避略有增加,但随着GPT-4再次减少。这种从回避到错误答案的转变在LLaMA家族中不太明显,但在将第一个与最后一个模型进行比较时仍然清晰。这在图1中的谨慎指标中得到了总结,表明定制化模型在回避方面的表现更差。这与预期不符,即更近期的LLMs将更成功地避免回答超出其操作范围的问题。在我们对回避类型的分析中(见补充说明15),我们看到非一致性回避转变为定制化模型的认知回避,这是一个积极的趋势。但这种模式并不一致,不能补偿总体下降的回避。看看难度趋势,一个重要的问题是回避是否随着更困难的实例而增加,正如预期的那样。图2表明情况并非如此。只有少数相关性口袋,并且相关性很弱。对于“字谜”、“地方性”和“科学”的最后三个GPT模型,以及“字谜”和“科学”的一些LLaMA模型。在其他一些情况下,我们看到回避最初增加,但在更高的难度水平上停滞不前。回避答案的百分比很少比不正确的百分比上升得更快。阅读结果很清楚:错误仍然变得更加频繁。这代表了可靠性的退化:没有任何难度范围,错误是不可能的,要么是因为问题太简单,模型永远不会失败,要么是因为它们太难,模型总是回避给出答案。接下来,我们想知道这种可靠性的缺乏是否可能是由于某些提示特别差或脆弱,以及我们是否能找到这些特定提示的安全区域。我们通过正确性、回避和不正确性来分析提示敏感性,使用补充表1和2中的提示。直接分解可以在补充图1中找到,表明定制化模型通常对提示变化不太敏感。但如果我们看看与难度的演变,如图3所示的GPT和LLaMA家族最具代表性的模型(所有模型在补充图12、13和15中显示),我们观察到原始GPT和所有LLaMA模型之间的巨大差异,而LLaMA家族经历了更微妙的转变。原始GPT和所有LLaMA模型对提示非常敏感,即使在像“加法”这样非常明确的任务中也是如此。难度似乎并没有太大影响敏感性,对于简单实例,我们看到原始模型(特别是GPT-3 davinci和非聊天LLaMA模型)只有在仔细选择的提示下才能解锁一些能力。对于定制化模型,最后六个GPT模型和最后三个LLaMA(聊天)模型,更加稳定,但在整个难度水平上存在变异性口袋。总的来说,这些不同程度的提示敏感性对用户来说具有重要的意义,特别是因为人类研究S2表明,监督不能补偿这种不可靠性(图3)。看看图3中正确与错误的类型错误(红色),如果用户对难度的期望与模型结果一致,我们应该在曲线的左区域(简单实例)有更少的案例,这些案例应该由人类更好地验证。这将为被认为是人类容易的实例提供一个安全的操作区域,模型错误率低,使用模型响应的人类监督错误率低。然而,不幸的是,这仅适用于简单的加法和更广泛的字谜,因为对于这两个数据集,验证通常是直接的。我们对GPT和LLaMA的观察也适用于BLOOM家族(补充说明11)。为了区分规模扩大和塑造的影响,我们使用LLaMA和BLOOM模型进行了消融研究,它们是定制化版本(分别命名为聊天和z),以及原始版本,每个配对都有相同的预训练数据和配置的优势。我们还包括了所有已知计算的其他模型,如非指导GPT模型。我们采用图1中总结的数据(扩展数据表1),并使用表1中的FLOPs列进行规模分析。FLOPs信息通常捕捉了数据和参数计数,如果模型尺寸合适的话。我们将原始和定制化模型的趋势分开。正确性随着规模的增加而增加在文献中系统地显示出来。有了我们的数据和三结果标签,我们现在可以分析未探索的回避和不正确性的演变(图4,左)。


正如图4所清楚显示的,回避明显低于定制化模型(蓝色)而不是原始模型(橙色),但不正确性更高。但是,即使正确性随着规模的增加而增加,不正确性并没有减少;对于原始模型,它显著增加。这令人惊讶,当我们分析那些不是正确的不正确响应的百分比时(在我们的符号中为i/(a + i);图4(右))。我们看到错误比例大幅增加,模型变得更加ultracrepidarian(在他们不知道时给出非回避答案,因此相应地更多失败)。我们现在可以考虑到所有这些观察和趋势,并与普通人类用户的期望(研究S1)和有限的人类能力进行验证和监督(研究S2)。这导致了对LLMs可靠性演变的重新理解,分为两组发现,难度不一致(F1a和F1b)、任务回避(F2a和F2b)和提示敏感性(F3a和F3b):F1a - 人类难度代理作为LLM正确性的宝贵预测因子。人类难度的代理与正确性负相关,意味着对于给定任务,人类自己可以对实例的正确性有大致的期望。相关性:当模型的自我信心不可用或显著减弱时(例如,RLHF破坏校准),这种可预测性至关重要,作为替代的成功估计器。F1b - 改进发生在困难实例上,因为简单实例的问题仍然存在,扩展了难度不一致。当前的LLMs明显缺乏无错误的操作区域。事实上,所有家族的最新模型都没有确保任何可靠的操作区域。相关性:在需要确定高可靠性操作条件的应用中,这一点尤其令人关注。F2a - 规模扩大和塑造目前用更多的不正确性交换回避。回避水平取决于使用的模型版本,并且在某些情况下,它完全消失,不正确性占据了减少回避的重要比例(即,ultracrepidarianism)。相关性:这种回避缓冲的消除(无论是有意还是无意)可能会导致用户最初过度信任他们不指挥的任务,但可能会导致他们长期失望。F2b - 回避并不随着难度的增加而增加,人类监督的拒绝也没有增加。模型错误随着难度的增加而增加,但回避并没有。用户可以识别这些高难度实例,但仍然经常做出不正确到正确的监督错误。相关性:用户没有充分利用他们对难度的期望来补偿高难度区域中不断增加的错误率,表明过度依赖。F3a - 规模扩大和塑造可能并没有让用户摆脱提示工程。我们的观察表明,提示稳定性有所增加。然而,模型在它们的提示敏感性方面有所不同,这在难度水平上有所不同。相关性:用户可能会努力找到有利于回避而不是不正确答案的提示。人类监督并没有修复这些错误。F3b - 提示性能的改进在难度水平上不是单调的。一些提示不遵循平均值的单调趋势,与难度度量的一致性较差,并且在困难实例上错误较少。相关性:这种非单调性是有问题的,因为用户可能会被对困难实例效果很好的提示所吸引,但同时对于简单实例却得到了更多的不正确响应。正如图1中所看到的,我们可以重新审视三个家族的总结指标。看看两个主要集群和定制化模型在错误和难度一致性方面的更差结果,我们可能会急于得出所有类型的规模扩大和塑造对于确保用户驱动的可靠性在未来是不适当的结论。然而,这些影响很可能是这些模型的特定愿望的结果:更高的正确率(通过正确获得更多实例来在基准测试中表现出色,但不一定是所有简单实例)和更高的可指导性(通过说出有意义的东西来看起来勤奋,即使错了)。例如,在规模扩大中,有一种趋势是包括更大的训练语料库,其中包含更多困难的例子,或者给予权威来源更多的权重,这可能包括更复杂的例子,主导了更简单例子的损失。此外,塑造通常惩罚对冲或看起来不确定的答案。这让我们想知道这是否可能有所不同。
讨论
在本文中,我们进行了两项人类研究。第一项研究调查了参与者对输入的感知和实际难度(以确定难度期望是否与难度代理相关)。第二项包括参与者监督或验证模型的输出(以确定人类是否会将不正确的回答视为正确)。最大化难度一致性和减少人类验证中可能的不正确到正确的错误可以引入训练和塑造这些模型时的损失函数。 为此,需要共同努力构建更大的人类难度期望和输出监督数据集。有了这些数据,比传统人类反馈更有资格,AI本身可以被用来训练执行这种塑造的监督者,前提是目标不是消除回避,就像在参考文献21中一样,而是找到合适的回避水平。在医学和其他关键领域专门设计的语言模型可能具有拒绝选项,或与外部AI监督者配对,从而通过教学AI模型何时避免回答来支持回避。这些干预措施应该使LLMs表现出更强的类人和与人类对齐的特征,确保可靠性。在这样做之前,鉴于LLMs在普通人群中的高渗透率,我们提醒人们依赖这些系统的人类监督是一个危险,特别是在真理至关重要的领域。最后,我们包括了我们分析的一些限制和由此产生的未来工作。我们研究的第一个限制在于参与者大多是非专家。在解释校准的难度值时,我们必须考虑到这一点,这些值通常对某些基准测试来说很高,因为有很多问题普通人群无法解决。然而,我们的动机是捕捉相同的人类群体来估计预期的实例难度,这些难度在所有数据集中都是可比的。第二个限制是我们的“自然”提示样本收集自多样性的来源,但我们没有访问提示在现实场景中出现的频率。最后,我们只涵盖了具有特定轨迹的样本家族,排除了将任务委托给外部工具或使用复杂推理技术的LLMs,这些可能会显示出不同的动态。GPT家族在性能方面一直处于前沿,并且已经被使用了几年,使OpenAI在开发其他语言模型方面极具影响力。事实上,当分析基础模型的生态系统时,OpenAI应用程序编程接口具有最多的依赖项。LLaMA和BLOOM具有更开放和系统的模型阵容,不仅允许区分规模扩大和塑造,而且还为使用我们的方法和代码进行它们演变的增量分析铺平了道路,这是LLMs快速发展的背景。强调这些家族的可靠性问题并引入新的分析抽象和工具至关重要,使其他研究人员能够探索未来的扩大规模、定制化模型的不同路径。
3. 创新点
- 难度一致性分析:研究了模型错误与人类感知难度之间的关系,发现模型在简单任务上的表现与人类一致,但在困难任务上则不然。
- 任务回避与稳定性:分析了模型在面对不同难度级别的任务时的回避行为,以及对不同表述方式的稳定性。
- 预测分布错误:提出了对错误分布的可预测性至关重要的高风险领域的AI设计和开发需要根本性转变的观点。
4. 算法模型
- GPT系列:由OpenAI开发的生成预训练(GPT)模型。
- LLaMA系列:由Meta开发的模型,特点是权重公开发布。
- BLOOM套件:由BigScience开发的更开放的努力成果。
5. 实验效果
- 正确率:随着模型规模的扩大和优化,模型的正确率有所提高。
- 回避与错误:扩大规模和优化后的模型在减少回避行为的同时,错误率有所增加。
- 提示稳定性:对不同自然表述的同一问题的稳定性有所提高,但难度水平上的变异性仍然存在。
6. 重要数据与实验结论
- 难度一致性:模型在简单任务上的正确率与人类预期一致,但在困难任务上则不然。
- 错误率:扩大规模和优化后的模型在面对简单任务时错误率降低,但在困难任务上错误率增加。
- 提示稳定性:模型对不同表述方式的稳定性有所提高,但并未完全消除变异性。
7. 推荐阅读指数:
★★★★☆
8. 推荐理由
这篇文章对于理解当前大型语言模型在可靠性方面的局限性提供了深刻的见解,特别是在高风险领域应用时。文章提出的关于错误分布可预测性的观点,对于AI领域的研究者和实践者都具有重要的指导意义。
后记
如果您对我的博客内容感兴趣,欢迎三连击(点赞,关注和评论),我将持续为您带来计算机人工智能前沿技术(尤其是AI相关的大语言模型,深度学习,计算机视觉相关方向)最新学术论文及工程实践方面的内容分享,助力您更快更准更系统地了解 AI前沿技术。
相关文章:
[大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠
[大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠 目录 文章目录 [大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠目录0. 摘要1. 核心内容3. 创新点4. 算法模型5. 实验效果6. 重要数据与实验结论7. 推荐阅读指数:8. 推荐理由 后记 论文…...
云手机可以解决TikTok运营的哪些问题?
随着社交媒体的飞速发展,TikTok迅速崛起,成为个人和企业进行品牌宣传和内容创作的首选平台。然而,在运营TikTok账号的过程中,不少用户会遇到各种问题。本文将详细阐述云手机如何帮助解决这些问题。 1. 多账号管理的高效便捷 通过云…...
Redis基础三(redis的高级配置)
Redis进阶配置 一、Redis持久化操作 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。(Redis 数据都放在内存中。如果机器挂掉,内存的数据就不存在。所以需要做持久化,将内存中的数据保存在磁盘,…...
Telnet、SSH、RDP和VNC
Telnet、SSH、RDP和VNC都是远程访问和管理的协议或工具,它们各自具有不同的特点和适用场景。 一、基本概念与用途 Telnet 定义:一种基于命令行界面的远程管理协议,允许用户通过网络远程访问和管理计算机。用途:主要用于远程登录和…...
FiBiNET模型实现推荐算法
1. 项目简介 A031-FiBiNET模型项目是一个基于深度学习的推荐系统算法实现,旨在提升推荐系统的性能和精度。该项目的背景源于当今互联网平台中,推荐算法在电商、社交、内容分发等领域的广泛应用。推荐系统通过分析用户的历史行为和兴趣偏好,预…...
影刀RPA:Excel内容填充指令
1.实战目标 本次主要介绍影刀RPA如何操作内容相关的填充与替换指令。主要包含以下 这些指令在数据处理方面有着重要的作用,可以对数据做运算,填充,替换,实现数据格式统一,便于最终的数据分析。在操作的过程中…...
Threejs创建正多边体
上一章节实现了球体的绘制,这节来绘制多面体,包括正多面体,平面中,每条边一样长组成的图形叫正多边形,这里每个面一样,叫正多面体。如上文一样,先要创建出基础的组件,包括场景&#…...
链表——单链表
题目描述 实现一个单链表,链表初始为空,支持三种操作: (1) 向链表头插入一个数; (2) 删除第 k 个插入的数后面的数; (3) 在第 k 个插入的数后插入一个数 现在要对该链表进行 M 次操作,进行完所有操作后&am…...
【YOLO学习】YOLOv5口罩检测实战
文章目录 1. 环境配置2. 下载代码3. 安装库3.1 安装pytorch3.2 安装其他库 4. 测试5. 数据标注6. 模型训练7. 界面可视化 1. 环境配置 1. 先参考其他文章安装 Anaconda 或者 Miniconda,我安装的是 Miniconda。 2. 更换国内源,以加快速度 。可以参考下面这…...
场景题1-设计redis的key和value的原则
在设计 Redis 的 key 和 value 时,遵循一些最佳实践和设计原则可以确保系统的性能、可扩展性和易维护性。以下是设计 Redis key 和 value 时的常见原则: 1.RedisKey的设计原则 1.1.简短有意义 1)Redis 是内存数据库,key 越短&am…...
Shell-使用函数
在 Shell 脚本中,函数是由一段代码定义的,可以被重复调用。Shell 函数的定义和调用相对简单,并且它支持参数传递和返回值。错误处理在 Shell 中也非常重要,通常通过检查返回的状态码来判断是否有错误发生。 1.Shell 函数的定义和…...
Git介绍--github/gitee/gitlab使用
一、Git的介绍 1.1、学习Git的原因:资源管理 1.2、SCM软件的介绍 软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。 二、版本控制软件 …...
【ubuntu】【VirtualBox】VirtualBox无法加载USB移动设备的解决方法(支持U盘启动盘)
TOC 提示:测试可用 一、安装VirtualBox VirtualBox-7.1.2-164945-Win。 下载路径。 Download_Old_Builds_7_0 – Oracle VirtualBox 二、安装Oracle_VirtualBox_Extension_Pack-7.1.2 下载路径见上文。 三、安装增强功能 四、挂载USB 4.1 设置USB协议 4.2 挂…...
Koa2+mongodb项目实战1(项目搭建)
前言 在正式开始之前,需要先知道用到的东西: koa:Koa 是一个基于 Node.js 的 Web 应用框架,非常适合开发API服务,可以与前端框架(如 Vue.js、React.js)结合使用,实现前后端分离的开…...
Pyhton爬虫使用Selenium实现浏览器自动化操作抓取网页
第三方库Selenium主要是用来抓取动态生成的网页数据,有些网站的内容要下拉网页才会动态加载,特别是那些使用javaScript渲染的内容。当然Selenium还可用于自动化浏览器操作,比如编写一个自动抢火车票的python脚本,这并不难实现。接…...
矩阵学习过程中的一些思考
2024.09.27(学习鸢尾花书_矩阵力量_Ch20) (1)所有中心过原点的椭圆都可以用一个二维矩阵表示,且特征值表示长短轴长度,特征向量表示长短轴所在方向的单位向量(表征椭圆旋转方向)&am…...
初识Django
前言: 各位观众老爷们好,最近几个月都没怎么更新,主要是最近的事情太多了,我也在继续学习Django框架,之前还参加了一些比赛,现在我会开始持续更新Django的学习,这个过程会比较久,我会把我学习的…...
VirtualBox虚拟机连接宿主机并能够上网(小白向)
现存问题 windows系统主要使用vmare和virtualbox两种虚拟机,virtualbox相对于vmare更加轻便,但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后,决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…...
深度学习每周学习总结J1(ResNet-50算法实战与解析 - 鸟类识别)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数:定义损失函数,学习率&a…...
商家营销工具架构升级总结
今年以来,商家营销工具业务需求井喷,需求数量多且耗时都比较长,技术侧面临很大的压力。因此这篇文章主要讨论营销工具前端要如何应对这样大规模的业务需求。 问题拆解 我们核心面对的问题主要如下: 1. 人力有限 我们除了要支撑存量…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
