當前位置:
首頁 > 科技 > 想學習深度學習需要什麼樣的基礎?

想學習深度學習需要什麼樣的基礎?

作者|盧譽聲


編輯|勸勸


很多小夥伴對深度學習的理解都有一些誤解,今天就為你一一解答。


很多人第一反應是深度學習特別高大上,需要一定基礎才能學習,但是關於需要學習深度學習所需要的基礎其實存在很多誤區。


迷茫於在網上雖然能找到各類深度學習課程和資料,但是是不是適合自己,如何能在一堆裡面找到系統的、深入的、落地的學習內容,這對很多人來說都是橫在學習面前的一道坎。

我們經過 2 個月的精心打磨,生產出這樣一門適合基礎研發人員也能學習的課程,它能在這以下幾個方面回答大家對於深度學習的疑惑。


關於編程基礎


只會 Java 語言,不會 C/C++/Python 能學習嗎?或者學過 C/C++/Python,但是沒有實際應用過,或者基礎不好,是否可以學?是否有 Python 學習教程推薦?如果 C++/Python 基礎比較薄弱,是否可以學?


【回答】完全可以。


我們會跟隨實際的代碼編寫,一步一步進行指導。在數據科學、大數據和機器學習(深度學習)領域,Python 被視作最為簡潔和直接的腳本編程語言,被科研領域和工程領域廣泛採用,因此本課程也會針對 Python 編程語言本身,跟隨編程實戰,與大家一起編程的過程中逐步講解


事實上 Java 編程語言在大數據處理和機器學習領域的應用也十分廣泛,課程中涉及到真實工程代碼的部分,我們會將 C++ 與 Java 版本一同展示和講解。由於這不是一門教學編程語言的課程,更注重於實際應用的編寫,因此編程語言特性方面的門檻較低


本課程著眼于海量數據實時處理和深度神經網路架構和編程,編程語言這塊不會是瓶頸。並且,大家會跟隨老師一起,編寫機器學習代碼,也會因此熟悉 Python 編程,事實上這對未來的個人發展和工作具有非常大的幫助。

想學習深度學習需要什麼樣的基礎?



在課程後半段,我們將會使用前半段課程編寫的實驗程序,轉化為實際的工業級代碼和產品,這時將涉及 C/C++ 和 Java 代碼的編寫。由於 Java 在面向對象的基本結構上與 C++ 十分相似,因此這一塊也應當不是問題。

正如前面所闡述的,我們也會同時展示 Java 版本的高層應用實現。最終,同學們會發現這些代碼雖然由不同編程語言實現,但大體相當,並無過多區別。另外,針對編程語言方面的疑慮,老師也會手把手從最基本的代碼開始編寫,並儘可能詳細講解每一段重要的代碼。


全課程不僅從理論方面會由淺入深的講解,編程實戰也同樣會從最基礎部分(包含語言的部分)開始講解。希望能夠打消同學們的疑慮。通過學習本課程,不僅對整個機器學習、深度學習和分布式大數據實時處理有一個全面的認識,而且在非常實際的工程實踐,將來找工作和職業發展,都將會有非常大的提升。


如果有其他語言的基礎,但是沒有 C++和 python 基礎也是完全可以學習的,語言只是工具,有其他語言基礎學習新語言很快,尤其是 Python 這種語言很簡單,而 Java 和 C++ 相比之下可能需要花費更多時間去學習。但本門課程在工程實踐環節也會針對編寫的代碼進行詳解,儘可能確保打消大家對這一方面的顧慮。


這個課需要大數據基礎嗎?


【回答】不需要。


本門課程不僅會講解機器學習領域的經典理論、演算法和工程實踐,還有一大特色便是講解大數據或海量數據的高性能分布式處理,通過這兩大領域的學習和碰撞,會為大家未來職業發展和規划起到如虎添翼的作用,這一點在其他課程中較難體現,也是本門課程的主要特色之一。


本課程的老師擁有多年雲計算和分布式實時處理方面的經驗,同時撰寫了相關書籍以及開源的大數據處理框架,擁有豐富經驗,以此基礎上再講解機器學習和深度神經網路,讓同學們對這一領域的幾個關鍵點都一個較為全面的學習和掌握。

想學習深度學習需要什麼樣的基礎?



關於數學基礎

有的同學有數學基礎,但是缺乏 C++/Python 編程語言;有的同學沒有數學基礎,是否可以學?數學基礎需要到什麼程度?如果提前學習是否有資料推薦?


【回答】首先學習本門課程並不需要特別高的數學基礎,只需要掌握大學本科階段學習的高等數學、線性代數和概率論等課程。


