機(jī)器學(xué)習(xí)實(shí)踐-項(xiàng)目(持續(xù)更新中)

0x01. 背景

公司背景是IC原廠,在芯片進(jìn)行出貨前會(huì)經(jīng)過一系列的測(cè)試,包括cp、FT、HTOL等等,在著一系列的過程中會(huì)產(chǎn)生大量的數(shù)據(jù),我們是不是可以將這些數(shù)據(jù)利用起來呢?

這次我就其中的一個(gè)項(xiàng)目進(jìn)行簡(jiǎn)要描述。

0x02. 需求描述及分析

HTOL是什么?
芯片測(cè)試的一道流程,用來評(píng)估你制造的芯片在客戶最極端的場(chǎng)景下能正常工作多長(zhǎng)時(shí)間,產(chǎn)品的壽命是基于你IC的壽命的,可以說是客戶很關(guān)注的一個(gè)指標(biāo)。

HTOL怎么做?
這個(gè)實(shí)驗(yàn)一般是可靠性工程師根據(jù)國際、行業(yè)、公司的標(biāo)準(zhǔn)以及客戶的需求來設(shè)計(jì)實(shí)驗(yàn)方案,定好實(shí)驗(yàn)環(huán)境參數(shù),場(chǎng)景,數(shù)量等信息,然后執(zhí)行實(shí)驗(yàn)獲取結(jié)果。

HTOL如何監(jiān)控?
其中實(shí)驗(yàn)板數(shù)量很多,一般是45ea(根據(jù)產(chǎn)品以及需求來的),實(shí)驗(yàn)時(shí)長(zhǎng)1000h,工作結(jié)溫125℃以上,那么問題就來了,你怎么保證在這1000h里面他的工作狀態(tài)的?換句話說就是當(dāng)它實(shí)驗(yàn)過程中出現(xiàn)問題了,你是怎么及時(shí)發(fā)現(xiàn)并解決的?
常規(guī)的做法就是過一段時(shí)間去人工看一下,看下實(shí)驗(yàn)板是否串口打印正常,工作電流是否異常,運(yùn)行參數(shù)是否異常等等,但是假如你前腳剛走后腳就異常了呢?是不是就漏看了?。。?br> 好,為了解決這個(gè)問題,可以假設(shè)一個(gè)IP攝像頭查看,嗯···看似可以實(shí)則···呵呵···,你想啊,你不可能一直盯著攝像頭看吧,而且你僅看到了表象,僅僅是看上去正常,真實(shí)的呢?這并不知道!
同時(shí)還有個(gè)問題是,假如異常發(fā)生在半夜,這個(gè)時(shí)候是不是我們不僅不知道,而且當(dāng)時(shí)的一些狀態(tài)信息也可能就丟失了?!特別是那些出現(xiàn)異常后過段時(shí)間又自恢復(fù)了的,這種情況抓不到,那做實(shí)驗(yàn)的意義何在那?

我是如何做的?
為了解決這個(gè)問題,我做了一套系統(tǒng),用來監(jiān)測(cè)實(shí)驗(yàn)狀態(tài)的,最終實(shí)現(xiàn)的效果是:

一旦試驗(yàn)期間出現(xiàn)任何異常,就立馬被識(shí)別到,并且存儲(chǔ)當(dāng)前的及前1h的所有信息,并把異常信息以郵件和微信的方式發(fā)送到實(shí)驗(yàn)人員處,實(shí)驗(yàn)人員接收到信息后可以選擇遠(yuǎn)程登錄查看每塊實(shí)驗(yàn)板的實(shí)時(shí)信息、或者直接去實(shí)驗(yàn)房利用我們自己開發(fā)的工具排查異常信息。

我的系統(tǒng)方案是這樣的:

系統(tǒng)方案

技術(shù)方案:

技術(shù)框架

web端是這樣的:

web部分界面

終端界面是這樣的:

終端界面

設(shè)備機(jī)箱CAD三維圖是這樣的:

側(cè)視圖.PNG

硬件設(shè)備成品是這樣的:

這個(gè)就是我整的機(jī)箱了~

