Deep Learning for Anomaly Detection: A Review

2023-11-05

本文是对《Deep Learning for Anomaly Detection: A Review》的翻译。

深度学习进行异常检测:综述

摘要

异常检测,也称为离群点检测或新颖性检测,几十年来一直是各个研究社区中一个持久而活跃的研究领域。仍然存在一些独特的问题复杂性和挑战,需要采用先进的方法。近年来,支持深度学习的异常检测,即深度异常检测,已成为一个关键方向。本文以全面的分类法综述了深度异常检测的研究,涵盖了三个高级类别和11个细粒度类别的方法的进展。我们回顾了他们的主要动机、目标函数、基本假设、优势和劣势,并讨论了他们如何应对上述挑战。我们进一步讨论了一系列可能的未来机遇和应对挑战的新视角。

1 引言

异常检测,也称为离群点检测或新颖性检测,被称为检测与大多数数据实例显著偏离的数据实例的过程。几十年来,异常检测一直是一个活跃的研究领域,早期勘探可追溯到20世纪60年代。由于风险管理、合规性、安全、金融监控、健康和医疗风险以及人工智能安全等日益增长的需求和广泛领域的应用,异常检测发挥着越来越重要的作用,在包括数据挖掘、机器学习、计算机视觉和统计学在内的各个领域都得到了突出的应用。近年来,深度学习在学习高维数据、时间数据、空间数据和图形数据等复杂数据的表达特征方面显示了巨大的能力,突破了不同学习任务的界限。用于异常检测的深度学习,简称深度异常检测,旨在通过神经网络学习特征表示或异常分数,以便进行异常检测。已经引入了大量深度异常检测方法,证明在解决各种现实应用中的挑战性检测问题方面,其性能明显优于传统异常检测。这项工作旨在全面综述这一领域。我们首先讨论异常检测的问题性质和主要尚未解决的挑战,然后系统地回顾当前的深度方法及其解决这些挑战的能力,最后提出了一些未来机会。
作为一个热门领域,许多研究致力于异常检测技术的分类和综述。然而,它们都只关注传统的异常检测方法。与我们密切相关的一项工作是[26]。它很好地总结了深度异常检测的许多实际应用,但仅提供了技术选择类别的一些非常高层次的概述,从中很难(如果不是不可能)了解当前方法所采用的手段及其基本直觉。相比之下,本综述描述了当前深度检测方法的制定,以获得关于其直觉、内在能力和弱点的关键见解,从而解决异常检测中一些基本上未解决的挑战。这形成了对问题本质和最新技术的深刻理解,并带来了真正的开放机会。这也有助于解释为什么我们需要深度异常检测。
总之,这项工作做出了以下五大贡献:
问题性质和挑战。我们讨论了异常检测背后的一些独特问题复杂性,以及由此产生的基本上未解决的挑战。
分类和表述。我们将当前的深度异常检测方法归纳为三个原则框架:用于一般特征提取的深度学习、正常性的学习表示和端到端异常得分学习。基于11个不同的建模视角,提出了一种层次分类法来对这些方法进行分类。
全面的文献综述。我们回顾了几个相关社区的主要会议和期刊上的大量相关研究,包括机器学习、数据挖掘、计算机视觉和人工智能,以对研究进展进行全面的文献综述。为了提供深入的介绍,我们描述了基本假设、目标函数、关键直觉及其通过所有类别的方法解决上述挑战的能力。
未来机会。我们进一步讨论了一系列可能的未来机遇及其对应对相关挑战的影响。
•源代码和数据集。我们收集了几乎所有类型方法的公开可访问源代码,以及大量具有真实异常的真实数据集,以提供一些经验比较基准。

2 异常检测:问题复杂性和挑战

由于其独特的性质,异常检测呈现出与大多数分析和学习问题和任务不同的问题复杂性。本节总结了复杂异常数据中固有的复杂性和未解决的检测挑战。

2.1 主要问题复杂性

