先搞清楚目前行業(yè)內(nèi)招的算法工程師主要在做什么:
第一類是做數(shù)據(jù)模型進(jìn)行推薦、分類、識別、預(yù)測等工作的建模型算法工程師,通常JD上也寫成數(shù)據(jù)挖掘工程師、深度學(xué)習(xí)工程師等。這類大體的工作就是結(jié)合業(yè)務(wù)場景,選擇合適的算法模型,將數(shù)據(jù)進(jìn)行處理后使用模型獲得結(jié)果,也被戲稱為“調(diào)參工程師”。
第二類是做針對性方向的算法研究,包括圖像、語音、文本等,其囊括了在外界看來很智能的人臉識別、人臉變換、語音生成、語音識別、新聞推薦、智能對話等功能。和第一類的區(qū)別主要在于處理的數(shù)據(jù)非傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù),需要進(jìn)行針對性的處理,比如圖像的取點(diǎn)、二值化,語音的要素提取,文本的分詞、向量化等等。當(dāng)進(jìn)行了數(shù)據(jù)處理后,后續(xù)選擇模型時就和第一類類似了。
不難看出,第二類會比第一類需要一些針對性的知識體系,相對來說更好去做準(zhǔn)備。
從學(xué)習(xí)安排上,可以以如下的學(xué)習(xí)路線做準(zhǔn)備:
一、數(shù)學(xué)能力基礎(chǔ)
無論是否計算機(jī)出身,數(shù)學(xué)方面的能力在算法工作中是非常必要的基礎(chǔ),需要掌握的程度如下:
1、高等數(shù)學(xué),主要包括微分和積分、偏微分、向量值函數(shù)、方向梯度、泰勒展開等,才能更好理解算法公式,調(diào)參原理,以及迭代時梯度的概念等;
2、線性代數(shù),主要是矩陣運(yùn)算、高維向量、空間運(yùn)算,這些是理解深度學(xué)習(xí)向量空間的基礎(chǔ);
3、概率論及數(shù)理統(tǒng)計,或者稱之為概率學(xué)和統(tǒng)計學(xué),要理解,機(jī)器學(xué)習(xí)本質(zhì)上是一個概率問題,從數(shù)據(jù)中學(xué)習(xí)的不確定性,就是在獲得概率值。
二、計算機(jī)科學(xué)能力基礎(chǔ)
算法工程師是一個研發(fā)性崗位,寫代碼的能力也是必須的。
1、掌握基本的排序、查找算法
2、熟悉常用的各類數(shù)據(jù)結(jié)構(gòu),如數(shù)組、樹、表
3、將抽象邏輯思路轉(zhuǎn)為代碼,能完成leetcode上中等難度的題目
4、有編程語言學(xué)習(xí)能力,會python更好,其他語言需要花時間了解其語法特點(diǎn)
以上兩大基礎(chǔ),如果是工科出身,應(yīng)該不會需要太久做準(zhǔn)備,可以根據(jù)缺少的部分來查漏補(bǔ)缺,這些部分在兩個月內(nèi)完成應(yīng)該問題不大。
后續(xù)才是真的開始做算法的學(xué)習(xí):
三、機(jī)器學(xué)習(xí)算法能力基礎(chǔ)
1、熟悉常用機(jī)器學(xué)習(xí)算法的原理,包括線性回歸、邏輯回歸、決策樹、K均值、SVM、adaboost、CNN、RNN等
2、能夠了解各個算法的優(yōu)劣和適用的數(shù)據(jù)場景
3、熟悉常用機(jī)器學(xué)習(xí)算法在代碼中的實現(xiàn),深一些是能自己手寫實現(xiàn),淺一些是能通過使用python的包來調(diào)用,熟悉參數(shù)
4、能夠獨(dú)立完成完整的數(shù)據(jù)項目,如在kaggle上嘗試解決入門的問題,實現(xiàn)從數(shù)據(jù)處理到模型選擇直到輸出結(jié)果的過程
第三部分是個長久的事情,不斷的熟悉算法和使用,并在實際數(shù)據(jù)項目中來深化,不去公司實習(xí)的話,在kaggle上多做嘗試可以積累不少經(jīng)驗。
當(dāng)能掌握這些后,就可算做正式入門了,目前大廠的實習(xí)生或者校招生基本就在這個水平程度,想要得到更好的機(jī)會或者能在工作中真的有好的產(chǎn)出,需要更多的努力和學(xué)習(xí)。
-
工程師
+關(guān)注
關(guān)注
59文章
1561瀏覽量
68304 -
算法
+關(guān)注
關(guān)注
23文章
4551瀏覽量
92015
發(fā)布評論請先 登錄
相關(guān)推薦
評論