在機器學習的工具箱裡,藏著六種重要的演算法

王林
發布: 2023-04-09 20:11:05
轉載
1464 人瀏覽過

1、線性回歸

在機器學習的工具箱裡,藏著六種重要的演算法

法國數學家勒讓德(Adrien-Marie Legendre) ,一直痴迷於預測彗星的未來位置,鑑於彗星以前的幾個位置,他準備創建一種計算其軌蹟的方法。

在嘗試了幾種方法後,終於有了進展。

勒讓德從猜測彗星的未來位置開始,透過記錄數據、分析,最後透過數據驗證了自己的猜測,以減少平方誤差的總和。

這便是線性迴歸的種子。

普及的兩個步驟:演算法立即幫助航海者追蹤星星,以及幫助後來的生物學家(尤其是查爾斯·達爾文的堂兄Francis Galton)識別植物和動物的可遺傳特徵。這兩項深入發展釋放了線性迴歸的廣泛潛力。 1922 年,英國統計學家 Ronald Fisher 和 Karl Pearson 展示了線性迴歸如何適應相關性和分佈的一般統計框架,使其在所有科學中都有用。而且,近一個世紀後,電腦的出現提供了數據和處理能力,可以更大程度地利用它。

應對歧義:當然,資料永遠不會被完美地衡量,有些變數比其他變數更重要。這些生活事實激發了更複雜的變體。例如,具有正規化的線性迴歸(也稱為“嶺迴歸”,ridge regression)鼓勵線性迴歸模型不要過度依賴任何一個變量,或者更確切地說,均勻地依賴最重要的變數。如果為了簡單起見,另一種形式的正則化(L1 而不是 L2)會產生 lasso(壓縮估計),鼓勵盡可能多的係數為零。換句話說,它學會選擇具有高預測能力的變數並忽略其餘的變數。彈性網路結合了這兩種類型的正規化。當資料稀疏或特徵看起來相關時,它很有用。

在每個神經元中:現在,簡單的版本仍然非常有用。神經網路中最常見的神經元類型是線性迴歸模型,隨後是非線性活化函數,使線性迴歸成為深度學習的基本組成部分。

2、邏輯回歸

曾經有一段時間,邏輯迴歸只用於對一件事進行分類:如果你喝了一瓶毒藥,你可能會被貼上的標籤是「活著」還是「死去」呢?

而現在,不僅打電話給急診中心可以為這個問題提供更好的答案,而且邏輯回歸也成了深度學習的核心。

這個函數可以追溯到1830 年代,當時比利時統計學家P.F. Verhulst 發明它來描述人口動態:隨著時間的推移,指數增長的初始爆炸隨著它消耗可用資源而趨於平緩,從而產生特徵邏輯曲線。

一個多世紀過去後,美國統計學家 E. B. Wilson 和他的學生 Jane Worcester 又設計了邏輯迴歸來計算給定有害物質有多少是致命的。

3、梯度下降法

想像一下,黃昏過後,在山上健行,發現除了腳外,你什麼也看不見。

你的手機沒電了,所以你不能用 GPS 找到回家的路。

也許你會透過梯度下降法找到最快的路徑,但當心,別掉下懸崖。

1847年,法國數學家Augustin-Louis Cauchy發明了近似恆星軌道的演算法。

60 年後,他的同胞 Jacques Hadamard 獨立開發了它來描述薄而靈活的物體(如地毯)的變形,這可能會使膝蓋向下徒步更容易。

然而,在機器學習中,它最常見的用途是找到學習演算法損失函數的最低點。

太糟糕了,你的手機沒電了,因為演算法可能沒有把你推到凸山的底部。

你可能會陷入由多個山谷(局部最小值)、山峰(局部最大值)、鞍點(鞍點)和高原組成的非凸面景觀中。

事實上,圖像識別、文字生成和語音識別等任務都是非凸的,並且已經出現了梯度下降的許多變體來處理這種情況。

例如,演算法可能具有幫助它放大小幅上漲和下跌的動量,從而使其更有可能到達底部。

研究人員設計瞭如此多的變體,以至於看起來優化器的數量與局部最小值一樣多。

幸運的是,局部最小值和全局最小值往往大致相等。