与大多数、规则或明显模式的问题和任务不同,异常检测处理少数、不可预测/不确定和罕见事件,导致所有(深度和浅层)检测方法的一些独特问题复杂性:
未知性。异常与许多未知因素有关,例如,具有未知突变行为、数据结构和分布的实例。在实际发生之前,如新的恐怖袭击、欺诈和网络入侵,它们仍然未知。
异构异常类别。异常是不规则的,因此,一类异常可能表现出与另一类异常完全不同的异常特征。例如,在视频监控中,异常事件抢劫、交通事故和入室盗窃在视觉上有很大不同。
稀有性和类别不平衡。异常通常是罕见的数据实例,与通常占数据绝大部分的正常实例相反。因此,即使不是不可能,也很难收集大量标记的异常实例。这导致在大多数应用中无法获得大规模标记数据。类别不平衡也是由于异常的错误分类通常比正常实例的成本高得多。
各种类型的异常。已经探索了三种完全不同的异常类型。点异常是指大多数其他个体情况下的异常,例如患者的异常健康指标。条件异常,又称上下文异常,也指特定上下文中的个别异常实例,即数据实例在特定上下文中是异常的,否则是正常的。在现实世界的应用中,上下文可能非常不同,例如,特定时间上下文中的突然温度下降/升高,或不寻常空间环境中的快速信用卡交易。组异常,也称为集合异常,是数据实例的子集,作为一个整体异常,而不是其他数据实例;集体异常的个体成员可能不是异常,例如,由社交网络中的假账户形成的异常密集的子图是异常集合,但这些子图中的个体节点可以与真实账户一样正常。

2.2 深度异常检测面临的主要挑战

