斯坦福大學編程方法
『壹』 在哪裡能夠找到國外優秀大學的計算機公開課
可以查看杜克大學的公開課,MOOC等
哈佛大學公開課:2005年計算機科學(15講)
http://www.manfen.net/thread-14394-1-1.html
哈佛大學公開課:2006年計算機科學(32講)
http://www.manfen.net/thread-14395-1-1.html
哈佛大學公開課:計算機科學CS50(20講)
http://www.manfen.net/thread-14396-1-1.html
哈佛大學公開課:計算機科學導論(22講)
http://www.manfen.net/thread-14397-1-1.html
麻省理工學院公開課:計算機科學及編程導論(24講)
http://www.manfen.net/thread-16474-1-1.html
斯坦福大學公開課:人與計算機的互動(10講)
http://www.manfen.net/thread-16443-1-1.html
斯坦福大學開放課程: 抽象編程
http://www.manfen.net/thread-6822-1-1.html
斯坦福大學公開課:編程範式(27講)
http://www.manfen.net/thread-16435-1-1.html
斯坦福大學公開課:編程方法學(28講)
http://www.manfen.net/thread-16436-1-1.html
『貳』 如果大學作業做不出來是不是智商問題
高中生就看這種課程,你確實很不錯了~
好好研究一下會做出來的,不就是多做幾個循環么,別急,一個小時做不出,做一下午吧~~
『叄』 放棄手工標記數據,斯坦福大學開發弱監督編程範式Snorkel
手工標記大量數據始終是開發機器學習的一大瓶頸。斯坦福AI Lab的研究人員探討了一種通過編程方式生成訓練數據的「弱監督」範式,並介紹了他們的開源Snorkel框架。
近年來,機器學習 (ML) 對現實世界的影響越來越大。這在很大程度上是由於深度學習模型的出現,使得從業者可以在基準數據集上獲得 state-of-the-art 的分數,而無需任何手工特徵設計。考慮到諸如 TensorFlow 和 PyTorch 等多種開源 ML 框架的可用性,以及大量可用的最先進的模型,可以說,高質量的 ML 模型現在幾乎成為一種商品化資源了。然而,有一個隱藏的問題:這些模型依賴於大量手工標記的訓練數據。
這些手工標記的訓練集創建起來既昂貴又耗時 —— 通常需要幾個月甚至幾年的時間、花費大量人力來收集、清理和調試 —— 尤其是在需要領域專業知識的情況下。除此之外,任務經常會在現實世界中發生變化和演變。例如,標記指南、粒度或下游用例都經常發生變化,需要重新標記 (例如,不要只將評論分類為正面或負面,還要引入一個中性類別)。
由於這些原因,從業者越來越多地轉向一種較弱的監管形式,例如利用外部知識庫、模式 / 規則或其他分類器啟發式地生成訓練數據。從本質上來講,這些都是以編程方式生成訓練數據的方法,或者更簡潔地說,編程訓練數據 (programming training data)。
在本文中,我們首先回顧了 ML 中由標記訓練數據驅動的一些領域,然後描述了我們對建模和整合各種監督源的研究。我們還討論了為大規模多任務機制構建數據管理系統的設想,這種系統使用數十或數百個弱監督的動態任務,以復雜、多樣的方式交互。
回顧:如何獲得更多有標簽的訓練數據?
ML 中的許多傳統研究方法也同樣受到對標記訓練數據的需求的推動。我們首先將這些方法與弱監督方法 (weak supervision) 區分開來:弱監督是利用來自主題領域專家(subject matter experts,簡稱 SME) 的更高級別和 / 或更嘈雜的輸入。
目前主流方法的一個關鍵問題是,由領域專家直接給大量數據加標簽是很昂貴的:例如,為醫學成像研究構建大型數據集更加困難,因為跟研究生不同,放射科醫生可不會接受一點小恩小惠就願意為你標記數據。因此,在 ML 中,許多經過深入研究的工作線都是由於獲取標記訓練數據的瓶頸所致:
在主動學習 (active learning) 中,目標是讓領域專家為估計對模型最有價值的數據點貼標簽,從而更有效地利用領域專家。在標準的監督學習設置中,這意味著選擇要標記的新數據點。例如,我們可以選擇靠近當前模型決策邊界的乳房 X 線照片,並要求放射科醫生僅給這些照片進行標記。但是,我們也可以只要求對這些數據點進行較弱的監督,在這種情況下,主動學習與弱監督是完美互補的;這方面的例子可以參考 (Druck, settle, and McCallum 2009)。
在半監督學習 (semi-supervised learning ) 設置中,我們的目標是用一個小的標記訓練集和一個更大的未標記數據集。然後使用關於平滑度、低維結構或距離度量的假設來利用未標記數據 (作為生成模型的一部分,或作為一個判別模型的正則項,或學習一個緊湊的數據表示);參考閱讀見 (Chapelle, Scholkopf, and Zien 2009)。從廣義上講,半監督學習的理念不是從 SME 那裡尋求更多輸入,而是利用領域和任務不可知的假設來利用未經標記的數據,而這些數據通常可以以低成本大量獲得。最近的方法使用生成對抗網路 (Salimans et al. 2016)、啟發式轉換模型 (Laine and Aila 2016) 和其他生成方法來有效地幫助規范化決策邊界。
在典型的遷移學習 (transfer learning )設置 中,目標是將一個或多個已經在不同數據集上訓練過的模型應用於我們的數據集和任務;相關的綜述見 (Pan 和 Yang 2010)。例如,我們可能已經有身體其他部位腫瘤的大型訓練集,並在此基礎上訓練了分類器,然後希望將其應用到我們的乳房 X 光檢查任務中。在當今的深度學習社區中,一種常見的遷移學習方法是在一個大數據集上對模型進行 「預訓練」,然後在感興趣的任務上對其進行 「微調」。另一個相關的領域是多任務學習 (multi-task learning),其中幾個任務是共同學習的 (Caruna 1993; Augenstein, Vlachos, and Maynard 2015)。
上述範例可能讓我們得以不用向領域專家合作者尋求額外的訓練標簽。然而,對某些數據進行標記是不可避免的。如果我們要求他們提供各種類型的更高級、或不那麼精確的監督形式,這些形式可以更快、更簡便地獲取,會怎麼樣呢?例如,如果我們的放射科醫生可以花一個下午的時間來標記一組啟發式的資源或其他資源,如果處理得當,這些資源可以有效地替代成千上萬的訓練標簽,那會怎麼樣呢 ?
將領域知識注入 AI
從 歷史 的角度來看,試圖 「編程」 人工智慧 (即注入領域知識) 並不是什麼新鮮想法,但現在提出這個問題的主要新穎之處在於,AI 從未像現在這樣強大,同時在可解釋性和可控制性方面,它還是一個 「黑盒」。
在 20 世紀 70 年代和 80 年代,AI 的重點是專家系統,它將來自領域專家的手工策劃的事實和規則的知識庫結合起來,並使用推理引擎來應用它們。20 世紀 90 年代,ML 開始作為將知識集成到 AI 系統的工具獲得成功,並承諾以強大而靈活的方式從標記的訓練數據自動實現這一點。
經典的 (非表示學習)ML 方法通常有兩個領域專家輸入埠。首先,這些模型通常比現代模型的復雜度要低得多,這意味著可以使用更少的手工標記數據。其次,這些模型依賴於手工設計的特性,這些特性為編碼、修改和與模型的數據基本表示形式交互提供了一種直接的方法。然而,特性工程不管在過去還是現在通常都被認為是 ML 專家的任務,他們通常會花費整個博士生涯來為特定的任務設計特性。
進入深度學習模型:由於它們具有跨許多領域和任務自動學習表示的強大能力,它們在很大程度上避免了特性工程的任務。然而,它們大部分是完整的黑盒子,除了標記大量的訓練集和調整網路架構外,普通開發人員對它們幾乎沒有控制權。在許多意義上,它們代表了舊的專家系統脆弱但易於控制的規則的對立面 —— 它們靈活但難以控制。
這使我們從一個略微不同的角度回到了最初的問題:我們如何利用我們的領域知識或任務專業知識來編寫現代深度學習模型?有沒有辦法將舊的基於規則的專家系統的直接性與這些現代 ML 方法的靈活性和強大功能結合起來?
代碼作為監督:通過編程訓練 ML
Snorkel 是我們為支持和 探索 這種與 ML 的新型交互而構建的一個系統。在 Snorkel中,我們不使用手工標記的訓練數據,而是要求用戶編寫標記函數 (labeling functions, LF),即用於標記未標記數據子集的黑盒代碼片段。
然後,我們可以使用一組這樣的 LF 來為 ML 模型標記訓練數據。因為標記函數只是任意的代碼片段,所以它們可以對任意信號進行編碼:模式、啟發式、外部數據資源、來自群眾工作者的嘈雜標簽、弱分類器等等。而且,作為代碼,我們可以獲得所有其他相關的好處,比如模塊化、可重用性和可調試性。例如,如果我們的建模目標發生了變化,我們可以調整標記函數來快速適應!
一個問題是,標記函數會產生有雜訊的輸出,這些輸出可能會重疊和沖突,從而產生不太理想的訓練標簽。在 Snorkel 中,我們使用數據編程方法對這些標簽進行去噪,該方法包括三個步驟:
1. 我們將標記函數應用於未標記的數據。
2. 我們使用一個生成模型來在沒有任何標記數據的條件下學習標記函數的准確性,並相應地對它們的輸出進行加權。我們甚至可以自動學習它們的關聯結構。
3. 生成模型輸出一組概率訓練標簽,我們可以使用這些標簽來訓練一個強大、靈活的判別模型 (如深度神經網路),它將泛化到標記函數表示的信號之外。
可以認為,這整個 pipeline 為 「編程」ML 模型提供了一種簡單、穩健且與模型無關的方法!
標記函數 (Labeling Functions)
從生物醫學文獻中提取結構化信息是最能激勵我們的應用之一:大量有用的信息被有效地鎖在數百萬篇科學論文的密集非結構化文本中。我們希望用機器學習來提取這些信息,進而使用這些信息來診斷遺傳性疾病。
考慮這樣一個任務:從科學文獻中提取某種化學 - 疾病的關系。我們可能沒有足夠大的標記訓練數據集來完成這項任務。然而,在生物醫學領域,存在著豐富的知識本體、詞典等資源,其中包括各種化學與疾病名稱數據、各種類型的已知化學 - 疾病關系資料庫等,我們可以利用這些資源來為我們的任務提供弱監督。此外,我們還可以與生物學領域的合作者一起提出一系列特定於任務的啟發式、正則表達式模式、經驗法則和負標簽生成策略。
作為一種表示載體的生成模型
在我們的方法中,我們認為標記函數隱含地描述了一個生成模型。讓我們來快速復習一下:給定數據點 x,以及我們想要預測的未知標簽 y,在判別方法中,我們直接對P(y|x) 建模,而在生成方法中,我們對 P(x,y) = P(x|y)P(y) 建模。在我們的例子中,我們建模一個訓練集標記的過程 P(L,y),其中 L 是由對象 x 的標記函數生成的標簽,y 是對應的 (未知的) 真實標簽。通過學習生成模型,並直接估計 P(L|y),我們本質上是在根據它們如何重疊和沖突來學習標記函數的相對准確性 (注意,我們不需要知道 y!)
我們使用這個估計的生成模型在標簽函數上訓練一個雜訊感知版本的最終判別模型。為了做到這一點,生成模型推斷出訓練數據的未知標簽的概率,然後我們最小化關於這些概率的判別模型的預期損失。
估計這些生成模型的參數可能非常棘手,特別是當使用的標記函數之間存在統計依賴性時。在 Data Programming: Creating Large Training Sets, Quickly(https://arxiv.org/abs/1605.07723) 這篇論文中,我們證明了給定足夠的標記函數的條件下,可以得到與監督方法相同的 asymptotic scaling。我們還研究了如何在不使用標記數據的情況下學習標記函數之間的相關性,以及如何顯著提高性能。
Snorkel:一個開源的框架
在我們最近發表的關於 Snorkel 的論文 (https://arxiv.org/abs/1711.10160) 中,我們發現在各種實際應用中,這種與現代 ML 模型交互的新方法非常有效!包括:
1. 在一個關於 Snorkel 的研討會上,我們進行了一項用戶研究,比較了教 SMEs 使用Snorkel 的效率,以及花同樣的時間進行純手工標記數據的效率。我們發現,使用Snorkel 構建模型不僅快了 2.8 倍,而且平均預測性能也提高了 45.5%。
2. 在與斯坦福大學、美國退伍軍人事務部和美國食品和葯物管理局的研究人員合作的兩個真實的文本關系提取任務,以及其他四個基準文本和圖像任務中,我們發現,與baseline 技術相比,Snorkel 平均提高了 132%。
3. 我們 探索 了如何對用戶提供的標記函數建模的新的權衡空間,從而得到了一個基於規則的優化器,用於加速迭代開發周期。
下一步:大規模多任務弱監管
我們實驗室正在進行各種努力,將 Snorkel 設想的弱監督交互模型擴展到其他模式,如格式豐富的數據和圖像、使用自然語言的監督任務和自動生成標簽函數!
在技術方面,我們感興趣的是擴展 Snorkel 的核心數據編程模型,使其更容易指定具有更高級別介面(如自然語言) 的標記函數,以及結合其他類型的弱監督 (如數據增強)。
多任務學習 (MTL) 場景的普及也引發了這樣一個問題:當嘈雜的、可能相關的標簽源現在要標記多個相關任務時會發生什麼?我們是否可以通過對這些任務進行聯合建模來獲益?我們在一個新的多任務感知版本的 Snorkel,即 Snorkel MeTaL 中解決了這些問題,它可以支持多任務弱監管源,為一個或多個相關任務提供雜訊標簽。
我們考慮的一個例子是設置具有不同粒度的標簽源。例如,假設我們打算訓練一個細粒度的命名實體識別 (NER) 模型來標記特定類型的人和位置,並且我們有一些細粒度的嘈雜標簽,例如標記 「律師」 與 「醫生」,或 「銀行」 與 「醫院」;以及有些是粗粒度的,例如標記 「人」 與 「地點」。通過將這些資源表示為標記不同層次相關的任務,我們可以聯合建模它們的准確性,並重新加權和組合它們的多任務標簽,從而創建更清晰、智能聚合的多任務訓練數據,從而提高最終 MTL 模型的性能。
我們相信,為 MTL 構建數據管理系統最激動人心的方面將圍繞大規模多任務機制(massively multi-task regime),在這種機制中,數十到數百個弱監督 (因而高度動態)的任務以復雜、多樣的方式交互。
雖然迄今為止大多數 MTL 工作都考慮最多處理由靜態手工標記訓練集定義的少數幾項任務,但世界正在迅速發展成組織 (無論是大公司、學術實驗室還是在線社區) 都要維護數以百計的弱監督、快速變化且相互依賴的建模任務。此外,由於這些任務是弱監督的,開發人員可以在數小時或數天內 (而不是數月或數年) 添加、刪除或更改任務 (即訓練集),這可能需要重新訓練整個模型。
在最近的一篇論文 The Role of Massively Multi-Task and Weak Supervision in Software 2.0 (http://cidrdb.org/cidr2019/papers/p58-ratner-cidr19.pdf) 中,我們概述了針對上述問題的一些初步想法,設想了一個大規模的多任務設置,其中 MTL 模型有效地用作一個訓練由不同開發人員弱標記的數據的中央存儲庫,然後組合在一個中央「mother」 多任務模型中。
不管確切的形式因素是什麼,很明顯,MTL 技術在未來有許多令人興奮的進展 —— 不僅是新的模型架構,而且還與遷移學習方法、新的弱監督方法、新的軟體開發和系統範例日益統一。
原文:
https://ai.stanford.e/blog/weak-supervision/
Snorkel:
http://snorkel.stanford.e/
歡迎同時關注微信公眾號: IT 科技 森
每天分享IT小技巧、 科技 數碼新聞!
『肆』 Nature:從FortranAlexNet代碼改變了科學界
選自Nature
作者:Jeffrey M. Perkel
機器之心編譯
機器之心編輯部
2019 年,「事件視界望遠鏡」團隊拍下了第一張黑洞照片。這張照片並非傳統意義上的照片,而是計算得來的——將美國、墨西哥、智利、西班牙和南極多台射電望遠鏡捕捉到的數據進行數學轉換。該團隊公開了所用代碼,使科學社區可以看到,並基於此做進一步的 探索 。
而這逐漸成為一種普遍模式。從天文學到動物學,每一個偉大的現代科學發現背後都有計算機的身影。斯坦福大學計算生物學家、2013 年諾貝爾化學獎獲得主 Michael Levitt 表示,現在的筆記本電腦在內存和時鍾速度方面是 1967 年其實驗室計算機的一萬倍。「今天,我們擁有大量算力。但問題是,這仍然需要人類的思考。」
如果沒有能夠處理研究問題的軟體以及知道如何編寫和使用軟體的研究人員,計算機再強大也是無用。「現在的研究與軟體緊密相關,軟體已經滲透到科研的方方面面。」軟體可持續性研究所(Software Sustainability Institute)負責人 Neil Chue Hong 如是說。
最近,Nature 上的一篇文章試圖揭示科學發現背後的重要代碼,正是它們在過去幾十年中改變了科研領域。這篇文章介紹了對科學界帶來重大影響的十個軟體工具,其中就包括與人工智慧領域密切相關的 Fortran 編譯器、arXiv、IPython Notebook、AlexNet 等。
語言先驅:Fortran 編譯器(1957)
首批出現的現代計算機對用戶並不友好。編程實際上是由手工完成的,通過電線連接一排排電路。後來的機器語言和匯編語言允許用戶使用代碼進行計算機編程,但這兩種語言依然要求使用者對計算機架構有深入了解,導致很多科學家無法使用它們。
20 世紀 50 年代,隨著符號語言的發展,尤其是「公式翻譯」語言 Fortran 的出現,上述境況發生了改變。Fortran 語言由 IBM 的約翰 · 巴科斯(John Backus)團隊開發。藉助 Fortran,用戶可以使用 x = 3 + 5 等人類可讀的指令進行計算機編程,之後編譯器將這類指令轉化為快速高效的機器碼。
這台使用 Fortran 編譯器編程的 CDC 3600 計算機於 1963 年移送至美國國家大氣研究中心。(圖源:美國大氣科學研究大學聯盟 / 科學圖片庫。)
在早期,編程人員使用穿孔卡片(punch card)輸入代碼,復雜的模擬可能需要數萬張穿孔卡片。不過,Fortran 使得並非計算機科學家的研究者也能夠進行編程。普林斯頓大學氣候學家 Syukuro Manabe 表示:「我們第一次靠自己進行編程。」他和同事使用 Fortran 語言開發了首批成功的氣候模型之一。
60 多年過去了,Fortran 依然廣泛應用於氣候建模、流體動力學、計算機化學,以及其他涉及復雜線性代數並需要強大計算機快速處理數字的學科。Fortran 代碼運行速度很快,仍然有很多編程人員知道如何寫 Fortran。古老的 Fortran 代碼庫依然活躍在世界各地的實驗室和超級計算機上。
信號處理器:快速傅里葉變換(1965)
當天文學家掃描天空時,他們捕捉到了隨時間變化的復雜信號的雜音。為了理解這些無線電波的性質,他們需要觀察這些信號作為頻率函數的樣子。一種被稱為傅里葉變換(Fourier transform)的數學過程允許科學家實現這一點。但問題在於傅里葉變換並不高效,對大小為 N 的數據集它需要進行 N 次運算。
1965 年,美國數學家 James Cooley 和 John Tukey 開發了一種加速傅里葉變換過程的方法。藉助遞歸(recursion)這種「分而治之」的編程方法(其中演算法可以實現重復地再運用),快速傅里葉變換(fast Fourier transform, FFT)將計算傅里葉變換問題簡化為 N log_2(N) 個步驟。速度也隨著 N 的增加而提升。對於 1000 個點,速度提升約 100 倍;對於 100 萬個點,速度提升約 5 萬倍。
牛津大學數學家 Nick Trefethen 表示,FFT 的發現實際上是一種「再發現」,因為德國數學家卡爾 · 弗里德里希 · 高斯在 1805 年就完成了該發現,不過從未發表。但是,James Cooley 和 John Tukey 開啟了 FFT 在數字信號處理、圖像分析和結構生物學等領域中的應用。Trefethen 認為 FFT「是應用數學與工程領域偉大的發現之一。」FFT 已經在代碼中實現了很多次,其中一種流行的變體是 FFTW(「西方最快的傅里葉變換」)。
默奇森天文望遠鏡,使用快速傅里葉變換來收集數據。
勞倫斯伯克利國家實驗室(Lawrence Berkeley National Laboratory)分子生物物理學和綜合生物成像部門主任 Paul Adams 回憶稱,當他在 1995 年改進細菌蛋白 GroEL 的結構時,即使使用 FFT 和一台超級計算機,也需要「很多很多個小時,甚至是幾天」的計算。但要沒有 FFT,很難想像這件事要怎麼做,花的時間將難以估量。
線性代數運算標准介面:BLAS(1979)
科學計算通常涉及使用向量和矩陣的數學運算,這些運算相對簡單,但計算量大。20 世紀 70 年代,學界並沒有出現一套普遍認可的執行此類運算的工具。因此,科研工作者不得不花費時間設計高效的代碼來做基礎的數學運算,導致無法專注於科學問題本身。
編程世界需要一個標准。1979 年,基礎線性代數子程序庫(Basic Linear Algebra Subprograms, BLAS)應運而生。直到 1990 年,該標准仍然在發展變化,定義了數十條涵蓋向量和矩陣運算的基本程序。
田納西州大學計算機科學家、BLAS 開發團隊成員之一 Jack Dongarra 表示,BLAS 實際上將矩陣和向量運算簡化成了像加減法一樣的基礎計算單元。
Cray-1 超級計算機。(圖源:科學 歷史 圖像 / Alamy)
德州大學奧斯汀分校計算機科學家 Robert van de Geijn 表示:「BLAS 可能是為科學計算而定義的最重要介面。」除了為常用函數提供標准名稱之外,研究者可以確保基於 BLAS 的代碼能夠以相同的方式在任何計算機上運行。該標准也使得計算機製造商能夠優化 BLAS 實現,以實現硬體上的快速運行。
40 多年來,BLAS 代表了科學計算堆棧的核心,使得科學軟體持續發展。喬治華盛頓大學機械與航空航天工程師 Lorena Barba 將 BLAS 稱為「五層代碼內的核心機制」。
預印本平台:arXiv.org(1991)
20 世紀 80 年代末,高能物理領域的研究者往往會把自己提交的論文郵寄給同行審閱,這是一種禮儀,但只郵寄給少數幾個人。「那些處於食物鏈底端的人依賴於頂端人的施捨,這往往會把非精英機構中有抱負的研究者完全排除在特權圈之外,」物理學家 Paul Ginsparg 曾在 2011 年的一篇文章中寫道。
1991 年,洛斯阿拉莫斯國家實驗室(Los Alamos National Laboratory)的 Ginsparg 寫了一個電子郵件自動回復器,以建立公平的競爭環境。郵件訂閱者每天都會收到一份預印本列表,每份論文都帶有標識符。如此一來,世界各地的用戶都可以通過一封電子郵件提交或檢索來自上述實驗室計算機系統的論文。
Ginsparg 原本計劃將文章保留三個月,將范圍限制在高能物理社區,但他的同事勸他去掉了這些限制。「就是在那一刻,它從布告欄轉變成了檔案庫,」Ginsparg 表示。在這之後,大批論文開始湧入,其學科之廣遠遠超出了 Ginsparg 的預期。1993 年,Ginsparg 把這個系統移植到互聯網上。1998 年,他正式將該系統命名為 arXiv.org。
如今,30 歲的 arXiv 收錄了 180 萬份預印本文章,且全部免費閱讀,其每月論文提交量超過 15000 份,每月下載量高達 3000 萬次。「不難看出 arXiv 為何如此受歡迎,」Nature Photonics 的編輯曾表示,「該系統為研究者提供了一種快捷、方便的科研方式,可以告訴大家你在做什麼、什麼時間做的,省去了傳統期刊同行評審的繁瑣。」
該網站的成功還對生物學、醫學、 社會 學等其他學科類似存儲庫的建立起到了助推作用,成千上萬份新冠病毒相關研究預印本的發布就是一個例證。
數據 探索 器:IPython Notebook (2011)
Fernando Pérez 在 2001 年決定「探尋拖延症」,當時他是一名研究生,決定採用 Python 的核心組件。
Python 是一種解釋型語言,意味著程序會一行一行地執行。編程人員可以使用一種被稱為「讀取 - 求值 - 輸出循環(REPL)」的計算型調用和響應(call-and-response)工具,他們可以鍵入代碼,然後由解釋器執行代碼。REPL 允許快速 探索 和迭代,但 Pérez 指出 Python 並不是為科學構建的。例如,它不允許用戶輕松地預載入代碼模塊或保持數據可視化的打開狀態。因此 Pérez 創建了自己的版本。
2001 年 12 月,Pérez 發布了互動式 Python 解釋器 IPython,它共有 259 行代碼。10 年後,Pérez 和物理學家 Brian Granger、數學家 Evan Patterson 合作,將該工具遷移到 Web 瀏覽器,創建了 IPython Notebook,掀起了一場數據科學的革命。
和其他計算型 notebook 一樣,IPython Notebook 將代碼、結果、圖形和文本組合到了單個文檔中。但與其他此類型項目不同的是,IPython Notebook 是開源的,歡迎廣大社區開發者為其發展做出貢獻,並且支持 Python 這種科學家常用的語言。2014 年,IPython 演變成 Project Jupyter,支持約 100 種語言,並允許用戶像在自己計算機上一樣輕松地在遠程超級計算機上 探索 數據。
Nature 在 2018 年指出:「對數據科學家而言,Jupyter 已經成為一種實際標准」。那時,GitHub 上已經有 250 萬個 Jupyter notebook,如今已有近一千萬個,其中包括 2016 年發現引力波和 2019 年黑洞成像的記錄。Pérez 表示:「我們能為這些項目做出一點貢獻也是非常有意義的」。
快速學習器:AlexNet(2012)
人工智慧(AI)可分為兩類,一類使用編碼規則,另一類讓計算機通過模擬大腦的神經結構來「學習」。多倫多大學計算機科學家、圖靈獎獲得者 Geoffrey Hinton 表示:「幾十年來,人工智慧研究者一直將第二種研究方法視為『荒謬』」。2012 年,Hinton 的研究生 Alex Krizhevsky 和 Ilya Sutskever 證明了事實並非如此。
在當年的 ImageNet 的年度競賽上,研究者們被要求在包含 100 萬張日常物品圖像的資料庫上訓練 AI,然後在另一個圖像集上測試演算法。Hinton 表示:「在當時,最佳演算法會在 1/4 的圖像上出現分類錯誤」。Krizhevsky 和 Sutskever 開發的 AlexNet 是一種基於神經網路的深度學習演算法,該演算法將誤差率降至 16%。Hinton 表示:「我們幾乎將誤差率降低了一半」。
Hinton 認為,該團隊在 2012 年的成功反映出足夠大的訓練數據集、出色的編程和圖形處理單元(最初為了提高計算機視頻性能的處理器)新力量的結合。他表示:「突然之間,我們就能夠將該演算法的速度提高 30 倍,或者說可以學習 30 倍的數據」。
Hinton 表示真正的演算法突破實際上發生在 3 年前。當時他的實驗室創建了一個比幾十年來不斷完善的傳統 AI 更能准確識別語音的神經網路。雖然准確率只稍微提升了一點,但已值得被記住。
AlexNet 及相關研究的成功帶來了實驗室、臨床等多個領域深度學習的興起。它讓手機能夠理解語音查詢,也讓圖像分析工具能夠輕松地從顯微照片中挑選出細胞。這就是 AlexNet 在改變科學、改變世界的工具中佔有一席之地的原因。
『伍』 eclipse問題
去修改下你的eclipse.ini,把裡面加上你原來使用的jdk路徑,格式如下 :
-vm
C:\..\java\jdk1.6.....;
如上方法去試試,也許能幫到你!
『陸』 求Karel機器人文件
http://www.stanford.e/class/cs106a/ 中resource中可以下載到
『柒』 一個C語言的問題,求解,挺簡單的
浮點數在計算機的二進制裡面是不能精確表示的,用0.1去轉換二進制的過程你會看到永遠都有餘數。
實際上0.1在計算機裡面存儲為 3DCCCCCD 十六進制,編譯器的debug查看內存就知道了
http://babbage.cs.qc.e/IEEE-754/32bit.html
你可以到這里查看這個十六進制實際上十進制是 0.10000000149011612
也就是說n在加的過程中不是精確的加的0.1,所以就不可能精確的加到10,n!=10永遠都滿足,就死循環了。
下面這個代碼列印出來d在計算機中實際表示的值,和在計算循環相加過程中n變化的情況。裡面n確實就沒有和10相等過。實際的d在計算機中也不是精確的0.1
#include <stdio.h>
void main(void)
{
float n, d = 0.1;
printf("%.20f\n", d);
for(n = 9;n <= 20;n += d)
printf("%.20f\n",n);
}
『捌』 《自然》評選改變科學的10個計算機代碼項目
從Fortran到arXiv.org,這些計算機編碼和平台讓生物學、氣候科學和物理學等學科的發展達到了真正「日新月異」的速度。
2019年,事件視界望遠鏡團隊讓世界首次看到了黑洞的樣子。不過,研究人員公布的這張發光環形物體的圖像並不是傳統的圖片,而是經過計算獲得的。利用位於美國、墨西哥、智利、西班牙和南極地區的射電望遠鏡所得到的數據,研究人員進行了數學轉換,最終合成了這張標志性的圖片。研究團隊還發布了實現這一壯舉所用的編程代碼,並撰文記錄這一發現,其他研究者也可以在此基礎上進一步加以分析。
這種模式正變得越來越普遍。從天文學到動物學,在現代每一項重大科學發現的背後,都有計算機的參與。美國斯坦福大學的計算生物學家邁克爾·萊維特因「為復雜化學系統創造了多尺度模型」與另兩位研究者分享了2013年諾貝爾化學獎,他指出,今天的筆記本電腦內存和時鍾速度是他在1967年開始獲獎工作時實驗室製造的計算機的1萬倍。「我們今天確實擁有相當可觀的計算能力,」他說,「問題在於,我們仍然需要思考。」
如果沒有能夠解決研究問題的軟體,以及知道如何編寫並使用軟體的研究人員,一台計算機無論再強大,也是毫無用處的。如今的科學研究從根本上已經與計算機軟體聯系在一起,後者已經滲透到研究工作的各個方面。近日,《自然》(Nature)雜志將目光投向了幕後,著眼於過去幾十年來改變科學研究的關鍵計算機代碼,並列出了其中10個關鍵的計算機項目。
這台CDC 3600型計算機於1963年交付給位於科羅拉多州博爾德的國家大氣研究中心,研究者在Fortran編譯器的幫助對其進行了編程
語言先驅:Fortran編譯器(1957年)
最初的現代計算機並不容易操作。當時的編程實際上是手工將電線連接成一排排電路來實現的。後來出現了機器語言和匯編語言,允許用戶用代碼為計算機編程,但這兩種語言都需要對計算機的架構有深入的了解,使得許多科學家難以掌握。
20世紀50年代,隨著符號語言的發展,特別是由約翰·巴克斯及其團隊在加州聖何塞的IBM開發的「公式翻譯」語言Fortran,這種情況發生了變化。利用Fortran,用戶可以用人類可讀的指令來編程,例如x = 3 + 5。然後由編譯器將這些指令轉換成快速、高效的機器代碼。
不過,這一過程仍然很不容易。早期的程序員使用打孔卡來輸入代碼,而復雜的模擬可能需要數萬張打孔卡。盡管如此,新澤西州普林斯頓大學的氣候學家真鍋淑郎(Syukuro Manabe)還是指出,Fortran讓非計算機科學家也能編程,「這是我們第一次能夠自己給計算機編程」。他和同事們利用這種語言開發的氣候模型是最早取得成功的模型之一。
Fortran發展至今已經到了第八個十年,它仍然廣泛應用於氣候建模、流體動力學、計算化學等學科,這些學科都涉及到復雜線性代數並需要強大的計算機來快速處理數字。Fortran生成的代碼速度很快,而且仍然有很多程序員知道如何編寫。古早的Fortran代碼庫仍然活躍在世界各地的實驗室和超級計算機上。「以前的程序員知道他們在做什麼,」美國海軍研究院的應用數學家和氣候模型師弗蘭克·吉拉爾多說,「他們非常注重內存,因為他們擁有的內存非常少。」
信號處理器:快速傅立葉變換(1965)
當射電天文學家掃描天空時,他們捕捉到的是隨時間變化的復雜信號雜音。為了理解這些無線電波的本質,他們需要看到這些信號作為頻率的函數時是什麼樣的。一種名為「傅里葉變換」的數學過程可以幫到研究人員,但它的效率很低,對於一個大小為N的數據集需要N^2次計算。
1965年,美國數學家詹姆斯·庫利和約翰·杜基想出了一種加速該過程的方法。快速傅里葉變換(FFT)通過遞歸(一種通過重復將問題分解為同類的子問題而解決問題的編程方法)將計算傅里葉變換的問題簡化為N log2(N)步。隨著N的增加,速度也會提高。對於1000個點,速度提升大約是100倍;100萬個點則是5萬倍。
這個「發現」實際上是一個再發現,因為德國數學家高斯在1805年就對此進行了研究,但他從未發表過。而詹姆斯·庫利和約翰·杜基做到了,他們開啟了傅里葉變換在數字信號處理、圖像分析、結構生物學等領域的應用,成為應用數學和工程領域的重大事件之一。FFT在代碼中的應用已有很多次,近年一個流行的方案是FFTW,被認為是世界上最快的FFT。
保羅·亞當斯是加州勞倫斯伯克利國家實驗室分子生物物理學和綜合生物成像部門的主任,他回憶稱,當他在1995年改進細菌蛋白質凝膠的結構時,即使使用FFT和超級計算機,也需要「很多個小時,甚至數天」的計算。「如果在沒有FFT的情況下嘗試做這些,我不知道在現實中應該如何做到,」他說,「那可能要花很長時間。」
分子編目:生物資料庫(1965年)
資料庫是當今科學研究中不可或缺的組成部分,以至於人們很容易忘記它們也是由軟體驅動的。過去的幾十年中,資料庫資源的規模急劇膨脹,影響了許多領域,但或許沒有哪個領域的變化會比生物學領域更引人注目。
蛋白質資料庫Protein Data Bank擁有超過17萬個分子結構的檔案,包括這種細菌的「表達子」(expressome),其功能是結合RNA和蛋白質合成的過程。
今天,科學家所用的龐大基因組和蛋白質資料庫源於美國物理化學家瑪格麗特·戴霍夫的工作,她也是生物信息學領域的先驅。20世紀60年代初,當生物學家們致力於梳理蛋白質的氨基酸序列時,戴霍夫開始整理這些信息,以尋找不同物種之間進化關系的線索。她與三位合著者於1965年發表了《蛋白質序列和結構圖譜》,描述了當時已知的65種蛋白質的序列、結構和相似性。 歷史 學家布魯諾·斯特拉瑟在2010年寫道,這是第一個「與特定研究問題無關」的數據集,它將數據編碼在打孔卡中,這使得擴展資料庫和搜索成為可能。
其他「計算機化」的生物資料庫緊隨其後。蛋白質資料庫Protein Data Bank於1971年投入使用,如今詳細記錄了超過17萬個大分子結構。加州大學聖地亞哥分校的進化生物學家拉塞爾·杜利特爾在1981年創建了另一個名為Newat的蛋白質資料庫。1982年,美國國立衛生研究院(NIH)與多個機構合作,成立了GenBank資料庫,這是一個開放獲取的DNA序列資料庫。
這些資料庫資源在1983年7月證明了其存在價值。當時,由倫敦帝國癌症研究基金會蛋白質生物化學家邁克爾·沃特菲爾德領導的團隊,與杜利特爾的團隊各自獨立報道了一個特殊的人類生長因子序列與一種導致猴子出現癌症的病毒蛋白質之間的相似性。觀察結果顯示了一種病毒誘發腫瘤機制——通過模仿一種生長因子,病毒會誘導細胞不受控制地生長。美國國家生物技術信息中心(NCBI)前主任詹姆斯·奧斯特爾說:「這一結果讓一些對計算機和統計學不感興趣的生物學家頭腦里靈光一閃:我們可以通過比較序列來了解有關癌症的一些情況。」
奧斯特爾還表示,這一發現標志著「客觀生物學的到來」。除了設計實驗來驗證特定的假設,研究人員還可以挖掘公共數據集,尋找那些實際收集數據的人可能從未想到的聯系。當不同的數據集連接在一起時,這種力量就會急劇增長。例如,NCBI的程序員在1991年通過Entrez實現了這一點;Entrez是一個可以讓研究人員在DNA、蛋白質和文獻之間自由檢索和比對的工具。
預測領先者:大氣環流模式(1969年)
在第二次世界大戰結束時,計算機先驅約翰·馮·諾伊曼開始將幾年前用於計算彈道軌跡和武器設計的計算機轉向天氣預測問題。真鍋淑郎解釋道,在那之前,「天氣預報只是經驗性的」,即利用經驗和直覺來預測接下來會發生什麼。相比之下,馮·諾伊曼的團隊「試圖基於物理定律進行數值天氣預測」。
新澤西州普林斯頓的美國國家海洋和大氣管理局(NOAA)地球物理流體動力學實驗室的建模系統部門負責人Venkatramani Balaji表示,幾十年來,人們已經熟知這些方程式。但早期的氣象學家無法實際解決這些問題。要做到這一點,需要輸入當前的條件,計算它們在短時間內會如何變化,並不斷重復。這個過程非常耗時,以至於在天氣狀況實際出現之前還無法完成數學運算。1922年,數學家劉易斯·弗萊·理查森花了幾個月時間計算德國慕尼黑的6小時預報。根據一段 歷史 記載,他的結果是「極不準確的」,包括「在任何已知的陸地條件下都不可能發生的」預測。計算機使這個問題變得很容易解決。
20世紀40年代末,馮·諾伊曼在普林斯頓高等研究院建立了天氣預報團隊。1955年,第二個團隊——地球物理流體動力學實驗室——開始進行他所謂的「無限預測」,也就是氣候建模。
真鍋淑郎於1958年加入氣候建模團隊,開始研究大氣模型;他的同事柯克·布萊恩將這一模型應用在海洋研究中。1969年,他們成功將二者結合起來,創造了《自然》雜志在2006年所說的科學計算「里程碑」。
今天的模型可以將地球表面劃分為一個個25公里 25公里的正方形,並將大氣層劃分為數十層。相比之下,真鍋淑郎和布萊恩的海洋-大氣聯合模型劃分的面積為500平方公里,將大氣分為9個層次,只覆蓋了地球的六分之一。盡管如此,Venkatramani Balaji表示,「這個模型做得很好」,使研究團隊第一次能夠通過計算機預測二氧化碳含量上升的影響。
數字運算機:BLAS(1979年)
科學計算通常涉及到使用向量和矩陣進行相對簡單的數學運算,但這樣的向量和矩陣實在太多了。但在20世紀70年代,還沒有一套普遍認可的計算工具來執行這些運算。因此,從事科學工作的程序員會將時間花在設計高效的代碼來進行基本的數學運算,而不是專注於科學問題。
加州勞倫斯利弗莫爾國家實驗室的Cray-1超級計算機。在BLAS編程工具於1979年問世之前,並沒有線性代數標准可供研究人員在Cray-1超級計算機等機器上工作
編程世界需要一個標准。1979年,這樣的標准出現了:基本線性代數程序集(Basic Linear Algebra Subprograms,簡稱BLAS)。這是一個應用程序介面(API)標准,用以規范發布基礎線性代數操作的數值庫,如矢量或矩陣乘法。該標准一直發展到1990年,為向量數學和後來矩陣數學定義了數十個基本常式。
美國田納西大學計算機科學家、BLAS開發團隊成員傑克·唐加拉表示,事實上,BLAS把矩陣和向量數學簡化成了和加法和減法一樣基本的計算單元。
美國德克薩斯大學奧斯汀分校的計算機科學家Robert van de Geijn指出,BLAS「可能是為科學計算定義的最重要的介面」。除了為常用函數提供標准化的名稱之外,研究人員還可以確保基於BLAS的代碼在任何計算機上以相同方式工作。該標准還使計算機製造商能夠優化BLAS的安裝啟用,以實現在其硬體上的快速操作。
40多年來,BLAS代表了科學計算堆棧的核心,也就是使科學軟體運轉的代碼。美國喬治·華盛頓大學的機械和航空航天工程師洛雷娜·巴爾巴稱其為「五層代碼中的機械」。而傑克·唐加拉說:「它為我們的計算提供了基礎結構。」
顯微鏡必備:NIH Image(1987年)
20世紀80年代初,程序員韋恩·拉斯班德在馬里蘭州貝塞斯達的美國國立衛生研究院的腦成像實驗室工作。該實驗室擁有一台掃描儀,可以對X光片進行數字化處理,但無法在電腦上顯示或分析。為此,拉斯班德寫了一個程序。
這個程序是專門為一台價值15萬美元的PDP-11小型計算機設計的,這是一台安裝在架子上的計算機,顯然不適合個人使用。然後,在1987年,蘋果公司發布了Macintosh II,這是一個更友好、更實惠的選擇。拉斯班德說:「在我看來,這顯然是一種更好的實驗室圖像分析系統。」他將軟體轉移到新的平台上,並重新命名,建立了一個圖像分析生態系統。
NIH Image及其後續版本使研究人員能在任何計算機上查看和量化幾乎任何圖像。該軟體系列包括ImageJ,一個拉斯班德為Windows和Linux用戶編寫的基於Java的版本;以及Fiji,這是ImageJ的分發版,由德國德累斯頓的馬克斯普朗克分子細胞生物學和遺傳學研究所的Pavel Tomancak團隊開發,其中包括關鍵的插件。「ImageJ無疑是我們所擁有的最基礎的工具,」布洛德研究所(由麻省理工學院和哈佛大學聯合創立)成像平台的計算生物學家貝絲·契米妮說,「我從來沒有和一個使用過顯微鏡,但沒有使用過ImageJ或Fiji的生物學家說過話。」
拉斯班德表示,部分原因可能是這些工具是免費的。但威斯康星大學麥迪遜分校的生物醫學工程師Kevin Eliceiri指出,另一個原因是用戶可以很容易地根據自己的需求定製工具。自拉斯班德退休後,Kevin Eliceiri的團隊一直領導著ImageJ的開發。ImageJ提供了一個看似簡單、極簡主義的用戶界面,自20世紀90年代以來基本上沒有改變。然而,由於其內置的宏記錄器(允許用戶通過記錄滑鼠點擊和菜單選擇的序列來保存工作流)、廣泛的文件格式兼容性和靈活的插件架構,該工具具有無限的可擴展性。該團隊的編程主管柯蒂斯·魯登表示,有「數以百計的人」為ImageJ貢獻了插件。這些新添加的功能極大擴展了研究人員的工具集,例如在視頻中跟蹤對象或自動識別細胞的功能。
Kevin Eliceiri說:「這個程序的目的不是做到一切或終結一切,而是服務於用戶的目標。不像Photoshop和其他程序,ImageJ可以成為你想要的任何東西。」
序列搜索器:BLAST (1990年)
可能沒有什麼能比把軟體名稱變成動詞更能說明文化的相關性了。提到搜索,你會想到谷歌;而提到遺傳學,研究者會立刻想到BLAST。
通過諸如替代、刪除、缺失和重排等方式,生物將進化中的改變蝕刻在分子序列中。尋找序列之間的相似性——特別是蛋白質之間的相似性——可以讓研究人員發現進化關系,並深入了解基因功能。在迅速膨脹的分子信息資料庫中,想要快速而准確地做到這一點並不容易。
瑪格麗特·戴霍夫在1978年提供了關鍵的進展。她設計了一種「點接受突變」矩陣,使研究人員不僅可以根據兩種蛋白質序列的相似程度,還可以根據進化距離來為評估它們的親緣關系。
1985年,弗吉尼亞大學的威廉·皮爾森和NCBI的大衛·利普曼引入了FASTP,這是一種結合了戴霍夫矩陣和快速搜索能力的演算法。
數年後,利普曼與NCBI的沃倫·吉什和斯蒂芬·阿特舒爾,賓夕法尼亞州立大學的韋伯·米勒,以及亞利桑那大學的吉恩·邁爾斯一起開發了一種更強大的改進技術:BLAST(Basic Local Alignment Search Tool)。BLAST發布於1990年,將處理快速增長的資料庫所需的搜索速度,與提取進化上更為遙遠的匹配結果的能力結合起來。與此同時,該工具還可以計算出這些匹配發生的概率。
阿特舒爾表示,計算結果出來得非常快,「你可以輸入搜索內容,喝一口咖啡,搜索就完成了。」但更重要的是,BLAST很容易使用。在一個通過郵寄更新資料庫的時代,沃倫·吉什建立了一個電子郵件系統,後來又建立了一個基於網路的架構,允許用戶在NCBI計算機上遠程運行搜索,從而確保搜索結果始終是最新的。
哈佛大學的計算生物學家肖恩·艾迪表示,BLAST系統為當時處於萌芽階段的基因組生物學領域提供了一個變革性的工具,即一種根據相關基因找出未知基因可能功能的方法。對於各地的測序實驗室,它還提供了一個新穎的動詞。「它是眾多由名詞變成動詞的例子之一,」艾迪說,「你會說,你正准備BLAST一下你的序列。」
預印本平台:arXiv.org (1991年)
20世紀80年代末,高能物理學家經常將他們已投稿的論文手稿副本郵寄給同行,徵求他們的意見——但只發給少數人。物理學家保羅·金斯帕格在2017年寫道:「處於食物鏈較低位置的人依賴於一線研究者的成果,而非精英機構中有抱負的研究人員則往往身處特權圈以外。」
1991年,當時在新墨西哥州洛斯阿拉莫斯國家實驗室工作的金斯帕格編寫了一個電子郵件自動應答程序,希望建立一個公平的競爭環境。訂閱者每天都會收到預印本列表,每一篇都與文章標識符相關聯。只需通過一封電子郵件,世界各地的用戶就可以從實驗室的計算機系統中提交或檢索論文,並獲得新論文的列表,或按作者或標題進行搜索。
金斯帕格的計劃是將論文保留三個月,並將內容限制在高能物理學界。但一位同事說服他無限期地保留這些文章。他說:「就在那一刻,它從布告欄變成了檔案館。」於是,論文開始從比各個領域如潮水般涌來。1993年,金斯伯格將這個系統遷移到互聯網上,並在1998年將其命名為arXiv.org,沿用至今。
arXiv成立已近30年,擁有約180萬份預印本,全部免費提供,而且每月有超過1.5萬份論文提交,下載量達3000萬次。十年前,《自然-光子學》(Nature Photonics)的編輯在評論arXiv創立20周年時寫道:「不難看出為什麼arXiv的服務會如此受歡迎,這個系統讓研究人員能快速而方便地插上旗幟,顯示他們所做的工作,同時避免投稿傳統同行評議期刊時的麻煩和時間成本。」
arXiv網站的成功也促進了生物學、醫學、 社會 學和其他學科同類預印本網站的繁榮。在如今已出版的數萬份關於新冠病毒的預印本中就可以看到這種影響。「很高興看到30年前在粒子物理學界之外被認為是異端的方法,現在被普遍認為是平淡無奇和自然而然的,」金斯伯格說,「從這個意義上說,它就像一個成功的研究項目。」
數據瀏覽器:IPython Notebook (2011年)
2001年,費爾南多·佩雷斯還是一位希望「尋找拖延症」的研究生,當時他決定採用Python的一個核心組件。
Python是一種解釋型語言,這意味著程序是逐行執行的。程序員可以使用一種稱為「讀取-評估-列印循環」(read–evaluate–print loop,簡稱REPL)的計算調用和響應工具,在其中輸入代碼,然後由解釋器執行代碼。REPL允許快速 探索 和迭代,但佩雷斯指出,Python的REPL並不是為科學目的而構建的。例如,它不允許用戶方便地預載入代碼模塊,也不允許打開數據可視化。因此,佩雷斯自己編寫了另一個版本。
結果就是IPython的誕生,這是一個「互動式」Python解釋器,由佩雷斯在2001年12月推出,共有259行代碼。十年後,佩雷斯與物理學家布萊恩·格蘭傑和數學家埃文·帕特森合作,將該工具遷移到web瀏覽器上,推出了IPython Notebook,開啟了一場數據科學革命。
與其他計算型Notebook一樣,IPython Notebook將代碼、結果、圖形和文本合並在一個文檔中。但與其他類似項目不同的是,IPython Notebook是開源的,邀請了大量開發者社區的參與其中。而且它支持Python,一種很受科學家歡迎的語言。2014年,IPython演變為Jupyter,支持大約100種語言,允許用戶在遠程超級計算機上 探索 數據,就像在自己的筆記本電腦上一樣輕松。
《自然》雜志在2018年寫道:「對於數據科學家,Jupyter實際上已經成為一個標准。」當時,在GitHub代碼共享平台上有250萬個Jupyter Notebook;如今,這一數字已經發展到1000萬個,在2016年引力波的發現,以及2019年的黑洞成像工作中,它們都發揮了重要的作用。佩雷斯說:「我們對這些項目做出了很小的貢獻,這是非常值得的。」
快速學習器:AlexNet(2012年)
人工智慧有兩種類型。一種是使用編碼規則,另一種則通過模擬大腦的神經結構來讓計算機「學習」。加拿大多倫多大學的計算機科學家傑弗里•辛頓表示,幾十年來,人工智慧研究人員一直認為後者是「一派胡言」。但在2012年,他的研究生亞力克斯·克里澤夫斯基和伊爾亞·蘇茨克維證明了事實並非如此。
在一年一度的ImageNet比賽中,研究人員被要求在一個包含100萬張日常物體圖像的資料庫中訓練人工智慧,然後在一個單獨圖像集上測試生成的演算法。辛頓表示,當時最好的演算法錯誤分類了大約四分之一的圖像。克里澤夫斯基和蘇茨克維的AlexNet是一種基於神經網路的「深度學習」演算法,它將錯誤率降低到了16%。辛頓說:「我們基本上把錯誤率減半了,或者說幾乎減半了。」
辛頓還指出,該團隊在2012年的成功反映了足夠大的訓練數據集與出色的編程,以及新出現的圖形處理單元的強大能力的結合。圖形處理單元是最初設計用來加速計算機視頻性能的處理器。「突然之間,我們可以將(演算法)運行速度提高30倍,」他說,「或者說,學習多達30倍的數據。」
真正的演算法突破實際上發生在三年前,當時辛頓的實驗室創建了一個神經網路,可以比經過幾十年改進的傳統人工智慧更准確地識別語音。「只是稍微好一點,」辛頓說,「但這已經預示了某些東西。」
這些成功預示著深度學習在實驗室研究、臨床醫學和其他領域的崛起。通過人工智慧的深度學習,手機能夠理解語音查詢,圖像分析工具能夠很容易地在顯微照片中識別出細胞;這就是為什麼AlexNet會成為眾多從根本上改變科學,也改變世界的工具之一。(任天)
