那曲檬骨新材料有限公司

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

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

3天內不再提示

從頭開始編寫任何機器學習算法的6個步驟

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-09-28 09:40 ? 次閱讀

本文以單層感知器為案例,介紹從頭開始編寫任何機器學習算法的6個步驟。這些方法可以很容易地用于其他機器學習算法。

從頭開始編寫算法是一種有益的體驗,當你最終點擊運行的那一刻,你會了解算法背后真正發生了什么。

如果你以前用scikit-learn實現過這個算法,從頭開始編寫就會很容易?不是這樣。

有些算法只是比其他算法更復雜,所以可以從簡單的開始,比如單層感知器(Perceptron)。

本文將以感知器為案例,引導你完成從頭開始編寫算法的6個步驟。這種方法可以很容易地用于編寫其他機器學習算法。

1. 對算法有一個基本的了解

這又回到了我最初所說的。如果你不了解基礎知識,請不要從頭開始處理算法。至少,你應該能夠回答以下問題:

它是什么?

它通常用于做什么?

什么時候不能使用它?

對于感知器,上面三個問題的答案是:

單層感知器是最基本的神經網絡,通常用于二進制分類問題(1或0,“是”或“否”)。

它是一個線性分類器,因此只有在存在線性決策邊界的情況下才能有效使用。一些簡單的用途可以是情緒分析(正面或負面反應)或貸款違約預測(“會違約”,“不會違約”)。對于這兩種情況,決策邊界都必須是線性的。

如果決策邊界是非線性的,那么你實際上無法使用感知器。對于這些問題,需要使用其他算法。

2. 找到各種類型的學習資源

在對模型有了基本的了解之后,是時候開始進行研究了。我建議使用大量資源。有些人用教科書學得更好,有些人用視頻學得更好。就我個人而言,我喜歡使用各種類型的資源。對于數學細節,教科書的解釋很好,但對于更實際的例子,我更喜歡看博客文章和YouTube視頻。

對于感知器,這里有一些很棒的資源。

教材:

《統計學習基礎》,第4.5.1節

《深入理解機器學習:從原理到算法》,第21.4節

博客:

JasonBrownlee的Machine Learning Mastery系列文章,其中一篇是《如何用Python從頭開始實現感知器算法》:

https://machinelearningmastery.com/implement-perceptron-algorithm-scratch-python/

SebastianRaschka的博客,Single-Layer Neural Networks and Gradient Descent

https://sebastianraschka.com/Articles/2015_singlelayer_neurons.html

視頻:

感知器訓練:

https://www.youtube.com/watch?v=5g0TPrxKK6o

Perceptron算法的工作原理

https://www.youtube.com/watch?v=1XkjVl-j8MM

3. 將算法分解為塊

現在,我們已經收集了需要的資料,是時候開始學習了。與其從頭到尾閱讀書本或博客文章,不如先瀏覽一下章節標題和其他重要信息。寫下要點,并嘗試概述算法。

在瀏覽完這些資料后,我們可以將Perceptron算法分解為以下幾個塊(chunks):

初始化權重

將輸入乘以權重,并求和

將結果與閾值進行比較,并計算輸出(1或0)

更新權重

重復這個過程

將算法分解成這樣的塊,可以使得學習更容易。基本上,我已經使用偽代碼概述了這個算法,現在可以回過頭來填寫細節了。 下面這張圖是第二步的筆記,即權重和輸入的點積:

4. 從一個簡單的例子開始

在整理好算法相關的筆記后,是時候開始在代碼中實現它了。

在深入研究一個復雜的問題之前,我想先從一個簡單的例子開始。對于感知器,NAND gate(與非門)是一個完美的簡單數據集。如果兩個輸入都為真(1),則輸出為假(0),否則輸出為真。下面是數據集的一個示例:

現在,有了一個簡單的數據集,我將開始實現我在步驟3中概述的算法。最好將這個算法分成塊編寫并進行測試,而不是試圖一次性寫完。這樣在剛開始時更容易調試。

下面是我在步驟3中概述的算法點積部分的Python代碼示例:

5. 使用可信的實現進行驗證