梯度下降是尋找任一函數的最小值的明確選擇。在可以直接計算精確解的情況下,例如具有大量變數的線性迴歸任務中-它可以逼近一個值,而且通常速度更快、成本更低。

但它確實在複雜的非線性任務中發揮了作用。

憑藉著梯度下降和冒險精神,你可能可以及時趕出山區吃晚餐。

4、神經網路

先弄清楚一個問題, 大腦不是一組圖形處理單元,如果它是的話,它運行的軟體會比典型的人工神經網路複雜得多。

然而,神經網路的靈感來自大腦的結構: 層層相互連接的神經元,每個神經元根據其鄰居的狀態計算自己的輸出。由此產生的一連串活動形成了一個想法ーー或者說認出了一張貓的照片。

從生物到人工:大腦透過神經元之間相互作用來學習的想法可以追溯到1873 年,但直到1943 年,美國神經科學家Warren McCulloch 和Walter Pitts 才利用簡單的數學規則建立了生物神經網路模型。

1958 年,美國心理學家Frank Rosenblatt開發出感測器——這是一種在打卡機上實現的單層視覺網絡,旨在為美國海軍建立一個硬體版本。

Rosenblatt 的發明只能辨識單線分類。

之後,烏克蘭數學家 Alexey Ivakhnenko 和 Valentin Lapa 透過在任意層數中堆疊神經元網絡,克服了這一限制。

1985 年,獨立工作的法國電腦科學家 Yann LeCun、David Parker 和美國心理學家 David Rumelhart 及其同事,描述了使用反向傳播來有效訓練此類網路。

在新千年的第一個十年中,包括Kumar Chellapilla、Dave Steinkraus 和Rajat Raina(與吳恩達合作)在內的研究人員透過使用圖形處理單元進一步推動了神經網路的發展,這使得越來越大的神經網路能從網路產生的大量資料中學習。

在報導Rosenblatt 於1958年發明的感測器時,《紐約時報》開闢了人工智慧炒作的道路,報導中提到「美國海軍期望擁有一台會走路、說話、看、寫、自我複製和意識到自己存在的電子計算機雛形。」

雖然當時的感測器沒有達到這個要求,但它產生了許多令人印象深刻的模型:用於圖像的捲積神經網路;文字的循環神經網路;以及用於圖像、文字、語音、視訊、蛋白質結構等的transformers。

它們已經做出了令人驚嘆的事情,像下圍棋時的表現超過了人類水平,在診斷X射線圖像等實際任務中也接近人類水平。

然而,它們在常識和邏輯推理方面的問題仍然較難處理。

5、決策樹

亞里斯多德是什麼樣的「野獸」?這位哲學家的追隨者、第三世紀期間生活在敘利亞的 Porphyry 想出了一個合乎邏輯的方法來回答這個問題。

他將亞里斯多德提出的「存在類別」從一般到具體組合起來,將亞里斯多德依次歸入到每個分類中:

亞里斯多德的存在是物質的而不是概念或精神;他的身體是有生命的而不是無生命的;他的思想是理性的而不是非理性的。

因此,他的分類是人類。

中世紀的邏輯教師將這個序列繪製為垂直流程圖:一個早期的決策樹。

快轉到 1963 年,密西根大學社會學家John Sonquist和經濟學家James Morgan在將調查的受訪者分組時,首次在電腦中實行了決策樹。

隨著自動訓練演算法軟體的出現,這種工作變得很普遍,如今包括 scikit-learn 等在內的各種機器學習庫也已經使用決策樹。

這套程式碼是由史丹佛大學和加州大學柏克萊分校的四位統計學家花了10 年時間開發的。到今天,從頭開始寫決策樹已經成為了《機器學習 101》中的一項家庭作業。

決策樹可以執行分類或迴歸。它向下生長,從根部到樹冠,將一個決策層次結構的輸入範例分類為兩個(或更多)。

想到德國醫學家和人類學家Johann Blumenbach的主題:大約在1776 年,他首先將猴子與猿(撇開人類除外)區分開來,在此之前,猴子和猿是被歸為一類的。

這種分類取決於各種標準,例如是否有尾巴、胸部狹窄或寬闊、是直立還是蹲伏、還有智力的高低。使用經過訓練的決策樹來為這類動物貼上標籤,逐一考慮每個標準,最終將這兩組動物分開。