上述复杂问题的性质导致了许多检测挑战。近年来,一些挑战,如可伸缩性像数据大小,已经得到了很好的解决,但以下问题在很大程度上尚未解决,深度异常检测可以在其中发挥一些重要作用。
CH1:低异常检测召回率。由于异常非常罕见且不均匀,很难识别所有异常。许多正常情况被错误地报告为异常,而真实但复杂的异常则被遗漏。尽管多年来引入了大量的异常检测方法,但目前最先进的方法,特别是无监督方法,仍然经常在真实数据集上产生高误报。如何减少误报并提高检测召回率是最重要但也是最困难的挑战之一,尤其是对于无法发现异常的巨大成本而言。
CH2:高维和或非独立数据中的异常检测。异常通常在低维空间中表现出明显的异常特征,但在高维空间中变得隐藏和不可见。高维异常检测一直是一个长期存在的问题。在原始特征或新构造特征的小子集所跨越的缩小的低维空间中执行异常检测是一种简单的解决方案,例如,在基于子空间的和基于特征选择的方法中。然而,在高维数据中,识别复杂(例如,高阶、非线性和异构)特征交互和耦合可能至关重要,但这仍然是异常检测的主要挑战。此外,如何保证新的特征空间为特定的检测方法保留适当的信息对于下游准确的异常检测至关重要,但由于上述未知和异常的异质性,这是一个挑战。此外,从可能相互依赖的实例(例如通过时间、空间、基于图的关系和其他相互依赖关系)中检测异常也是一项挑战。
CH3:正常/异常的数据有效学习。由于收集大规模标记异常数据的难度和成本,完全监督异常检测通常是不现实的,因为它假设正常和异常类别的标记训练数据都可用。在过去十年中,主要的研究工作集中在无监督异常检测上,不需要任何标记的训练数据。然而,无监督方法没有任何关于真实异常的先验知识。他们在很大程度上依赖于对异常分布的假设。另一方面,通常不难收集标记的正常数据和一些标记的异常数据。在实践中,通常建议尽可能多地利用这些易于访问的标记数据。因此,利用这些标记数据学习正常/异常的表达表示对于准确的异常检测至关重要。半监督异常检测,假设一组标记的正常训练数据,是致力于这一问题的研究方向。另一个研究方向是弱监督异常检测,它假设我们有一些异常类的标签,但类标签是部分/不完整的(即,它们不跨越整个异常类集合)、不精确的(即粗粒度标签)或不准确的(即某些给定的标签可能不正确)。两个主要挑战是如何学习具有少量标记异常数据的表达性常态/异常表示,以及如何学习被推广到给定标记异常数据所揭示的新异常的检测模型。
CH4:抗噪声异常检测。许多弱/半监督异常检测方法假设标记的训练数据是干净的,这可能容易受到错误地标记为相反类标签的噪声实例的影响。在这种情况下,我们可以使用无监督方法,但这无法利用真正的标记数据。此外,受污染和未标记数据往往存在大规模异常。抗噪声模型可以利用这些未标记数据进行更准确的检测。因此,这里的噪声可能是错误标记的数据或未标记的异常。主要的挑战是,噪声量可能与数据集显著不同,并且噪声实例可能不规则地分布在数据空间中。
CH5:检测复杂异常。现有的方法大多是针对点异常的,不能用于条件异常和组异常,因为它们表现出与点异常完全不同的行为。这里的一个主要挑战是将条件/组异常的概念纳入异常度量/模型。此外,当前的方法主要侧重于检测单个数据源的异常,而许多应用需要检测多个异构数据源(例如多维数据、图形、图像、文本和音频数据)的异常。一个主要挑战是,只有在考虑两个或多个数据源时才能检测到某些异常。
CH6:异常解释。在许多安全关键领域,如果将异常检测模型直接用作黑盒模型,可能会存在一些重大风险。例如,报告为异常的罕见数据实例可能导致对数据中呈现的少数群体的算法偏见,例如欺诈检测和犯罪检测系统中代表性不足的群体。缓解这类风险的一种有效方法是使用异常解释算法,该算法提供关于为什么特定数据实例被识别为异常的直观线索。然后,人类专家可以调查并纠正这种偏见。在某些应用中,提供这样的解释可能与检测精度一样重要。然而,大多数异常检测研究仅关注检测精度,忽略了对已识别异常的解释能力。从特定的检测方法推导异常解释仍然是一个很大程度上尚未解决的问题,特别是对于复杂模型。开发具有内在可解释性的异常检测模型也是至关重要的,但要很好地平衡模型的可解释性和有效性仍然是一个主要挑战。
深度方法可以实现整个异常检测管道的端到端优化,还可以学习专门为异常检测定制的表示。这两种能力对于解决上述六个挑战至关重要,但传统方法并不具备。特别是,它们有助于大大提高标记正常数据或某些标记异常数据的利用率,而不管数据类型如何,从而减少了对大规模标记数据的需求,如在完全监督的设置中(CH2,CH3,CH4,Ch5)。这随后导致更明智的模型,从而更好的召回率(CH1)。对于异常解释挑战,尽管深度方法通常是黑箱模型,但它们提供了将异常检测和解释统一到单个框架中的选项,从而对特定模型发现的异常进行更真实的解释(见第8.5节)。深度方法还擅长从不同类型的数据(如高维数据、图像数据、视频数据、图形数据等)中学习复杂的结构和关系。这种能力对于解决各种挑战(如CH1、CH2、CH3和CH5)非常重要。此外,它们提供了许多有效且易于使用的网络架构和原则框架,以无缝学习异构数据源的统一表示。这使得深度模型能够应对一些关键挑战,如CH3和CH5。虽然有浅层方法处理这些复杂数据,但它们通常比深度方法弱得多,适应性差。本次讨论的总结见表1。
在这里插入图片描述

3 解决深度异常检测的挑战

3.1 前言

