0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用TensorFlow概率編程工具包開發(fā)深度學習

Tensorflowers ? 來源:cg ? 2019-01-03 10:33 ? 次閱讀

通用電氣的貝克休斯公司 Baker Hughes(BHGE)是世界領(lǐng)先的全流程石油和天然氣公司,致力于尋求更佳的方式向世界輸送能源。BHGE 的數(shù)字團隊開發(fā)了企業(yè)級別的,依靠人工智能驅(qū)動的 SaaS 解決方案,以提高效率并減少石油和天然氣行業(yè)的非生產(chǎn)時間。要考慮關(guān)鍵任務(wù)問題,諸如預測燃氣輪機故障或優(yōu)化石化廠等大型的系統(tǒng);這些問題需要大規(guī)模構(gòu)建和維護復雜的分析。為此,我們開發(fā)了一種分析驅(qū)動型戰(zhàn)略計劃,為客戶實現(xiàn)全公司數(shù)字化改造。

多年來一直幫助工業(yè)界解決最棘手問題,使我們掌握了最優(yōu)雅持久的解決方案:

領(lǐng)域知識

傳統(tǒng)機器學習

概率技術(shù)

深度學習

之前難以處理的問題類別現(xiàn)在可以通過將一些看似毫無關(guān)系的技術(shù)并將它們與現(xiàn)代可擴展的軟硬件組合在一起部署來解決。我們與 TensorFlowProbability(TFP)團隊和 Google 的 Cloud ML 團隊的合作加速了我們大規(guī)模開發(fā)和部署這些技術(shù)的過程。

我們想將這些節(jié)點發(fā)生的創(chuàng)新通過這一系列的文章進行展示,希望以此激發(fā)在概率深度學習技術(shù)的工業(yè)應用中實現(xiàn)爆炸性增長。在這里你們可以看到我們在 Google Next 2018 展示的這些應用程序示例集。

需要概率深度學習

數(shù)十年來,基于物理的(即基于領(lǐng)域的)分析已經(jīng)被成功地應用于設(shè)計和操作航空航天、汽車、石油和天然氣等行業(yè)的系統(tǒng)。它們提供了一個行之有效的方法,能夠從一些觀察中概括復雜的行為。牛頓的運動方程可以用來精確地預測原子和星系的運動。然而,對現(xiàn)實世界問題的創(chuàng)新解決方案需要將這些律法與解決未知因素的有效方法相結(jié)合。要捍衛(wèi)科學,明確地追蹤我們信念的確定性至關(guān)重要。

我們舉一個采用射彈軌跡的 “簡單” 例子。為了預測拋射物落地的位置,進行準確預測所需的唯一觀察(數(shù)據(jù))是投射拋射物的速度(速度和角度)。然而,在初始角度和風速中增加一個很小的不確定性(~5%)會給射彈落地的位置帶來巨大的不確定性(~200%),如下圖所示。

即使是簡單的系統(tǒng),也可以通過不確定性進行準確的預測;想象一下優(yōu)化大型非線性系統(tǒng)得有多么復雜!

Digital Twin 是 BHGE Analytics 團隊在解決實際工業(yè)問題方面經(jīng)過多年磨練的結(jié)構(gòu)。我們將其定義為物理系統(tǒng)的數(shù)字表示,不斷調(diào)整用以表示當前條件并預測未來狀態(tài)。如下圖所示,構(gòu)建數(shù)字孿生所需的三大支柱是領(lǐng)域知識,概率推理和深度學習:

領(lǐng)域?qū)I(yè)知識(即物理學)與傳統(tǒng) ML 相結(jié)合,使我們能夠精確地解決已知問題,換句話說,已知的知識。通過傳統(tǒng)的 ML,我們指的是諸如多項式回歸,核密度方法和狀態(tài)空間估計方法(例如卡爾曼濾波器)之類的技術(shù)。在各種熱機械載荷下預測零件中裂紋的長度是領(lǐng)域?qū)I(yè)知識的一個例子:它需要徹底了解問題的物理特性以及溫度和壓力等邊界條件的知識。即使很好地理解了這種現(xiàn)象,也需要幾種傳統(tǒng)的 ML 技術(shù)來計算特定于問題的系數(shù)(例如材料特性)。

