详细的 Bi-LSTM 车辆变道意图识别模型框架如下:
输入层
输入数据包括车辆在路面上行驶时的运动轨迹以及相关环境信息。这些信息可以包括车辆速度、加速度、方向盘角度、相对位置、道路宽度、车道标线等。这些信息组成一个序列,例如
x
=
[
x
1
,
x
2
,
.
.
.
,
x
T
]
x = [x_1, x_2, ..., x_T]
x=[x1,x2,...,xT],其中每个
x
i
x_i
xi 表示在时间步
i
i
i 时刻车辆采集到的数据。
编码器
为了处理序列信息,使用一个双向长短时记忆网络(Bi-LSTM)来对数据进行编码,以获取每个时间步的隐状态表示。把输入序列
x
x
x 通过前向和后向 LSTM 网络,分别得到前向隐状态序列
h
f
=
[
h
f
,
1
,
h
f
,
2
,
.
.
.
,
h
f
,
T
]
h_f = [h_{f,1}, h_{f,2}, ..., h_{f,T}]
hf=[hf,1,hf,2,...,hf,T] 和后向隐状态序列
h
b
=
[
h
b
,
1
,
h
b
,
2
,
.
.
.
,
h
b
,
T
]
h_b = [h_{b,1}, h_{b,2}, ..., h_{b,T}]
hb=[hb,1,hb,2,...,hb,T],并将两者连接起来,得到整个序列的隐状态表示
h
=
[
h
1
,
h
2
,
.
.
.
,
h
T
]
h = [h_1, h_2, ..., h_T]
h=[h1,h2,...,hT],其中
h
t
=
[
h
f
,
t
;
h
b
,
t
]
h_t = [h_{f,t}; h_{b,t}]
ht=[hf,t;hb,t] 表示时刻
t
t
t 的隐状态向量。
注意力机制
引入注意力机制来捕捉与变道意图相关的关键信息。采用多头自注意力机制(Multi-head Self-Attention),计算权重系数
α
\alpha
α 并对前向和后向的隐状态向量进行加权求和,得到加权后的表示
c
c
c,即
c = ∑ t = 1 T α t h t c = \sum_{t=1}^T \alpha_{t} h_t c=∑t=1Tαtht
其中 α \alpha α 的计算方式是:
α t = e x p ( e t ) ∑ j = 1 T e x p ( e j ) \alpha_{t} = \frac{exp(e_{t})}{\sum_{j=1}^{T} exp(e_{j})} αt=∑j=1Texp(ej)exp(et)
e t = ∑ i = 1 H w i g ( h t W i + b i ) e_{t} = \sum_{i=1}^{H} w_{i} g(h_{t}W_{i} + b_{i}) et=∑i=1Hwig(htWi+bi)
其中 g g g 是激活函数, w i w_{i} wi 是学习到的多头注意力权重, W i W_{i} Wi 和 b i b_{i} bi 是共享的全连接参数。
全连接层
将注意力机制的结果送入多层感知机全连接层,以提取更高级别的特征。这里可以添加一些中间层,增加模型的深度和表达能力。
输出层
输出层采用 softmax 函数对全连接层的输出进行分类,得出车辆变道的意图。具体而言,将全连接层的输出
y
y
y 经过 softmax 函数转换,以概率的形式输出每个类别的预测概率。设类别数为
K
K
K,则输出层的计算公式为:
P ( y = i ∣ x ) = e x p ( w i T y + b i ) ∑ j = 1 K e x p ( w j T y + b j ) P(y=i|x) = \frac{exp(w_i^T y+b_i)}{\sum_{j=1}^K exp(w_j^T y+b_j)} P(y=i∣x)=∑j=1Kexp(wjTy+bj)exp(wiTy+bi)
其中
w
w
w 和
b
b
b 是待学习的参数,
y
y
y 是全连接层的输出向量。最终预测结果是具有最高概率的类别。
在 Bi-LSTM 车辆变道意图识别模型中,我们需要使用监督学习方法来训练模型。训练数据集包含了车辆在路面上行驶时的运动轨迹和相应的标签信息,例如变道或不变道。在训练过程中,我们用损失函数来衡量模型的预测结果与真实标签之间的误差,进而优化模型参数。
交叉熵(Cross-entropy)是一种常用的损失函数,适用于多分类问题。在 Bi-LSTM 车辆变道意图识别模型中,假设有 K K K 个类别, y i y_i yi 表示真实标签, p i p_i pi 表示模型输出的概率。则交叉熵损失函数的定义如下:
L = − 1 N ∑ n = 1 N ∑ i = 1 K y n , i l o g ( p n , i ) L = -\frac{1}{N}\sum_{n=1}^{N} \sum_{i=1}^{K} y_{n,i} log(p_{n,i}) L=−N1∑n=1N∑i=1Kyn,ilog(pn,i)
其中, N N N 表示样本数量, y n , i y_{n,i} yn,i 是第 n n n 个样本的第 i i i 个类别的真实标签, p n , i p_{n,i} pn,i 是第 n n n 个样本的第 i i i 个类别的预测概率。
优化过程采用随机梯度下降法(SGD)进行。每次训练选择一个 batch 的大小,对这个 batch 中的样本计算损失函数,然后根据损失函数的导数调整模型参数向最优值移动。
宏平均F1分数(macro-averaged F1 score)是计算多分类问题中模型性能的一种指标,它是所有类别的 F1 值的平均值。具体地,对于 K K K 个类别,宏平均F1分数的计算公式如下:
M a c r o − F 1 = 1 K ∑ i = 1 K F 1 i Macro-F1 = \frac{1}{K} \sum_{i=1}^{K} F1_i Macro−F1=K1∑i=1KF1i
其中, F 1 i F1_i F1i 表示第 i i i 个类别的 F1 分数。与微平均F1分数不同,宏平均F1分数平等重视每个类别,适用于类别样本数量相当的情况。
F1值(F1-score): F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} F1=2×Precision+RecallPrecision×Recall,其中 P r e c i s i o n Precision Precision和 R e c a l l Recall Recall是精确率和召回率。