通過這個(gè)過程我快速掌握了:
candence工具(模電、數(shù)電、嵌入式當(dāng)年學(xué)的還是杠杠的!以前用的是protel和altum designer);
python語言(極速使用,果然是文科生的程序語言,當(dāng)然順便JAVA也用了一點(diǎn)點(diǎn));
上位機(jī)界面(Tkinter,想學(xué)習(xí)如何一步一步擼界面所以棄pyQt了~);
flask,bootstrap,jquery(實(shí)踐證明,用的到的東西學(xué)得老快了!web 的前后臺(tái)以及websocket長(zhǎng)連接很好玩);
FreeCAD(哇,做了硬件肯定要做機(jī)箱的?。]辦法,下班時(shí)間學(xué)!一周時(shí)間(每天下班花1h)從零到淘寶交付圖紙,炒雞有成就感啊有木有!??!后來一次組裝成功??!我這腦電路神經(jīng)元是嚴(yán)謹(jǐn)?shù)牟灰灰陌。。?br> ······

當(dāng)然最重要的是,我用機(jī)器學(xué)習(xí)將問題里面的一個(gè)核心點(diǎn)得到了極好的解決(哈哈~主觀上的,畢竟沒有做客觀數(shù)據(jù)對(duì)比)。

0x03. 精彩的,現(xiàn)在才開始!

前面說到了,我花了一些時(shí)間解決了一些技術(shù)問題,但是其中的一個(gè)核心點(diǎn)“異常檢測(cè)”我并沒有過多描述,這可是整個(gè)系統(tǒng)的基石?。‘惓WR(shí)別不準(zhǔn)的話,你功能再多也沒暖用哇!

好了我們開始解決問題了!

首先問題是什么?

  • 異常識(shí)別!
    異常檢測(cè)(Anomaly Detection)是機(jī)器學(xué)習(xí)里面的一個(gè)常見應(yīng)用,機(jī)器通過訓(xùn)練,將知道什么樣的樣本是正常樣本,從而具備識(shí)別異常樣本的能力。

常規(guī)是怎么識(shí)別的?

  • 原始時(shí)代是人工查看系統(tǒng)參數(shù)是否異常,串口是否打印,看log是否異常,看工作電流狀態(tài)是否正常······想一想這些需要不斷過來輪訓(xùn)查看,同時(shí)手上還有大把的工作要做,就········哇的哭出聲來!
  • 后來做了這套系統(tǒng)來監(jiān)控異常,那這又是怎么識(shí)別的呢?其實(shí)就僅僅是每次實(shí)驗(yàn)前獲取正常的平均電流,然后估計(jì)一個(gè)閥值就這么來判斷電流參數(shù)了,log部分就是實(shí)時(shí)分析日志是否有關(guān)鍵字出現(xiàn)!很粗糙是吧???很容易誤判對(duì)吧???每次都要配置很繁瑣對(duì)吧???

我是怎么想的及做的?

  • 主觀感受就是要抓住問題的本質(zhì),誤判少準(zhǔn)確度高,最好還能自適應(yīng),對(duì)吧!
  • 然后就開始腦洞風(fēng)暴,查資料,看論文唄!

0x04. 方案一之多元高斯分布

我們正常的工作電流是這樣的:

擼的一個(gè)上位機(jī)實(shí)時(shí)顯示界面

我們觀察一下就發(fā)現(xiàn)工作電流是在一個(gè)平均值附近波動(dòng)的,因此很正常的想到了自然界最自然的高斯分布了啊!

高斯分布也稱為正態(tài)分布
高斯分布有兩個(gè)參數(shù),一個(gè)是平均值 ,另外一個(gè)是方差σ^2(σ 稱為標(biāo)準(zhǔn)差),給定一個(gè)數(shù)值 X 作為橫軸,它出現(xiàn)在不同位置的概率作為 Y 軸,在二維坐標(biāo)上畫出的圖形是一個(gè)“鐘形”的圖形。

高斯分布圖(來源百科)

其概率密度函數(shù)為

則這個(gè)隨機(jī)變量就稱為正態(tài)隨機(jī)變量,正態(tài)隨機(jī)變量服從的分布就稱為正態(tài)分布,記作

