機器學習助力高品質軟體工程
譯者 | 朱先忠
審校 | 孫淑娟
引言
一般來說,軟體測試往往是比較簡單的:每個輸入=>已知輸出。然而,縱觀整個軟體測試的歷史,會發現許多測試往往都停留在猜測層面。也就是說,測試時由開發者構思出使用者的操作流程,估計可能出現的負載並分析需要耗費的時間,然後執行測試,並將目前結果與基準答案進行比較。如果我們發現不存在迴歸,那麼就認為目前建置方案是正確的;然後,繼續後面的測試。如果存在回歸,就返回。大多數時候,我們已經知道了輸出結果,儘管它需要更好的定義——回歸的邊界清晰,而且不那麼模糊。其實,這正是機器學習(ML)系統和預測分析的切入點——結束歧義。
測試完成後,性能工程師所做的工作不僅是查看結果的算術平均值和幾何平均值,他們還會查看有關百分比數據。例如,系統運作過程中,往往10%最慢的請求都是由系統錯誤導致的-這個錯誤會產生一個總是影響程式運作速度的條件。
雖然我們可以手動關聯資料中可用的屬性,但是ML可能會比您以更快的速度連結資料屬性。在確定導致10%的錯誤請求的條件後,效能工程師便可以建立測試場景來重現該行為。在修復之前和之後執行測試能夠幫助確定修復已經修正。
圖1:對績效指標的整體信心
機器學習與資料科學的表現
機器學習有助於促進軟體開發,使相關開發技術更堅固、更好地滿足使用者在不同領域和行業的需求。我們可以透過將管道和環境中的資料輸入到深度學習演算法來揭露因果模式。預測分析演算法與效能工程方法結合,可實現更有效率、更快的吞吐量,深入了解終端用戶如何在自然場景下使用軟體,並幫助開發者降低帶有缺陷的產品應用於生產環境的可能性。透過及早發現問題及其原因,您可以在開發生命週期的早期進行問題糾正,並防止對生產產生影響。整體來看,您可以透過以下方式利用預測分析來提高應用程式效能。
- 確定根本原因。 您可以使用機器學習技術來確定可用性或效能問題的根本原因,從而專注於其他需要注意的領域。然後,預測分析可以分析每個群集的各種特徵,提供我們需要進行更改的見解,以達到理想的效能並避免瓶頸。
- 監視應用程式運作狀況。 使用機器學習技術執行即時應用程式監控,有助於企業能夠及時發現系統效能降級並迅速回應。大多數應用程式依賴多個服務來獲得完整應用程式的狀態;預測分析模型能夠在應用程式運作正常時關聯並分析數據,以識別傳入資料是否為異常值。
- 預測使用者負載。 我們依靠峰值用戶流量來調整基礎設施的規模,以適應未來訪問應用程式的用戶數量。這種方法有局限性,因為它不考慮變化或其他未知因素。預測分析有助於顯示使用者負載,並更好地做好應對準備,幫助團隊規劃其基礎設施需求和容量利用率。
- 在為時已晚之前預測停機。 在應用程式停機或停電發生之前預測它們將有助於採取預防措施。預測分析模型將遵循先前的停電情況,並繼續監測類似情況,以預測未來的故障。
- 停止查看閾值,開始分析資料。 可觀測性和監控產生的大量資料每週最多需要幾百兆位元組。即使使用現代分析工具,您也必須事先知道自己在尋找什麼。這導致團隊不直接查看數據,而是設定閾值作為行動的觸發因素。即使是成熟的團隊也會尋找例外情況,而不是鑽研他們的數據。為了緩解這種情況,我們將模型與可用資料來源整合。然後,模型將篩選數據併計算隨時間推移的閾值。使用這種技術,模型被饋送並彙總歷史數據,提供基於季節性而不是由人類設定的閾值。基於演算法來設定閾值有助於觸發更少的警報;另一方面,這也帶來更好的可操作性和更高價值。
- 跨資料集分析與關聯。 您的資料大多是時間序列,因此可以更輕鬆地查看隨時間變化的單一變數。許多趨勢來自多種措施的相互作用。例如,只有在同一目標同時進行各種事務時,回應時間才會下降。對人類來說,這幾乎是不可能的,但經過適當訓練的演算法卻有助於發現這些相關性。
預測分析中資料的重要性
「大數據」通常指的是資料集。不錯,是大數據集,速度提升很快,內容變化也很大。對於這樣數據的分析需要專門的方法,以便我們能夠從中提取模式和資訊。近年來,儲存、處理器、進程並行化以及演算法設計的改進都使得系統能夠在合理的時間內處理大量數據,從而允許更廣泛地使用這些方法。為了獲得有意義的結果,您必須確保數據的一致性。
例如,每個項目必須使用相同的排名系統,因此,如果一個項目使用1作為關鍵值,而另一個項目使用5——就像人們使用「DEFCON 5 」表示「DEFCON 1」時一樣;那麼,必須在處理之前對這些值進行規範化處理。預測演算法由演算法及其輸入的數據組成,而軟體開發產生了大量數據,直到最近,這些數據仍處於閒置狀態,等待刪除。然而,預測分析演算法可以處理這些文件,針對我們無法檢測到的模式,根據這些數據提出和回答問題,例如:
- 我們是否在浪費時間測試未使用的場景嗎?
- 效能改進如何與使用者幸福感相關聯?
- 修復特定缺陷需要多長時間?
這些問題及其答案就是預測分析的用途——更能理解可能發生的事情。
演算法
預測分析的另一個主要組成部分是演算法;您需要仔細選擇或實作它。從簡單開始是至關重要的,因為模型往往會變得越來越複雜,對輸入資料的變化越來越敏感,並有可能扭曲預測。它們可以解決兩類問題:分類和迴歸(見圖2)。
- 分類:分類用於預測集合的結果,方法是從輸入資料推斷標籤(如「向下」或「向上」)開始,將集合劃分為不同的類別。
- 迴歸:當輸出變數是一組實值時,迴歸用於預測集合的結果。它將處理輸入資料來進行預測——例如,使用的記憶體量、開發人員編寫的程式碼行等。最常用的預測模型是神經網路、決策樹以及線性和邏輯迴歸。
#圖2:分類與迴歸
神經網路
#神經網路透過實例學習,並使用歷史資料和當前資料來預測未來價值。它們的架構允許它們識別隱藏在資料中的複雜關係,以複製我們大腦偵測模式的方式。它們包含許多層,這些層接受數據、計算預測並作為單一預測提供輸出。
決策樹
決策樹是一種分析方法,它將結果呈現在一系列「if/then」選項中,以預測特定選項的潛在風險和收益。它可以解決所有分類問題並回答複雜問題。
如圖3所示,決策樹類似於由演算法產生的自頂向下的樹,該演算法能夠識別將資料分割成分支狀劃分的各種方式,以說明未來的決策並協助識別決策路徑。
如果載入時間超過三秒,樹中的一個分支可能是放棄購物車的使用者。在這一條之下,另一個分支可能會指示她們是否屬於女性。 「yes」的回答會增加風險,因為分析表明,女性更容易衝動購買,而這種延遲會讓人陷入沉思。
圖3:決策樹範例
#線性與邏輯迴歸
迴歸是最受歡迎的統計方法之一。在估算數字時,這一點至關重要,例如在「黑色星期五」大促活動期間,我們需要為每項服務增加多少資源。許多迴歸演算法被設計來估計變數之間的關係,在龐大的和混合的資料集中找到關鍵模式,以及它們之間的關係。它的範圍從簡單的線性迴歸模型(計算擬合資料的直線函數)到邏輯迴歸(計算曲線)(圖4)。
#線性與邏輯迴歸#總體對比 | |
#線性回歸 # |
邏輯迴歸 |
用於定義連續範圍內的值,例如接下來幾個月用戶流量峰值的風險。 |
這是一種統計方法,其中參數是根據舊的集合預測的。它最適合二進位分類:y=0或1的資料集,其中1表示預設類別別。它的名字來自於它的轉換函數(是一個邏輯函數#)。 |
它表示為y=a bx,其中x是用來決定輸出y的輸入集。係數a和b用來量化x和y之間的關係,其中a是截距,b是直線的斜率。 |
它由邏輯函數表示: 其中,β0是截距,β1#是速率。它使用訓練資料來計算係數,將預測結果與實際結果之間的誤差最小化。 |
目標是擬合最接近大多數點的直線,減少y和直線之間的距離或誤差。 |
它形成S形曲線,其中應用閾值將機率轉換為二進位分類。 |
圖4:線性迴歸與邏輯迴歸
#這些是監督學習方法,因為演算法解決了特定的屬性。當你心中沒有特定的結果,但想確定可能的模式或趨勢時,可以使用無監督學習。在這種情況下,該模型將分析盡可能多的特徵組合,以找到人類可以採取行動的相關性。
圖5:有監督與無監督學習
效能工程中的「左移」
使用先前的演算法來衡量消費者對產品和應用程式的看法,使得效能工程更加以消費者為中心。收集所有資訊後,必須透過適當的工具和演算法對其進行儲存和分析。這些數據可以包括錯誤日誌、測試案例、測試結果、生產事件、應用程式日誌檔案、專案文件、事件日誌、跟踪,等等。然後,我們可以將其應用於資料中,以獲得各種見解:
- 分析環境中的缺陷
- 評估對客戶體驗的影響
- 確定問題模式
- #建立更準確的測試場景,等等
此技術支援品質方面的左移(shift-left)方法,可讓您預測執行效能測試所需的時間、可能識別的缺陷數量以及可能導致生產的缺陷數量,從而實現效能測試的更好覆蓋,並創建真實的用戶體驗。可防止和修正可用性、相容性、效能和安全性等問題,而不會影響使用者。
以下是一些有助於提高品質的資訊類型的範例:
- 缺陷類型
- 在哪個階段發現了缺陷
- 缺陷的根本原因是什麼
- 缺陷是否可再現
一旦您了解了這一點,就可以進行更改並建立測試,以更快地防止類似問題。
結論
自從程式設計誕生以來,軟體工程師已經做出了成百上千的假設。但是,今天的數位用戶們更加意識到這一點,而且對錯誤和失敗的容忍度也進一步降低。另一方面,企業也在競相通過量身訂製的服務和越來越難測試的複雜軟體,試圖提供更具吸引力和完美的使用者體驗。
今天,一切都需要無縫運作,並支援所有流行的瀏覽器、行動裝置和應用程式。即使是幾分鐘的撞車事故也可能造成數千或數百萬美元的損失。為了防止問題,團隊必須在整個軟體生命週期中整合可觀測性解決方案和使用者體驗。管理複雜系統的品質和效能需要的不僅僅是執行測試案例和運行負載測試。趨勢可以幫助您判斷情況是否受到控制、改善或惡化,以及改善或惡化的速度。機器學習技術可以幫助預測效能問題,使團隊能夠正確進行方案調整。最後,讓我們來引用本傑明·富蘭克林(Benjamin Franklin)的一句話作為結束語:「一盎司預防抵得上一磅治療。」
譯者介紹
朱先忠,51CTO社群編輯,51CTO專家部落格、講師,濰坊一所大學電腦教師,自由程式設計界老兵一枚。
原文標題:#Performance Engineering Powered by Machine Learning,作者:
以上是機器學習助力高品質軟體工程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在機器學習和資料科學領域,模型的可解釋性一直是研究者和實踐者關注的焦點。隨著深度學習和整合方法等複雜模型的廣泛應用,理解模型的決策過程變得尤為重要。可解釋人工智慧(ExplainableAI|XAI)透過提高模型的透明度,幫助建立對機器學習模型的信任和信心。提高模型的透明度可以透過多種複雜模型的廣泛應用等方法來實現,以及用於解釋模型的決策過程。這些方法包括特徵重要性分析、模型預測區間估計、局部可解釋性演算法等。特徵重要性分析可以透過評估模型對輸入特徵的影響程度來解釋模型的決策過程。模型預測區間估計

本文將介紹如何透過學習曲線來有效辨識機器學習模型中的過度擬合和欠擬合。欠擬合和過擬合1、過擬合如果一個模型對資料進行了過度訓練,以至於它從中學習了噪聲,那麼這個模型就被稱為過擬合。過度擬合模型非常完美地學習了每一個例子,所以它會錯誤地分類一個看不見的/新的例子。對於一個過度擬合的模型,我們會得到一個完美/接近完美的訓練集分數和一個糟糕的驗證集/測試分數。略有修改:"過擬合的原因:用一個複雜的模型來解決一個簡單的問題,從資料中提取雜訊。因為小資料集作為訓練集可能無法代表所有資料的正確表示。"2、欠擬合如

1950年代,人工智慧(AI)誕生。當時研究人員發現機器可以執行類似人類的任務,例如思考。後來,在1960年代,美國國防部資助了人工智慧,並建立了實驗室進行進一步開發。研究人員發現人工智慧在許多領域都有用武之地,例如太空探索和極端環境中的生存。太空探索是對宇宙的研究,宇宙涵蓋了地球以外的整個宇宙空間。太空被歸類為極端環境,因為它的條件與地球不同。要在太空中生存,必須考慮許多因素,並採取預防措施。科學家和研究人員認為,探索太空並了解一切事物的現狀有助於理解宇宙的運作方式,並為潛在的環境危機

這個AI輔助程式工具在這個AI快速發展的階段,挖掘出了一大批好用的AI輔助程式工具。 AI輔助程式設計工具能夠提升開發效率、提升程式碼品質、降低bug率,是現代軟體開發過程中的重要助手。今天大姚給大家分享4款AI輔助程式工具(而且都支援C#語言),希望對大家有幫助。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫程式碼,從而將更多精力集中在問題解決和協作上。 Git

通俗來說,機器學習模型是一種數學函數,它能夠將輸入資料映射到預測輸出。更具體地說,機器學習模型是一種透過學習訓練數據,來調整模型參數,以最小化預測輸出與真實標籤之間的誤差的數學函數。在機器學習中存在多種模型,例如邏輯迴歸模型、決策樹模型、支援向量機模型等,每種模型都有其適用的資料類型和問題類型。同時,不同模型之間存在著許多共通性,或者說有一條隱藏的模型演化的路徑。將聯結主義的感知機為例,透過增加感知機的隱藏層數量,我們可以將其轉化為深度神經網路。而對感知機加入核函數的話就可以轉換為SVM。這一

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

機器學習是人工智慧的重要分支,它賦予電腦從數據中學習的能力,並能夠在無需明確編程的情況下改進自身能力。機器學習在各個領域都有廣泛的應用,從影像辨識和自然語言處理到推薦系統和詐欺偵測,它正在改變我們的生活方式。機器學習領域存在著多種不同的方法和理論,其中最具影響力的五種方法被稱為「機器學習五大派」。這五大派分別為符號派、聯結派、進化派、貝葉斯派和類推學派。 1.符號學派符號學(Symbolism),又稱符號主義,強調利用符號進行邏輯推理和表達知識。該學派認為學習是一種逆向演繹的過程,透過現有的

MetaFAIR聯合哈佛優化大規模機器學習時所產生的資料偏差,提供了新的研究架構。據所周知,大語言模型的訓練常常需要數月的時間,使用數百甚至上千個GPU。以LLaMA270B模型為例,其訓練總共需要1,720,320個GPU小時。由於這些工作負載的規模和複雜性,導致訓練大模型存在著獨特的系統性挑戰。最近,許多機構在訓練SOTA生成式AI模型時報告了訓練過程中的不穩定情況,它們通常以損失尖峰的形式出現,例如Google的PaLM模型訓練過程中出現了多達20次的損失尖峰。數值偏差是造成這種訓練不準確性的根因,