概率推理提供了一種量化不確定性的系統(tǒng)方法,即已知的未知數(shù)。在上面的例子中,除了理解這些現(xiàn)象外,我們還需要考慮測量的不確定性和制造變異性等非模型因素。眾所周知,系統(tǒng)中存在會影響裂紋擴展的可變性(不確定性)。預測裂縫長度然后成為不確定性量化練習。更具體地說,當我們在測量中增加不確定性時,材料特性校準成為概率推理問題。

深度學習和現(xiàn)代 ML 有潛力識別和預測未知的模式和行為,也就是未知的未知。在裂縫傳播實例中,即使概率推理與領(lǐng)域模型相結(jié)合,我們也可以預測裂縫僅在具有已知不確定性的特定負載條件下傳播??紤]基于自動編碼器的異常檢測模型,該自動編碼器監(jiān)視負載條件以及設(shè)備上的各種其他條件。這種深度學習模型可以捕獲基于物理的模型無法獲取的異常情況。我們將此預測表示為未知的未知,原因是因為我們沒有關(guān)于異常的任何數(shù)據(jù)來訓練模型。雖然深度學習模型訓練正常操作的數(shù)據(jù)(以及一些驗證異常),但它可以捕捉到之前未觀察到的正常行為的任何偏差。這是深度學習模型派上用場的眾多例子之一。可以說,在某些情況下,基于傳統(tǒng)技術(shù)(如 PCA 重建誤差)的簡單異常檢測模型也可以解決問題。根據(jù)我們的經(jīng)驗,當已知的過程特征與這些方法的簡化假設(shè)一致時,更簡單的技術(shù)可以提供與深度學習模型類似甚至更好的性能,從而導致已知的異常。當異常事件突如其來毫無征兆時 - 當你之前從沒有看到特定的故障模式時,深度學習模型的表現(xiàn)真的出類拔萃。

在本文中,我們將重點關(guān)注在預測已知未知數(shù)的領(lǐng)域模型的概率推斷。我們將演示貝葉斯校準的能力,其中裂縫傳播問題被公式化為基于物理的概率推理模型。

概率深度學習使我們能夠在 “自學” 包中利用上面強調(diào)的所有功能。我們將在隨后的博客中討論使用 TFP 進行概率深度學習,其中包括模型差異,異常檢測,缺失數(shù)據(jù)估計和時間序列預測。

預測組件的壽命:概率性裂縫傳播示例

預測易于開裂的部件的壽命是一個老生常談的問題,斷裂力學界已經(jīng)研究過。裂縫傳播模型是工程系統(tǒng)的預測和健康管理(PHM)解決方案的核心。題為《預測與工程系統(tǒng)健康管理:簡介》一書提供了一個很好的例子,說明現(xiàn)實世界數(shù)據(jù)如何用于校準工程模型。通過下面的示例,我們希望激發(fā)使用結(jié)合概率學習技術(shù)和工程領(lǐng)域模型的 “混合模型”。

疲勞裂紋擴展現(xiàn)象可以用巴黎定律建模。巴黎定律通過以下等式將裂紋擴展速率(da / dN)與應力強度因子(ΔK=Δσ√)聯(lián)系起來:

其中 a 是裂紋長度,N 是加載循環(huán)次數(shù),σ 是應力,(C,m)是材料屬性。

將巴黎定律與特定幾何和加載配置相結(jié)合,我們得出裂縫大小的分析公式,作為加載循環(huán)的函數(shù),如下所示:

其中 a? 是初始裂縫長度。通過了解給定應用中的 a? 和因子 Δσ√,可以使用等式 2 來計算未來裂縫的大小,假設(shè)應用將隨時間累積 N 個周期??梢詫⒃擃A測的裂縫長度與安全操作的閾值進行比較。例如,如果預測的裂縫長度超過幾何極限(例如,部件厚度的一半),那就說明該修理了。

在給定裂縫長度 a 與加載循環(huán) N 數(shù)據(jù)的情況下,需要針對每個物理組件校準參數(shù) C 和 m。換句話說,考慮到現(xiàn)場測量的裂縫,我們希望推斷出 C 和 m,這樣就可以估算出在裂縫長度變大到一定程度,在部件失效的風險之前,可以安全地運行多少個循環(huán)。

在本例中,我們將使用由 Kim,An 和 Choi 編寫的 PHM 書中的樣本數(shù)據(jù)集,演示使用 TFP 進行 C 和 m 的概率校準。在 BHGE Digital,我們利用 Depend-on-Docker 項目實現(xiàn)分析開發(fā)的自動化。此處提供了此類自動化的示例,其中包含以下示例的完整代碼。

