自然语言处理和大语言模型综述(12.2-12.8)

目录

0 前言

1 NLP是什么

2 LLMs是什么

3 NLP和LLMs的发展

3.1 单词和句子向量

3.2 无监督预训练

3.3 预训练的Transformer

3.4 分布式训练的LLMs

4 NLP的应用

4.1 序列分类

4.2 两两序列分类

4.3 单词标注

4.4 Seq2Seq

5 LLMs的应用模型

5.1 GPT

5.2 BERT

5.3 XLNet

5.4 T5

6 LLMs的影响

7 LLMs的挑战

7.1 数据规模庞大

7.2 计算资源消耗巨大

7.3 微调过程复杂

7.4 偏差和不良输出

7.5 缺乏时效性

7.6 幻觉问题

8 LLMs的研究方向

8.1 加强偏差缓解

8.2 效率优化

8.3 动态上下文处理

8.4 持续学习

8.5 可解释的AI

8.6 多模态LLMs

8.7 个性化定制

8.8 高效微调

8.9 检索增强生成

总结


0 前言

这三个多月来,学习了吴恩达机器学习和李宏毅深度学习的相关课程。在吴恩达机器学习的课程中,了解了机器学习的相关概念,然后再深入了解了神经网络的结构和如何通过激活函数、梯度下降、偏差和方差等方法训练神经网络,了解了神经网络的完整周期,还学习到了决策树的构建以及剪枝操作。然后在李宏毅深度学习的课程中,学习了CNN、RNN、LSTM等网络结构和自注意力机制,在Seq2Seq结构中引出Transformer架构、BERT架构、T5等。

由于后期学习的RNN、Transformer、BERT、T5中的情感分析、语音识别、机器翻译、句法分析等应用都是NLP领域以及LLM领域,所以本篇综述简单讲述我对NLP和LLM的浅显认识。

1 NLP是什么

NLP全称Natural Language Processing,即自然语言处理,是人工智能的一个分支,充满了与语言相关的复杂、复杂和具有挑战性的任务,它主要包括自然语言理解(NLU)和自然语言生成(NLG)两个方面, 研究内容包括字、词、短语、句子、段落和篇章等多种层次,如机器翻译、问答、摘要等,是机器语言和人类语言之间沟通的桥梁。它旨在使机器理解、解释并生成人类语言,实现人机之间有效沟通,使计算机能够执行语言翻译、情感分析、文本摘要等任务。

NLP涉及模型、系统和算法的设计和实现,使计算机能够在各个层次上执行广泛的自然语言相关任务,以解决理解人类语言的实际问题,从语法分析和词性(POS)标注到机器翻译和对话系统。由于深度学习的迅速发展,NLP应用程序的性能得到了前所未有的提升,基于密集向量表示的神经网络在各种 NLP 任务上产生了卓越的结果。例如,在机器翻译中,基于短语的最先进的统计方法已经逐渐被神经机器翻译所取代,神经机器翻译由巨大的深度神经网络组成,获得了更好的性能。类似地,基于字典、本体和句法语法规则的命名实体识别的早期方法已经被循环架构和深度学习模型所取代。

2 LLMs是什么

LLMs全称Large Language Models,即大型语言模型是指一种特定类型的AI算法,能够执行各种NLP任务。最常见的任务包括文本生成、文本分析、翻译、情感分析、问答等等。GPT-3、GPT-4、PaLM和 LaMDA是广泛使用的基于Transformer的LLMs,在大量文本数据上进行了训练。在结构特性方面,这些模型在大小和深度上表现出变化。并且与其他程序相比,特定的 LLMs 程序在特定领域的性能更高,例如 GPT-3,它因其在生成文本样式方面的熟练程度而获得认可,而 LaMDA 在提供对事实查询的准确回答方面表现出卓越的性能。

