除了这些参数之外,其他基于流的参数也包括在内。图4显示了一个数据集的样例。
图4:本文使用的数据集实例
请注意,源IP/端口、目标IP/端口和协议字段已经从实例中删除,因为它们会导致模型过拟合。我们使用具有N隐藏层的深度前馈神经网络来处理其他所有特征。神经网络的架构如图5所示。
图5:用于Tor流量检测的深度学习网络表示
隐藏层层数在2和10之间变化。当N=5时是最优的。为了激活,线性整流函数(Rectified Linear Unit, ReLU)用于所有隐藏层。隐藏层每一层实际上都是密集的,有100个维度。
Keras中的FFN的Python代码片段:
输出节点由Sigmoid函数激活。这被用来输出二分类结果-TOR或非TOR。
我们在后端使用带有TensorFlow的Keras来训练深度学习模块。使用二元交叉熵损失来优化FFN。模型会被训练不同次数。图7显示,在一轮仿真训练中,随着训练次数的增加,性能也在增加,损失值也在下降。
图7:网络训练过程中Tensorboard生成的静态图