回覆列表
  • 1 # me坤子

     1、數學知識

      

      a.微積分

      很多人覺得這部分知識在大學畢業後,甚至剛考完試後就應該還給老師了,因為在多年的工作中,這部分知識確實涉及的很少。但隨著機器學習領域知識的快速發展,梯度計算,反向傳播等方面都涉及了大量的微積分的知識,如果不瞭解,可能就很難了解這些演算法或者方程背後的含義。

      但是微積分的知識眾多,哪些知識才是演算法工程師所需要的,或者說學到什麼樣程度才是可以的呢?一般情況下,積分、偏微分、泰勒公式、鏈式法則等基礎知識,在一般情況下可以幫助你理解大部分問題,即使遇見更復雜的問題時,有了這些知識作為基礎,更深入的學習也會變得更加容易。

      b.機率和數理統計

      機率和數理統計的使用在實際工作中使用頻度非常高。這方面的知識也需要演算法工程師重點學習,一些基本的方程,均值,高斯分佈,二項分佈的知識是必須的。同時對條件機率(貝葉斯的前提),聯合分佈,獨立分佈等知識也需要有一個全面的瞭解。相對微積分來說,機率的學習成本低一些,可以在短時間內對這些知識加以瞭解,但是深入理解這些機率在實際中的應用需要開發人員在實踐中摸索並總結經驗。

      c.線性代數

      線性代數在實際的使用中多是以向量和矩陣為代表。這部分在實際的使用時,需要掌握每一次運算的行列數量,保證每一行的計算符合矩陣運算的基本性質,如行列式的對其等。同時,矩陣的基本性質,轉置,逆,秩等基本性質要能理解。還有對矩陣的特徵值分解,奇異值分解等知識的理解對理解PCA等降維資訊提供了數學基礎。

      以上內容表明瞭演算法的內在根基是建立在數學基礎之上,誠然,現在的框架發展速度很快,利用高階API在不瞭解數學基礎的情況下,一樣可以完成一些機器學習的工作。但是這樣的方式對深入理解演算法的實現原理和一些超引數的調優等工作的理解是沒有幫助的。同時,建立對問題和資料的更深入理解也都需要一定的數學基礎。建議如果有時間的話,回顧和溫習一下這些數學基礎對演算法工作是大有益處的。

      2、機器學習

      機器學習作為演算法工作的基礎,是需要演算法工作人員深入理解的基本知識。誠然,機器學習涉及到的演算法很多,但是整理對任務的理解需要如下幾方面的知識。

      a.資料預處理

      資料是機器學習演算法的源泉,但現實工作中的資料多是雜亂和不規整的。因此對資料的預處理變得非常重要,通常包含:資料處理,數值轉化,資料規範化等工作。

      b.特徵選擇

      特徵選擇很大程度上依靠演算法人員的經驗和對行業的瞭解,確定資料中表現良好的特徵,還有與預測結果具有高相關性的特徵。還有這部分中涉及到的相關性分析,方差篩選等相關知識也需要掌握。

      c.演算法選擇

      首先,可以根據任務的類別將機器學習演算法分為,分類,迴歸,推薦,聚類,降維等不同的具體任務範圍,在每個範圍內有時候很難確定具體使用那個演算法效果最優,這和資料的特性有很大的關係。在每個範圍內儘量多掌握每個演算法的特點,在選擇演算法時的決策就更加清晰。

      d.引數調優

      超引數的調優很大程度上需要對選定的演算法有著深入的理解。理解不同引數對在演算法工作時產生了影響是什麼;掌握不同演算法,超引數的調優集合一般是多少(例如某一個超引數,一般設定值都是多少,或者範圍是多少)。同時,還需要構建演算法引數快速除錯的平臺,針對返回結果,能快速針對不同的超引數進行測試。在這方面,網格搜尋的方法可以起到不錯的效果。

      3、深度學習

      深度學習作為機器學習的分支,最近幾年呈現井噴式的發展。這其中既包含了傳統機器學習的相關知識,也包含深度學習特有的一些新視角,如下簡單聊聊深度學習的基本知識都有那些。

      a.神經網路

      神經網路是構建深度學習的基礎,需要軟體開發人員首先了解神經網路的基本概念,輸入層,隱藏層,啟用函式等相關概念。Sigmod,tahn等函式的意義。能推演出簡單的(隱藏層數不多)神經網路結構。

      b.CNN和 RNN

      掌握CNN和RNN(包括LSTM)這兩種主流的深度學習框架,以及適用的場景。掌握卷積尺寸的對其(影象處理方向),啟用函式,池化層,全連線層,dropout等相關技術。掌握LSTM的基本思想,能構建出多層的LSTM網路。

      c.反向傳播和最佳化

      掌握反向傳播的基本思想和實現原理,理解梯度衰減和梯度爆炸產生的原因。對設計出的神經網路的每一層和每一個操作有著清晰的認識。能對深度學習網路進行最佳化,掌握常見的Adam和正則化的基本操作。

      本篇文章我們主要針對演算法工程師應當具備的數學、機器學習和和深度學習方面的基礎知識進行了簡單的彙總。這些知識和工作都是演算法工程師每天工作中會頻繁接觸到的。下篇將從程式設計能力、技術框架、行業理解以及溝通能力上更加全面的探討演算法工程師的成長之路。

  • 中秋節和大豐收的關聯?
  • 牽引力最大的越野車?