预训练Transformer模型导致了LLMs的提出,这些LLMs在处理各种NLP任务方面具有令人印象深刻的能力,包括问答、文档摘要、语言翻译、文本生成等。由于他们在语言处理和创建的基本任务方面具有非凡的能力,他们彻底改变了NLP和AI领域。各种DNN模型已应用于不同的行业,例如教育、工程、医疗保健和零售,以提高性能。DNN在提高LLM的能力方面取得了实质性进展。DNN模型,如CNN、RNN、GAN、Transformer和BERT等,已广泛用于LLMs的各种应用。LLMs是一项新兴的技术创新,有可能为各个领域带来变革性变化。

3 NLP和LLMs的发展

LLMs是指一类专门为理解和生成人类语言而开发的AI模型 。LLMs对AI领域做出了重大贡献,并已应用于多个领域。LLMs的起源可归因于NLP领域基于神经网络的方法的出现和进步。

3.1 单词和句子向量

在之前NLP应用是使用独热编码(One-hot Encoding)来解决的,但是由于输入词是由巨大的向量来描述的,其维度取决于字典的大小。所以,提出了词嵌入(Embedding)这种学习分布式低维词级的表示方法,使具有相似含义的词具有相似的表示,即Word2vec,由一个浅层神经网络和一个Encoder-Decoder结构组成,该结构在未标记的语料上进行预训练。目前有CBOW和Skip-gram两种不同的模型,CBOW被训练用来在给定上下文作为输入的情况下重建目标词,而Skip-gram则试图在给定目标词的情况下预测上下文词。Word2vec还显示了它捕捉大量精确的句法和语义词关系的能力。例如,“King”对于“Queen”就如“Man”对于“Woman”。

Word2vec在NER、情感分析、推荐系统、同义词识别等任务上效果显著。但是在处理句子和文本等方面的任务时仍然具有挑战性。在深度学习之前的主要方法为词袋(BOW),BOW将文档表示为组成该文档的可数单词集,并且可以计算为组成该文档的单字向量的总和得到的特征向量能够描述文档的内容。但是,特征向量的维数会随着字典大小的增加而迅速增加,并且没有考虑到文本的语义特征。BOW表示被广泛应用于垃圾邮件过滤和文档分类。

虽然Word2vec没有被归类为 LLMs,但这些嵌入为自然语言理解的进步做出了重大贡献,并为开发更复杂的模型铺平了道路。

3.2 无监督预训练

在Embedding出现后,由此人们提出了开发有意义的文档级和句子级表示的新方法,即无监督文档嵌入技术。在无监督预训练中,可以通过语言模型目标函数在大规模的未标记语料库上进行训练,例如通过简单平均池词向量来派生句子向量、直接扩展Word2vec的方法Doc2vec(段落向量)、基于Skip-gram的Skip-thought向量,能够重构上下文句子、基于GRU单元的RNN编解码器结构以及fast-Sent方法等。这些技术的一个相关应用是神经机器翻译(MT),MT试图构建一个单一但更大的神经网络,它读取一个句子作为输入,并将翻译作为输出返回。这种方法的主要问题是,来自长句子的信息不能被压缩到一个固定长度的向量中,即上下文向量,因此性能下降。

由此,引入注意力机制,其中用于产生每个输出状态的上下文向量被定义为所有内部编码上下文的线性组合,该模型在处理长句子时显示出显着的结果。从而引入中期神经语言模型标志着 LLMs的重大进步,这些模型采用深度学习方法从广泛的文本数据中获取语言模式知识,并利用人工神经网络来理解、生成或预测人类语言。RNNLM 已用于多种应用,例如文本生成、语音识别、机器翻译和语言建模。RNNLM展示了有效捕获单词上下文信息的能力,从而生成的文本与早期模型相比表现出更高程度的自然度。尽管RNNLM具有某些优势,但它并非没有缺点。其中一些限制包括有限的短期记忆容量、延长的训练时间要求以及容易出现过拟合。

3.3 预训练的Transformer

