1. 机器学习新手必看十大算法
机器学习新手必看十大算法
本文介绍了机器学习新手需要了解的 10 大算法,包括线性回归、Logistic 回归、朴素贝叶斯、K 近邻算法等。
在机器学习中,有一种叫做“没有免费的午餐”的定理。简而言之,它指出没有任何一种算法对所有问题都有效,在监督学习(即预测建模)中尤其如此。
例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,例如数据集的大小和结构。
因此,你应该针对具体问题尝试多种不同算法,并留出一个数据“测试集”来评估性能、选出优胜者。
当然,你尝试的算法必须适合你的问题,也就是选择正确的机器学习任务。打个比方,如果你需要打扫房子,你可能会用吸尘器、扫帚或拖把,但是你不会拿出铲子开始挖土。
大原则
不过也有一个普遍原则,即所有监督机器学习算法预测建模的基础。
机器学习算法被描述为学习一个目标函数 f,该函数将输入变量 X 最好地映射到输出变量 Y:Y = f(X)
这是一个普遍的学习任务,我们可以根据输入变量 X 的新样本对 Y 进行预测。我们不知道函数 f 的样子或形式。如果我们知道的话,我们将会直接使用它,不需要用机器学习算法从数据中学习。
最常见的机器学习算法是学习映射 Y = f(X) 来预测新 X 的 Y。这叫做预测建模或预测分析,我们的目标是尽可能作出最准确的预测。
对于想了解机器学习基础知识的新手,本文将概述数据科学家使用的 top 10 机器学习算法。
1. 线性回归
线性回归可能是统计学和机器学习中最知名和最易理解的算法之一。
预测建模主要关注最小化模型误差或者尽可能作出最准确的预测,以可解释性为代价。我们将借用、重用包括统计学在内的很多不同领域的算法,并将其用于这些目的。
线性回归的表示是一个方程,它通过找到输入变量的特定权重(称为系数 B),来描述一条最适合表示输入变量 x 与输出变量 y 关系的直线。
线性回归
例如:y = B0 + B1 * x
我们将根据输入 x 预测 y,线性回归学习算法的目标是找到系数 B0 和 B1 的值。
可以使用不同的技术从数据中学习线性回归模型,例如用于普通最小二乘法和梯度下降优化的线性代数解。
线性回归已经存在了 200 多年,并得到了广泛研究。使用这种技术的一些经验是尽可能去除非常相似(相关)的变量,并去除噪音。这是一种快速、简单的技术,可以首先尝试一下。
2. Logistic 回归
Logistic 回归是机器学习从统计学中借鉴的另一种技术。它是解决二分类问题的首选方法。
Logistic 回归与线性回归相似,目标都是找到每个输入变量的权重,即系数值。与线性回归不同的是,Logistic 回归对输出的预测使用被称为 logistic 函数的非线性函数进行变换。
logistic 函数看起来像一个大的 S,并且可以将任何值转换到 0 到 1 的区间内。这非常实用,因为我们可以规定 logistic 函数的输出值是 0 和 1(例如,输入小于 0.5 则输出为 1)并预测类别值。
Logistic 回归
由于模型的学习方式,Logistic 回归的预测也可以作为给定数据实例(属于类别 0 或 1)的概率。这对于需要为预测提供更多依据的问题很有用。
像线性回归一样,Logistic 回归在删除与输出变量无关的属性以及非常相似(相关)的属性时效果更好。它是一个快速的学习模型,并且对于二分类问题非常有效。
3. 线性判别分析(LDA)
Logistic 回归是一种分类算法,传统上,它仅限于只有两类的分类问题。如果你有两个以上的类别,那么线性判别分析是首选的线性分类技术。
LDA 的表示非常简单直接。它由数据的统计属性构成,对每个类别进行计算。单个输入变量的 LDA 包括:
每个类别的平均值;
所有类别的方差。
线性判别分析
进行预测的方法是计算每个类别的判别值并对具备最大值的类别进行预测。该技术假设数据呈高斯分布(钟形曲线),因此最好预先从数据中删除异常值。这是处理分类预测建模问题的一种简单而强大的方法。
4. 分类与回归树
决策树是预测建模机器学习的一种重要算法。
决策树模型的表示是一个二叉树。这是算法和数据结构中的二叉树,没什么特别的。每个节点代表一个单独的输入变量 x 和该变量上的一个分割点(假设变量是数字)。
决策树
决策树的叶节点包含一个用于预测的输出变量 y。通过遍历该树的分割点,直到到达一个叶节点并输出该节点的类别值就可以作出预测。
决策树学习速度和预测速度都很快。它们还可以解决大量问题,并且不需要对数据做特别准备。
5. 朴素贝叶斯
朴素贝叶斯是一个简单但是很强大的预测建模算法。
该模型由两种概率组成,这两种概率都可以直接从训练数据中计算出来:1)每个类别的概率;2)给定每个 x 的值,每个类别的条件概率。一旦计算出来,概率模型可用于使用贝叶斯定理对新数据进行预测。当你的数据是实值时,通常假设一个高斯分布(钟形曲线),这样你可以简单的估计这些概率。
贝叶斯定理
朴素贝叶斯之所以是朴素的,是因为它假设每个输入变量是独立的。这是一个强大的假设,真实的数据并非如此,但是,该技术在大量复杂问题上非常有用。
6. K 近邻算法
KNN 算法非常简单且有效。KNN 的模型表示是整个训练数据集。是不是很简单?
KNN 算法在整个训练集中搜索 K 个最相似实例(近邻)并汇总这 K 个实例的输出变量,以预测新数据点。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是众数(或最常见的)类别值。
诀窍在于如何确定数据实例间的相似性。如果属性的度量单位相同(例如都是用英寸表示),那么最简单的技术是使用欧几里得距离,你可以根据每个输入变量之间的差值直接计算出来其数值。
K 近邻算法
KNN 需要大量内存或空间来存储所有数据,但是只有在需要预测时才执行计算(或学习)。你还可以随时更新和管理训练实例,以保持预测的准确性。
距离或紧密性的概念可能在非常高的维度(很多输入变量)中会瓦解,这对算法在你的问题上的性能产生负面影响。这被称为维数灾难。因此你最好只使用那些与预测输出变量最相关的输入变量。
7. 学习向量量化
K 近邻算法的一个缺点是你需要遍历整个训练数据集。学习向量量化算法(简称 LVQ)是一种人工神经网络算法,它允许你选择训练实例的数量,并精确地学习这些实例应该是什么样的。
学习向量量化
LVQ 的表示是码本向量的集合。这些是在开始时随机选择的,并逐渐调整以在学习算法的多次迭代中最好地总结训练数据集。在学习之后,码本向量可用于预测(类似 K 近邻算法)。最相似的近邻(最佳匹配的码本向量)通过计算每个码本向量和新数据实例之间的距离找到。然后返回最佳匹配单元的类别值或(回归中的实际值)作为预测。如果你重新调整数据,使其具有相同的范围(比如 0 到 1 之间),就可以获得最佳结果。
如果你发现 KNN 在你的数据集上达到很好的结果,请尝试用 LVQ 减少存储整个训练数据集的内存要求。
8. 支持向量机(SVM)
支持向量机可能是最受欢迎和最广泛讨论的机器学习算法之一。
超平面是分割输入变量空间的一条线。在 SVM 中,选择一条可以最好地根据输入变量类别(类别 0 或类别 1)对输入变量空间进行分割的超平面。在二维中,你可以将其视为一条线,我们假设所有的输入点都可以被这条线完全的分开。SVM 学习算法找到了可以让超平面对类别进行最佳分割的系数。
支持向量机
超平面和最近的数据点之间的距离被称为间隔。分开两个类别的最好的或最理想的超平面具备最大间隔。只有这些点与定义超平面和构建分类器有关。这些点被称为支持向量,它们支持或定义了超平面。实际上,优化算法用于寻找最大化间隔的系数的值。
SVM 可能是最强大的立即可用的分类器之一,值得一试。
9. Bagging 和随机森林
随机森林是最流行和最强大的机器学习算法之一。它是 Bootstrap Aggregation(又称 bagging)集成机器学习算法的一种。
bootstrap 是从数据样本中估算数量的一种强大的统计方法。例如平均数。你从数据中抽取大量样本,计算平均值,然后平均所有的平均值以便更好的估计真实的平均值。
bagging 使用相同的方法,但是它估计整个统计模型,最常见的是决策树。在训练数据中抽取多个样本,然后对每个数据样本建模。当你需要对新数据进行预测时,每个模型都进行预测,并将所有的预测值平均以便更好的估计真实的输出值。
随机森林
随机森林是对这种方法的一种调整,在随机森林的方法中决策树被创建以便于通过引入随机性来进行次优分割,而不是选择最佳分割点。
因此,针对每个数据样本创建的模型将会与其他方式得到的有所不同,不过虽然方法独特且不同,它们仍然是准确的。结合它们的预测可以更好的估计真实的输出值。
如果你用方差较高的算法(如决策树)得到了很好的结果,那么通常可以通过 bagging 该算法来获得更好的结果。
10. Boosting 和 AdaBoost
Boosting 是一种集成技术,它试图集成一些弱分类器来创建一个强分类器。这通过从训练数据中构建一个模型,然后创建第二个模型来尝试纠正第一个模型的错误来完成。一直添加模型直到能够完美预测训练集,或添加的模型数量已经达到最大数量。
AdaBoost 是第一个为二分类开发的真正成功的 boosting 算法。这是理解 boosting 的最佳起点。现代 boosting 方法建立在 AdaBoost 之上,最显着的是随机梯度提升。
AdaBoost
AdaBoost与短决策树一起使用。在第一个决策树创建之后,利用每个训练实例上树的性能来衡量下一个决策树应该对每个训练实例付出多少注意力。难以预测的训练数据被分配更多权重,而容易预测的数据分配的权重较少。依次创建模型,每个模型在训练实例上更新权重,影响序列中下一个决策树的学习。在所有决策树建立之后,对新数据进行预测,并且通过每个决策树在训练数据上的精确度评估其性能。
因为在纠正算法错误上投入了太多注意力,所以具备已删除异常值的干净数据非常重要。
总结
初学者在面对各种机器学习算法时经常问:“我应该用哪个算法?”这个问题的答案取决于很多因素,包括:(1)数据的大小、质量和特性;(2)可用的计算时间;(3)任务的紧迫性;(4)你想用这些数据做什么。
即使是经验丰富的数据科学家在尝试不同的算法之前,也无法分辨哪种算法会表现最好。虽然还有很多其他的机器学习算法,但本篇文章中讨论的是最受欢迎的算法。如果你是机器学习的新手,这将是一个很好的学习起点。
2. 数据挖掘-决策树算法
决策树算法是一种比较简易的监督学习分类算法,既然叫做决策树,那么首先他是一个树形结构,简单写一下树形结构(数据结构的时候学过不少了)。
树状结构是一个或多个节点的有限集合,在决策树里,构成比较简单,有如下几种元素:
在决策树中,每个叶子节点都有一个类标签,非叶子节点包含对属性的测试条件,用此进行分类。
所以个人理解,决策树就是 对一些样本,用树形结构对样本的特征进行分支,分到叶子节点就能得到样本最终的分类,而其中的非叶子节点和分支就是分类的条件,测试和预测分类就可以照着这些条件来走相应的路径进行分类。
根据这个逻辑,很明显决策树的关键就是如何找出决策条件和什么时候算作叶子节点即决策树终止。
决策树的核心是为不同类型的特征提供表示决策条件和对应输出的方法,特征类型和划分方法包括以下几个:
注意,这些图中的第二层都是分支,不是叶子节点。
如何合理的对特征进行划分,从而找到最优的决策模型呢?在这里需要引入信息熵的概念。
先来看熵的概念:
在数据集中,参考熵的定义,把信息熵描述为样本中的不纯度,熵越高,不纯度越高,数据越混乱(越难区分分类)。
例如:要给(0,1)分类,熵是0,因为能明显分类,而均衡分布的(0.5,0.5)熵比较高,因为难以划分。
信息熵的计算公式为:
其中 代表信息熵。 是类的个数, 代表在 类时 发生的概率。
另外有一种Gini系数,也可以用来衡量样本的不纯度:
其中 代表Gini系数,一般用于决策树的 CART算法 。
举个例子:
如果有上述样本,那么样本中可以知道,能被分为0类的有3个,分为1类的也有3个,那么信息熵为:
Gini系数为:
总共有6个数据,那么其中0类3个,占比就是3/6,同理1类。
我们再来计算一个分布比较一下:
信息熵为:
Gini系数为:
很明显,因为第二个分布中,很明显这些数偏向了其中一类,所以 纯度更高 ,相对的信息熵和Gini系数较低。
有了上述的概念,很明显如果我们有一组数据要进行分类,最快的建立决策树的途径就是让其在每一层都让这个样本纯度最大化,那么就要引入信息增益的概念。
所谓增益,就是做了一次决策之后,样本的纯度提升了多少(不纯度降低了多少),也就是比较决策之前的样本不纯度和决策之后的样本不纯度,差越大,效果越好。
让信息熵降低,每一层降低的越快越好。
度量这个信息熵差的方法如下:
其中 代表的就是信息熵(或者其他可以度量不纯度的系数)的差, 是样本(parent是决策之前, 是决策之后)的信息熵(或者其他可以度量不纯度的系数), 为特征值的个数, 是原样本的记录总数, 是与决策后的样本相关联的记录个数。
当选择信息熵作为样本的不纯度度量时,Δ就叫做信息增益 。
我们可以遍历每一个特征,看就哪个特征决策时,产生的信息增益最大,就把他作为当前决策节点,之后在下一层继续这个过程。
举个例子:
如果我们的目标是判断什么情况下,销量会比较高(受天气,周末,促销三个因素影响),根据上述的信息增益求法,我们首先应该找到根据哪个特征来决策,以信息熵为例:
首先肯定是要求 ,也就是销量这个特征的信息熵:
接下来,就分别看三个特征关于销量的信息熵,先看天气,天气分为好和坏两种,其中天气为好的条件下,销量为高的有11条,低的有6条;天气坏时,销量为高的有7条,销量为低的有10条,并且天气好的总共17条,天气坏的总共17条。
分别计算天气好和天气坏时的信息熵,天气好时:
根据公式 ,可以知道,N是34,而天气特征有2个值,则k=2,第一个值有17条可以关联到决策后的节点,第二个值也是17条,则能得出计算:
再计算周末这个特征,也只有两个特征值,一个是,一个否,其中是有14条,否有20条;周末为是的中有11条销量是高,3条销量低,以此类推有:
信息增益为:
另外可以得到是否有促销的信息增益为0.127268。
可以看出,以周末为决策,可以得到最大的信息增益,因此根节点就可以用周末这个特征进行分支:
注意再接下来一层的原样本集,不是34个而是周末为“是”和“否”分别计算,为是的是14个,否的是20个。
这样一层一层往下递归,直到判断节点中的样本是否都属于一类,或者都有同一个特征值,此时就不继续往下分了,也就生成了叶子节点。
上述模型的决策树分配如下:
需要注意的是,特征是否出现需要在分支当中看,并不是整体互斥的,周末生成的两个分支,一个需要用促销来决策,一个需要用天气,并不代表再接下来就没有特征可以分了,而是在促销决策层下面可以再分天气,另外一遍天气决策下面可以再分促销。
决策树的模型比较容易解释,看这个树形图就能很容易的说出分类的条件。
我们知道属性有二元属性、标称属性、序数属性和连续属性,其中二元、标称和序数都是类似的,因为是离散的属性,按照上述方式进行信息增益计算即可,而连续属性与这三个不同。
对于连续的属性,为了降低其时间复杂度,我们可以先将属性内部排序,之后取相邻节点的均值作为决策值,依次取每两个相邻的属性值的均值,之后比较他们的不纯度度量。
需要注意的是,连续属性可能在决策树中出现多次,而不是像离散的属性一样在一个分支中出现一次就不会再出现了。
用信息熵或者Gini系数等不纯度度量有一个缺点,就是会倾向于将多分支的属性优先分类——而往往这种属性并不是特征。
例如上面例子中的第一行序号,有34个不同的值,那么信息熵一定很高,但是实际上它并没有任何意义,因此我们需要规避这种情况,如何规避呢,有两种方式:
公式如下:
其中k为划分的总数,如果每个属性值具有相同的记录数,则 ,划分信息等于 ,那么如果某个属性产生了大量划分,则划分信息很大,信息增益率低,就能规避这种情况了。
为了防止过拟合现象,往往会对决策树做优化,一般是通过剪枝的方式,剪枝又分为预剪枝和后剪枝。
在构建决策树时,设定各种各样的条件如叶子节点的样本数不大于多少就停止分支,树的最大深度等,让决策树的层级变少以防止过拟合。
也就是在生成决策树之前,设定了决策树的条件。
后剪枝就是在最大决策树生成之后,进行剪枝,按照自底向上的方式进行修剪,修剪的规则是,评估叶子节点和其父节点的代价函数,如果父节点的代价函数比较小,则去掉这个叶子节点。
这里引入的代价函数公式是:
其中 代表的是叶子节点中样本个数, 代表的是该叶子节点上的不纯度度量,把每个叶子节点的 加起来,和父节点的 比较,之后进行剪枝即可。
3. 机器学习有哪些算法
1. 线性回归
在统计学和机器学习领域,线性回归可能是最广为人知也最易理解的算法之一。
2. Logistic 回归
Logistic 回归是机器学习从统计学领域借鉴过来的另一种技术。它是二分类问题的首选方法。
3. 线性判别分析
Logistic 回归是一种传统的分类算法,它的使用场景仅限于二分类问题。如果你有两个以上的类,那么线性判别分析算法(LDA)是首选的线性分类技术。
4.分类和回归树
决策树是一类重要的机器学习预测建模算法。
5. 朴素贝叶斯
朴素贝叶斯是一种简单而强大的预测建模算法。
6. K 最近邻算法
K 最近邻(KNN)算法是非常简单而有效的。KNN 的模型表示就是整个训练数据集。
7. 学习向量量化
KNN 算法的一个缺点是,你需要处理整个训练数据集。
8. 支持向量机
支持向量机(SVM)可能是目前最流行、被讨论地最多的机器学习算法之一。
9. 袋装法和随机森林
随机森林是最流行也最强大的机器学习算法之一,它是一种集成机器学习算法。
想要学习了解更多机器学习的知识,推荐CDA数据分析师课程。CDA(Certified Data Analyst),即“CDA 数据分析师”,是在数字经济大背景和人工智能时代趋势下,面向全行业的专业权威国际资格认证,旨在提升全民数字技能,助力企业数字化转型,推动行业数字化发展。点击预约免费试听课。
4. 如何人工神经网络来预测下一个数值
newff函数建立BP神经网络,历史数据作为样本,例如前n个数据作为输入,输入节点为n。当前数据作为p,输出节点为1。隐层节点根据试凑法得到。通过matlab的train函数,得到训练好的BP神经网络。再将当前预测点的前n个数据作为输入,输出即为当前的预测值。
5. 目标跟踪检测算法(四)——多目标扩展
姓名:刘帆;学号:20021210609;学院:电子工程学院
https://blog.csdn.net/qq_34919792/article/details/89893665
【嵌牛导读】基于深度学习的算法在图像和视频识别任务中取得了广泛的应用和突破性的进展。从图像分类问题到行人重识别问题,深度学习方法相比传统方法表现出极大的优势。与行人重识别问题紧密相关的是行人的多目标跟踪问题。
【嵌牛鼻子】深度多目标跟踪算法
【嵌牛提问】深度多目标跟踪算法有哪些?
【嵌牛正文】
第一阶段(概率统计最大化的追踪)
1)多假设多目标追踪算法(MHT,基于kalman在多目标上的拓展)
多假设跟踪算法(MHT)是非常经典的多目标跟踪算法,由Reid在对雷达信号的自动跟踪研究中提出,本质上是基于Kalman滤波跟踪算法在多目标跟踪问题中的扩展。
卡尔曼滤波实际上是一种贝叶斯推理的应用,通过历史关联的预测量和k时刻的预测量来计算后验概率:
关联假设的后验分布是历史累计概率密度的连乘,转化为对数形式,可以看出总体后验概率的对数是每一步观察似然和关联假设似然的求和。但是若同时出现多个轨迹的时候,则需要考虑可能存在的多个假设关联。
左图为k-3时刻三个检测观察和两条轨迹的可能匹配。对于这种匹配关系,可以继续向前预测两帧,如图右。得到一种三层的假设树结构,对于假设树根枝干的剪枝,得到k-3时刻的最终关联结果。随着可能性增加,假设组合会爆炸性增多,为此,只为了保留最大关联性,我们需要对其他的节点进行裁剪。下式为选择方程
实际上MHT不会单独使用,一般作为单目标追踪的扩展添加。
2)基于检测可信度的粒子滤波算法
这个算法分为两个步骤:
1、对每一帧的检测结果,利用贪心匹配算法与已有的对象轨迹进行关联。
其中tr表示一个轨迹,d是某一个检测,他们的匹配亲和度计算包含三个部分:在线更新的分类学习模型(d),用来判断检测结果是不是属于轨迹tr; 轨迹的每个粒子与检测的匹配度,采用中心距离的高斯密度函数求和(d-p)表示;与检测尺寸大小相关的阈值函数g(tr,d),表示检测与轨迹尺度的符合程度, 而α是预设的一个超参数。
计算出匹配亲和度矩阵之后,可以采用二部图匹配的Hungarian算法计算匹配结果。不过作者采用了近似的贪心匹配算法,即首先找到亲和度最大的那个匹配,然后删除这个亲和度,寻找下一个匹配,依次类推。贪心匹配算法复杂度是线性,大部分情况下,也能得到最优匹配结果。
2、利用关联结果,计算每个对象的粒子群权重,作为粒子滤波框架中的观察似然概率。
其中tr表示需要跟踪的对象轨迹,p是某个粒子。指示函数I(tr)表示第一步关联中,轨迹tr是不是关联到某个检测结果,当存在关联时,计算与关联的检测d 的高斯密度P{n}(p-d );C{tr}§是对这个粒子的分类概率;§是粒子通过检测算法得到的检测可信度,(tr)是一个加权函数,计算如下:
3)基于马尔科夫决策的多目标跟踪算法
作者把目标跟踪看作为状态转移的过程,转移的过程用马尔科夫决策过程(MDP)建模。一个马尔科夫决策过程包括下面四个元素:(S, A, T(.),R(.))。其中S表示状态集合,A表示动作集合,T表示状态转移集合,R表示奖励函数集合。一个决策是指根据状态s确定动作a, 即 π: SA。一个对象的跟踪过程包括如下决策过程:
从Active状态转移到Tracked或者Inactive状态:即判断新出现的对象是否是真。
从Tracked状态转移到Tracked或者Lost状态:即判断对象是否是持续跟踪或者暂时处于丢失状态。
从Lost状态转移到Lost或者Tracked或者Inactive状态:即判断丢失对象是否重新被跟踪,被终止,或者继续处于丢失状态。
作者设计了三个奖励函数来描述上述决策过程:
第一个是:
即判断新出现的对象是否为真,y(a)=1时表示转移到跟踪状态,反之转移到终止状态。这是一个二分类问题,采用2类SVM模型学习得到。这里用了5维特征向量:包括x-y坐标、宽、高和检测的分数。
第二个是:
这个函数用来判断跟踪对象下一时刻状态是否是出于继续跟踪,还是处于丢失,即跟踪失败。这里作者用了5个历史模板,每个模板和当前图像块做光流匹配,emedFB表示光流中心偏差, 表示平均重合率。 和 是阈值。
第三个是:
这个函数用来判断丢失对象是否重新跟踪,或者终止,或者保持丢失状态不变。这里当丢失状态连续保持超过 (=50)时,则转向终止,其他情况下通过计算M个检测匹配,来判断是否存在最优的匹配使上式(3-14)奖励最大,并大于0。这里涉及两个问题如何设计特征以及如何学习参数。这里作者构造了12维与模板匹配相关的统计值。而参数的学习采用强化学习过程,主要思想是在犯错时候更新二类分类器值。
第二阶段 深度学习应用
1)基于对称网络的多目标跟踪算法
关于Siamese网络在单目标跟踪深度学习中有了介绍,在这里不再介绍,可以向前参考。
2)基于最小多割图模型的多目标跟踪算法
上述算法中为了匹配两个检测采用LUV图像格式以及光流图像。Tang等人在文献中发现采用深度学习计算的类光流特征(DeepMatching),结合表示能力更强的模型也可以得到效果很好的多目标跟踪结果。
基于DeepMatching特征,可以构造下列5维特征:
其中MI,MU表示检测矩形框中匹配的点的交集大小以及并集大小,ξv和ξw表示检测信任度。利用这5维特征可以学习一个逻辑回归分类器。
同样,为了计算边的匹配代价,需要设计匹配特征。这里,作者采用结合姿态对齐的叠加Siamese网络计算匹配相似度,如图9,采用的网络模型StackNetPose具有最好的重识别性能。
综合StackNetPose网络匹配信任度、深度光流特征(deepMatching)和时空相关度,作者设计了新的匹配特征向量。类似于[2], 计算逻辑回归匹配概率。最终的跟踪结果取得了非常突出的进步。在MOT2016测试数据上的结果如下表:
3)通过时空域关注模型学习多目标跟踪算法
除了采用解决目标重识别问题的深度网络架构学习检测匹配特征,还可以根据多目标跟踪场景的特点,设计合适的深度网络模型来学习检测匹配特征。Chu等人对行人多目标跟踪问题中跟踪算法发生漂移进行统计分析,发现不同行人发生交互时,互相遮挡是跟踪算法产生漂移的重要原因[4]。如图10。
在这里插入图片描述
针对这个问题,文献[4]提出了基于空间时间关注模型(STAM)用于学习遮挡情况,并判别可能出现的干扰目标。如图11,空间关注模型用于生成遮挡发生时的特征权重,当候选检测特征加权之后,通过分类器进行选择得到估计的目标跟踪结果,时间关注模型加权历史样本和当前样本,从而得到加权的损失函数,用于在线更新目标模型。
该过程分三步,第一步是学习特征可见图:
第二步是根据特征可见图,计算空间关注图(Spatial Attention):
其中fatt是一个局部连接的卷积和打分操作。wtji是学习到的参数。
第三步根据空间注意图加权原特征图:
对生成的加权特征图进行卷积和全连接网络操作,生成二元分类器判别是否是目标自身。最后用得到分类打分选择最优的跟踪结果。
4)基于循环网络判别融合表观运动交互的多目标跟踪算法
上面介绍的算法采用的深度网络模型都是基于卷积网络结构,由于目标跟踪是通过历史轨迹信息来判断新的目标状态,因此,设计能够记忆历史信息并根据历史信息来学习匹配相似性度量的网络结构来增强多目标跟踪的性能也是比较可行的算法框架。
考虑从三个方面特征计算轨迹历史信息与检测的匹配:表观特征,运动特征,以及交互模式特征。这三个方面的特征融合以分层方式计算。
在底层的特征匹配计算中,三个特征都采用了长短期记忆模型(LSTM)。对于表观特征,首先采用VGG-16卷积网络生成500维的特征ϕtA,以这个特征作为LSTM的输入计算循环。
对于运动特征,取相对位移vit为基本输入特征,直接输入LSTM模型计算没时刻的输出ϕi,对于下一时刻的检测同样计算相对位移vjt+1,通过全连接网络计算特征ϕj,类似于表观特征计算500维特征ϕm,并利用二元匹配分类器进行网络的预训练。
对于交互特征,取以目标中心位置周围矩形领域内其他目标所占的相对位置映射图作为LSTM模型的输入特征,计算输出特征ϕi,对于t+1时刻的检测计算类似的相对位置映射图为特征,通过全连接网络计算特征ϕj,类似于运动模型,通过全连接网络计算500维特征ϕI,进行同样的分类训练。
当三个特征ϕA,ϕM,ϕI都计算之后拼接为完整的特征,输入到上层的LSTM网络,对输出的向量进行全连接计算,然后用于匹配分类,匹配正确为1,否则为0。对于最后的网络结构,还需要进行微调,以优化整体网络性能。最后的分类打分看作为相似度用于检测与轨迹目标的匹配计算。最终的跟踪框架采用在线的检测与轨迹匹配方法进行计算。
5)基于双线性长短期循环网络模型的多目标跟踪算法
在对LSTM中各个门函数的设计进行分析之后,Kim等人认为仅仅用基本的LSTM模型对于表观特征并不是最佳的方案,在文献[10]中,Kim等人设计了基于双线性LSTM的表观特征学习网络模型。
除了利用传统的LSTM进行匹配学习,或者类似[5]中的算法,拼接LSTM输出与输入特征,作者设计了基于乘法的双线性LSTM模型,利用LSTM的隐含层特征(记忆)信息与输入的乘积作为特征,进行匹配分类器的学习。
这里对于隐含层特征ht-1,必须先进行重新排列(reshape)操作,然后才能乘以输入的特征向量xt。
其中f表示非线性激活函数,mt是新的特征输入。而原始的检测图像采用ResNet50提取2048维的特征,并通过全连接降为256维。下表中对于不同网络结构、网络特征维度、以及不同LSTM历史长度时,表观特征的学习对跟踪性能的影响做了验证。
可以看出采用双线性LSTM(bilinear LSTM)的表观特征性能最好,此时的历史相关长度最佳为40,这个值远远超过文献[5]中的2-4帧历史长度。相对来说40帧历史信息影响更接近人类的直觉。
6. 根据一组数据预测下一个数字
我感觉很难
相当于是简单的要从公匙逆推出密匙
也就是从数据反推出算法
有几条路,你一一试验吧
1,人工分析。你挨个猜解,看能不能弄出来规律,规律出来了,后面的数就能推出。但是这个好难
2,机器概率统计分析。对每个数字在不同位置出现的概率和他们在整个数列里的位置分析,反推出规律
3,盲序分析。打乱数字,然后对比第一个数列来分析