精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

普林斯頓博士:手寫30個主流機器學習算法,全都開源了!

新機器視覺 ? 來源:KK機器學習算法 ? 2023-08-21 15:58 ? 次閱讀

Hello,我是kk~

NumPy 作為 Python 生態中最受歡迎的科學計算包,很多讀者已經非常熟悉它了。它為 Python 提供高效率的多維數組計算,并提供了一系列高等數學函數,我們可以快速搭建模型的整個計算流程。毫不負責任地說,NumPy 就是現代深度學習框架的「爸爸」。

盡管目前使用 寫模型已經不是主流,但這種方式依然不失為是理解底層架構和深度學習原理的好方法。最近,來自普林斯頓的一位博士后將 NumPy 實現的所有機器學習模型全部開源,并提供了相應的論文和一些實現的測試效果。

  • 項目地址:https://github.com/ddbourgin/numpy-ml

根據機器之心的粗略估計,該項目大約有 30 個主要機器學習模型,此外還有 15 個用于預處理和計算的小工具,全部.py 文件數量有 62 個之多。平均每個模型的代碼行數在 500 行以上,在神經網絡模型的 layer.py 文件中,代碼行數接近 4000。

這,應該是目前用 NumPy 手寫機器學習模型的「最高境界」吧。

誰用 NumPy 手推了一大波 ML 模型

通過項目的代碼目錄,我們能發現,作者基本上把主流模型都實現了一遍,這個工作量簡直驚為天人。我們發現作者 David Bourgin 也是一位大神,他于 2018 年獲得加州大學伯克利分校計算認知科學博士學位,隨后在普林斯頓大學從事博士后研究。

盡管畢業不久,David 在頂級期刊與計算機會議上都發表了一些優秀論文。在最近結束的 ICML 2019 中,其關于認知模型先驗的研究就被接收為少有的 Oral 論文。


David Bourgin 小哥哥就是用 NumPy 手寫 ML 模型、手推反向傳播的大神。這么多的工作量,當然還是需要很多參考資源的,David 會理解這些資源或實現,并以一種更易讀的方式寫出來。

正如 reddit 讀者所質疑的:在 autograd repo 中已經有很多這樣的例子,為什么你還要做這個項目?

作者表示,他的確從 autograd repo 學到了很多,但二者的不同之處在于,他顯式地進行了所有梯度計算,以突出概念/數學的清晰性。當然,這么做的缺點也很明顯,在每次需要微分一個新函數時,你都要寫出它的公式……

估計 David Bourgin 小哥哥在寫完這個項目后,機器學習基礎已經極其牢固了。最后,David 表示下一步會添加文檔和示例,以方便大家使用。

項目總體介紹

這個項目最大的特點是作者把機器學習模型都用 NumPy 手寫了一遍,包括更顯式的梯度計算和反向傳播過程??梢哉f它就是一個機器學習框架了,只不過代碼可讀性會強很多。

David Bourgin 表示他一直在慢慢寫或收集不同模型與模塊的純 NumPy 實現,它們跑起來可能沒那么快,但是模型的具體過程一定足夠直觀。每當我們想了解模型 API 背后的實現,卻又不想看復雜的框架代碼,那么它可以作為快速的參考。

文章后面會具體介紹整個項目都有什么模型,這里先簡要介紹它的整體結構。如下所示為項目文件,不同的文件夾即不同種類的代碼集。

97e289c0-3f5c-11ee-ac96-dac502259ad0.jpg

在每一個代碼集下,作者都會提供不同實現的參考資料,例如模型的效果示例圖、參考論文和參考鏈接等。如下所示,David 在實現神經網絡層級的過程中,還提供了參考論文。

98005072-3f5c-11ee-ac96-dac502259ad0.jpg

當然如此龐大的代碼總會存在一些 Bug,作者也非常希望我們能一起完善這些實現。如果我們以前用純 NumPy 實現過某些好玩的模型,那也可以直接提交 PR 請求。因為實現基本上都只依賴于 NumPy,那么環境配置就簡單很多了,大家差不多都能跑得動。