Transformer是第一个完全基于注意力来绘制输入和输出之间的全局依赖关系的架构,取代了Encoder-Decoder架构中最常用的循环层。该模型在翻译质量方面展示了最新的技术水平,同时它的训练速度明显快于CNN或RNN。在大型未标记语料库上预训练的语言模型的进化和Transformer架构令人惊讶的有效性是现代NLP的两大支柱。最流行的预训练Transformer模型之一是BERT。

BERT的目的是通过在所有层的左右上下文中联合条件作用,从未标记的文本中预训练深度双向表示。预训练由两个语言模型目标驱动,即掩码语言模型(MLM)和下一句预测(NSP)。在MLM中,网络MASK输入序列中的少量字,方式为替换为特殊的MASK符或随机把这些字换成另一些字,并试图在输出中预测它们,而在NSP中,网络试图通过二进制损失来理解句子之间的关系,预测两个句子是不是应该被接在一起。经过预训练阶段后,通过对目标域上的网络进行微调,该模型可以很容易地用于下游任务(Downstream Tasks)。

BERT可以用于许多不同的任务,如序列分类、单词标记、Seq2Seq等。这些方法依赖于架构强烈地基于允许读取和跟踪整个输入序列的自注意机制和允许网络阅读并(至少在表面上)理解文本、其语义和含义预训练这两个主要优势。随后也出现了RoBERTa、ALBERT、DistilBERT等预训练的Tranformer模型,但是没有明显特征差异。除此之外还有GPT、Transformer-XL及其扩展XLNet等方法。这些方法在问答、文本分类、情感分析、生命名实体识别等NLP任务上表现优异。神奇之处是经过预训练的Transformer在跨多语言场景中表现出令人印象深刻的表现。例如在104种语言上训练而成的多语言BERT(M-BERT)模型,在零样本和跨语言对齐上优势显著。

随后,由OpenAI开发了另一种基于Transformer的架构GPT,被广泛用于文本生成,即给定输入段落生成文本的任务,包括摘要、翻译或聊天机器人等。GPT通过深度学习技术,利用海量的无监督文本数据进行预训练,从而学习语言的普遍规律,能够高效处理文本。由于一些固有的局限性,GPT的初始迭代没有达到与BERT相同的流行水平。这些缺点包括上下文窗口受限、缺乏双向性以及偶尔生成有偏见的内容。尽管GPT-1存在固有的局限性,但该模型在为后来更先进的模型铺平道路方面发挥了至关重要的作用。因此,它引发了AI研究的新时代,并加剧了LLMs开发领域的竞争。随后,推出了GPT-2,这是一种在由15亿个参数组成的深度神经网络上开发的语言模型,GPT-2模型在LLMs的发展和NLP活动的执行中发挥了关键作用。

3.4 分布式训练的LLMs

由NVIDIA生产的Megatron-LM,是一个基于 PyTorch 的分布式训练框架,用来训练基于Transformer的LLMs,该模型总共拥有 83 亿个参数,与GPT-1和GPT-2的参数数量相比,数量明显更大。这个维度的大小有助于模型获取和产生复杂的语言结构的能力。然而,Megatron-LM有一定的局限性,主要是由于其巨大的尺寸,这需要大量的计算资源来用于训练和推理过程。然后GPT-3出现,进一步说明了LLMs在各种NLP应用中的潜力,GPT-3在广泛的文本数据收集上进行了训练,并展示了生成表现出高度连贯性和自然性的文本的能力。GPT-3最基本的特征之一是它能够进行小样本和零样本学习,从而减少了生成高质量自然语言文本所需的大量数据。

4 NLP的应用

目前NLP应用可大致分为四类:序列分类、两两序列分类、单词标注和Seq2Seq。

4.1 序列分类

假设X为一组输入序列,并设一个集合Y包含所有可能的输出类,与机器学习中常见的分类问题类似,序列分类的目的是找到一个函数 能够为每个序列分配一个类。

