引入
本节主要介绍基于机器学习的目标状态识别。以下首先介绍几个概念:
1)目标状态:以对抗系统接收到的信号为基准,而界定的对抗目标的状态
2)目标行为:目标辐射源在工作过程中,受到外界电磁环境的影响或系统内部的需要而产生的一种有规律的状态转变
1 已知目标状态
定义:判断输入的信号源对应于当前知识库里的哪个状态类别。简单说就是分类聚类这些机器学习常用的操作
1.1 基于有监督分类
什么SVM、朴素贝叶斯什么的,神经网络都可以搞
1.2 基于无监督聚类
介绍两个常用的,
k
k
kMeans就不说了哇:
1)吸引子传播算法:
∙
\bull
∙ 基本思想:将所有样本点当作是潜在的聚类代表点 (exemplars),然后迭代地在样本之间传递两类信息:吸引度 (responsibility) 和归属度 (availability)
∙
\bull
∙ 信息更新方式:
r
(
i
,
k
)
←
s
(
i
,
k
)
−
max
k
′
≠
k
{
a
(
i
,
k
′
)
+
s
(
i
,
k
′
)
}
a
(
i
,
k
)
←
{
min
{
0
,
r
(
k
,
k
)
+
∑
i
′
≠
i
,
i
′
≠
k
max
{
0
,
r
(
i
′
,
k
)
}
}
k
≠
i
∑
i
′
≠
k
max
{
0
,
r
(
i
′
,
k
)
}
k
=
i
R
t
+
1
=
(
1
−
λ
)
R
t
+
λ
R
t
−
1
A
t
+
1
=
(
1
−
λ
)
A
t
+
λ
A
t
−
1
r(i,k)\leftarrow s(i, k)-\max_{k'\neq k}\{ a(i, k') + s(i, k') \}\\ a(i,k)\leftarrow \left\{\begin{matrix} \min\{ 0,r(k, k) + \sum\limits_{i'\neq i, i'\neq k} \max\{ 0, r(i', k) \} \} \qquad&k\neq i\\ \sum\limits_{i'\neq k}\max\{ 0, r(i', k) \} \qquad&k = i \end{matrix}\right.\\ \mathbf{R}^{t+1}=(1-\lambda)\mathbf{R}^t+\lambda\mathbf{R}^{t-1}\\ \mathbf{A}^{t+1}=(1-\lambda)\mathbf{A}^t+\lambda\mathbf{A}^{t-1}
r(i,k)←s(i,k)−k′=kmax{a(i,k′)+s(i,k′)}a(i,k)←⎩⎨⎧min{0,r(k,k)+i′=i,i′=k∑max{0,r(i′,k)}}i′=k∑max{0,r(i′,k)}k=ik=iRt+1=(1−λ)Rt+λRt−1At+1=(1−λ)At+λAt−1 其中吸引度
r
(
i
,
k
)
r(i, k)
r(i,k)表示样本点
k
k
k从所有样本点中吸引样本点
i
i
i作为其成员的程度、归属度
a
(
i
,
k
)
a(i,k)
a(i,k)表示样本点
i
i
i从所有样本中选择
k
k
k作为其类代表的适合程度、
s
(
i
,
k
)
s(i,k)
s(i,k)表示两样本之间的相似的、
R
\mathbf{R}
R和
A
\mathbf{A}
A分别表示吸引度和归属度矩阵、
t
t
t表示迭代次数
迭代结束后,所有的样本点就都有了自己的归属,感觉和DP很像,不过它需要迭代
∙
\bull
∙ 矩阵初始化:零矩阵即可
∙
\bull
∙ sklearn的示例如下:
from sklearn.datasets import load_iris
from sklearn.cluster import AffinityPropagation
X, _ = load_iris(return_X_y=True)
ap = AffinityPropagation()
ap.fit(X)
print(ap.cluster_centers_.shape)
2)基于快速搜寻密度峰值法 (CFSFDP):
∙
\bull
∙ 核心思想:首先寻找聚类中心,然后根据最近邻方法给每一个数据点分配对应的簇。为了寻找密度峰,为每一个样本点
i
i
i定义局部密度
ρ
i
\rho_i
ρi和最小距离
δ
i
\delta_i
δi如下:
ρ
i
=
∑
k
X
(
d
i
,
k
−
d
c
)
δ
i
=
min
k
:
ρ
k
>
ρ
i
(
d
i
,
k
)
\rho_i = \sum_k\mathcal{X} (d_{i,k} -d_c)\\ \delta_i =\min_{k:\rho_k>\rho_i}(d_{i,k})
ρi=k∑X(di,k−dc)δi=k:ρk>ρimin(di,k) 其中
d
i
,
k
d_{i,k}
di,k表示两个样本之间的距离、
d
c
d_c
dc表示截断距离。特别地,如果数据点
j
j
j有最高的局部密度,其最小距离设计为它与其他样本点的最大距离。其实就是密度峰值聚类,哈哈
2 未知目标状态
要完成未知目标状态识别,就需要研究增量式识别算法。增量式是指模型可以识别新样本,并基于新样本在不重新训练模型的情况下对模型进行更新,且不会冲洗掉之前的习得信息
2.1 未知状态检测
1)单类支持向量机 (SVDD):简单说就是训练一个超球,使得其能够尽可能的覆盖目标数据。这样判断新来的数据是否在超球内就行了
import numpy as np
from sklearn.datasets import load_iris
from sklearn.svm import OneClassSVM
X, _ = load_iris(return_X_y=True)
classifier = OneClassSVM()
idx = np.random.permutation(len(X))
"""只用iris第一类数据训练"""
classifier.fit(X[:50])
"""预测随机打乱索引的钱是十个"""
print(idx[:10])
print(classifier.predict(X[idx[:10]]))
输出如下:
[ 30 93 32 83 29 136 145 69 31 88]
[ 1 -1 -1 -1 1 -1 -1 -1 -1 -1]
2)ARTMAP网络:依据自适应共振理论实现的一种快速在线的增量式学习的自组织神经网络,一般使用以下简化结构,如图2.1:
∙
\bull
∙ 和感知机差不多的结构
∙
\bull
∙ 多了个阈值
ρ
\rho
ρ用于检测输入样本是否与输出层的某个结点匹配,该值也会动态更新
2.2 增量式机器学习
1)增量学习:简单说就是在吸收新知识的同时保留甚至整合、优化旧知识
2)增量式分类算法,以下均只进行算法简要说明:
∙
\bull
∙ 在线式SVM:解决SVM在线更新问题,但是需要新样本带标签
∙
\bull
∙ 树形预测机制CNN:处理大规模增量式任务
∙
\bull
∙ 快速数据流特征挖掘:利用迁移学习识别新类别
∙
\bull
∙ 在线增量式深度学习:利用数据并行机制并进行模块化更新
3)增量式聚类算法:已有研究模型复杂度高,在认知电子战中的应用需要进一步探究