劉 峰,楊 帆,于碧輝
(中國科學院大學,北京 100049)
(中國科學院 沈陽計算技術研究所,沈陽 110168)
粉末衍射儀是物質研究的常用儀器,通過試樣對射線在不同角度的衍射強度分析,達到識別物質類型等目的.粉末衍射儀多使用單點探測器,執行一次Theta-Theta掃描用時常達到幾十到數百分鐘[1].而使用一維陣列探測器的粉末衍射儀可以將作業時間大大減少,根據探測器的探測單元數量不同可將時間縮短幾十甚至幾百倍.基于一維陣列探測器的X射線粉末衍射儀的開發是我所承擔的“X射線單晶衍射儀操作與控制系統”國家重大科學儀器設備開發專項的延伸任務.該設備結構復雜、探測單元數量多,使用的探測器型號為MYTHEN2 R 1D,含有640個探測單元,常有數據偏差問題需要處理.以往的方法雖然也能判斷問題的原因,但效率不高且對專家依賴.這不僅造成了高昂的維護成本,還降低了儀器可用性.因此在系統出現數據質量問題時能夠快速的判斷偏差的原因可以提高效率及設備可用性.該系統的功能是針對設備數據精度偏差原因進行自動化的分析,有其實際應用價值.同時該系統的模型和流程有較強通用性,在單晶衍射儀等其他衍射儀器的輔助校正中仍可通用,在應用不同的特征提取方案后可在其他衍射儀器的輔助校正中較好應用.本文首先對粉末衍射儀可能出現導致數據質量的問題進行分析,然后介紹了系統的核心數據處理流程和模型訓練方法.
通過大量理論研究及工程實踐經驗總結,使用一維陣列探測器的粉末衍射儀主要存在以下幾方面的數據偏差[2–4].
出現總體或部分衍射值明顯區別于正常的情況.① 死點和熱點,即某探測單元衍射值永遠低或者永遠高,已通過陣列探測器的平場校正、壞點校正技術進行預處理;② 射線源射線強度強或者弱,造成衍射值系統性的偏高或偏低;③ 射線源射線強度不穩定供電電壓不穩定等,造成衍射數據不穩定的偏差.
出現波峰位置或者形狀與正常情況偏差較大的現象.① 測角儀初始位置偏移,造成衍射數據出現類似左平移或者右平移的現象;② 探測模塊移動裝置移動角度不準,造成數據在移動后模塊交界處出現明顯位移偏差,此文稱之為模塊間偏差;③ 模塊內探測單元的位置出現偏差.
由于樣品不在圓心位置或者探測器運動軌跡非正圓,造成數據沿角度軸伸展或收縮的情況.
X射線粉末衍射儀是十分精密的科學儀器,偏差數據出現概率小,如果給每份數據進行全部的系統操作是不經濟的,偏差判斷部分主要是篩選可能存在偏差的數據,大大降低系統工作量.偏差判斷流程如圖1所示.另外本文實驗數據為設備出廠數據,偏差率大于應用中數據.

圖1 偏差判斷流程
本文通過分析試樣衍射數據,識別衍射儀是否存在偏差及存在何種偏差.本文選用X射線粉末衍射儀樣機的實驗數據作為偏差識別的基礎數據集,選用了試樣硅粉(Silicon powder,SRM 640c)的衍射數據,且已進行偏差的標注,共7829組實驗數據.因僅用于訓練上文分析的問題,其他問題暫不討論,所以已經去掉有其他偏差的數據.每個數據文件為一個硅粉樣品進行一次Theta-Theta掃描的衍射數據,實驗掃描角度135°,步寬為(探測單元間的角度差)0.02°.正常數據曲線擬合后如圖2所示.
基于X射線與晶體相遇的衍射現象及衍射原理并結合衍射數據我們可知,衍射數據特征主要體現在其衍射峰上.所以特征提取工作也著重針對波峰進行,但在提取波峰特征之前先需要時使用尋峰算法確定每個峰的位置.
此處的尋峰主要是對衍射峰進行定位,為防止噪聲影響,強度限制應該是動態決定于總體衍射強度(用快速查找的變形找中位數).簡單尋峰是一種在相鄰的衍射點中尋找極大點的尋峰方式,計算簡單,而且得出的位置也最為準確,適合衍射峰定位.窗口大小可根據不同試樣調整,以硅粉為例可以定為200,找出大于強度限制的連續區域(連續超過n個點)即可對衍射峰定位.無此區域則移動窗口起始位置到原窗口結束處,此區域以窗口結束位置結尾則將窗口起始位置移動到這
段區域開始處,否則確定衍射峰開始位置Ss、峰值位置Sp、峰值p及結束位置Se.尋峰后將衍射峰數量與X射線衍射標準數據庫數據對比,如果不同可以直接判斷射線源存在明顯強度波動問題需要重新調試.每一組得到44個數據構成44維的特征向量.