如下圖所示,我們使用了 Kim,An 和 Choi 的 PHM 書中的表 4.2 中提供的數(shù)據(jù)集。對于大多數(shù)裂縫傳播數(shù)據(jù)集而言,從觀察到的數(shù)據(jù)點來看,潛在趨勢并不十分明顯。

對于貝葉斯校準,我們需要定義校準變量的先驗分布。在實際應用中,這些先驗可以由主題專家通知。對于這個例子,我們假設(shè) C 和 m 都是高斯和獨立的:

在 TFP 中,我們可以對此信息進行如下編碼:

1prio_par_logC = [-23., 1.1] # [location, scale] for Normal Prior

2prio_par_m = [4., 0.2] # [location, scale] for Normal Prior

3rv_logC = tfd.Normal(loc=0., scale=1., name='logC_norm')

4rv_m = tfd.Normal(loc=0., scale=1., name='m_norm')

我們?yōu)閮蓚€變量定義了外部參數(shù)和標準正態(tài)分布,只是為了從標準化空間中進行采樣。因此,在計算裂縫模型時,我們需要對兩個隨機變量進行去標準化。

現(xiàn)在我們定義被校準的隨機變量的聯(lián)合對數(shù)概率以及由等式 2 定義的相關(guān)裂縫模型:

1def joint_log_prob(cycles, observations, y0, logC_norm, m_norm):

2# Joint logProbability function for both random variables and observations.

3# Some constants

4dsig = 75.

5B = tf.constant(dsig * np.pi**0.5, tf.float32)

6# Computing m and logC on original space

7logC = logC_norm * prio_par_logC[1]**0.5+ prio_par_logC[0] #

8m = m_norm * prio_par_m[1]**0.5 + prio_par_m[0]

9

10# Crack Propagation model

11crack_model =(cycles * tf.exp(logC) * (1 - m / 2.) * B**m + y0**(1-m / 2.))**(2. / (2. - m))

12y_model = observations - crack_model

13

14

15# Defining child model random variable

16rv_model = tfd.Independent(

17 tfd.Normal(loc=tf.zeros(observations.shape), scale=0.001),

18reinterpreted_batch_ndims=1, name = 'model')

19# Sum of logProbabilities

20return rv_logC.log_prob(logC_norm) + rv_m.log_prob(m_norm) + rv_model.log_prob(y_model)

最后,是時候設(shè)置采樣器并運行 TensorFlow 會話了:

1# This cell can take 12 minutes to run in Graph mode

2# Number of samples and burnin for the MCMC sampler

3samples = 10000

4burnin = 10000

5

6# Initial state for the HMC

7initial_state = [0., 0.]

8# Converting the data into tensors

9cycles = tf.convert_to_tensor(t_,tf.float32)

10observations = tf.convert_to_tensor(y_,tf.float32)

11y0 = tf.convert_to_tensor(y_[0], tf.float32)

12# Setting up a target posterior for our joint logprobability

13unormalized_target_posterior= lambda *args: joint_log_prob(cycles, observations, y0, *args)

14# And finally setting up the mcmc sampler

15[logC_samples, m_samples], kernel_results = tfp.mcmc.sample_chain(

16num_results= samples,

17num_burnin_steps= burnin,

18current_state=initial_state,

19kernel= tfp.mcmc.HamiltonianMonteCarlo(

20target_log_prob_fn=unormalized_target_posterior,

21step_size = 0.045,

22num_leapfrog_steps=6))

23

24

25# Tracking the acceptance rate for the sampled chain

26acceptance_rate = tf.reduce_mean(tf.to_float(kernel_results.is_accepted))

27

28# Actually running the sampler

29# The evaluate() function, defined at the top of this notebook, runs `sess.run()

30# in graph mode and allows code to be executed eagerly when Eager mode is enabled

31[logC_samples_, m_samples_, acceptance_rate_] = evaluate([

32logC_samples, m_samples, acceptance_rate])

33

34# Some initial results

35print('acceptance_rate:', acceptance_rate_)

值得注意的是,盡管我們開始使用 C 和 m 的兩個獨立高斯分布,但后驗分布是高度相關(guān)的。這種相關(guān)性的產(chǎn)生是因為解空間規(guī)定對于 m 的高值,唯一有物理意義的結(jié)果是 Cand 的小值,反之亦然。如果我們使用任意數(shù)量的確定性優(yōu)化技術(shù)來找到適合此數(shù)據(jù)集的 C 和 m 的 “最佳擬合”,那么根據(jù)我們的起點和約束,我們最終會得到一些位于直線上的值。執(zhí)行概率優(yōu)化(也就是貝葉斯校準)為我們提供了可以解釋數(shù)據(jù)集的所有可能解決方案的全局視圖。

