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

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

3天內(nèi)不再提示

機器學習研究需要掌握的9個工具

穎脈Imgtec ? 2023-10-12 08:28 ? 次閱讀

學術(shù)界在推進技術(shù)方面發(fā)揮了巨大作用,但學術(shù)界和工業(yè)界往往存在一種分割狀態(tài)。我們經(jīng)常會看到這種現(xiàn)象:無數(shù)很棒的輔助工具在學術(shù)界被忽視,但在工業(yè)界很受歡迎。對于很多研究者來說,學習一種新工具可能存在困難,不愿意花費過多的時間去嘗試,在當前自己掌握的工具足以應(yīng)對各種問題時尤其如此。

其實,有些工具一時未見到效果,在后期可能會有十倍的回報。

來自劍橋大學的計算機科學博士生 Aliaksei Mikhailiuk為我們整理了機器學習博士在獲得學位之前需要掌握的九種工具。他在劍橋大學獲得物理學碩士學位,在布里斯托大學獲得工程學士學位。他對研究、開發(fā)、部署感興趣,還能熟練掌握計算機視覺算法聚合和自然語言處理等技術(shù)?,F(xiàn)任職華為(英國)高級人工智能工程師。

Mikhailiuk 將這些工具按用途分為四類:可隔離環(huán)境、實驗跟蹤、相互協(xié)作以及可視化


一、可隔離環(huán)境工具

機器學習是一個快速發(fā)展的領(lǐng)域,常用的包更新非常頻繁。盡管開發(fā)人員做出了努力,但較新的版本通常與舊版本不兼容,這樣給研究者帶來很多麻煩。幸運的是,有工具可以解決這個問題!在這一方面,Mikhailiuk 推薦了兩個工具:Docker 和 Conda。

1. Docker

Mikhailiuk 攻讀博士學位期間,他有一臺由大學管理的機器,學校會定期進行更新。通常情況下是一夜之間更新,沒有任何通知。你可以想象,當更新后的第二天早上發(fā)現(xiàn)自己大部分工作與最新的驅(qū)動程序不兼容,是多么令人崩潰。Mikhailiuk 發(fā)現(xiàn) Docker 可以很好地解決。

Docker 允許將軟件包裝在稱為容器的包中。容器是具有自己的軟件、庫和配置文件的獨立單元。在一個簡化的視圖中,容器是一個獨立的虛擬操作系統(tǒng),它具有與外部世界通信的手段。Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 或 Windows 操作系統(tǒng)的機器上,也可以實現(xiàn)虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。一個完整的 Docker 由以下幾個部分組成:

  • DockerClient 客戶端
  • Docker Daemon 守護進程
  • Docker Image 鏡像
  • DockerContainer 容器

2. Conda

現(xiàn)在,復(fù)用別人的代碼成為了一種新的規(guī)范。GitHub 作為一個代碼托管云服務(wù)網(wǎng)站,幫助開發(fā)者存儲和管理其項目源代碼,且能夠追蹤、記錄并控制用戶對其代碼的修改。研究者可以克隆上面的代碼,安裝并提出自己的解決方案,而不需要自己寫任何東西。

但是 GitHub 也有不方便的情況,當多個項目一起使用時,你會遇到包管理問題,因為不同的項目需要不同版本的包。

Conda 可以解決這個問題 。Conda 是一個開源跨平臺語言無關(guān)的包管理與環(huán)境管理系統(tǒng),它允許創(chuàng)建多個環(huán)境并快速安裝、運行和更新包及其依賴項,用戶可以在隔離的環(huán)境之間快速切換。


二、運行、跟蹤和記錄實驗工具

在應(yīng)用領(lǐng)域想要獲得博士學位,嚴謹性和一致性是兩個基本支柱。假如你是研究機器學習模型的,或多或少都能遇到這種情況——你創(chuàng)建了許多不同的模型來試驗不同的參數(shù)甚至整個架構(gòu)。你還想嘗試優(yōu)化器的選擇、學習率、時期數(shù)等。因此,實際上,你將進行許多不同的實驗,并且將越來越難以整理結(jié)果。在這一方面,Aliaksei Mikhailiuk 向我們展示了如何正確方便地管理和記錄自己的 ML 和 DL 實驗工具,主要推薦了 Weights & Biases,MLFlow,Screen 工具。

3. Weights & Biases

3a49f7f4-6896-11ee-9788-92fbcf53809c.png