手寫 NumPy 全家福

作者在 GitHub 中提供了模型/模塊的實現列表,列表結構基本就是代碼文件的結構了。整體上,模型主要分為兩部分,即傳統機器學習模型與主流的深度學習模型。

其中淺層模型既有隱馬爾可夫模型和提升方法這樣的復雜模型,也包含了線性回歸或最近鄰等經典方法。而深度模型則主要從各種模塊、層級、、最優化器等角度搭建代碼架構,從而能快速構建各種神經網絡。

除了模型外,整個項目還有一些輔助模塊,包括一堆預處理相關的組件和有用的小工具。

該 repo 的模型或代碼結構如下所示:

1. 高斯混合模型

  • EM 訓練

2. 隱馬爾可夫模型

  • 維特比解碼

  • 似然計算

  • 通過 Baum-Welch/forward-backward 算法進行 MLE 參數估計

3. 隱狄利克雷分配模型(主題模型)

  • 用變分 EM 進行 MLE 參數估計的標準模型

  • 用 MCMC 進行 MAP 參數估計的平滑模型

4. 神經網絡

4.1 層/層級運算

  • Add

  • Flatten

  • Multiply

  • Softmax

  • 全連接/Dense

  • 稀疏進化連接

  • LSTM

  • Elman 風格的 RNN

  • 最大+平均池化

  • 點積注意力

  • 受限玻爾茲曼機 (w. CD-n training)

  • 2D 轉置卷積 (w. padding 和 stride)

  • 2D 卷積 (w. padding、dilation 和 stride)

  • 1D 卷積 (w. padding、dilation、stride 和 causality)

4.2 模塊

  • 雙向 LSTM

  • ResNet 風格的殘差塊(恒等變換和卷積)

  • WaveNet 風格的殘差塊(帶有擴張因果卷積)

  • Transformer 風格的多頭縮放點積注意力

4.3 正則化項

  • Dropout

  • 歸一化

  • 批歸一化(時間上和空間上)

  • 層歸一化(時間上和空間上)

4.4 優化器

  • SGD w/ 動量

  • AdaGrad

  • RMSProp

4.5 學習率調度器

  • 常數

  • 指數

  • Noam/Transformer

  • Dlib 調度器

4.6 權重初始化器

  • Glorot/Xavier uniform 和 normal

  • He/Kaiming uniform 和 normal

  • 標準和截斷正態分布初始化

4.7 損失

  • 交叉熵

  • 平方差

  • Bernoulli VAE 損失

  • 帶有梯度懲罰的 Wasserstein 損失

4.8 激活函數

  • ReLU

  • Tanh

  • Affine

  • Sigmoid

  • Leaky ReLU

4.9 模型

  • Bernoulli 變分自編碼器

  • 帶有梯度懲罰的 Wasserstein GAN

4.10 神經網絡工具

  • col2im (MATLAB 端口)

  • im2col (MATLAB 端口)

  • conv1D

  • conv2D

  • deconv2D

  • minibatch

5. 基于樹的模型

  • 決策樹 (CART)

  • [Bagging] 隨機森林

  • [Boosting] 梯度提升決策樹

6. 線性模型

  • 嶺回歸

  • Logistic 回歸

  • 最小二乘法

  • 貝葉斯線性回歸 w/共軛先驗

7.n 元序列模型

  • 最大似然得分

  • Additive/Lidstone 平滑

  • 簡單 Good-Turing 平滑

8. 強化學習模型

  • 使用交叉熵方法的智能

  • 首次訪問 on-policy 蒙特卡羅智能體

  • 加權增量重要采樣蒙特卡羅智能體

  • Expected SARSA 智能體

  • TD-0 Q-learning 智能體

  • Dyna-Q / Dyna-Q+ 優先掃描

9. 非參數模型

  • Nadaraya-Watson 核回歸

  • k 最近鄰分類與回歸