圖2 硅粉試樣標準衍射值
BP神經網絡實質上實現了一個從輸入到輸出的映射功能,而數學理論已證明它具有實現任何復雜非線性映射的功能.這使得它特別適合于求解內部機制復雜的問題.該功能輸入特征為峰位、峰強,維度達到44,44維特征綜合影響結果,內部機制復雜,適合使用神經網絡模型;BP神經網絡能通過學習帶正確答案的實例集自動提取“合理的”求解規則,具有自學習能力,正好適合此處輸出0到1的連續值用于判斷此時狀態存在偏差的可能性.
此BP神經網絡判斷模型是一個44輸入、單輸出的神經網絡.輸入變量為上文的44維特征向量記為[x1,x2,…,x44],因為強度值及位置值度量不同、范圍大,所以預處理中將所有特征值都進行歸一化操作[5];輸出變量為y,y為一個0到1之間的小數,代表本組數據為偏差數據的可能性,越接近1則此組數據屬于有偏差數據的可能性越大,否則為正常數據的可能性越大,BP神經網絡輸出后可設置不同閾值用來區分是否為偏差數據,為保證篩選偏差數據的召回率,此閾值可以根據需求調整;期望輸出為t(無偏差數據為0,有偏差數據為1),具有2層隱含層,包含20個隱層單元[6,7].
對于第i個樣本,該模型各神經元誤差定義為:

公式(2)為激勵函數采用sigmod函數:

其中,w為梯度,b偏置值,出于保守起見它們的修正都取0.01.公式(3)和公式(4)分別是隱層1第j個神經元和隱層2第k個神經元的輸入輸出計算公式.

該神經網絡模型如圖3所示.

圖3 偏差判斷神經網絡模型
模型訓練中隨機抽取數據中的4000組數據,剩余3829條數據用于模型效果測試.
在使用神經網絡模型判斷數據存在偏差后還要進一步識別偏差類型和程度,可以結合儀器特點及統計學知識確定一些可量化指標,來對偏差進一步識別.偏差識別流程如圖4所示.

圖4 偏差識別流程
首先獲取標準衍射數據,根據多個此試樣正常衍射數據通過衍射強度平均得到,以此為計算標準.角度偏差會造成峰位偏差,偏心偏差可造成波形沿橫軸的伸縮,例如測角儀初始化位置偏移可能造成衍射峰位置出現系統性偏差如圖5所示.
所以選取峰位差這一變量,計算每個峰的起始位置、峰值位置和結束位置峰位差,如公式(5):

隨機抽取結果驗證,發現正常數據ΔS值都很小,而異常數據ΔS值總有一些明顯較大的情況,所以ΔS值的選取是有代表性的.根據前面的偏差介紹,角度偏差及偏心偏差造成的峰位差變化情況適合區分問題原因.將相對模塊起始位置及ΔS作為點對用曲線擬合的方式來研究數值變化情況.根據最佳擬合曲線的類型和參數可對偏差原因進行有效判斷.先針對模塊內進行操作,用二次函數擬合.常數項A0,一次項參數A1,二次項參數A2,選取這樣的函數擬合主要在于A0體現初始化位置問題,A1體現位置差的線性變化多為探測單元間隔不合理導致需要更換模塊,A2可以體現模塊傾斜等造成的偏心偏差(因單模快傾斜區域小,不會造成伸展及收縮規律兩次變化的情況).
模塊間的位置偏差會造成模塊間位置差出現跳躍性變化,A0為每個模塊起始偏差,并根據以上模塊內擬合函數計算模塊結束位置偏差Ae,見公式(4):

計算每個模塊間偏差,因為此處為單模塊移動所以Δai的綜合統計值可以很好的體現這一問題,計算平均值E(|Δai|)和方差D(Δai),這樣即體現其絕對誤差由可以體現其不穩定性.