鑑於Blumenbach 的結論(後來被Charles Darwin推翻),即人類與猿的區別在於寬闊的骨盆、手和緊牙的牙齒,如果我們想擴展決策樹以不僅分類猿和猴子,而是將人類分類,那會怎麼樣呢?

澳洲電腦科學家 John Ross Quinlan 在 1986 年透過 ID3 實現了這一可能,它擴展了決策樹,以支援非二元結果。

2008 年, 在IEEE國際資料探勘會議策劃的資料探勘十大演算法名單中,一項命名為 C4.5 的擴展細化演算法名列前茅。

美國統計學家Leo Breiman 和紐西蘭統計學家Adele Cutler 將這一特徵轉化為優勢,於2001 年開發了隨機森林(random forest)——這是一個決策樹的集合,每個決策樹會處理不同的、重疊的範例選擇,並對最終結果進行投票。

隨機森林和它的表親XGBoost不太容易過度擬合,這有助於使它們成為最受歡迎的機器學習演算法之一。

這就像讓亞里斯多德、Porphyry、Blumenbach、Darwin、 Jane Goodall、Dian Fossey和其他 1000 位動物學家一起在房間裡,確保你的分類是最好的。

6、K 平均演算法

如果你在聚會上與其他人站得很近,那麼你們很可能有一些共同點,這就是使用k 均值聚類將資料點分組的想法。

無論是透過人類機構或其他力量形成的群體,這個演算法都會找到它們。

從爆炸到撥號音:美國物理學家Stuart Lloyd 是貝爾實驗室標誌性創新工廠和發明原子彈的曼哈頓計畫的校友,他於1957 年首次提出k-means聚類,以在數位訊號中分配信息,但直到1982 年才發表這個工作。

同時,美國統計學家 Edward Forgy 在 1965 年描述了一種類似的方法,導致了它的替代名稱為「Lloyd-Forgy 演算法」。

尋找中心:考慮將聚類分成志同道合的工作群組。給定房間中參與者的位置和要形成的組數,k-means 聚類可以將參與者分成大小大致相等的組,每個組都聚集在一個中心點或質心周圍。

在訓練期間,演算法最初透過隨機選擇 k 人來指定 k 個質心。 (K 必須手動選擇,找到一個最優值有時非常重要。)然後它透過將每個人與最近的質心相關聯來成長 k 個群集。

對於每個集群,它計算分配到該組的所有人的平均位置,並將該平均位置指定為新的質心。每個新的質心可能都沒有被一個人佔據,但那又如何呢?人們傾向於聚集在巧克力和火鍋周圍。

計算新的質心後,演算法將個體重新分配到離他們最近的質心。然後它計算新的質心,調整集群,等等,直到質心(以及它們周圍的組)不再移動。之後,將新成員分配到正確的叢集就很容易。讓他們在房間裡就位並尋找最近的質心。

預先警告:鑑於最初的隨機質心分配,你可能最終不會與你希望與之相處的以數據為中心的可愛 AI 專家在同一組中。該演算法做得很好,但不能保證找到最佳解決方案。

不同的距離:當然,聚類物件之間的距離不需要很大。兩個向量之間的任何度量都可以。例如,k-means 聚類可以根據他們的服裝、職業或其他屬性來劃分他們,而不是根據物理距離對參加派對的人進行分組。線上商店使用它根據客戶的喜好或行為來劃分客戶,天文學家也可以將相同類型的星星分在一組。

資料點的力量:這個想法產生了一些顯著的變化:

K-medoids 使用實際資料點作為質心,而不是給定群集中的平均位置。中心點是可以將到集群中所有點的距離最小化的點。這種變化更容易解釋,因為質心始終是數據點。

Fuzzy C-Means Clustering 使資料點能夠不同程度地參與多個叢集。它根據與質心的距離,用集群的度來代替硬簇分配。

n 維狂歡:儘管如此,原始形式的演算法仍然廣泛有用——特別是因為作為一種無監督演算法,它不需要收集昂貴的標記資料。它的使用速度也越來越快。例如,包括 scikit-learn 在內的機器學習庫受益於 2002 年添加的 kd-trees,這些 kd-trees 可以非常快速地劃分高維度資料。

以上是在機器學習的工具箱裡,藏著六種重要的演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板