深度神经网络利用可由计算图表示的线性/非线性函数的复杂组合来学习表达表示。深度学习的两个基本组成部分是激活函数和层。激活函数确定给定某些输入的计算图节点(即神经网络中的神经元)的输出。它们可以是线性或非线性函数。一些流行的激活函数包括线性、S形、tanh、ReLU(整流线性单元)及其变体。神经网络中的层是指以某种形式堆叠的一组神经元。常用的层包括完全连接的、卷积的&池化以及循环层。这些层可以用来构建不同的流行神经网络。例如,多层感知器(MLP)网络由全连接的层组成,卷积神经网络(CNN)由不同的卷积和池化层组成,和递归神经网络(RNN),例如朴素RNN、门控循环单元(GRU)和长短时记忆(LSTM),都建立在循环层之上。有关这些神经网络的详细介绍,请参见[49]。
给定一个数据集 X = { x 1 , x 2 , ⋯   , x N } \mathcal{X}=\{x_1,x_2,\cdots,x_N\} X={x1,x2,,xN}其中 x i ∈ R D , x_i\in\mathbb{R}^D, xiRD, Z ∈ R K ( K ≪ N ) \mathcal{Z}\in\mathbb{R}^K(K\ll N) ZRK(KN)为一个表示空间,然后,深度异常检测旨在学习特征表示映射函数 ϕ ( ⋅ ) : X ↦ Z \phi(\cdot):\mathcal{X}\mapsto\mathcal{Z} ϕ():XZ或者异常得分学习函数 τ ( ⋅ ) : X ↦ R \tau(\cdot):\mathcal{X}\mapsto\mathbb{R} τ():XR,异常可以通过 ϕ \phi ϕ或者 τ \tau τ函数很容易地与生成的空间中的正常数据实例区分开来, ϕ \phi ϕ τ \tau τ都是基于神经网络的映射函数,具有 H ∈ N H\in\mathbb{N} HN个隐层及其权重矩阵 Θ = { M 1 , M 2 , ⋯   , M H } . \Theta=\{M^1,M^2,\cdots,M^H\}. Θ={M1,M2,,MH}.在学习特征映射 ϕ ( ⋅ ) \phi(\cdot) ϕ()的情况下,需要额外的步骤来计算新表示空间中每个数据实例的异常得分,而 τ ( ⋅ ) \tau(\cdot) τ()可以直接推断原始数据输入的异常分数。更大的 τ \tau τ 输出表明异常程度更大。

3.2 深度异常检测的分类

在这里插入图片描述
在这里插入图片描述
为了深入了解该领域,我们引入了一种层次分类法,从建模角度将深度异常检测方法分为三大类和11个细粒度类。这些方法的分类概述如图1所示。具体而言,深度异常检测由三个概念范式组成-用于特征提取的深度学习、正常性的特征表示学习和端到端异常得分学习。
这三种范式的过程如图2所示。如图2(a)所示,深度学习和异常检测在第一个主要类别(第4节)中完全分离,因此深度学习技术仅用作一些独立的特征提取器。这两个模块在图2(b)所示的第二个主要类别(第5节)中以某种形式相互依赖,目的是学习常态的表达表示。这类方法可以根据表示的学习方式进一步分为两个子类,即是否使用现有的浅层异常度量(例如,基于距离和聚类的度量)来指导学习。这两个子类别包含七个细粒度的方法类别,每个类别采用不同的方法来制定其目标函数。这两个模块完全统一在图2(c)所示的第三个主要类别(第6节)中,其中,这些方法专用于以端到端的方式通过神经网络学习异常分数。基于异常评分学习的公式,该类别进一步细分为四个子类别。在接下来的三节中,我们将详细回顾这三种范式。

4 用于特征提取的深度学习