▲wandb panel 一組簡單指標 Snapshot——訓(xùn)練損失、學習率和平均驗證損失。請注意,你還可以跟蹤系統(tǒng)參數(shù)。

W&B(Weights & Biases) 是一個平臺,可以幫助數(shù)據(jù)科學家跟蹤他們的模型、數(shù)據(jù)集、系統(tǒng)信息等。只需幾行代碼,用戶就可以開始跟蹤有關(guān)這些功能的所有內(nèi)容。它免費供個人使用,團隊使用通常需要付費,但用于學術(shù)目的的團隊是免費的。你可以將 W&B 與自己喜歡的框架一起使用,例如 TensorFlow、Keras、PyTorch、SKlearn、fastai 等。

W&B 提供了以下 4 個有用的工具:

  • Dashboard:實驗跟蹤;
  • Artifacts:數(shù)據(jù)集版本控制、模型版本控制;
  • Sweeps:超參數(shù)優(yōu)化;
  • Reports 保存和共享可重現(xiàn)的結(jié)果。

4. MLFlow

MLFlow 是一個能夠覆蓋機器學習全流程(從數(shù)據(jù)準備到模型訓(xùn)練到最終部署)的新平臺,它是一款管理機器學習工作流程的工具,主要有三個功能模塊:Tracking 跟蹤和記錄、Project 項目管理和 Models 模型管理。MLflow 支持 Java、Python、R 和 REST API 等。

MLFlow 具有以下主要組件:

跟蹤:用于跟蹤試驗,以記錄和比較參數(shù)與結(jié)果;

模型:用于通過各種 ML 庫管理模型,并將其部署到各種模型服務(wù)和推理平臺;

項目:用于將 ML 代碼打包成可重用、可再現(xiàn)的格式,以便與其他數(shù)據(jù)科學家共享或轉(zhuǎn)移到生產(chǎn)環(huán)境;

模型注冊表:使你可以將模型存儲集中化,以便使用版本控制和批注功能來管理模型的完整生命周期階段轉(zhuǎn)換;

模型服務(wù):可用于將 MLflow 模型以 REST 終結(jié)點的形式托管。

5. Screen

對于每個研究者來說,讓實驗通宵運行而且機器不會進入休眠狀態(tài)再好不過了。當進行遠程工作時,很多人都會擔心 ssh 會話中斷——代碼運行幾個小時就停止了。

screen 命令允許用戶在一個窗口內(nèi)使用多個終端會話,可以斷開連接,也可以重新連接已斷開連接的會話。每個會話都可以恢復(fù)連接,這樣就算會話斷開了,用戶也不必擔心數(shù)據(jù)丟失。


四、協(xié)作工具學術(shù)界缺乏有效的團隊管理機制,在某種程度上這是由于學術(shù)界會嚴格劃分個人貢獻造成的。然而,機器學習的發(fā)展速度需要大家共同努力。Mikhailiuk 推薦了兩個非?;镜墓ぞ撸篏itHub 以及 Lucidchart,它們對于有效的溝通非常方便,尤其是在遠程工作上。

6. GitHub

GitHub 是通過 Git 進行版本控制的軟件源代碼托管服務(wù)平臺,同時提供付費賬戶和免費賬戶,這兩種賬戶都可以創(chuàng)建公開或私有的代碼倉庫,但付費用戶支持更多功能。除了允許個人和組織創(chuàng)建和訪問保管中的代碼以外,它也提供了一些方便社會化共同軟件開發(fā)的功能,包括允許用戶追蹤其他用戶、組織、軟件庫的動態(tài),對軟件代碼的改動和 bug 提出評論等。GitHub 也提供圖表功能,用于概觀顯示開發(fā)者們怎樣在代碼庫上工作以及軟件的開發(fā)活躍程度。

就在近日,GitHub 正式發(fā)布了2021 年度報告。過去一年里,有 1600 萬開發(fā)者加入了 GitHub,目前平臺的開發(fā)者數(shù)量已經(jīng)達到了 7300 萬;過去一年里,他們在 GitHub 上創(chuàng)建了 6100 萬個存儲庫。世界財富 100 強企業(yè)中的 84% 都在使用 GitHub。

7. Lucidchart