具体应用有:(1)情感分析:给机器一个句子,让它判断这个句子是正面的还是负面的,其目的是根据其两极性对短文本进行分类;(2)文档分类:给机器输入一篇文章分析其类别,可以用来查找文档的主题;(3)答案句子选择,给机器输入一个段落或文本,从给定的段落或文本中选择最好的句子来回答输入问题。

4.2 两两序列分类

两两序列分类包括根据两个不同序列的相似性、语义和含义对它们进行比较和分类。通常,成对序列分类是一个二元分类任务,给定两个不同的序列作为输入,如果它们表达相同的含义,返回+1,否则返回-1。用于这些任务的算法和模型需要完全理解序列并提取有意义的语义表示,克服同义词和多义等多个问题。最受欢迎的应用程序之一是Quora问题对挑战,其目的是从Quora上找到重复的问题。

4.3 单词标注

在单词标注应用中,输入序列X的每个元素都被附加了一个标签,输出序列Y由输入序列X的每个元素的标签序列组成。单词标注任务的示例有:(1)命名实体识别(NER),识别文本中具有特定意义或者指代性强的实体,通常包括人名、地名、机构名、日期时间、专有名词等;(2)经典问答,输入一篇文章和一个问题,输出问题的答案,其中使用输入段落发出的概率分布来选择包含答案的范围;(3)词性(PoS)标记,给机器一个句子,给出这个句子中每个词的词性,即使这个词是相同的,也可能有不同的词性,即将文本中的单词标记为与特定词性(动词、名词、形容词等)相对应的过程。

4.4 Seq2Seq

在Seq2Seq问题中,输入序列用于生成输出序列。与单词标注应用不同的是,输入序列X和输出序列Y不是直接对齐的,模型需要生成一个新的句子。虽然输入X和输出Y都包含序列,但它们可能是不相交的集合。例如(1)语音识别,输入是声音信号,即一串向量序列,输出为语音识别对应的文字结果,显然声音信号的长度和生成文字的长度无绝对关系;(2)机器翻译,给机器一种语言的句子,让它输出对应意思的另外一种语言的句子;(3)文本生成,给机器一个查询(例如一个问题或任务提示),机器可以生成答案和续写文本等操作。

5 LLMs的应用模型

LLMs旨在训练能够理解自然语言以及生成自然语言文本的大型模型,由于人机交互无处不在,所以LLMs被用于多种任务和应用中,例如:任务有摘要、翻译、问答、代码生成、聊天机器人、情感分析等,所以对应的有许多GPT、BERT、RoBERTa、XLNet、T5等。

5.1 GPT

GPT(Generative Pre-trained Transformer)是AI领域的一项有影响力的突破,尤其是在NLP任务方面。GPT由OpenAI开发的生成式预训练语言模型,利用Transformer架构和对大量互联网文本数据的广泛预训练来实现对人类语言的深入理解。GPT模型采用两阶段训练过程:第一阶段是语言模型无监督预训练,第二阶段是有监督微调(fine-tuning),以解决特定的下游任务。这种生成模型擅长文本生成、翻译、问答等任务,使其成为跨各种NLP领域的多功能工具。GPT捕获复杂语言模式和上下文的能力,加上其迭代改进,对学术界和工业界产生了深远的影响,彻底改变了语言理解和生成的格局。

5.2 BERT

BERT(Bidirectional Encoder Representations from Transformers)是一种具有独特方法的语言模型。与以前的模型不同,BERT旨在通过考虑所有层中的左右上下文,从未标记的文本中预训练深度双向表示。这种预先训练的BERT模型可以通过最少的调整进行微调,从而为各种任务(如问答和语言推理)创建尖端模型,而无需进行广泛的特定任务修改。

BERT在概念上既简单又非常有效,BERT的一些变体,例如RoBERTa,在广泛的文本语料库上进行了预训练,并具有LLM的特征,使它们能够全面理解和生成自然语言。

5.3 XLNet