我們只考慮電流的話就是基于正態(tài)分布的一元離群點(diǎn)檢測(cè)方法(這里的一元指的是參數(shù)之間是獨(dú)立的,比如我這里有很多的參數(shù),但是參數(shù)之間是獨(dú)立的,此時(shí)的特征向量也是一元的,一旦特診之間是相關(guān)的,也就是協(xié)相關(guān)矩陣出來了的話,那么就是多元的了,見下面的公式。)了,我們可以連續(xù)采集有限個(gè)數(shù)據(jù),然后根據(jù)這有限個(gè)樣本進(jìn)行參數(shù)估計(jì),這里對(duì)參數(shù) σ 和參數(shù) μ 的估計(jì)就是二者的極大似然估計(jì)。

這里隨參數(shù)由于在正負(fù)3個(gè)sigma內(nèi),包含了99.7Z%的數(shù)據(jù),但是這里需要說明的是,由于采用的是正樣本進(jìn)行的統(tǒng)計(jì),理論上應(yīng)該是100%的數(shù)據(jù)都是正常的,因此我們?cè)诳╱范圍的時(shí)候最好是卡寬一點(diǎn),比如正負(fù)6個(gè)sigma,因此我們將初步以這個(gè)為評(píng)判標(biāo)準(zhǔn)之一。

同時(shí)還有電壓啊、功耗啊、芯片die溫啊、log日志是否存在啊、日志是否出現(xiàn)某關(guān)鍵字啊這些都是特診啊,這些特征數(shù)值化處理之后,也可以按照這種方式進(jìn)行處理了!

具體測(cè)一些信息請(qǐng)參考我之前的文章《機(jī)器學(xué)習(xí)實(shí)踐項(xiàng)目之高斯分布》

這種方式是從出現(xiàn)概率的角度著手的,基本思想就是,那里出現(xiàn)的"人"多,我就認(rèn)為你正常點(diǎn)就在這個(gè)區(qū)域;很明顯存在的問題是,假如我數(shù)據(jù)量不夠的話,那么極有可能將正常樣本誤判。如下圖所示:可以發(fā)現(xiàn)有線性的規(guī)律,因此重點(diǎn)應(yīng)該是離線性區(qū)間遠(yuǎn)的為異常點(diǎn),而不是根據(jù)出現(xiàn)的概率來判斷??!當(dāng)然我也不是說根據(jù)概率來判斷就一定不對(duì),只是說按照概率來定的話模型比較粗糙,還沒有真正抓住該業(yè)務(wù)場(chǎng)景的本質(zhì),因此準(zhǔn)確率偏低也是意料之內(nèi)。

高斯分布弊端

0x05. 方案二之主成份分析法(PCA)

主成份分析法,也就是抓住事物的主要矛盾,其基本思想跟電路里面濾波是一樣的,我取信號(hào)的中低頻部分,也就是占主要能量的部分,高頻忽略掉,這樣也不影響信號(hào)大體的樣子;

先補(bǔ)充一點(diǎn)理論知識(shí)跟直觀感受:

學(xué)習(xí)資料1

特征值是速度大小,特征向量就是速度方向,其他場(chǎng)景依此類推,比如3brown1blue里面就說了在三維,特征值表示體積大小,特征向量表示軸向量方向,二維則面積跟旋轉(zhuǎn)方向。

首先我們得知道奇異值分解跟特征值分解的區(qū)別:
1、奇異值分解是對(duì)線性變化里面旋轉(zhuǎn)、縮放和投影三種效應(yīng)的一個(gè)析構(gòu);
2、特征值分解是對(duì)旋轉(zhuǎn)縮放兩種效應(yīng)的歸并。

奇異值的物理意義(圖片來源

物理意義是需要結(jié)合具體場(chǎng)景來說的,比如在圖像領(lǐng)域,圖片是一個(gè)像素矩陣吧!是矩陣的話就可以特征值分解的吧!分解之后就是這樣子的,σ是奇異值,假設(shè)已按從大到小排列:

這只保留(1)中等式右邊第一項(xiàng),然后作圖:

結(jié)果就是完全看不清是啥(是不是就是傅立葉分解里面的低頻部分!完全是一毛一樣呀?。?!)我們?cè)囍嘣黾訋醉?xiàng)進(jìn)來(取20項(xiàng)的時(shí)候,基本可見了):