10. 預處理

  • 離散傅立葉變換 (1D 信號)

  • 雙線性插值 (2D 信號)

  • 最近鄰插值 (1D 和 2D 信號)

  • 自相關 (1D 信號)

  • 信號窗口

  • 文本分詞

  • 特征哈希

  • 特征標準化

  • One-hot 編碼/解碼

  • Huffman 編碼/解碼

  • 詞頻逆文檔頻率編碼

11. 工具

  • 相似度核

  • 距離度量

  • 優先級隊列

  • Ball tree 數據結構

項目示例

由于代碼量龐大,機器之心在這里整理了一些示例。

例如,實現點積注意力機制:

9830a40c-3f5c-11ee-ac96-dac502259ad0.png

classDotProductAttention(LayerBase):
def__init__(self,scale=True,dropout_p=0,init="glorot_uniform",optimizer=None):
super().__init__(optimizer)
self.init=init
self.scale=scale
self.dropout_p=dropout_p
self.optimizer=self.optimizer
self._init_params()

def_fwd(self,Q,K,V):
scale=1/np.sqrt(Q.shape[-1])ifself.scaleelse1
scores=Q@K.swapaxes(-2,-1)*scale#attentionscores
weights=self.softmax.forward(scores)#attentionweights
Y=weights@V
returnY,weights

def_bwd(self,dy,q,k,v,weights):
d_k=k.shape[-1]
scale=1/np.sqrt(d_k)ifself.scaleelse1

dV=weights.swapaxes(-2,-1)@dy
dWeights=dy@v.swapaxes(-2,-1)
dScores=self.softmax.backward(dWeights)
dQ=dScores@k*scale
dK=dScores.swapaxes(-2,-1)@q*scale
returndQ,dK,dV

在以上代碼中,Q、K、V 三個向量輸入到「_fwd」函數中,用于計算每個向量的注意力分數,并通過 softmax 的方式得到權重。而「_bwd」函數則計算 V、注意力權重、注意力分數、Q 和 K 的梯度,用于更新網絡權重。

在一些實現中,作者也進行了測試,并給出了測試結果。如圖為隱狄利克雷(Latent Dirichlet allocation,LDA)實現進行文本聚類的結果。左圖為詞語在特定主題中的分布熱力圖。右圖則為文檔在特定主題中的分布熱力圖。

9846ccc8-3f5c-11ee-ac96-dac502259ad0.jpg

圖注:隱狄利克雷分布實現的效


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4600

    瀏覽量

    92647
  • 開源
    +關注

    關注

    3

    文章

    3254

    瀏覽量

    42408
  • 模型
    +關注

    關注

    1

    文章

    3174

    瀏覽量

    48716
  • 機器學習
    +關注

    關注

    66

    文章

    8378

    瀏覽量

    132415