XLNet 代表了一种通用的自回归预训练方法,它通过优化所有可能组合的预期似然来实现双向上下文学习。XLNet通过其自回归设计解决了BERT的约束,并整合了来自领先的自回归模型 Transformer-XL的见解。在一致条件下的实际实验中,XLNet在20个不同的任务上始终超过BERT,而且经常大幅领先。这些任务包括问答、自然语言推理、情感分析和文档排名等。

5.4 T5

T5(Text-to-Text Transfer Transformer)是由Google Research开发的开创性LLM,彻底改变了NLP任务。T5的创新在于将所有NLP任务构建为文本转文本任务,简化了NLP通道并将各种任务统一在一个框架下。T5基于Transformer架构构建,利用多头自我注意来捕获复杂的语言关系。它对大量文本数据进行广泛的预训练,然后对特定任务进行微调,使T5能够在文本分类、翻译、摘要、问答等方面表现出色。凭借在NLP基准测试中始终如一的最新结果,T5重塑了该领域,为研究人员和开发人员提供了用于全面语言理解和生成任务的多功能工具。

6 LLMs的影响

LLMs和类似的AI技术在各个领域对社会产生了深远的影响。LLMs对社会的影响是多方面的,重要的是要考虑积极和消极的后果。随着这些技术的不断发展,包括政府、企业、研究人员和公众在内的利益相关者必须共同努力,利用LLMs的优势,同时应对其挑战和道德影响。

LLMs显着推动了NLP领域的发展,使其能够自动化和扩展各种与语言相关的任务,例如翻译、摘要、情感分析等。近年来,NLP取得了重大进步,这主要是由LLMs的出现推动的。这些进步,以 BERT 、RoBERTa和XLNet等模型为例,已经改变了NLP的格局。值得注意的是,LLMs已针对各种特定的NLP任务进行了微调,从而实现了显著的性能改进。mBERT等多语言模型和XLM-R等跨语言模型促进了不同语言上下文中的语言理解。此外,人们一直专注于创建更高效的LLMs版本,例如DistilBERT和ALBERT 。

7 LLMs的挑战

LLMs在短短几年内就从闻所未闻迅速发展成为机器学习领域中遍地开花的存在。它具有生成类似人类文本的非凡能力,在许多领域引起了广泛的关注和应用。然而,这些影响更大的技术依赖的突然崛起也揭示了许多挑战和担忧。

7.1 数据规模庞大

训练LLMs的数据集的大小和复杂性是最重要的挑战之一。这些模型通常在大量源自互联网的文本数据语料库上进行训练。这些数据集非常广泛,几乎不可能理解或调查它们的全部信息。这引发了对训练数据的质量和偏差以及无意中传播有害或不准确信息的可能性的担忧。

7.2 计算资源消耗巨大

LLMs的训练是一个计算密集型过程,需要大量的硬件和能源资源。为了训练大型模型,必须能够访问超级计算集群或专用硬件,而这种资源密集型训练对环境的影响引起了人们的担忧。大规模训练 LLMs会消耗大量能源,从而导致AI行业的整体碳足迹。

7.3 微调过程复杂

虽然预训练使LLMs对语言有广泛的理解,但需要微调以使这些模型适应特定的任务。微调需要在较小的数据集上训练模型,通常需要人工注释者来标记示例。由于它涉及特定任务数据集的构建和广泛的人工干预,因此此过程可能既耗时又昂贵。

7.4 偏差和不良输出

在输出中,LLMs可能存在偏差或不良特性。这是由于训练数据中固有的偏差,这些偏差被模型吸收并反映在其响应中。此类偏见可能表现为令人反感、歧视性或有害的内容,因此必须解决和减轻这些问题,以确保负责任地部署 AI。

7.5 缺乏时效性

LLMs使用来自互联网的历史数据学习,他们的知识仅限于截至特定日期可用的知识。因此,他们可能无法访问最新的信息或事件。当用户期望最新的响应或对话涉及最近的事件时,这可能会出现问题。