矩陣A表示一個(gè)450*333的矩陣,需要保存450* 333=149850個(gè)元素的值。等式右邊u和v分別是450*1和333*1的向量,每一項(xiàng)有1+450+333=784個(gè)元素。如果我們要存儲(chǔ)很多高清的圖片,而又受限于存儲(chǔ)空間的限制,在盡可能保證圖像可被識(shí)別的精度的前提下,我們可以保留奇異值較大的若干項(xiàng),舍去奇異值較小的項(xiàng)即可。例如在上面的例子中,如果我們只保留奇異值分解的前50項(xiàng),則需要存儲(chǔ)的元素為784*50=39200,和存儲(chǔ)原始矩陣A相比,存儲(chǔ)量?jī)H為后者的26%。

下面可以回答題主的問題:奇異值往往對(duì)應(yīng)著矩陣中隱含的重要信息,且重要性和奇異值大小正相關(guān)。每個(gè)矩陣A都可以表示為一系列秩為1的“小矩陣”之和,而奇異值則衡量了這些“小矩陣”對(duì)于A的權(quán)重。

好了到這里我們知道了,奇異值其實(shí)就類似于傅立葉里面的諧波系數(shù),代表的是信號(hào)的強(qiáng)度;那么我們想想信號(hào)處理里面是如何濾波的?先把一個(gè)原始信號(hào)轉(zhuǎn)成傅立葉形式,然后把需要去掉的頻率系數(shù)去掉,然后逆變換回來時(shí)域波形,我們這里圖像的操作是不是也一樣的?。?!先奇異值分解,然后按大到小排列奇異值,然后把小的去掉,然后再返回來重構(gòu)圖片,完全一樣嘛!

我們看個(gè)實(shí)例:

這是一張含有噪聲的圖片,除了黑色那圈其余的都是白色的,也就是說那些灰色的方塊就是噪聲,通過奇異值分解,我們發(fā)現(xiàn)矩陣的奇異值從大到小分別為:14.15,4.67,3.00,0.21,……,0.05。除了前3個(gè)奇異值較大以外,其余奇異值相比之下都很小。強(qiáng)行令這些小奇異值為0,然后只用前3個(gè)奇異值構(gòu)造新的矩陣,得到:

可以明顯看出噪聲減少了(白格子上灰白相間的圖案減少了)。

小結(jié):好了我們知道在圖像領(lǐng)域是如何通過奇異值來進(jìn)行去噪了,那么我們反過來想一下,假如我知道了主成份,然后新的測(cè)試樣本來的時(shí)候發(fā)現(xiàn)其主成份很少,而次要成分的奇異值很大,那么就可以判斷他是異常值了,從這點(diǎn)看是不是跟上面的高斯分布是有點(diǎn)像呢?高斯分布單單就出現(xiàn)的概率做估計(jì),主成份分析是以主成份出現(xiàn)的概率做估計(jì)的,比高斯多了個(gè)主成份,也就是更進(jìn)一步地抓住了問題的本質(zhì)。


參考出處:


(1)PCA描述

對(duì)高維數(shù)據(jù)集合的簡(jiǎn)化有各種各樣的原因,例如:

(1)使得數(shù)據(jù)集合更容易使用;
(2)降低很多算法的計(jì)算開銷;
(3)去除噪聲;
(4)更加容易的描述結(jié)果。

在主成分分析(PCA)這種降維方法中,數(shù)據(jù)從原來的坐標(biāo)系轉(zhuǎn)換到新的坐標(biāo)系,新坐標(biāo)系的選擇是由數(shù)據(jù)集本身所決定的。第一個(gè)新坐標(biāo)軸的方向選擇的是原始數(shù)據(jù)集中方差最大的方向,第二個(gè)新坐標(biāo)軸的選擇是和第一個(gè)坐標(biāo)軸正交并且具有最大方差的方向。該過程一直重復(fù),重復(fù)的次數(shù)就是原始數(shù)據(jù)中特征的數(shù)目。如此操作下去,將會(huì)發(fā)現(xiàn),大部分方差都包含在最前面的幾個(gè)新坐標(biāo)軸之中。因此,我們可以忽略余下的坐標(biāo)軸,也就是對(duì)數(shù)據(jù)進(jìn)行了降維的處理。