Lucidchart 是一款免費的可以支持離線操作的谷歌瀏覽器圖表插件,可以幫助用戶繪制包括流程圖、實體模型、UML、思維導(dǎo)圖等多種圖表的繪制工作。它提供了很多免費繪圖模板,大大地加快了用戶的繪圖速度。該應(yīng)用的一大優(yōu)勢是,它基于 HTML5,因此用戶不需要下載本地應(yīng)用程序,就可以在電腦、iPad 等設(shè)備上使用該應(yīng)用。它的另一主要優(yōu)勢是共享的協(xié)作空間和在圖表旁邊做筆記的能力。

3a6e728c-6896-11ee-9788-92fbcf53809c.png


五、可視化工具

提交論文時,研究人員經(jīng)常會遇到拒稿的情況,這讓 Mikhailiuk 意識到可視化功能和結(jié)果一樣重要。

如果審稿人沒有太多時間,或者對論文涉及的領(lǐng)域不熟悉,通常來說論文會被拒掉,其中一部分原因可能是論文中的視圖給人印象不深刻。因此,Mikhailiuk 推薦了 Inkscape 和 Streamlit 這兩個工具。

8. Inkscape

Inkscape 是一個開源的矢量圖編輯工具,使用可伸縮向量圖形 (SVG),以及基于 W3C 標準的 open XML 格式作為其默認文件格式。設(shè)計過程可能從一張涂鴉、一幅素描或者軟件中模型設(shè)計開始,這些可能不足以完成一整個項目。Inkscape 可以幫助你將以上不成熟的素材轉(zhuǎn)變?yōu)閷I(yè)的設(shè)計,用于廣告發(fā)布、模型制作等用途。Inkscape 還能提供 TexText 擴展,使用此軟件包,你可以將 latex 公式無縫集成到圖像中。

3a732426-6896-11ee-9788-92fbcf53809c.png

9. Streamlit

Streamlit 和常規(guī) Web 框架不同之處在于,它不需要你去編寫任何客戶端代碼(HTML/CSS/JS),只需要編寫普通的 Python 模塊,就可以在很短的時間內(nèi)創(chuàng)建美觀并具備高度交互性的界面,從而快速生成數(shù)據(jù)分析或者機器學習的結(jié)果;另一方面,和那些只能通過拖拽生成的工具也不同的是,你仍然具有對代碼的完整控制權(quán)。

以上就是 Mikhailiuk 在獲得機器學習博士學位之前需要掌握的九個工具,你不妨也學習一下,相信這些工具在你之后的學習、工作中,會起到事半功倍的效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4953

    瀏覽量

    87559
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    514

    瀏覽量

    25483
  • 機器學習
    +關(guān)注

    關(guān)注

    66

    文章

    8420

    瀏覽量

    132685