这类方法旨在利用深度学习从高维和/或非线性可分离数据中提取低维特征表示,用于下游异常检测。特征提取和异常评分是完全分离的,彼此独立。因此,深度学习组件仅作为降维所用。形式上,该方法可以表示为
z = ϕ ( x ; Θ ) , (1) z=\phi(x;\Theta),\tag{1} z=ϕ(x;Θ),(1)
其中 ϕ : X ↦ Z \phi:\mathcal{X}\mapsto\mathcal{Z} ϕ:XZ是一个基于深度神经网络的特征映射函数,其中 X ∈ R D \mathcal{X}\in\mathbb{R}^D XRD Z ∈ R K \mathcal{Z}\in\mathbb{R}^K ZRK,通常 D ≫ K D\gg K DK。一种异常评分方法 f f f与特征映射 ϕ \phi ϕ没有关联然后应用于新空间以计算异常分数。
与异常检测中流行的降维方法如主成分分析(PCA)和随机投影相比,深度学习技术在提取语义特征和非线性特征关系方面表现出了更好的能力。
假设。深度学习模型提取的特征表示保留了有助于将异常与正常情况分离的区别信息。
一条研究路线是直接使用流行的预训练深度学习模型,如AlexNet、VGG和ResNet,来提取低维特征。在复杂高维数据(如图像数据和视频数据)中的异常检测中探索了这条线。这条线的一个有趣的工作是在线异常检测的非屏蔽框架。关键思想是迭代训练二元分类器,在滑动窗口中将一组视频帧与其后续视频帧分离,在每个迭代步骤中去除大部分鉴别特征。这类似于去掩码过程。该框架假设第一组视频帧是正常的,并评估其与后续视频帧的可分性。因此,如果随后的视频帧是异常的,则训练分类精度预期为高,否则会低。显然,去掩码框架的功能在很大程度上依赖于特征的质量,因此具有高质量特征来表示视频帧是至关重要的。在ILSVRC基准上预训练的VGG模型被证明能够有效地为此目的提取表达性外观特征。在[88]中,掩码框架被表述为两样本测试任务,以理解其理论基础。他们还表明,使用从动态更新的视频帧采样池中提取的特征可以提高框架的性能。此外,与许多其他任务类似,从源数据集上预训练的深度模型中提取的特征表示可以转移到目标数据集上的微调异常检测器。如[6]所示,一类支持向量机(SVM)可以首先用在ILSVRC上预训练的VGG模型初始化,然后进行微调,以改进MNIST数据的异常分类。类似地,在MNIST上预训练的ResNet模型可以在各种视频监控数据集中实现异常事件检测。
此类别中的另一条研究路线是显示训练深度特征提取模型,而不是下游异常评分的预训练模型。特别地,在[163]中,三个独立的自编码器网络被训练以学习用于视频异常检测的各个外观、运动和外观-运动联合表示的低维特征。三个一类SVM的集成在这些学习的特征表示中的每一个上独立地训练,以执行异常评分。与[163]类似,线性一类SVM用于对深度信念网络(DBN)产生的高维表格数据的低维表示进行异常检测。[65]中使用了无监督分类方法代替单类SVM,以实现投影空间中的异常评分。特别是,他们首先对卷积自编码器产生的视频帧的低维特征进行聚类,然后将聚类标签作为伪类标签进行一对一分类。分类概率用于定义逐帧异常分数。在图异常检测中也可以找到类似的方法,其中在潜在表示空间中使用基于无监督聚类的异常度量来计算图顶点或边的异常。为了学习图顶点的表达表示,以图顶点的一个热编码为输入,通过最小化基于自编码器的重构损失和相邻图顶点的成对距离来优化顶点表示。
优势。这种方法的优点如下。(i) 大量最先进(预训练)的深度模型和现成的异常检测器随时可用。(ii)深度特征提取比流行的线性方法提供了更强大的降维功能。(iii)鉴于深度模型和检测方法的公开可用性,易于实现。
缺点。它们的缺点如下。(i) 完全脱节的特征提取和异常评分常常导致次优的异常评分。(ii)预训练的深度模型通常限于特定类型的数据。
针对性挑战。这类方法将高维/非独立数据投影到低维空间,使现有的异常检测方法能够在更简单的数据空间中工作。低维空间通常有助于揭示隐藏的异常并减少误报(CH2)。然而,应注意,这些方法可能不会为异常检测保留足够的信息,因为数据投影与异常检测完全解耦。此外,该方法允许我们利用多种类型的特征并学习语义丰富的检测模型(例如[65、66、163]中的各种预定义图像/视频特征),这也有助于减少误报(CH1)。