為了提取到第一個(gè)主成分(數(shù)據(jù)差異性最大)的方向,進(jìn)而提取到第二個(gè)主成分(數(shù)據(jù)差異性次大)的方向,并且該方向需要和第一個(gè)主成分方向正交,那么我們就需要對(duì)數(shù)據(jù)集的協(xié)方差矩陣進(jìn)行特征值的分析,從而獲得這些主成分的方向。一旦我們計(jì)算出了協(xié)方差矩陣的特征向量,我們就可以保留最大的 N 個(gè)值。正是這 N 個(gè)值反映了 N 個(gè)最重要特征的真實(shí)信息,可以把原始數(shù)據(jù)集合映射到 N 維的低維空間。

提取 N 個(gè)主成分的偽代碼如下:

1、去除平均值
2、計(jì)算協(xié)方差矩陣
3、計(jì)算協(xié)方差矩陣的特征值和特征向量
4、將特征值從大到小排序保留最大的N個(gè)特征值以及它們的特征向量
5、將數(shù)據(jù)映射到上述N個(gè)特征向量構(gòu)造的新空間中

通過 Python 的 numpy 庫和 matplotlib 庫可以計(jì)算出某個(gè)二維數(shù)據(jù)集合的第一主成分如下:原始數(shù)據(jù)集使用藍(lán)色的三角形表示,第一主成分使用黃色的圓點(diǎn)表示,是不是首先就就抓住了趨勢(shì)!也即基線?。?!

PCA

(二)基于矩陣分解的異常點(diǎn)檢測(cè)方法

基于矩陣分解的異常點(diǎn)檢測(cè)方法的關(guān)鍵思想是利用主成分分析去尋找那些違背了數(shù)據(jù)之間相關(guān)性的異常點(diǎn)。

為了發(fā)現(xiàn)這些異常點(diǎn),基于主成分分析(PCA)的算法會(huì)把原始數(shù)據(jù)從原始的空間投影到主成分空間,然后再把投影拉回到原始的空間(就是矩陣的一些變換啦!)

如果只使用第一主成分來進(jìn)行投影和重構(gòu),對(duì)于大多數(shù)的數(shù)據(jù)而言,重構(gòu)之后的誤差是小的(是不是跟高斯有點(diǎn)類似);但是對(duì)于異常點(diǎn)而言,重構(gòu)之后的誤差依然相對(duì)大。這是因?yàn)?strong>第一主成分反映了正常值的方差,最后一個(gè)主成分反映了異常點(diǎn)的方差。

假設(shè) dataMat 是一個(gè) p 維的數(shù)據(jù)集合,有 N 個(gè)樣本,它的協(xié)方差矩陣是 X。那么協(xié)方差矩陣就通過奇異值分解寫成:

其中 P 是一個(gè) (p,p) 維的正交矩陣,它的每一列都是 X 的特征向量。D 是一個(gè) (p,p) 維的對(duì)角矩陣,包含了特征值λ1···λp。

從圖像上看,一個(gè)特征向量可以看成 2 維平面上面的一條線,或者高維空間里面的一個(gè)超平面。特征向量所對(duì)應(yīng)的特征值反映了這批數(shù)據(jù)在這個(gè)方向上的拉伸程度。通常情況下,可以把對(duì)角矩陣 D 中的特征值進(jìn)行從大到小的排序,矩陣 P 的每一列也進(jìn)行相應(yīng)的調(diào)整,保證 P 的第 i 列對(duì)應(yīng)的是 D 的第 i 個(gè)對(duì)角值。

這個(gè)數(shù)據(jù)集 dataMat 在主成分空間的投影可以寫成

當(dāng)然我們也可以只在部分維度上進(jìn)行映射:

其中Pj是矩陣P的前j列,也就是取前j列的特征向量,也即Pj是一個(gè)(p,j)維的矩陣,Yj是一個(gè)(N,j)維的矩陣。當(dāng)我們逆變換的時(shí)候,也即從主成份空間映射到原始空間,我們按如下公式做得到一個(gè)重構(gòu)后的數(shù)據(jù)集合:

其中Rj是使用 top-j 的主成分進(jìn)行重構(gòu)之后形成的數(shù)據(jù)集,是一個(gè) (N,p) 維的矩陣。

我們的打分函數(shù)是這樣的:

注意到|dataMat_{i}-R_{i}^{j}|表示的是 top-j 的主成分在所有主成分中所占的比例,并且特征值是按照從大到小的順序排列的。因此,ev(j) 是遞增的序列,這就表示 j 越高,越多的方差就會(huì)被考慮在 ev(j) 中,因?yàn)槭菑?1 到 j 的求和。在這個(gè)定義下,偏差最大的第一個(gè)主成分獲得最小的權(quán)重,偏差最小的最后一個(gè)主成分獲得了最大的權(quán)重 1。根據(jù) PCA 的性質(zhì),異常點(diǎn)在最后一個(gè)主成分上有著較大的偏差,因此可以獲得更高的分?jǐn)?shù)。
整個(gè)算法的結(jié)構(gòu)如圖所示:

PCA

效果比較

基于高斯分布 基于矩陣分解

可以明顯看到,矩陣分解關(guān)注的是偏離我主成分多的就是異常點(diǎn),而高斯僅僅是你出現(xiàn)的地方不"人口密集區(qū)"就異常。明顯主成份更抓住了問題的本質(zhì)。

0x06. 方案三之非線性模型(自編碼器)

自編碼器網(wǎng)上資料很多,總結(jié)大概意思如下,我有一堆的數(shù)據(jù),這其中是很多數(shù)據(jù)都是冗余的(有點(diǎn)類似于某組基構(gòu)成的矩陣空間中,存在這非常多的空間向量,這些向量是由基線性組合而成,因此存在冗余,我們知道這一組基是這個(gè)空間的最精簡(jiǎn)最完善的表達(dá),因此從這一堆向量中找出基這一過程就類似于自編碼器干的活啦!),因此從冗余的數(shù)據(jù)中提取出本質(zhì)是我們的目的,好像有點(diǎn)繞,那我們舉個(gè)栗子吧!

我們知道圖像其實(shí)是由一些邊緣特征構(gòu)成的吧,絕大數(shù)聲音也是由一些基本結(jié)構(gòu)組成的,因此在表現(xiàn)形式如此豐富的聲音中僅有20種基本的結(jié)構(gòu),是不是說特征對(duì)聲音這個(gè)具體的實(shí)物來說是具有稀疏性的(自然界大多數(shù)復(fù)雜實(shí)物均是如此),擁有好奇心、抓住事物的本質(zhì)是人類的天性,因此從稀疏編碼到自編碼器的過渡就很自然了!

早年在關(guān)于稀疏編碼(Sparse Coding)的研究中,通過對(duì)大量黑白風(fēng)景照片提取16*16的圖像碎片分析,研究發(fā)現(xiàn)幾乎所有的圖像碎片都可以由64種正交的邊組合得到,并且組合出一張圖像碎片需要的邊的數(shù)量是很少的,也就是稀疏的。聲音也有同樣的情況,大量未標(biāo)注的音頻中可以得到20種基本結(jié)構(gòu),絕大多數(shù)聲音都可以由這些基本的結(jié)構(gòu)線性組合得到。這就是特征的稀疏表達(dá),通過少量的基本特征組合、拼裝得到更高層抽象的特征。

方法是什么呢?方法如下所示:


把數(shù)據(jù)輸入編碼器,然后再解碼得到輸出,把這個(gè)輸出跟輸入做誤差得到誤差函數(shù)進(jìn)行學(xué)習(xí),那么最終就會(huì)使得輸出跟輸入極像,這樣的話我們得到的編碼器就是這個(gè)數(shù)據(jù)集的完美特征描述!

實(shí)際中使用的是神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)的:一個(gè)輸入層、一個(gè)隱藏層和一個(gè)輸出層。其中輸出層和輸入層具有相同的維數(shù)。

在這里我們可以粗略地理解為通過自編碼器得到了類似PCA過程的一個(gè)子空間。當(dāng)然還存在很多其他的一些自編碼器變體用來解決各種不同特定問題的,暫且不表,另開篇描述。由于跟PCA類似因此我這個(gè)應(yīng)用復(fù)雜度還沒到需要使用神經(jīng)網(wǎng)絡(luò)模型來處理,因此只談?wù)撍悸贰?/p>

0x07. 方案四之Holt-Winters(指數(shù)滑動(dòng)平均建模)

其實(shí)就我這個(gè)問題的能級(jí)來判斷,通過常規(guī)的機(jī)器學(xué)習(xí)方法就可以很好的解決問題,前面的三種方案為我對(duì)該問題的一些拓展性思考。

前言