我們已經編寫了代碼,并針對一個小數據集進行了測試,現在是時候擴展到更大的數據集了。為了確保我們的代碼在這個更復雜的數據集上正確工作,最好在一個可信的實現上對其進行測試。對于感知器,我們可以使用scikit-learn中的實現。

為了測試代碼,我將檢查權重。如果正確地實現了算法,我的權重應該與scikit-learn中感知器的權重相匹配。

一開始,我沒有得到相同的權重,這是因為我不得不調整scikit-learn Perceptron中的默認設置。我并不是每次都實現一個新的隨機狀態,而只是一個fixed seed,所以不得不關閉它。shuffling也是這樣,也需要關閉它。為了匹配學習率,我將eta0改為0.1。最后,我關閉了fit_intercept選項。我在特征數據集中包含了一個1的虛擬列,所以已經自動擬合了偏差項。

這引出了另一個重要的問題。在驗證模型的現有實現時,你需要非常清楚模型的輸入。你不應盲目地使用模型,而要總是質疑你的假設,以及每個輸入的確切含義。

6. 寫下你的過程

這個過程的最后一步可能是最重要的。 你已經完成所有的學習工作,做了筆記,從頭開始編寫了算法,并將它與可信的實現進行了比較。那么不要讓所有這些工作白白浪費掉。編寫流程非常重要,原因是:

你會得到更深刻的理解,因為這樣做相當于在教別人你剛學到的東西。你可以向潛在的雇主展示它。證明你可以利用機器學習庫實現算法是一回事,但如果你可以從頭開始實現一個算法,那就更令人印象深刻了。

結論

從頭開始編寫算法是一種非常有益的體驗。這是深入了解模型、構建一個令人印象深刻的項目組合的好方法。

記得要慢慢來,從簡單的事情開始吧。最重要的是,一定要記錄和分享你的工作。

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

    關注

    42

    文章

    4779

    瀏覽量

    101171
  • 算法
    +關注

    關注

    23

    文章

    4630

    瀏覽量

    93355
  • 機器學習
    +關注

    關注

    66

    文章

    8438

    瀏覽量

    133086