5 常态性的特征表示学习

这类方法在某些方面将特征学习与异常评分相结合,而不是像上一节中那样完全解耦这两个模块。这些方法通常分为两类:一般特征学习和异常度量相关特征学习。

5.1 特征学习的一般常态

这类方法通过优化一般特征学习目标函数来学习数据实例的表示,该目标函数主要不是为异常检测而设计的,但所学习的表示仍然可以增强异常检测,因为它们被迫捕获一些关键的底层数据规则。形式上,该框架可以表示为
{ Θ ∗ , W ∗ } = arg ⁡ min ⁡ Θ , W ∑ x ∈ X ℓ ( ψ ( ϕ ( x ; Θ ) ; W ) ) , (2) \{\Theta^*,W^*\}=\mathop{\arg\min}\limits_{\Theta,W} \sum_{x\in \mathcal{X}}\ell(\psi(\phi(x;\Theta);W)),\tag{2} {Θ,W}=Θ,WargminxX(ψ(ϕ(x;Θ);W)),(2)
s x = f ( x , ϕ Θ ∗ , ψ W ∗ ) , (3) s_x=f(x,\phi_{\Theta^*},\psi_{W^*}),\tag{3} sx=f(x,ϕΘ,ψW),(3)
其中 ϕ \phi ϕ将原始数据映射到表示空间 Z \mathcal{Z} Z ψ \psi ψ由W参数化的是在 Z \mathcal{Z} Z空间上操作的替代学习任务,并且专用于强制底层数据规则的学习, ℓ \ell 是相对于基础建模方法的损失函数,以及 f f f是一种利用 ϕ \phi ϕ ψ \psi ψ计算异常分数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Deep Learning for Anomaly Detection: A Review 的相关文章