芯片可靠性實(shí)驗(yàn)的企業(yè)標(biāo)準(zhǔn)越來越嚴(yán)格,對(duì)異常檢測(cè)系統(tǒng)的穩(wěn)定性提出了較高的要求,每一次實(shí)驗(yàn)場(chǎng)景的異常波動(dòng)(實(shí)際過程中是每晚9點(diǎn)半的時(shí)候會(huì)有一個(gè)關(guān)中央空調(diào)的操作,因此會(huì)有一個(gè)結(jié)溫以及電壓電流的波動(dòng),問:不是在高溫箱里操作的嗎?答:NO!有些由于試驗(yàn)箱資源不夠采用的是室溫下的PTC方案因此會(huì)受環(huán)境溫度影響)我們都要進(jìn)行及時(shí)應(yīng)對(duì)以減少誤報(bào)的頻率。

根據(jù)對(duì)業(yè)務(wù)的深入了解,可知對(duì)實(shí)驗(yàn)狀態(tài)這一目標(biāo)函數(shù)來說,存在的主要數(shù)據(jù)特征有串口數(shù)據(jù)是否打印、串口關(guān)鍵信息是否缺失、芯片結(jié)溫、工作電流、工作電壓、時(shí)間百分比等

  • 串口有打印數(shù)據(jù)說明芯片大體工作正常,串口接口的功能是正常的,通信鏈路正常,嗯!很大概率實(shí)驗(yàn)狀態(tài)是正常的。
  • 串口有打印數(shù)據(jù)但是仍有可能內(nèi)部某些模塊出問題了啊(比如GPU模塊在高溫長(zhǎng)時(shí)間運(yùn)行下會(huì)報(bào)異常)!因此這里考慮的是芯片內(nèi)部模塊狀態(tài),通過檢測(cè)串口關(guān)鍵字的方式對(duì)芯片進(jìn)行全方位的檢測(cè);
  • 芯片結(jié)溫有兩個(gè)要求:第一是滿足可靠性標(biāo)準(zhǔn)的125攝氏度以上要求,第二是溫度不能飄動(dòng)很大,因此基于此這里設(shè)置一個(gè)特征;
  • 工作電流:這里說的是實(shí)驗(yàn)板整體的工作電流,正常穩(wěn)定情況下電流有一定的工作模式,表現(xiàn)出來就是電流波形具有周期性,通過判斷電流是否正常來判斷實(shí)驗(yàn)板工作是否正常(畢竟實(shí)驗(yàn)板都異常了,肯定實(shí)驗(yàn)參數(shù)就不對(duì)了,因此必須及時(shí)檢查出來),這與我之前做的《通過電流波形實(shí)時(shí)預(yù)測(cè)實(shí)驗(yàn)板元器件的壽命》項(xiàng)目具有一定的相似性,這里就不詳述了,有時(shí)間再開篇,大概就是從設(shè)計(jì)硬件電路的時(shí)候就要考慮好檢測(cè)電路、寫驅(qū)動(dòng)代碼的時(shí)候要設(shè)計(jì)好debug接口,乃至上位機(jī)做好debug邏輯及數(shù)據(jù)的分析,最終來進(jìn)行壽命預(yù)測(cè)。
  • 工作電壓:這里是用來監(jiān)測(cè)短路情況或者供電電源失效的;
  • 功耗分析:是基于電壓和電流的組合特,這個(gè)組合特征為冗余特征,暫時(shí)不知是否有用,留經(jīng)實(shí)測(cè)驗(yàn)證。
  • 時(shí)間參數(shù):之前說過在分析數(shù)據(jù)的過程中發(fā)現(xiàn)在每天晚上九點(diǎn)半以及每天早上八點(diǎn)半左右都會(huì)出現(xiàn)芯片結(jié)溫的一個(gè)溫度值的波動(dòng),究其原因是因?yàn)檫@個(gè)時(shí)候是中央空調(diào)開關(guān)機(jī)的時(shí)間點(diǎn),因此建模時(shí)需要考慮進(jìn)去。

好了,這里解釋下我為什么不用PCA跟自編碼器來做,因?yàn)檫@些特征就是人工選出來的一組特征基?。CA及自編碼器是用來做稀疏的,也就是說你本來有很多維度的數(shù)據(jù),但是你不知道哪些是重要的,因此就用這兩算法來提取特征,這里我的特征已然明顯,因此我這里針對(duì)每個(gè)參數(shù)進(jìn)行滑動(dòng)平均預(yù)測(cè),最終組合進(jìn)行整體預(yù)測(cè)。

