算法工程师_浅谈算法工程师的职业定位与发展
生活随笔
收集整理的這篇文章主要介紹了
算法工程师_浅谈算法工程师的职业定位与发展
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
隨著大數據和以深度學習為代表的人工智能技術的飛速發展,算法工程師這個職業逐漸成為國內互聯網行業的標配。2016年3月,谷歌旗下DeepMind公司的圍棋程序“AlphaGo”戰勝職業九段棋手李世石。這場著名的科技秀把人工智能的熱潮從學術界席卷到工業界、新聞媒體和廣大群眾。外行人眼中的算法工程師是高收入和高科技的職業;而新入行的人往往覺得算法工程師門檻低導致內卷化(人才飽和導致過度競爭)。隨著算法相關的工具越來越成熟,很多算法工程師自嘲為調包俠、調參俠,于是也開始有人唱衰這個職業。本人作為有一些算法研究和實踐經驗的過來人,想分享一些自己在企業做算法工作的心得,順便為想入行做算法以及剛從事算法工作的朋友提供一些參考。本文的觀點基于個人的工作經驗和理解,如有不對的地方歡迎指正。本文接下來的內容分為六個部分:1. 什么是算法2. 算法的應用場景3. 算法技術介紹4. 算法工程師的職業定位5. 算法工程師的職業發展6. 總結1. 什么是算法提到算法,有人可能會聯想到人工智能。個人覺得人工智能是個非常大的概念(很多算法技術似乎都可以歸類到人工智能),所以為了使敘述更清晰和聚焦,本文會避免用“人工智能”這樣的術語,而是盡量用更精確的詞匯來描述算法相關的技術。狹義地看,算法是用計算機程序求解 計算問題 的方法。定義一個計算問題有兩個要素:輸入和輸出。例(素數判定問題):給定一個整數,判斷它是否為素數(素數是只能被1和自身整除且大于1的整數)。以素數判定問題為例,它的輸入是一個整數,輸出是一個布爾值:“是”或“否”。求解素數判定問題的算法是一個滿足上述輸入和輸出條件的計算機程序。在實際應用中,首先要明確算法需要解決的具體問題,以及對應的輸入和輸出,然后才是設計與實現算法。我們可以把一個算法理解成一個滿足輸入與輸出要求的硬件裝置或軟件模塊。從這個角度來看,算法工程師與軟件、硬件工程師的工作是相似的:實現滿足輸入與輸出要求的算法(軟件、硬件)模塊。算法工程師的工作目標是實現“又快又好”的算法。具體來說,需要關注兩個要素:解的質量?算法輸出的結果稱為“解”。它的解是否“正確”或者說有多好?解的效率?算法的計算時間有多長?更多關于算法的介紹可以參考經典教材《Introduction to Algorithms》(中文:算法導論),作者:T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein。前面介紹了算法的基本概念,接下來我們看看算法在商業中的應用價值。2. 算法的應用場景算法產生商業價值有兩個思路:產品研發?算法本身是商業產品的一個核心模塊。例如,“詞典筆”可以直接“掃一掃”書本上的文字就能實現單詞或句子的查詢和翻譯功能。與傳統的詞典相比,它不僅提供了更方便的查詢方式,而且體積小巧、方便攜帶。為了實現這樣的產品功能,背后的一個核心算法是文本圖像識別(稱為OCR技術)。它解決的算法問題是這樣的:輸入一張文本照片,輸出照片中的文本內容。我們不難發現,決定這個產品體驗好壞的關鍵因素之一就是文本識別的準確率。降低業務的復雜性?當企業的規模增大,業務必然會變得越來越復雜。這個時候可能會導致兩種問題:組織運轉效率降低,典型的表現就是人力成本高、協作困難、決策流程冗長; 各業務節點之前存在依賴關系,導致需要決策的“變量”太多以及決策“空間”太大。 由于任何一種決策結果都會帶來顯著的成本,因此尋求低成本高收益的決策變得非常困難。在這樣的背景下,只有把復雜的業務抽象成一個個高內聚、低耦合的模塊,然后用算法代替人工決策,才能達到降低成本、提高效率的目的。接下來我們從三個角度介紹一些算法的商業應用:自動化?解決重復勞動。?車牌識別? ?汽車進入單位、小區、上高速、停車等日常場景,管理人員一般都需要記錄車牌號以及出入場地時間。有了車牌識別技術,在這些場景下軟件系統可以代替人工,精準地記錄車輛號牌和出入場時間。人臉識別? 人臉識別技術為金融和安防領域提供了廉價、準確且高效的身份核驗能力。以安檢為例,以往身份核驗流程是首先由被檢人提供證件,之后檢查官做人證對比,最后在后臺查詢被檢人的犯罪記錄。整個過程既費人又費時。有了人臉識別技術,被檢人只要面對攝像頭,系統就可以在1秒內完成身份核驗。紙箱推薦?在網絡購物中,商品發貨時一般需要被裝入紙箱。而紙箱的大小對用戶體驗和成本有著直接的影響。如果選擇更大的紙箱,對工人來說裝箱比較容易,但是成本高而且容易造成商品損壞;選擇稍小的紙箱,對工人來說裝箱耗時更長,會降低工作效率。基于選擇紙箱這個頻繁操作的場景,我們設計了一套裝箱算法,為打包工人推薦最合適的紙箱,不僅節省了裝箱成本而且提升了用戶體驗。個性化?解決用戶需求。內容推薦? 基于人的瀏覽行為與“內容”進行匹配,其中內容包括文章、商品、廣告等,素材形式有文本、圖片、語音和視頻。好的推薦算法可以讓用戶在APP中看到更多自己感興趣的內容,就會沉迷其中難以自拔。換句話會說,用戶在APP上停留的時間越長,APP就可以把更多的廣告呈現在用戶面前,于是賺取更多的廣告費。地圖導航?生活中出差、旅行、接人、上班等場景大概率需要用到地圖導航。輸入出發地、目的地、交通方式等信息,背后的路徑規劃算法會根據地理信息自動幫我們規劃出一條路徑,甚至能避開擁堵和限行。由于出行是人們的剛需,因此地圖導航是人們的必需品。它的商業價值不僅體現在廣告的觸達能力,更重要的是可以直接獲取珍貴的“線下”數據(出行數據),從而為其它的商業決策提供有價值的輸入,例如商業選址、餐館和景點的推薦等。客服機器人?在電商業務中,客服需要回答用戶的售前和售后提問,例如商品、活動、物流、保修等各種咨詢。尤其是在大促期間,常常會出現用戶咨詢量過大導致等待時間長的問題。我們通過知識圖譜技術構建商品和物流相關的知識庫,然后把用戶經常咨詢的問題進行分類,基于自然語言處理的技術對用戶的提問進行解析和回答,從而在一定程度上提升用戶體驗并降低客服成本。?系統化?解決復雜問題。客服排班? 給客服安排上班的班次。當客服人數多達百人時,這個問題往往變得非常棘手。原因是現實中考慮的約束條件非常多,例如:當問題規模較小時采用精確算法; 當問題規模較大時采用啟發式算法。 在求解小規模三維裝箱問題時,我們對計算效率有較高要求。當時開源的求解器不能滿足我們的需求,因此我們決定自研一套算法。這個時候就要求我們對算法設計的方法有一定了解。在項目中,我們用到了 規約(Reduction)?的技巧,把一個三維裝箱問題轉化成 圖(Graph)?上的搜索問題,然后利用圖相關的數據結構簡化三維裝箱操作。概率統計數據往往是企業的寶貴資產,因為它不僅可以為商業決策提供依據,還是業務的護城河。數據之所以會有價值,還依賴于正確的數據加工和使用方法。而概率統計提供了描述數據規律的方法,利用數據的規律,使得我們可以預判未來的趨勢、提高決策效率、降低決策成本。雖然這是個大數據時代,但不意味著我們想要的數據應有盡有。在實際項目中,我們常常面臨樣本量不足的問題。以銷量預測為例,假設我們要預測每個商品在 “雙十一”期間的銷量。這個時候我們發現一共才搞過四次雙十一活動。換句話說,每個商品關于歷史雙十一的銷量最多只有四個樣本點。如果簡單地擬合這個規律,在實際中容易出現過擬合的問題,即導致預測值與真實值偏差很大。在這種情況下,我們可以考慮結合主觀經驗與客觀事實。例如,假設雙十一的銷量與平銷的差異服從某個規律,然后借助歷史上幾次雙十一的銷售數據來修正這個規律。這套方法在統計上稱為貝葉斯估計(Bayesian Estimation):主觀經驗得到的規律稱為 先驗分布,利用客觀事實修正后得到的規律稱為 后驗分布。貝葉斯估計提供了一套主觀經驗與客觀事實結合的方法,能有效地彌補實際情況下樣本量不足的問題。機器學習網絡上每天生產著海量的文本、圖片、語音和視頻信息,它們也是企業珍貴的數據資產,有著巨大的商業價值。那么如何用算法對這些信息進行分類、理解以及分發?深度學習普及之前,業界主流仍然是采用基于統計的方法處理這些數據,即,利用概率分布函數來表示數據的規律。注意到數字媒體這一類數據的維度非常高,例如,一張手機照片的像素點就高達千萬,好處是它能表達的內容非常豐富。但是從算法的角度來看,這一類高維數據非常難以處理,因為已知的概率分布函數難以表達這種規律,即使這些規律在人看來很簡單。以文本識別為例,人可以快速識別出照片中的文字,但是我們很難找到一個函數把圖片上的像素值和它表達的文字關聯起來。而深度學習提供了一種“逼近”這種復雜函數的方法。它通過定義“元函數”(稱為激活函數)和仿射變換,然后利用海量的數據來擬合出這種復雜的函數關系(這個步驟稱為“訓練”),從而可以表達“樣本”與“標簽”之間的聯系。例如,通過輸入大量包含水果的照片“訓練”一個深度學習模型,從而讓計算機有能力識別照片中的水果。這背后并不是數據讓計算機有了真正的智能,而是它把照片的像素值作為算法模型的輸入,用類似于最小二乘回歸的方法擬合出了一個復雜的函數,把像素值與“水果”之間的規律表達出來。深度學習這種自動化的擬合能力使它可以在海量數據中學習數據與標簽之間的聯系,因而非常適合用來解決分類問題,例如人臉識別、圖像分割、語音識別、機器翻譯等。隨著機器學習工具和相關計算硬件(GPU、TPU、FPGA等)的發展成熟,機器學習應用的門檻進一步降低,模型的訓練和部署已經變得非常便捷。我們有理由相信,未來有只要數據的地方就有機器學習算法創造價值的機會。建模與優化數學建模是一種把復雜問題抽象化的技術,它用數學語言描述現實世界的問題,使得我們可以用系統的方法對它求解和分析。而優化方法可以看作是求解數學模型的工具,例如前文提到的深度學習技術,本質上是用梯度下降的方法解一個優化問題。在企業經營中,利潤和成本結構往往是非常復雜的。以網易嚴選的電商業務為例,我們的業務鏈路包含商品研發、采購、倉儲、質檢、配送、營銷、渠道和售后。業務節點之間的成本(或利潤)可能同時存在依賴和沖突的關系,因此各節點做好自己的業務不一定意味著整體業務會好。如何站在全局的角度來思考并解決業務中的復雜問題?需要分三步:充分理解業務; 把業務問題抽象化; 用數學語言表達然后求解。 構建數學模型可以使用一套標準方法,即梳理數學模型的四要素:參數、變量、目標和約束,其中參數是指問題的輸入。以數獨游戲(Sudoku)為例,把數字1-9填入下圖的空格子中。填入的數字必須滿足三個條件:每個區塊包含數字1-9; (圖中灰色方框包含的3×3小格子代表一個區塊)每行包含數字1-9;每列包含數字1-9。問題的 輸入參數?是圖中給定的數字;變量?是空白處需要填入的數字;約束?是上述三個條件。這個問題沒有優化目標。這樣一來,我們可以得到求解數獨問題的數學模型:利用通用的求解工具求解這個數學模型,即可得到數獨問題的解。我們研發的決策產品, 例如庫存平衡系統、自動補貨系統、排班系統和全渠道觸達系統,都是以抽象的數學模型為基礎,并持續地迭代模型和算法。這些算法產品在提升業務目標的同時,推動業務沿著低復雜性的方向發展。個性化技術在電商業務中,一個殺手級的功能是可以為用戶帶來個性化的購物體驗(俗稱“千人千面”),因而使得網絡購物比線下購物更高效。個性化技術的典型代表是內容推薦技術,在電商業務中,推薦的內容以商品為主。為了實現更精準的推薦,技術層面要不僅要參考商品和用戶的特征,甚至還需要考慮營銷活動、庫存、用戶體驗等因素。這背后可能還需要圖像處理、音視頻處理和自然語言處理等技術的協同。以生成商品頁面為例,一般它包含了賣點文案、圖片和視頻介紹。為了給用戶呈現個性化的文案、圖片和視頻風格,從而刺激用戶下單,我們用自然語言處理技術抽取商品信息并生成賣點文案,用圖像生成技術制作不同風格的商品圖片。通過算法挖掘商品評論,我們可以自動化地提取商品賣點并呈現給用戶,促進用戶下單;對差評原因分類,從而改進商品和提升購物體驗;通過建立商品知識圖譜,用對話生成的技術回答用戶的售前和售后提問,從而提升用戶體驗并降低客服成本。回顧前文提到的深度學習技術,它的成功離不開它在圖像、音視頻和自然語言領域的突破。而個性化技術本質上也是在海量非結構化數據中擬合人與內容的聯系。因此,應用深度學習技術可以有效地實現多種場景下的個性化能力,例如猜你喜歡、新品推薦、個性化文案等。更多的技術前文提到的算法技術只是工業應用中的冰山一角。還有非常多不同的算法在工業界中大放異彩,例如計算機圖形學用于動畫、游戲和工業設計中的三維建模,有限元分析用于建筑和橋梁設計,同步定位與地圖構建技術(SLAM)用于機器人和自動駕駛等等。世界在變化,用戶需求在變化,因而企業面對的問題也在不斷變化。技術人員應該意識到沒有哪門技術能解決所有問題,而技術交叉越來越普遍,因此我們需要保持技術嗅覺和好奇心,堅持學習,然后用適合的技術解決問題。4. 職業定位前文介紹了一些算法技術,但實際上并沒有在技術細節層面展開,而是始終圍繞技術在商業中的應用價值,目的是想強調兩點:一是在企業中技術必須創造商業價值,這樣才能讓企業在競爭中領先,同時促進行業的進步;二是算法工程師的職責以“應用”算法為主,不能脫離業務。我把算法工程師分為三種類型(我承認可能過于狹隘,畢竟某些企業還存在學術型的算法人才):產品研發型為產品研發提供技術支持。這種情況下,算法一般是商業產品的一個模塊。例如:詞典筆的文本識別功能、汽車的自動駕駛系統、電商APP的搜索功能等。產品研發型的算法工程師主要關心產品的技術實現,用算法技術為用戶提供極致的體驗。這種情況下,只要產品賣得好,算法的價值就能充分體現。因此,產品研發型的算法工程師一般出現在商業模式比較清晰的業務(例如賣產品、賣廣告)。業務優化型當業務發展到一定階段可能會面臨兩種局面:一是規模太大,例如用戶數、員工數、設備數、產品數等非常龐大;二是業務復雜,業務節點之間依賴與競爭并存,導致成本和利潤構成復雜。這樣會造成業務的運轉效率降低,企業成本增加。在這樣的背景下,算法工程師需要為企業降本提效。例如:實現業務節點的自動化; 做精細化的決策; 業務建模與流程仿真。 以零售中的補貨為例,庫存量的多少直接影響到企業的成本和利潤。一般來說,從下采購單到貨品入庫需要制造和運輸時間(稱為提前期,短則數周長則數月),因此商家需要預估未來一段時間的銷售量,依此計算采購量。由于預測不可能精準,所以會導致計算的采購量與實際需求有偏差。采購多了不僅占用資金而且會增大庫存積壓的風險;采購少了就會造成缺貨,從而損失銷售利潤。因此,采購量的計算模型直接影響到商家的成本和利潤。類似這樣的決策問題在零售業中比比皆是,算法工程師需要建立符合業務的數學模型,用科學的方法為企業做出最優決策。業務優化型算法工程師的價值在于創造“增量”價值,即帶來成本的節約、效率的提升或利潤的增加。在日常工作中,我們需要評估算法項目帶來的增量價值,避免把過多的精力放在價值不高的事情上。需求洞察型技術研發最難的地方有時候不是解決問題,而是發現問題。比如復盤業務數據的時候,發現用戶規模或經營利潤不達標,這個屬于業務癥狀。那么造成這些癥狀背后的主要原因是什么?這是我們需要回答的問題。算法工程師要有能力從數據的角度發現問題、抽象問題以及提供解決方案。有人可能會質疑,難道這不是數據分析師的職責嗎?沒錯,數據分析師當然可以做這件事。但是對其能力的要求可能不僅限統計分析,還要有一定的建模和計算能力。事實上,發現技術問題的本質是定義技術問題,而定義技術問題需要對技術有較深的理解。下面我舉一個例子來說明這個觀點。我們曾經做一個包材項目,目標是降低消耗紙箱的成本。我們的技術思路是研發一套三維裝箱算法,給倉庫打包的工人推薦最優箱型,從而節省裝箱成本。事實證明這套算法確實產生了顯著的效果。那么后續如何進一步降低紙箱成本呢?經過思考我們發現,這套三維裝箱算法還可以用來優化紙箱的尺寸,從而達到進一步降低紙箱成本的目的。之后我們用算法設計的新箱型,用歷史訂單進行了一次模擬,評估發現確實可以顯著降低紙箱成本,于是推動了新箱型在業務中的落地。回顧這個案例,我們從紙箱推薦問題出發,進而研發紙箱設計算法。這個研發需求的變化來源于我們對業務的理解和技術的認知。算法工程師走到這個階段,除了對技術能力的要求,還需要承擔部分數據分析、產品設計甚至是業務操作的職能。從另外一個角度來看,數據分析師、產品經理、業務人員也應該掌握一些算法能力,以便從技術角度思考問題或者讓技術人員更快速地定位問題。小結?隨著技術工具越來越成熟,技術應用的門檻越來越低,個人覺得未來對復合型人才的需求會越來越旺盛。作為算法工程師的你,不妨問自己幾個問題:我們的商業產品是什么?它是否以算法為核心的產品? 我參與的算法項目,產生的商業價值是多少? 我們的商業模式是什么?業務的機會點在哪? 企業在不同的發展階段和不同的項目中對算法人才的要求是不一樣的,因此要求我們能夠在不同角色之間切換。技術是我們的出發點,但解決問題才是我們的終點。只有站在商業的角度思考技術,才能洞察需求和創造商業價值,進而提升自身的競爭力。5. 職業發展技術在進步,需求在變化。只有洞察變化,才有可能引領技術創新,進而提升自己的職場競爭力。下面我站在職業發展的角度,探討一下算法工程師需要具備的能力(我承認又狹隘了,畢竟作者本人菜雞一只)。技術能力技術能力是技術人員的立身之本。站在算法的角度,這里的技術能力主要是算法應用能力,包括閱讀論文、算法實現、工程化以及相關文檔的撰寫。技術人員常見的一個認知誤區是技術大于一切,認為只要技術做好了,就應該得到認可或獎勵。事實上,技術在大多數情況下只是商業中的一環,技術做得好不能確保商業上的成功。以自營電商為例,技術人員做一款功能強大的購物APP不難,但同時必須有商品研發、供應鏈和物流配送才能完成一個極小的商業閉環。此外,要想商品賣得好得有市場和運營團隊一起發力。在這樣的背景下,購物APP只是諸多商業環節中的一個節點,因此僅僅依賴軟件研發技術顯然不足以實現商業上的成功。好的技術團隊必須始終圍繞各商業環節,有能力定位問題,并研發工具有效地解決問題。業務能力作為算法工程師,在立項和需求評審時,需要有能力評估項目為業務帶來的價值以及算法在整個項目中的價值,從而避免把精力浪費在“投入產出比”不高的事情上。如何做到這一步呢?除了有扎實的技術,還需要深入了解業務。需要了解的業務知識包括(但不限于)商業模式、業務流程、業務限制以及與當前業務相關的技術等等。算法工程師了解業務的另一個好處是洞察需求,解決問題的同時可以發現更多的技術問題,從而推動業務的進步。技術人員最難跨越的是從技術能力到業務能力的提升。有兩方面原因:一是技術人員主觀上不太愿意處理業務問題(扯皮的事情較多);二是技術人員晉升和跳槽時主要被考察的還是技術,因此業務能力在有些技術人員看來短期的收益不高。架構能力架構能力是一種解決復雜問題的能力,它需要考慮業務的現狀和未來,把復雜問題分解成簡單問題,然后給出解決方案。與軟件架構相比,算法架構更偏向業務,不僅要對業務進行建模和抽象,還要考慮工程實現,以便技術方案在實際業務中落地。因此,良好的技術能力和業務能力是算法架構能力的基礎。算法相關的技術項目可能涉及到與其它技術工種的配合,例如:產品經理、數據分析、數據開發、前端、后端、測試、運維等。因此,算法工程師設計的技術方案應該考慮到算法模塊與其它技術模塊的解耦與協同。算法工程師做解決方案時應該從全局出發:一是技術上不僅考慮算法而且還要考慮工程實現和產品化(切忌手里有錘子,看什么都是釘子的想法);二是從整體業務的角度考慮項目帶來的收益。例如,假設推薦系統的重構可以帶來推薦模塊的轉化率提升。那么這件事情一定值得做嗎?我們還應該評估這個提升效果對大盤利潤的影響。如果對大盤利潤的提升有限,或許應該把精力投入在更有價值的項目中。管理能力在互聯網行業,多工種協作是常態,但管理能力卻恰恰是技術人員最容易忽略的一項能力。這里說的管理能力不是站在管理人的角度,而是站在取得業務結果的角度。它主要體現在:溝通協作、項目管理、目標管理和風險管理。簡單來說,就是把自己負責的事情做好而且講明白,即:把要做的事講清楚; 按要求交付工作內容; 把業務結果講清楚; 把風險講清楚。 我在工作中發現,不重視管理能力的技術人員常常面臨這樣的尷尬局面:辛辛苦苦寫了很多代碼,最后項目卻沒有上線;或者項目上線了卻說不清收益。然后看著自己的同事,覺得他代碼能力不如自己,研究能力也不如自己,卻屢次升職加薪。于是內心抱怨著命運的不公:寫代碼的不如寫PPT的!管理能力的提升不是一朝一夕,希望算法工程師們重視管理能力,在實際項目中不斷磨練自己。說不定升職加薪不過是水到渠成的事。6. 總結本文花了較大篇幅介紹算法的概念、應用場景和算法技術,目的是強調算法技術必須創造商業價值。隨著科技進步和全球數字化時代的到來,商業決策只會變得越來越復雜,而算法產生價值的空間一定越來越大。從前文提到的應用場景,我們看到算法工程師這個職業的工作內容是非常多元化的。夸張地說,算法工作簡直沒有邊界,這也對算法工程師提出了更高的要求。我總結成兩點:1. 算法工程師有三種類型:產品研發型、業務優化型和需求洞察型。企業在不同階段以及不同項目中,對算法的需求是不同的。我們需要有能力洞察需求,并按需切換自己的角色。2. 從職業發展的角度來看,算法工程師需要掌握四種能力:技術能力、業務能力、架構能力和管理能力。業務能力和管理能力非常重要,但往往容易被技術人員輕視。
最后聲明一下,文中的觀點基于個人工作經驗,由于個人經歷的狹隘和認知的不足,難免有不正確的地方,歡迎讀者指出。
- 每個班次的客服人數不能低于指定的數量;
- 一個客服每個月必須休息8天,至少保證每月一次2天連休;
- 客服安排晚班之后,第二天不能上早班(因為需要休息);
- 一天同一個人只能安排一個班次;
- 每個人的晚班天數差異盡可能小;
- 哪些商品需要調度?
- 從哪調到哪?
- 調撥量如何計算?
- 安排幾輛貨車?
- 箱規:按整箱調撥;
- 調撥限制:有些商品在只能調撥到特定倉庫;
- 倉庫產能:倉庫每日可調撥的件數有限;
- 貨車容量:貨車的長寬高有尺寸限制;
- 大促和平銷的目標:平銷控成本,大促控本地缺貨;
最后聲明一下,文中的觀點基于個人工作經驗,由于個人經歷的狹隘和認知的不足,難免有不正確的地方,歡迎讀者指出。
總結
以上是生活随笔為你收集整理的算法工程师_浅谈算法工程师的职业定位与发展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怀孕36周宝宝一般几斤
- 下一篇: 造成猝死的主要原因是什么