后驗抽樣后進行預測

現(xiàn)在到了最后一步,我們將后驗函數(shù)定義為對數(shù)正態(tài)分布,期望由物理模型定義:

已知損壞(在這種情況下為裂縫長度)是傾斜的,因此對數(shù)正?;?Gumbel 分布通常用于模擬損傷。在 TFP 中表達模型如下所示:

1def posterior(logC_samples, m_samples, time):

2n_s = len(logC_samples)

3n_inputs = len(time)

4

5# Some Constants

6dsig = 75.

7B = tf.constant(dsig * np.pi**0.5, tf.float32)

8

9# Crack Propagation model - compute in the log space

10

11y_model =(

12time[:,None] *

13tf.exp(logC_samples[None,:])*

14(1-m_samples[None,:]/2.0) *B**m_samples[None,:] +y0** (1-m_samples[None,:]/2.0))**(2. / (2. - m_samples[None,:]))

15noise = tfd.Normal(loc=0., scale=0.001)

16samples = y_model + noise.sample(n_s)[tf.newaxis,:]

17# The evaluate() function, defined at the top of this notebook, runs `sess.run()`

18# in graph mode and allows code to be executed eagerly when Eager mode is enabled

19samples_ = evaluate(samples)

20return samples_

21

22# Predict for a range of cycles

23time = np.arange(0, 3000, 100)

24y_samples = posterior(logC_samples_scale, m_samples_scale, time)

25print(y_samples.shape)

如下所示,使用混合物理概率模型的裂縫長度的 95% 不確定界限的預測平均值。很顯然,該模型不僅捕獲平均行為,還捕獲每個時間點模型預測的不確定性估算。當我們偏離觀察時,模型預測中的不確定性呈指數(shù)增長趨勢。

下一步

我們選擇這個例子十分小心,來對概率模型做一個介紹。將概率模型應用于實際應用程序存在一些挑戰(zhàn)。即使在像這里所展示的簡單問題中,如果我們放松高斯先驗的假設(shè),那么解決方案也會變得棘手。如果讀者感到好奇,可以嘗試使用統(tǒng)一先驗來觀察一下模型預測能力急劇下降的情況。

另一個微妙點是定義可能性的方式。我們選擇直接在預測誤差上定義它,而不是預測值。請注意,下面在 “基于預測誤差的可能性” 中描述的各個藍線是模型預測誤差的樣本。直接將公式更改為模型預測 - 而不是預測誤差 - 會產(chǎn)生非單調(diào)的非物理結(jié)果,如 “基于實際預測的可能性 ” 所示。我們稱這些結(jié)果是非物理的,因為裂縫長度不會隨著時間的推移而減小。如果我們只查看上面顯示的 “模糊” 百分位數(shù)視圖,我們可能不會注意到模型公式中可能導致較大預測誤差的細微差別。我們將在下一篇文章中解決其中一些更實際的挑戰(zhàn)及其緩解措施。

這是系列文章中的第一篇,旨在通過 TFP 擴展概率和深度學習技術(shù)在工業(yè)應用中的應用。我們(@sarunkarthi)很想聽聽關(guān)于您的應用程序的說明,并期待看到這些方法應用到更多獨特的方方面面。請繼續(xù)關(guān)注此文章供稿,了解有關(guān)異常檢測,缺失數(shù)據(jù)估算和變異推斷預測的更多更新的示例。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 深度學習
    +關(guān)注

    關(guān)注

    73

    文章

    5503

    瀏覽量

    121157
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60535