雖然從應用角度上來看:


如果想要深入研究深度學習,比如完全自己實現不同結構的網路,設計網路的層與參數最好能夠熟練運用矩陣理論中的相關工具,但是我相信如果職業道路規劃不是演算法工程師,一般並不會深入到這一層面。


對應於不同應用領域,還需要不同的數學工具,比如和圖像、信號識別相關的領域,圖形學等相關的基礎功底是必須要有的,但這個已經是複雜的現實應用問題了,並不在本門課程的教學範圍之內,本門課程的應用領域還是相對較為簡單的。


實際上,如果你是一個工科生,你會發現學習數學最難的地方就是不理解這些數學工具到底能幫助我們去解決什麼問題,因為大學老師大多數都是數學專業老師,並不會從學生各自專業的角度來講解數學問題。但是當你知道你需要用數學工具做什麼,有一個明確目標後,你會發現你的動力和學習能力將會有一個突破,你不會覺得這些數學知識是枯燥乏味的。因此哪怕你的數學基礎相對薄弱,有一個明確的目的,再去補充這些數學知識,相信學員自己一定能解決這個問題。數學也絕對不是學習這門課的障礙,但是如果你想以其作為職業,去打好這個數學的底子是不可或缺的。


最後,如果你是數學專業,或者覺得自己數學很好的學生,你們也更不用擔心不會 1、2 門語言,因為計算機語言只是一種工具,最關鍵的還是訓練自己的思維,這種思維的核心就是數學和演算法。如果你數學很好,學習這些語言是很快的,而且本門課程中除了最後的 C++ 開發,也不會應用到什麼特別的語法特性。


但是另一方面也不要忽視學習好這些工具的重要性,只是希望學生自己能夠權衡。對數學好的同學來說,可能最致命的是一個誤區,因為計算機的基礎是數學,所以完全使用數學思維去解決計算機問題是沒問題的,我這裡只能說計算機有自己的思維模式,哪怕是那些基於數學原理的演算法問題,所以數學專業的同學必須要學會認識到這種思維的差異並學會使用計算機的思維來解決問題,而機器學習則是計算機思維的一個典型代表,這個將會在課程中具體討論。


至於需要的數學基礎,肯定是希望同學能夠學習高等數學中的微積分,線性代數和概率論的相關知識,對於沒有實際編程經驗的學生則推薦深入學習一下離散數學(無關乎是否精於數學)。本門課程需要的數學基礎也就是這些了。

想學習深度學習需要什麼樣的基礎?


關於內容


深度學習和機器學習的關係是什麼?很多同學以為要先學機器學習再學深度學習是這樣嗎?


【回答】機器學習肯定是深度學習的基礎,因為深度學習就是深度神經網路,而人工神經網路則是機器學習的一大經典模型。但是我們要認識到機器學習領域包含的演算法和模型太多,因此想要專精深度學習不一定要學會其他許多的機器學習演算法和理論。所以我們會在課程中安排機器學習相關的內容,只不過都是機器學習中和深度學習相關的必備基礎知識。


但是如果你想要以後往演算法工程師發展,去學習熟悉其他的機器學習模型也是必不可少的,只不過本門課程並沒有這種要求,所有需要的機器學習知識都會在課程的前半部分詳細講解。


Caffe 框架和 TensorFlow 框架都要學嗎?


【回答】首先本門課程主要應用的是 Caffe,但是同樣會講解 TensorFlow 的基本用法,並會進行簡單演示。在我們的日常工作中發現 TensorFlow 是目前最強大的機器學習框架,沒有之一,而且有 Google 公司的支持,有最龐大的社區,一旦有什麼新模型都會有 TensorFlow 的實現可以使用(得益於 TensorFlow 的架構設計)。用 TensorFlow 來進行快速實驗是非常好的選擇。


但是我們也發現 TensorFlow 有兩個比較大的問題,第一個問題是 TensorFlow 的單機執行效率低,尤其是和 Caffe 相比,對於資金並不是很充足的創業公司,在有一定量數據的情況下,並無法支撐一個可以快速運行 TensorFlow 訓練的集群,這個時候 Caffe 以及其各種改版往往是更好的選擇,而我們日常工作的實驗場景就被此局限,因此更偏向於實際使用 Caffe。