圖5 硅粉試樣位置偏差衍射值
偏心偏差體現在位置特征的放縮,需要對所有位置與位置差點對進行綜合分析.考慮到模塊內部的局部位置偏差會干擾大的放縮趨勢,此分析僅在無模塊內部偏差問題時才進行.對這些點對位置值按照模塊間偏差Δai進行修正,去除模塊移動裝置問題影響,再用三次函數擬合,各次項參數分別為B0、B1、B2、B3.注意這里使用三次函數,因為擬合的范圍為135°可能出現先收縮再放大再收縮或者相反的情況.B2和B3可體現偏心偏差,B0和B1則和A0、A1類似.以參數A0、A1、A2、E(|Δai|)、D(Δai)、B0、B1、B2、B3訓練分類模型來達到四個二分類的目的,分別是是否有模塊內偏差、是否有初始化偏差、是否有模塊間偏差、是否有偏心偏差.
強度差則可以體現強度偏差,例如當射線源出現波動時數據可能如圖6所示.
為便于后續操作使用相對強度差公式為:

強度差計算的前提是對應角度對應,所以需要先做好位置的匹配.所以判斷各種角度及偏心偏差后需要對經過Δai修正后數據進行一些放縮處理.為保證關鍵位置的準確性使用ΔS特征序列對峰位進行糾正,以這些特特征位置為基準兩兩之間中間采用補點和去點的方式來進行放縮.補充或去除的點按照平均分布的方式選擇,例如兩個特征點中間有100點,需要去除其中5個,采用隔19點去除一點數據的方式,補充點的值簡單取其相鄰兩點值平均數即可.沒有選取擬合函數進行放縮是因為此處使用的是以最小二乘法為基礎的多項式擬合,是一種“平均通過式”的擬合,可以較好體現總體規律但局部準確性不一定高.
進行位置對齊后計算相對強度差.將相對強度差的絕對值與閾值δ比較,區分是否在可允許的強度誤差范圍內,δ為一個較小的小數比如0.05,計算超過此范圍的點比例r作為一個參數.因強度問題主要由射線源引起,射線源強度可能有偏高、偏低、波動或其他不穩的情況,以上相對強度偏差的變化情況正好可以體現射線源強度變化情況.使用公式(8)來計算.

進行擬合,T為位置值.C0表現射線源強度偏高或者偏低,C4表現射線源線性變化趨勢,C1、C2、C3體現射線源強度可能存在的周期變化問題(電源電壓變化易體現此種變化規律).以參數r、C0、C1、C2、C3、C4為參數訓練分類模型,完成三個二分類,分別是強度是否偏強或偏弱、強度是否周期波動、強度是否有其他不穩情況.

圖6 硅粉試樣強度偏差衍射值
經過以上的分析及處理,各特征都針對某相關性較高的問題,分類的目標明確過程可解釋性強,而分類樹模型計算量小、處理簡單,比較適合做此分類.7個二分類每個限制分類樹層高在4層以內,提前做到剪枝的效果.采用C4.5算法[8],使用增益率(gain ratio)來選擇分裂屬性,選擇增益率最高的屬性作為分裂屬性.我們假設將訓練元組D按屬性A進行劃分,C4.5算法首先定義了“分裂信息”,其定義為:

增益率定義為:

因為此模型用于識別具體偏差類型,故抽取數據集中存在待分析偏差的1427條,取800條分別對7個二分類進行訓練,剩余627條作為測試集.
實驗結果表明本文設計的X射線粉末衍射儀智能輔助校正系統可以準確有效地判斷偏差原因.為X射線粉末衍射儀的校正提供了很好的支持.判斷是否存在偏差時,在設置召回率為95%的情況下從3829條測試數據(691條偏差數據)中篩選出1015條可能的偏差數據,準確率仍高達64.63%.每個2分類測試集627條數據,是否存在模塊內偏差的測試結果如表1.

表1 是否存在模塊內偏差測試結果
其他具體結果不再贅述,準確率和召回率如表2.
系統對各種偏差的判斷效果雖不相同,但都基滿足應用需求,部分偏差判斷效果良好.本文主要提出X射線粉末衍射儀智能輔助校正系統,并對其核心內容進行敘述說明.下一步將繼續進行模型優化工作,進一步提升系統準確性;同時針對其他衍射儀器確定不同的特征提取方案,進一步擴展系統的應用范圍,將系統應用到其他衍射儀器的輔助校正上.

表2 各種偏差識別的準確率及召回率