原文標題:通用電氣:使用 TensorFlow 概率編程工具包開發(fā)出基于物理的概率深度學習

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    恩智浦車規(guī)級深度學習工具包使新一代汽車應用性能提高30倍

    恩智浦半導體推出汽車車規(guī)級深度學習工具包eIQ Auto,擴展了公司eIQ機器學習產(chǎn)品系列。該工具包旨在幫助客戶從
    發(fā)表于 11-06 11:46 ?760次閱讀

    并口開發(fā)調(diào)試工具包

    并口開發(fā)調(diào)試工具包開發(fā)調(diào)試工具包包括三個功能模塊:“并口調(diào)試器”、“并口測試信號發(fā)生器”和“并口監(jiān)視器”。
    發(fā)表于 05-26 09:53 ?37次下載

    并口開發(fā)調(diào)試工具包 (推薦)

    并口開發(fā)調(diào)試工具包 (推薦):
    發(fā)表于 05-27 10:15 ?35次下載
    并口<b class='flag-5'>開發(fā)</b>調(diào)試<b class='flag-5'>工具包</b> (推薦)

    Microchip推出三款開發(fā)工具包

    Microchip推出三款開發(fā)工具包   Microchip Technology Inc.(美國微芯科技公司)今天宣布推出三款開發(fā)工具包,可支持采用Microchip豐富的PIC單片機快速開發(fā)iPod和iP
    發(fā)表于 03-31 13:28 ?865次閱讀

    微軟在GitHub開源深度學習工具包

     為了加速人工智能和語音識別項目的發(fā)展,微軟研究人員特地開發(fā)出了一款用于深度神經(jīng)網(wǎng)絡(luò)和多GPU加速處理技術(shù)的工具包。
    發(fā)表于 01-27 11:54 ?2332次閱讀

    單片機開發(fā)調(diào)試工具包

    單片機開發(fā)調(diào)試工具包,學習51單片機必備的工具
    發(fā)表于 12-17 10:45 ?19次下載

    PSoC 3/5 平臺開發(fā)工具包

    PSoC 3/5 平臺開發(fā)工具包
    發(fā)表于 10-10 10:30 ?5次下載

    Microchip蘋果配件開發(fā)工具包

    這一講是Microchip蘋果配件開發(fā)工具包蘋果配件開發(fā)工具包
    的頭像 發(fā)表于 06-06 13:45 ?2300次閱讀

    NVIDIA遷移學習工具包 :用于特定領(lǐng)域深度學習模型快速訓練的高級SDK

    對于設(shè)計和集成智能視頻分析(IVA)端應用程序(如停車管理、安全基礎(chǔ)設(shè)施、零售分析、物流管理和訪問控制等)的開發(fā)人員,NVIDIA 的遷移學習工具包提供了端到端的深度
    的頭像 發(fā)表于 12-07 14:45 ?3151次閱讀

    關(guān)于英特爾推出OpenVINO?工具包對物聯(lián)網(wǎng)的變革和影響分析

    新的OpenVINO工具包結(jié)合了各種先進硅片,可提供一個完整的高性能解決方案,用于邊緣到云端的深度學習和視頻分析。通過各種常見軟件框架,如TensorFlow*、MXNet*、Caff
    的頭像 發(fā)表于 09-05 14:09 ?1810次閱讀

    LTC2937-軟件開發(fā)工具包

    LTC2937-軟件開發(fā)工具包
    發(fā)表于 05-31 20:57 ?6次下載
    LTC2937-軟件<b class='flag-5'>開發(fā)工具包</b>

    用于深度學習推理的高性能工具包

      綜上所述,這個新版本的 OpenVINO 工具包提供了許多好處,不僅優(yōu)化了用戶部署應用程序的體驗,還增強了性能參數(shù)。它使用戶能夠開發(fā)具有易于部署、更多深度學習模型、更多設(shè)備可移植性
    的頭像 發(fā)表于 07-12 10:08 ?1134次閱讀

    使用QuickFeather開發(fā)工具包和SensiML

    電子發(fā)燒友網(wǎng)站提供《使用QuickFeather開發(fā)工具包和SensiML.zip》資料免費下載
    發(fā)表于 02-08 15:16 ?0次下載
    使用QuickFeather<b class='flag-5'>開發(fā)工具包</b>和SensiML

    深度學習框架tensorflow介紹

    深度學習框架tensorflow介紹 深度學習框架TensorFlow簡介
    的頭像 發(fā)表于 08-17 16:11 ?2517次閱讀

    Microchip(微芯)推出MPLAB機器學習開發(fā)工具包

    機器學習(ML)正成為嵌入式設(shè)計人員開發(fā)或改進各種產(chǎn)品的標準要求。為滿足這一需求,Microchip(微芯)近日推出了全新的MPLAB?機器學習開發(fā)工具包,提供一套完整的集成工作流程來
    的頭像 發(fā)表于 09-12 18:26 ?1038次閱讀
    Microchip(微芯)推出MPLAB機器<b class='flag-5'>學習</b><b class='flag-5'>開發(fā)工具包</b>