7.6 幻觉问题

LLMs可能会生成的内容在表面上看起来合理、有逻辑,甚至可能与真实信息交织在一起,但实际上却存在错误的内容、引用来源或陈述。这些错误的内容以一种有说服力和可信度的方式呈现出来,使人们在没有仔细核查和事实验证的情况下很难分辨出其中的虚假信息。这可能是因为模型在训练时过度拟合了训练数据,导致对噪声或特定样本的过度敏感。

8 LLMs的研究方向

由于LLMs是近来新兴的研究课题,因此几个关键的研究重点和方向很突出,可能会解决前面讨论的挑战问题。解决这些悬而未决的挑战可以充分利用LLM的全部潜力,同时确保它在AI领域中可以由人们负责任和合乎道德地使用。

8.1 加强偏差缓解

通过完善训练数据以最大限度地减少偏差,设计有效的去偏差技术,并为负责任的人工智能开发建立指导方针。并且还需要专注于将持续监控和审计机制集成到AI管道中,从而符合系统的公平性和公正性。这种减少偏差的承诺确保了LLM不仅在能力上取得进步,而且也维护道德标准。

8.2 效率优化

推动研究的一个核心问题是寻求有效的训练技术。例如:联邦学习,该方法能够在分散的数据源之间分配训练;用于模型压缩的知识蒸馏技术;以及寻找其他降低与LLMs相关的大量计算和环境成本的方法。

8.3 动态上下文处理

LLMs被赋予了增强的上下文管理功能。这使它们能够理解更长的上下文窗口并无缝处理大量文档或对话。此类增强功能显著扩展了它们在各种应用程序中的实用性,并解决了以前的限制。

8.4 持续学习

为了使LLMs保持最新状态,可以开发相关技术,使这些模型能够随着时间的推移适应不断发展的语言和知识。这确保了LLMs仍然是有价值和准确的信息来源,并始终克服过时的挑战。

8.5 可解释的AI

研究界致力于使LLMs的成果更加透明和可解释。提高可解释性可以增强对人工智能决策过程的信心和理解力,这在LLMs出现后很长一段时间内一直是一个主要问题。

8.6 多模态LLMs

将语言、视觉、音频其他模态的LLMs结合,实现更全面的智能。这些模型可以理解图像、视频和音频并从中生成文本,为 AI 应用创造了新的途径,并有效地满足了对多感官理解的需求。

8.7 个性化定制

根据个人或行业用户的偏好和需求自定义LLMs交互的技术如今越来越受欢迎。例如行业大模型,这种个性化提高了用户满意度并解决了与一刀切 AI交互相关的问题。

8.8 高效微调

参数高效微调(PEFT)技术通过仅更新模型中的一部分参数来减少训练时间和计算成本。PEFT包括多种方法,如Prefix Tuning(在输入前添加可学习的virtual tokens作为Prefix),Prompt Tuning(在输入层加入prompt tokens),P-Tuning(将Prompt转换为可学习的Embedding层,并用MLP+LSTM处理),Adapter Tuning(在模型层中插入小型神经网络模块),以及LoRA(在矩阵相乘模块中引入低秩矩阵来模拟full fine-tuning)。这些技术旨在提高训练效率,同时保持或提升模型性能。

8.9 检索增强生成

检索增强生成(RAG)是一种结合了信息检索和生成模型的方法,通过检索外部知识库中的相关信息来辅助语言模型生成更准确和丰富的文本。RAG的核心优势在于它能够利用外部知识库来辅助生成过程,从而提高生成内容的准确性和鲁棒性。结合大模型强大的生成性能,使得RAG在问答系统、文档生成、自动摘要、智能助手、信息检索和知识图谱填充等多种自然语言处理任务中都能发挥作用。

总结