第二個問題是 TensorFlow 過於龐大,實際開發產品 SDK 的時候,我們希望訓練出來的模型能夠直接放到產品中使用,因此訓練和產品 SDK 使用的深度學習框架往往是一致或者可以互相轉換的。而 TensorFlow 過於龐大複雜,還需要使用專門的構建工具,在實際產品應用集成中往往要使用能夠完全掌控的工具和框架並進行修改,TensorFlow 的複雜性正和這種要求背道而馳。當然也可能是我們的工作場景和人員限制導致我們沒有人力對 TensorFlow 進行深度研究、裁剪和維護,這也就是我們產品中使用 Caffe 的原因。

想學習深度學習需要什麼樣的基礎?


關於就業


學習了課程,掌握了這個技能,能不能找到工作,是否有匹配的崗位?


【回答】肯定可以!


不過自己平時更多地去實踐是成為某一領域專家的必經之路,這門課程的最大作用之一是讓你知道該去學習什麼,還有學習的思路、方法,以及平時難以接觸到的大型企業實際的工程經驗和架構方法,這將對同學們的未來工作和職業發展提供極大幫助。


通過學習本課程,可以匹配到以下幾個崗位:


這個實際崗位在很多公司中往往是演算法工程師


大數據分析和處理方面的崗位


雲計算應用或平台的開發工程師


機器學習或深度學習應用或平台的研發工程師

而演算法工程部門的工程師一般會有兩類人(除去部門負責人等高級職位):


一類是能夠較熟練運用 1 到 2 門語言(比如 Python、Java 或 C++),數學功底好,熟悉機器學習和深度學習的人,他們的任務是不斷優化機器學習模型,進行訓練測試,調整參數等,這個過程中也需要編寫相當多的腳本來幫助自己解決各種問題。最後要能夠編寫實際的產品代碼,不需要有非常好的架構和設計思想,關鍵是能夠高效地實現某種演算法。


一類是有好的編程功底,同時又能夠基本理解機器學習和深度學習的人,他們的任務往往是負責封裝改良第一類人實現的功能模塊,從時間、空間和代碼質量上改良模塊的實現,同時負責維護完整的演算法 SDK,這類 SDK 往往要求能夠快速迭代更新,能夠配上完整的訓練和測試流程,需要開發者具有較強的工程能力還有架構、設計思維。


至於崗位問題同學應該完全不用擔心,尤其現在有許多以人工智慧為核心的公司如爆髮式增長,以及傳統 IT 企業向海量數據處理、機器學習和深度學習領域不斷加大投入,對這類工程師的需求量極大。


大公司還是小公司需要這種崗位?機器學習工程師的薪資待遇如何?


現在大公司和小公司都有,尤其是以人工智慧為主的公司。至於崗位問題同學應該完全不用擔心,尤其現在有許多以人工智慧為核心的公司如爆髮式增長,以及傳統 IT 企業向海量數據處理、機器學習和深度學習領域不斷加大投入,對這類工程師的需求量極大。


至於薪資待遇方面,由於目前以及可預期的未來很長一段時間,這類崗位的需求和缺口都非常大,相信同學們在學習完本課程後,再加上自己對該領域的實踐和工作經驗,能夠獲得高於市場的薪酬水平。


如果你想快速掌握各方面的專業技能,不落後這個人工智慧的時代,這絕對是一門你無法忽視的課程。如果你的機器學習基礎非常薄弱,沒有在工程實踐中使用過機器學習,沒有實時數據處理的經驗,那麼,就是它了。


送你價值200元 本課程優惠碼【FCXTG3BGYX】,僅限使用10

想學習深度學習需要什麼樣的基礎?

想學習深度學習需要什麼樣的基礎?


想學習深度學習需要什麼樣的基礎?



喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

技術專家 or 技術管理?程序員職場規劃中如何定位?
520,程序員怎樣表白更有效?
技術人職業發展中如何及時調整定位?

TAG:InfoQ |

您可能感興趣

什麼是深度學習?
你需要學習了
學習要什麼好處,為什麼要學習
想學習遊戲原畫,但是又沒有基礎,是怎樣學習的
為什麼學習需要儀式感?
我為什麼要學習?
你為什麼要努力學習
哲學不能吃不能喝,那學習哲學的意義是什麼呢?
為什麼深度學習對訓練樣本的數量要求較高?
不要再讓學習方法,去影響你的學習
要想提高學習力,就要多讀哲學書
為啥要學習心理學?
你需要一台真正的深度學習機
怎樣學習更有效
什麼是真正的學習?
深度學習引擎的終極形態是什麼?
想要學習美國基礎教育的精髓,這個學科娃一定要學
為什麼我們需要學習演算法?
學習幾何體為什麼是素描學習的起點?
如何更好的學習——讀《學會學習》有感