這里我針對(duì)電流這個(gè)單一變量進(jìn)行異常預(yù)測(cè)如下:

基本的操作就是先定義一個(gè)閥值,只要超過該閥值就算異常,否則就算正常,而閥值的計(jì)算是由高斯模型擬合出來的,這個(gè)放到實(shí)際場(chǎng)景中應(yīng)該說只能算base line,這只是一條基本準(zhǔn)則,是粗略的而不是精準(zhǔn)的,因此,加上一階擬合(從“位移”到了"速度")考慮前后時(shí)刻的差值,差值過大的話就可以提前預(yù)測(cè)芯片可能會(huì)出問題,該方案實(shí)測(cè)過程中漏報(bào)率跟誤報(bào)率都挺大。

因此需要在同時(shí)考慮到數(shù)據(jù)周期性跟實(shí)時(shí)性的情況下,設(shè)計(jì)一種模型來提高預(yù)測(cè)的準(zhǔn)確率。

異常的定義:
所謂異常就是跟大眾不一樣,特殊的就叫異常。之前的高斯模型是按照出現(xiàn)的概率來定義異常,PCA、自編碼器是找到數(shù)據(jù)的某種趨勢(shì),然后出現(xiàn)在這個(gè)趨勢(shì)上的概率來定義異常,都挺好!能解決一定的問題,但是沒有考慮時(shí)間因素的影響;在實(shí)際過程中,我們的數(shù)據(jù)是實(shí)時(shí)的,數(shù)據(jù)是跟時(shí)間組合出現(xiàn)的,構(gòu)成了時(shí)間序列數(shù)據(jù)!比如空調(diào)啟斷的空檔

分析:
基本思路就是使用一批正常的歷史數(shù)據(jù)來預(yù)測(cè)出當(dāng)前應(yīng)該有的數(shù)據(jù),然后把實(shí)際測(cè)得的數(shù)據(jù)來跟當(dāng)前預(yù)測(cè)數(shù)據(jù)進(jìn)行比較,然后設(shè)計(jì)一個(gè)靈活的閥值策略來保證系統(tǒng)的魯棒性,怎么樣,是不是很自然的思路!很直接啊有木有!
是不是類似于男女生交往的邏輯:“我覺得你應(yīng)該是怎樣的,但是你卻沒有這樣,所以我們分手吧!”;
之前的做法就是:

  • “??!你沒房?我們分手吧!”
    • (你不覺得這樣子太草率了嗎?可能只憑當(dāng)前就來斷定一個(gè)人的未來?。。?/li>
  • “那好,你畢業(yè)都一年了還是沒買房,是不是你能力不行啊,不是潛力股,我看不到希望!我們分手吧!”
    • (我···)

現(xiàn)在該怎樣哄女票呢?

  • (妹砸!你看哈,目前我剛畢業(yè),工作很認(rèn)真很拼,領(lǐng)導(dǎo)很器重我,我不是一個(gè)好吃懶做的人,也還有一些人生追求,我也一直努力工作想給你一個(gè)溫暖舒適的家!你看要不這樣你按照我們的實(shí)際情況進(jìn)行設(shè)想,我明年什么時(shí)候該要有些什么,到時(shí)后我要是不滿足要求,你就勇敢做決定,我也不敢強(qiáng)求,當(dāng)然了具體這個(gè)要求怎么滿足咱們可以好好討論討論,畢竟萬事可商量嘛!目標(biāo)是死的人是活的嘛?。?/li>

我們這里使用的是過去的電流數(shù)據(jù)來預(yù)測(cè)當(dāng)前的數(shù)據(jù),使用的數(shù)據(jù)大小,以及使用的預(yù)測(cè)算法都會(huì)影響最終的預(yù)測(cè)效果。

我們的數(shù)據(jù)具有一定的周期性,相鄰時(shí)刻也具有很強(qiáng)的相關(guān)性,因此我們的目標(biāo)是使用該數(shù)據(jù)預(yù)測(cè)出當(dāng)前的訂單量。

0x08. 我的方案之三個(gè)臭皮匠

架構(gòu)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容