LLMs目前在NLP任务和各个领域的各种应用中都产生了非凡的能力,这些LLMs基于深度神经网络和不断变化的Transformer架构,彻底改变了机器语言理解和生成方式。LLMs也代表了AI和NLP的关键进步,有可能彻底改变各种领域并解决复杂问题。

由于目前学习不足,所以只是大致探讨了LLMs的模型、影响、挑战和研究方向,没有对其中的具体领域做分析。在日后的学习,我会加强对其中具体领域的了解,找寻自己感兴趣的具体领域!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【密码学】SM4算法

一、 SM4算法简介 SM4算法是中国国家密码管理局于2012发布的一种分组密码算法,其官方名称为SMS4(SMS4.0),相关标准为GM/T 0002-2012《SM4分组密码算法》。SM4算法的分组长度和密钥长度均为128比特,采用非平衡Feistel结构。采用32…

【实现多网卡电脑的网络连接共享】

电脑A配备有两张网卡,分别命名为eth0和eth1(对于拥有超过两张网卡的情况,解决方案相似)。其中,eth0网卡能够连接到Internet,而eth1网卡则通过网线直接与另一台电脑B相连(在实际应用中&#xff0…

VBA API 概述 | 宏编程

注:本文为 “VBA API 概述 | 宏编程 | 执行速度慢” 相关文章合辑。 VBA API 详解 Office 二次开发于 2020-12-17 22:27:10 发布 Office 版本变动 在 Office 2010 之前,微软仅提供 32-bit 版本的 Office。而自 Office 2010 起,出现了 32-b…

Node.js nvm(版本管理工具)

1. 介绍 nvm 全称 Node Version Manager 顾名思义它是用来管理 node 版本的工具,方便切换不同版本的 Node.js 2. 使用 nvm 的使用非常的简单,跟 npm 的使用方法类似 2.1 下载安装 首先先下载 nvm,下载地址 https://github.com/coreybutl…

Scala的隐式类,隐式参数和值,隐式对象

1.Scala的隐式类定义语法:implicit class 类名(参数){ } 隐式类中参数只能定义一个,参数中的源类型与目标类型一一对应,只能从一种类型转换成另一种类型,不可以一对多或多对。 //隐式类:implicit class隐式转换函…

科技潮头浪接天,一桥飞架两界连。EthernetIP转Profinet互译连

本案例介绍的是西门子1200PLC通过稳联技术PROFINET转EtherNetIP网关(WL-ABC2006)连接HCS-6100系统配置案例。 打开稳联技术Ethernetip转profient网关(WL-ABC2006)配置软件,因为网关作为EtherNetIP从站,所以选择PN2EIP。设置网关Pr…

EasyPlayer.js播放器如何在iOS上实现低延时直播?

随着流媒体技术的迅速发展,H5流媒体播放器已成为现代网络视频播放的重要工具。其中,EasyPlayer.js播放器作为一款功能强大的H5播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。 那么要在iOS上…

LeetCode - #158 用 Read4 读取 N 个字符 II

文章目录 摘要描述题目描述方法定义 题解答案题解代码题解代码分析示例测试及结果示例测试代码示例运行结果 时间复杂度空间复杂度总结关于我们 摘要 本文将详细解读一道与文件读取相关的编程问题:如何使用 read4 实现按需读取 n 个字符的 read 方法。我们不仅会提…

Navigaiton源码解析(二)—— costmap、全局规划算法

1 costmap概述 红点代表障碍物,蓝色点代表膨胀后的障碍物。红色的多边形表示机器人的footprint(足迹),用来做碰撞检查。机器人的footprint与红色的障碍物点不应该相交,footprint的中心不应该与蓝色点重合 costmap_2d包提供了一个机器人在其中导航的占据栅格地图。costmap接收…

Oracle EBS PAC 如何复修非标任务单生产生非常大的PAC成本?

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状 非标准任务单组件和装配相同物料A,俗称投入A产A。该物料A的期初数量为0。 上期成本假设为20,而本期成本爆增至563.674234。关键问题点: 由于该物料没有期初数量,无法通过“更新定期成本”指定“新期本…

PHP:连接Grid++Report模板,实现循环打印

实现效果 模板 代码 cycle.php <html xmlns"http://www.w3.org/1999/xhtml"><head><title>Web报表(B/S报表)演示 - 不用报表插件展现报表而是直接输出</title><meta http-equiv"Content-Type" content"text/html; chars…

代理IP地址和端口是什么?怎么进行设置?

保护个人隐私、突破地域限制、提升网络安全性是我们不断追求的目标。IP地址与端口一种实现这些目标的重要工具。但是&#xff0c;你可能对它是什么&#xff0c;以及如何设置感到困惑。别担心&#xff0c;本文将为你揭开这些神秘的面纱&#xff0c;让你轻松掌握这项技能。 1.IP…

【单元测试】单元测试的重要性

1一些错误的认识 在实际的单元测试过程中总会有一些错误的认识左右着我们&#xff0c;使之成为单元测试最大的障碍&#xff0c;在此将其一一分析如下&#xff1a; 它太浪费时间了&#xff0c;现在要赶进度&#xff0c;时间上根本不允许&#xff0c;或者随便做做应付领导。 …

二叉树交换相关算法题|递归/非递归交换所有节点左右子树(C)

交换左右子树 设树B是一棵采用链式结构存储的二叉树&#xff0c;编写一个把树B中所有节点的左右子树进行交换的函数 算法思想 采用递归算法实现交换二叉树的左右子树&#xff0c;首先交换root节点左孩子的左右子树&#xff0c;然后交换root节点右孩子的左右子树&#xff0c;…

Playwright中Page类的方法

导航和页面操作 goto(url: str, **kwargs: Any): 导航到一个URL。 reload(**kwargs: Any): 重新加载当前页面。 go_back(**kwargs: Any): 导航到会话历史记录中的前一个页面。 go_forward(**kwargs: Any): 导航到会话历史记录中的下一个页面。 set_default_navigation_tim…

asp.net老项目运维,出现的问题6之数据库

数据库会有很多张表&#xff0c;表内一般会有自增列&#xff0c;如果想统一管理这个自增数值&#xff0c;可以使用如下方法&#xff0c;放在一个存储过程中&#xff0c;想用的时候调用存储过程即可生成数据库层面的全局唯一值&#xff1a; create procedure [dbo].[P_getSeqID…

酒店/电影推荐系统里面如何应用深度学习如CNN?

【1】酒店推荐系统里面如何应用CNN&#xff1f;具体过程是什么 在酒店推荐系统中应用卷积神经网络&#xff08;CNN&#xff09;并不是一个常见的选择&#xff0c;因为 CNN 主要用于处理具有空间结构的数据&#xff0c;如图像、音频和某些类型的序列数据。然而&#xff0c;在某…

链式设计模式

链式设计模式——装饰器模式和职责链模式 装饰模式 定义&#xff1a; 指在不改变现有对象结构的情况下&#xff0c;动态地给该对象增加一些职责&#xff08;即增加其额外功能&#xff09;的模式。 结构 装饰&#xff08;Decorator&#xff09;模式中的角色&#xff1a; 抽…

Flink学习连载文章13--FlinkSQL高级部分

eventTime 测试数据如下&#xff1a; {"username":"zs","price":20,"event_time":"2023-07-17 10:10:10"} {"username":"zs","price":15,"event_time":"2023-07-17 10:10:3…

16、PyTorch中进行卷积残差模块算子融合

文章目录 1. 1x1卷积核-> 3x3卷积核2. 输入x --> 3x3卷积核&#xff0c;无变化3. 代码 1. 1x1卷积核-> 3x3卷积核 假设我们有一个1x1的卷积核&#xff0c;需要通过填充变为一个3x3的卷积核,实现的是像素之间无关联 [ 4 ] → [ 0 0 0 0 4 0 0 0 0 ] \begin{equation}…