原文標題:只需6步,從頭開始編寫機器學習算法

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    經典算法大全(51C語言算法+單片機常用算法+機器學十大算法

    算法的描述:是對要解決一問題或要完成一項任務所采取的方法和步驟的描述,包括需要什么數據(輸入什么數據、輸出什么結果)、采用什么結構、使用什么語句以及如何安排這些語句等。通常使用自然語言、結構化
    發表于 10-23 14:31

    MikroElektronika的mikroBUS Click板是否從頭開始的制作?

    的示例代碼,因此您不必從頭開始。2x2按鍵單擊,FLICKER單擊,Arduino UNO單擊Shield我想用Click板創建一項目來展示它們,但有數百選項我無法決定該怎么做。起初我想抓住一些像
    發表于 10-31 07:10

    如何使用和聲從頭開始設置HTTP服務?

    有沒有關于如何使用和聲從頭開始設置HTTP服務的最新教程/設置?(不是從演示項目開始
    發表于 04-08 09:39

    ARM嵌入式系統設計:從頭開始構建還是使用SBC?

    一些是早期產品的迭代。對于他們而言,開發一可在其整個產品組合中使用的標準平臺是一種可行的替代方案,而不是為每個新產品從頭開始進行新設計。選擇特定的微控制器或微處理器產品系列,這些產品在一系列處理器速度
    發表于 10-21 10:11

    Excel本身就能編寫大量基礎機器學習算法

    作為一名數據工作者,這年頭“熟悉機器學習算法”遠比“精通Excel”在求職市場上要搶手得多,但前者的“熟悉”究竟是熟悉到什么程度呢?Excel本身就能編寫大量基礎
    的頭像 發表于 06-21 10:18 ?6202次閱讀
    Excel本身就能<b class='flag-5'>編寫</b>大量基礎<b class='flag-5'>機器</b><b class='flag-5'>學習</b><b class='flag-5'>算法</b>

    如果要從事機器學習方面的研發,可以按照以下幾個步驟學習

    具備軟件開發能力的程序員,轉向機器學習領域會更容易一些,但是即使沒有軟件開發基礎,如果具備扎實的數學基礎以及較強的學習能力,也完全可以從頭開始學習
    的頭像 發表于 09-20 10:26 ?3247次閱讀

    人工智能正在學習量子力學以此來設計新分子

    一種新的機器學習算法可以探測分子的量子行為,從而使化學家具有更好的從頭開始設計新化合物的能力。
    發表于 12-03 10:30 ?2482次閱讀

    TensorFlow Quantum將允許用戶編寫Quantum應用程序

    它是做什么的?TensorFlow是使機器學習變得更容易訪問的眾多工具之一,它簡化了深度神經網絡,并提供可重用代碼,這樣新的機器學習應用程序就不必
    的頭像 發表于 04-15 15:27 ?2180次閱讀

    從頭開始構建無人機

    電子發燒友網站提供《從頭開始構建無人機.zip》資料免費下載
    發表于 11-22 10:35 ?1次下載
    <b class='flag-5'>從頭開始</b>構建無人機

    如何從頭開始制作六足機器

    電子發燒友網站提供《如何從頭開始制作六足機器人.zip》資料免費下載
    發表于 11-23 09:53 ?2次下載
    如何<b class='flag-5'>從頭開始</b>制作六足<b class='flag-5'>機器</b>人

    PyTorch教程3.4之從頭開始執行線性回歸

    電子發燒友網站提供《PyTorch教程3.4之從頭開始執行線性回歸.pdf》資料免費下載
    發表于 06-05 11:25 ?0次下載
    PyTorch教程3.4之<b class='flag-5'>從頭開始</b>執行線性回歸

    PyTorch教程4.4之從頭開始實現Softmax回歸

    電子發燒友網站提供《PyTorch教程4.4之從頭開始實現Softmax回歸.pdf》資料免費下載
    發表于 06-05 15:37 ?0次下載
    PyTorch教程4.4之<b class='flag-5'>從頭開始</b>實現Softmax回歸

    PyTorch教程-3.4. 從頭開始執行線性回歸

    3.4. 從頭開始執行線性回歸? Colab [火炬]在 Colab 中打開筆記本 Colab [mxnet] Open the notebook in Colab Colab [jax
    的頭像 發表于 06-05 15:38 ?530次閱讀
    PyTorch教程-3.4. <b class='flag-5'>從頭開始</b>執行線性回歸

    在Spartan 6 FPGA上從頭開始實現全加器

    電子發燒友網站提供《在Spartan 6 FPGA上從頭開始實現全加器.zip》資料免費下載
    發表于 06-15 10:13 ?0次下載
    在Spartan <b class='flag-5'>6</b> FPGA上<b class='flag-5'>從頭開始</b>實現全加器

    機器學習算法匯總 機器學習算法分類 機器學習算法模型

    是解決具體問題的一系列步驟機器學習算法被設計用于從大量的數據中自動學習并不斷改進自身的性能。本文將為大家介紹
    的頭像 發表于 08-17 16:11 ?1168次閱讀
    真人百家乐斗地主| 网上百家乐骗人吗| 阿巴嘎旗| 百家乐游戏种类| 鄂尔多斯市| 大发888官方指定| 波音百家乐现金网投注平台排名导航| 万豪网| 线上百家乐的玩法技巧和规则 | 大发888手机版官网| 夜总会百家乐官网的玩法技巧和规则| 亲朋棋牌下载| 百家乐之三姐妹赌博机| 手机百家乐官网的玩法技巧和规则 | 百家乐官网有多少局| 大发888好么| 找真人百家乐的玩法技巧和规则 | 网络百家乐路子玩| 百家乐官网视| 澳门百家乐官网家用保险柜| 明升国际娱乐| 永利高a1娱乐城送彩金| 百家乐连长| 百家乐官网伴侣破解版| 来博百家乐官网游戏| 六合彩大全| 大发888网页版| 迪威百家乐赌场娱乐网规则| 百家乐的代理办法| 破战百家乐官网的玩法技巧和规则 | 棋牌类玩具| 百家乐vshow| 百家乐破解视频| 网上百家乐官网是现场吗| 真人百家乐官网888| 宜君县| 水果机游戏机| 百家乐看| 赌博百家乐秘籍| 百家乐博彩策略论坛| 百家乐官网扑克牌手机壳|