基于神经网络深度学习算法的日志分类系统设计

一、设计目标
输出一个通用化的匹配模型,可以通过日志内容实现快速识别,实现日志快速分类。

二、设计思路
通过现有的部分日志数据作为基本训练数据。
通过日志文字进行分类,并让模型进行学习,让模型对于文字具备识别能力。
设计符合设计目标的计算模型。
通过基本验证标准后,将计算模型应用于日志更新的策略中,实现快速日志识别目标。

三、基本实现策略
1、提取部分有效的日志数据
2、进行关键数据分析,划分数据列,并提取具备共性的核心关键特征
3、将日志中表现关键指标的数据作为训练的X和Y
4、在X数据中进行关键词的分词,提取训练所需的词库,并形成id数据
5、转换X数据,将数据转换为数据矩阵
6、设计基本计算模型,形成合理的多层模型,确保计算的稳定性以及可靠性
7、进行多轮验证,直到寻求到最佳模型结构以及训练结果,并保存。
8、提取保存的模型,动态刷新es日志数据,并使用模型进行预测
9、将预测结果批量刷新至es数据库中,实现日志分类
10、将结果进行二次运用于其他分析和问题排查操作中。

四、核心算法
本系统主要涉及以下几个核心算法
1、分词算法
分词是本系统的核心需求,有效的分词能够帮助模型记忆数据含义。最终进行预测时,可以根据词意进行理解,提高最终识别的有效性和稳定性。
日志分词的特殊性在于日志文字的复杂性,往往是中文、英文、数字和特殊字符的混合体。因为在一般自然语言处理时,会考虑忽略特殊字符,但日志系统中的特殊字符往往具有其含义,因此实现分词时,保留特殊字符也是尤为重要。也因此,本系统的分词算法是实现最终目标的第一重要算法。
算法涉及主要方法的方法名伪代码如下:
change_mark_to_sp_word()
first_split_sentence('\W+')
analysis_word_for_chn_and_split_ag()
get_and_save_word_index()
append_word_index_array()

2、有效词分类算法
有效分词是分词系统中一个比较重要的子算法。主要解决的问题是,由于在我们的分词过程中,会遇到大量特殊的字符,例如hashcode,token等。这些字符在日志中往往不具备分类表意的作用,但在分词时,会因为他的不重复性,形成大量的无效分词。而矩阵计算时,需要实现定长矩阵的计算才能实现结果,因此必须要控制词库的容量在一定范围内。同时词库的增加也会增加计算的复杂度以及最终预测时的干扰性。
综上,务必在分词时,尽可能排除对于分类含义读取无效的字符干扰,将无效词不计入分类中。
本算法以文字形态表达:
排除以下文字进入有效词库:
超过特定长度的字符
唱过特定长度的数字
不排除所有中文字符
引入较大的英文词库,并根据英文词库,对单词进行有效性划分。
排除其他特定的无效字符。
其他字符作为有效字符进入到分词词库中。

3、模型构建算法
最终的训练和预测模型是整个算法最终落地的环节,因此选择合理的模型是至关重要的。
本模型考虑过基于卷积算法的深度卷积文字算法和基于循环神经网络的seq2seq模型算法。
基于卷积算法的特点在于模型理解比较简单,训练时匹配度也比较高而且训练收敛速度快,但缺陷也非常明显,基于卷积算法的逻辑在于基于一般词的特征向量计算目标关联度,以此判断计算结果和目标的有效性,但一旦模型顺序发生变更以及词意发生变更,预测结果会变得相当不稳定。但优点是
基于循环神经网络的seq2seq算法来进行计算,最大的缺点是计算速度慢,收敛度远不如卷积算法的收敛速度,但优点是根据词意进行记忆的模型,明显更趋于理解句意,更不容易受到环境变更的影响,稳定性也更好。
经过多次调整,最终模型结构如下:

Model: "sequential"


Layer (type) Output Shape Param #

embedding (Embedding) (None, 1000, 64) 4480000


dropout (Dropout) (None, 1000, 64) 0


batch_normalization (BatchNo (None, 1000, 64) 256


gru (GRU) (None, 1000, 32) 9408


gru_1 (GRU) (None, 5) 585

Total params: 4,490,249
Trainable params: 4,490,121
Non-trainable params: 128

因为本应用目标为特定多分类,因此分类函数使用了softmax,损失函数使用了CategoricalCrossentropy,梯度下降函数使用Adam函数。

模型中使用了两次dropout和一次batchNormalization来降低模型训练的拟合度,提高了模型的适应性。
最终测试集的测试结果如下:
test loss 0.09884617477655411
accuracy 0.978004515171051

五、实现平台
基于anaconda框架的python3.7版本平台实现。
基础环境依赖了部分es的接口和mysql数据库。
深度学习框架采用了tensorflow2.2版本。

六、实现结果
最终实现结果的几个描述维度:
结果运行设备的配置为:2.8GHz主频的CPU,2C8G配置。
1、平均预测速度
在不考虑es性能的情况下,提取出的数据进行转换然后预测的耗时,约为80-120s每2w条日志(取决于数据的长度和复杂度)。

2、预测精度
大约95%左右的预测准确度,识别误差更多来自于未学习过内容的判定偏差,通过扩展学习范畴可以改善。

3、语义理解能力
基本实现了自主语义识别,经过查询确认了部分应当标记为异常的日志数据保存时未作为异常数据保存,但仍然被模型识别为异常,且语句中并不包含常见的关键字,例如ERROR,异常等。

七、后续扩展考虑
1、扩展应用范围
因为本模型具备一般性,因此应用范围可以从目前的日志范围扩展到更大范围,从运维到研发层面,帮助用户快速发现和识别问题。

2、提升准确性
通过对分析数据的二次分析,增加学习的维度数据,继续训练模型,提升模型的预测准确度。

3、分类深度分析
在数据分析上,如果继续进行异常等级分类,可以将异常划分为不同等级,帮助开发和用户快速发现和识别问题。

4、异常统计
根据识别结果,快速生成特定服务的异常统计结果,并汇总为报表,实现质量报告以及用户异常行为报告等。

5、自动文本摘要
根据语义识别,形成语义文本摘要,但本目标涉及NLG(自然语言生成),当前模型更多为NLP(自然语言处理)。实现逻辑上仍然有一定偏差,实现复杂度会更高。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353