收藏 人收藏

    評論

    相關(guān)推薦

    傳統(tǒng)機器學習方法和應(yīng)用指導(dǎo)

    用于開發(fā)生物學數(shù)據(jù)的機器學習方法。盡管深度學習(一般指神經(jīng)網(wǎng)絡(luò)算法)是一強大的工具,目前也非常流行,但它的應(yīng)用領(lǐng)域仍然有限。與深度
    的頭像 發(fā)表于 12-30 09:16 ?153次閱讀
    傳統(tǒng)<b class='flag-5'>機器</b><b class='flag-5'>學習</b>方法和應(yīng)用指導(dǎo)

    自然語言處理與機器學習的關(guān)系 自然語言處理的基本概念及步驟

    自然語言處理(Natural Language Processing,簡稱NLP)是人工智能和語言學領(lǐng)域的一分支,它致力于研究如何讓計算機能夠理解、解釋和生成人類語言。機器學習(Ma
    的頭像 發(fā)表于 12-05 15:21 ?496次閱讀

    什么是機器學習?通過機器學習方法能解決哪些問題?

    來源:Master編程樹“機器學習”最初的研究動機是讓計算機系統(tǒng)具有人的學習能力以便實現(xiàn)人工智能。因為沒有學習能力的系統(tǒng)很難被認為是具有智能
    的頭像 發(fā)表于 11-16 01:07 ?418次閱讀
    什么是<b class='flag-5'>機器</b><b class='flag-5'>學習</b>?通過<b class='flag-5'>機器</b><b class='flag-5'>學習</b>方法能解決哪些問題?

    如何學習ARM?

    、寄存器、內(nèi)存管理單元(MMU)、中斷控制器等方面的知識。 3.學習編程語言和工具掌握一門與 ARM 處理器兼容的編程語言是必不可少的。C/C++ 是最常用的編程語言,可以使用它來編寫針對
    發(fā)表于 10-11 10:42

    【「時間序列與機器學習」閱讀體驗】時間序列的信息提取

    重要環(huán)節(jié),目標是從給定的時間序列數(shù)據(jù)中提取出有用的信息和特征,以支持后續(xù)的分析和預(yù)測任務(wù)。 特征工程(Feature Engineering)是將數(shù)據(jù)轉(zhuǎn)換為更好地表示潛在問題的特征,從而提高機器學習
    發(fā)表于 08-17 21:12

    【《時間序列與機器學習》閱讀體驗】+ 了解時間序列

    收到《時間序列與機器學習》一書,彩色印刷,公式代碼清晰,非常精美。感謝作者,感謝電子發(fā)燒友提供了一讓我學習時間序列及應(yīng)用的機會! 前言第一段描述了編寫背景: 由此可知,這是一本關(guān)于時
    發(fā)表于 08-11 17:55

    如何理解機器學習中的訓(xùn)練集、驗證集和測試集

    理解機器學習中的訓(xùn)練集、驗證集和測試集,是掌握機器學習核心概念和流程的重要一步。這三者不僅構(gòu)成了模型學習
    的頭像 發(fā)表于 07-10 15:45 ?4093次閱讀

    暑假如何學習單片機

    暑假是學習掌握單片機基礎(chǔ)知識的良好時機。以下是一關(guān)于如何在暑假期間學習單片機的建議計劃
    的頭像 發(fā)表于 07-03 09:19 ?534次閱讀
    一<b class='flag-5'>個</b>暑假如何<b class='flag-5'>學習</b>單片機

    機器學習在數(shù)據(jù)分析中的應(yīng)用

    隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)量的爆炸性增長對數(shù)據(jù)分析提出了更高的要求。機器學習作為一種強大的工具,通過訓(xùn)練模型從數(shù)據(jù)中學習規(guī)律,為企業(yè)和組織提供了更高效、更準確的數(shù)據(jù)分析能力。本文將深入
    的頭像 發(fā)表于 07-02 11:22 ?637次閱讀

    名單公布!【書籍評測活動NO.35】如何用「時間序列與機器學習」解鎖未來?

    捕捉復(fù)雜非線性模式的場景中顯得力不從心。 將時間序列的分析與預(yù)測用于大規(guī)模的數(shù)據(jù)生產(chǎn)一直存在諸多困難。 在這種背景下,結(jié)合機器學習,特別是深度學習技術(shù)的時間序列分析方法,成了研究和應(yīng)用
    發(fā)表于 06-25 15:00

    學習串口屏需要了解哪些方面的知識

    學習串口屏需要掌握的知識主要包括以下幾個方面
    的頭像 發(fā)表于 06-05 09:41 ?437次閱讀
    <b class='flag-5'>學習</b>串口屏<b class='flag-5'>需要</b>了解哪些方面的知識

    請問PSoC? Creator IDE可以支持IMAGIMOB機器學習嗎?

    我的項目使用 POSC62 MCU 進行開發(fā),由于 UDB 模塊是需求的重要組成部分,所以我選擇了PSoC? Creator IDE 來進行項目開發(fā)。 但現(xiàn)在,由于需要擴展,我不得不使用機器學習模塊
    發(fā)表于 05-20 08:06

    機器學習8大調(diào)參技巧

    今天給大家一篇關(guān)于機器學習調(diào)參技巧的文章。超參數(shù)調(diào)優(yōu)是機器學習例程中的基本步驟之一。該方法也稱為超參數(shù)優(yōu)化,需要搜索超參數(shù)的最佳配置以實現(xiàn)最
    的頭像 發(fā)表于 03-23 08:26 ?632次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>8大調(diào)參技巧

    嵌入式工程師需要掌握哪些技術(shù)?

    的特點和要求是非常有益的。 入行嵌入式需要掌握的技術(shù)能力遠不止上述幾點,但這些是入門的基礎(chǔ)。通過學習和實踐,你可以逐漸提高自己的技術(shù)水平,并在嵌入式行業(yè)中取得成功。希望這篇文章對于那些想要入行嵌入式的人有所幫助。
    發(fā)表于 03-04 16:38

    如何使用TensorFlow構(gòu)建機器學習模型

    在這篇文章中,我將逐步講解如何使用 TensorFlow 創(chuàng)建一簡單的機器學習模型。
    的頭像 發(fā)表于 01-08 09:25 ?997次閱讀
    如何使用TensorFlow構(gòu)建<b class='flag-5'>機器</b><b class='flag-5'>學習</b>模型