随机推荐

  • 科普:java与C++的区别

    Java与C 是两种广泛使用的编程语言 它们在某些方面存在不同之处 本文将详细介绍Java与C 的区别 一 C 与Java的历史 C 语言是由Bjarne Stroustrup在20世纪80年代初期开发的一种面向对象编程语言 它是C语言的扩
  • 服务器CPU占用率高,如何排查?

    1 定位进程 登录服务器 执行top命令 查看CPU占用情况 top 2 定位线程 如果进程23456占用率高 top Hp23456 进行定位线程 3 定位代码 通过top命令 我们目前已经定位到导致CPU使用率较高的具体线程 比如线程4
  • 电脑如何进入bios模式_电脑BIOS是什么?到底有什么用?如何进入电脑BIOS

    BIOS是英文 Basic Input Output System 的缩略语 直译过来后中文名称就是 基本输入输出系统 其实 它是一组固化到计算机内主板上一个ROM芯片上的程序 它保存着计算机最重要的基本输入输出的程序 系统设置信息 开机后
  • Python3 + Pymysql + mysql 连接方法

    准备材料 1 host地址 127 0 0 1 2 端口号 3306 3 用户名 root 4 密码 5 数据库名 information persons 6 python3 的pymysql库 正式开始 查询 1 首先导入pymysql包
  • C99和C89

    这是c0conut同学的一份作业 也可以理解为总结 为了保留这份作业 写了博客 我尽量使自己写得简单好懂有趣 C99与C89的亲子关系 就如DOM结构一般 C99与C89之间也充满温情 老父亲C89顾名思义出生于89年 也被称为ANSI C
  • validator 重写方法报错

    javax validation ConstraintDeclarationException HV000151 A method overriding another method must not redefine the parame
  • windows常用命令大全

    作者介绍 作者 小刘在C站 每天分享课堂笔记 一起努力 共赴美好人生 夕阳下 是最美的 绽放 目录 运行框命令 cmd中 Windows运行中 快捷键 运行框命令 shutdown s t 后家秒数 计划关机任务 migwiz Window
  • x-oss-process_OSS中的同理心-重要

    x oss process 我不花很多时间在开放源码项目的整个工作日 和许多晚上 上 我对OSS的使用形成了一种或两种意见 特别是在为项目做贡献时 作为一个使用Github之类的工具的社区 我们已经走了很长一段路 这使得在野外发布OSS项目
  • 什么是区块链?

    什么是区块链 今天给大家讲解我们区块链的第一课 我们要学习区块链 首先我们必须得了解什么是区块链 只有理解了区块链的概念 我们才能入门区块链 接下来 我会从浅入深的带着大家去理解区块链的含义 首先 我们从字面上来理解 区块链 包含着两层含义
  • kvm虚拟化技术

    前言 kvm是一种虚拟化技术 使用 概念 kvm是linux内核的模块 它需要CPU支持 采用硬件辅助虚拟化技术Intel VT AMD V 内存的相关技术如Intel的EPT和AMD的RVI 是底层虚拟化内核模块 检查cpu是否支持虚拟化
  • 大学c语言程序设计题库选择题,黑龙江大学C语言程序设计试题库程序单选.doc

    单选题 46 若输入ab 程序运行结果为 main static char a 2 scanf s a printf c c a 1 a 2 C A a b B a C b D 程序出错 47 若有说明 int a 3 4 0 则下面正确的
  • Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦

    文章目录 背景 架构 HDFS HA配置 错误原因 解决方案 方案一 方案二 方案三 首先查看自己各参数文件是否配置出错 后记 补充 failover transitionToActive 常用端口号及配置文件 常用端口号 hadoop3
  • 服务器上传图片不显示,网站后台上传图片失败或不显示的原因

    这四年多以来 比尔云做过近百个网站 发现好多网站后台上传图片都会出现一些错误 也不管这个程序是ASP的还是PHP的 对于为什么网站后台上传图片失败 今天比尔云结合自己的经验给大家总结一下 大家以后在搞网站时遇到相应的问题就好解决了 第一件事
  • Fine-tuning Large Enterprise Language Models via Ontological Reasoning

    本文是LLM系列文章 针对 Fine tuning Large Enterprise Language Models via Ontological Reasoning 的翻译 基于本体论推理的大型企业语言模型微调 摘要 1 引言 2 微调
  • 十大图像数据标注工具大合集

    给大家推荐十大标注工具 1 常见的标注方法 人工数据标注 的好处是标注结果比较可靠 自动数据标注 一般都需要二次复核 避免程序错误 外包数据标注 很多时候会面临数据泄密与流失风险 2 人工标注工具 可以分为客户端与WEB端标注工具 推荐使用
  • CUDA 7.5 安装及配置(WIN7 64 英伟达G卡 VS2013)

    第一步 下载cuda 7 5最新版本 https developer nvidia com cuda downloads 第二步 运行安装程序 安装过程中选择自定义 第三步 安装完毕 可以看到系统中多了CUDA PATH和CUDA PATH
  • Python算法--求1-100之间所有的偶数和奇数

    i 1 sum1 0 sum2 0 while i lt 100 if i 2 0 sum1 i else sum2 i i 1 print 1 100之间偶数和为 d sum1 print 1 100之间奇数和为 d sum2
  • MySQL递归查询

    在平常开发过程中 递归查询随处可见 话不多说 本人在项目中遇到的是编码和父级编码 需要逐渐查询 1 表结构 2 SQL SELECT id SELECT REPLACE GROUP CONCAT code FROM ddm file dir
  • windows下网卡绑定多个IP地址的方法

    在Windows下 尤其是Windows的服务器 有时候需要在一张网卡上绑定多个IP地址 有两种方法可以完成 一是使用控制面板可视化配置 进入控制面板 网络设置 Network and Internet 网络和共享中心 Network an
  • Deep Learning for Anomaly Detection: A Review

    本文是对 Deep Learning for Anomaly Detection A Review 的翻译 深度学习进行异常检测 综述 摘要 1 引言 2 异常检测 问题复杂性和挑战 2 1 主要问题复杂性 2 2 深度异常检测面临的主要挑