原文標題:普林斯頓博士:手寫30個主流機器學習算法,全都開源了!

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    普林斯頓研究員宣稱量子計算再獲突破

    電子發燒友網訊【編譯/David】:來自普林斯頓大學的研究員開發出能讀取自旋電子信息的技術,在量子計算潛在障礙中再前進一步。
    的頭像 發表于 10-22 11:17 ?3920次閱讀

    普林斯頓研發出世界首枚光子神經形態芯片 以證明其超算能力

    據《麻省理工技術評論》雜志網站近日報道,美國普林斯頓大學的科研團隊日前研制出全球首枚光子神經形態芯片,并證明其能以超快速度計算。 該芯片有望開啟一全新的光子計算產業。普林斯頓大學亞力山大·泰特團隊
    發表于 11-21 15:14 ?843次閱讀
    <b class='flag-5'>普林斯頓</b>研發出世界首枚光子神經形態芯片 以證明其超算能力

    11機器學習開源項目

    隨著機器學習越來越受到開發者關注,出現很多機器學習開源項目,在本文列舉的11
    發表于 02-14 14:25 ?2797次閱讀

    機器學習可以用來預測多維化學空間中合成反應的性能

    Science在線發表普林斯頓大學Abigail G. Doyle、Merck Sharp & Dohme公司Spencer D. Dreher(共同通訊)等人題為“Predicting
    的頭像 發表于 04-29 15:43 ?5108次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>可以用來預測多維化學空間中合成反應的性能

    機器學習初學者最受歡迎的30開源項目

    專注于編程領域內容評選的網站 MyBridge 今年年初對 8800 開源機器學習項目進行了綜合比較,從中選出了最好的 30
    發表于 05-08 11:43 ?6939次閱讀

    普林斯頓大學與英特爾合作,繪制大腦“地圖”

    在美國普林斯頓神經科學研究所的一實驗室里,一群受試者正在看圖片、看電影、聽廣播,而科學家們則通過功能性磁共振成像(fMRI)來追蹤他們的大腦活動。
    的頭像 發表于 08-17 17:00 ?3424次閱讀

    2018年值得收藏的30機器學習案例

    在過去的一年里,我們比較近8800開源機器學習項目,并從中評選出了前30名(0.3%的機會
    的頭像 發表于 10-06 09:58 ?1.2w次閱讀

    如何理解深度學習?深度學習的理論探索分析

    普林斯頓大學計算機科學系教授Sanjeev Arora做了深度學習理論理解探索的報告,包括三部分:
    的頭像 發表于 10-03 12:41 ?3664次閱讀

    海外大學生研發AI模型,可快速生成中國山水畫

    近日,普林斯頓大學本科生Alice Xue的畢業論文,獲得了普林斯頓2020優秀畢業論文獎。
    的頭像 發表于 12-02 09:47 ?1913次閱讀

    誰用NumPy手推了一大波ML模型?

    盡管目前使用 NumPy 寫模型已經不是主流,但這種方式依然不失為是理解底層架構和深度學習原理的好方法。最近,來自普林斯頓的一位博士后將 NumPy 實現的所有
    的頭像 發表于 11-18 14:47 ?388次閱讀

    希荻微與普林斯頓大學合作研究下一代芯粒技術供電架構

    來源:《半導體芯科技》雜志 今年2月,一項題為《功率轉換電路與電子設備》的專利(CN202211387831X)獲得授權,其共同專利權人為廣東希荻微電子股份有限公司和普林斯頓大學。 隨著人工智能和云
    的頭像 發表于 07-21 16:13 ?499次閱讀
    希荻微與<b class='flag-5'>普林斯頓</b>大學合作研究下一代芯粒技術供電架構

    機器學習算法入門 機器學習算法介紹 機器學習算法對比

    機器學習算法入門 機器學習算法介紹 機器
    的頭像 發表于 08-17 16:27 ?924次閱讀

    機器學習有哪些算法?機器學習分類算法有哪些?機器學習預判有哪些算法?

    機器學習有哪些算法機器學習分類算法有哪些?機器
    的頭像 發表于 08-17 16:30 ?1939次閱讀

    普林斯頓儀器為燃燒領域的研究提供一臂之力

    普林斯頓儀器作為科研儀器的領軍者,生產的各種高性能相機和光譜儀,在量子研究、生物拉曼、活體成像、X射線探測、太陽能電池以及燃燒等許多應用領域已成為不可分割的組成部分。現在,由小編帶領大家探索科學研究
    的頭像 發表于 02-01 06:32 ?467次閱讀
    <b class='flag-5'>普林斯頓</b>儀器為燃燒領域的研究提供一臂之力

    普林斯頓大學聯手DARPA研發人工智能芯片

    來自普林斯頓大學的電氣和計算機工程教授納文·維爾馬(Naveen Verma)在本次合作中扮演了重要角色。他表示,新硬件的重新設計使得AI芯片能夠適應當前工作負載,同時消耗更少能源就能驅動高效能的AI系統。
    的頭像 發表于 03-10 13:34 ?694次閱讀