日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【职场建议】开发转算法,我们应该如何准备(过来人的肺腑之言)

發布時間:2025/3/8 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【职场建议】开发转算法,我们应该如何准备(过来人的肺腑之言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?隨著近幾年AI和算法崗位越來越熱門,很多開發者都選擇從開發崗向算法崗轉型,但是由于大家對算法崗并不是很熟悉,并且自身對算法崗所需要的技術技能也不是很了解,因此,在轉型過程中困難重重,我早在6年前也是一名Android開發工程師,那么今天我就來結合自身經驗以及周邊同學的經驗,來和大家聊聊如何從開發崗向算法崗轉型。


開發轉算法的優勢

首先,我們先來說一說什么是開發崗,以及開發崗轉型算法崗的優勢在哪里。其實,軟件開發工程師對于整個IT行業來講是一個不可或缺的崗位,也是一個相對比較綜合性的崗位。因為,對于現階段的軟件開發工程師來講,不僅要掌握各種編程語言,還要了解數據庫、大數據以及很多工程化的問題,甚至對于與AI相關的工程化問題在某些公司也要有所涉及,因此,在我看來,軟件開發工程師是一個相對比較綜合的崗位,實際上,這也正是開發崗轉行算法崗的優勢所在。

很多人認為,算法崗就是搞模型、算法以及與AI相關的東西,首先我要說明的是,這個觀點是錯誤的,至少針對于大部分公司來講,這個觀點是有一定的偏差的。在企業中,任何算法都是以上線為導向的,而所有產品的上線,幾乎都跑不掉QPS這個指標,簡單來說就是每秒的并發量,就拿我們公司舉例,為了使項目能夠在線上正常的運轉,一般QPS至少要求單機在2000以上,然后再橫向多級擴展,使得提升整體并發量。對于算法工程師來講,要想把并發量提高,所要解決的問題并不僅僅就是模型和算法的開發和優化,往往,我們還需要給其他業務平臺提供相應的組建和接口,至少,我們需要把我們的模型進行一定的打包,使外面的業務能夠調用。而這個打包的過程,一般會涉及到服務器的部署、接口的開發和調用、并發和工程化等一系列的問題,而這些往往就是開發工程師所擅長的,這也是開發轉型算法的最大優勢。

除了上面這種純模型的算法崗之外,還有一種算法崗就是與業務強相關的,最直觀的就是就是推薦算法工程師和一些NLP工程師。我們就拿推薦算法工程師來舉例,大家都知道,任何推薦的業務都是作用于產品之上的,在目前互聯網技術中,這些產品一般都會被存入到大數據倉庫中,當我們做推薦系統的時候,還需要考慮到數據的實時性,因此,對于一個合格的推薦算法工程師來講,不僅要對推薦算法本身有著足夠的了解,還必須對推薦算法所涉及到的周邊知識和技術比較熟悉才可以,例如,當我們需要做實時推薦系統的時候,我們需要去了解kafka和flink等相關技術,當我們需要快速的存取時,可能還需要對redis等內存數據庫做一定的了解,如果要是想要對redis進行數據落地,可能還需要了解一些pika等相關的知識。我們可以發現,這些內容都是推薦算法工程師要做的,但是卻和各種工程方面的內容有著非常緊密的聯系,因此,對于這種以業務為導向的算法工程師來講,除了關注業務本身以外,還需要關注工程內容,而這也是一名軟件開發工程師所擅長的。

上面的幾個例子,實際上都可以很好的說明,算法工程師與開發工程師實際上是有非常緊密的聯系的,因此,首先我們需要肯定的是,算法工程師轉型到AI工程師是可行的。但是具體要怎么做呢?

實際上,算法工程師與開發工程師的本質差別還是在對算法的研究上,而這個算法的研究實際上是一個非常廣義的內容,而我們這里所講的算法工程師,一般可以理解為與AI相關的算法工程師。一個AI算法工程師,主要需要包含以下三種能力,這也是開發在轉型算法工程師的時候的必修課。


框架的學習

目前AI領域的算法工程師一般都要求對深度學習和機器學習框架有著比較深入的理解,因此,學習相關框架是算法工程師必須要面對的一個坎。

在AI領域中,算法工程師常用的框架一般有TensorFlow、Pytorch和Keras。幾乎在所有算法工程師招聘的需求中,都要求具備以上者三個深度學習框架中的一個或多個的能力。實際上,很多人在轉型算法之初,看到很多深度學習的框架都喜歡打退堂鼓,但實際上,我們在學習任何一種框架的時候,基本上方法都是一樣的,深度學習也不例外。

在學習深度學習相關框架之前,建議先了解一些深度學習的相關概念和機器學習的相關概念,然后先把官網的一些教程拿過來練練手。對于一個有其他語言開發經驗的同學來說,我建議大家邊練手邊看基礎,而不是先把深度學習和機器學習的所有概念都看一遍然后再去系統的學框架,然后再練手,這樣的話首先時間會很長,其次,實際上到最后你會發現很多東西你都記不住。

在我看來,最好的學習方法是:

1、花2周的時間來看一下機器學習和深度學習的基本概念和模型,如果有配套的代碼就跟著敲;

2、去系統的學習TensorFlow或者pytorch框架中的一種,去一些wiki類網站上學習,只需要了解怎么用,以及常用的函數即可;

3、去找一些簡單模型的實現,比如TensorFlow版本的textcnn模型、pytorch版本的RNN模型和LSTM模型等的實現,研究這些模型如何使用深度學習框架實現;

4、去GitHub找幾個相對比較完整的且不是很大的項目,然后去看他是怎么實現的,在這里如果NLP的話,推薦文本分類、智能客服類的項目,如果是CV的話,建議看一些圖像分類的簡單項目;

5、然后重復第4步,一直保持良好的代碼能力,熟能生巧;


數學基礎

數學可以說是算法工程師的必修課,開發的功底決定你走的有多廣,而數學功底則決定你做的有多深。

在我們研讀論文的時候,經常會遇到很多非常繁雜的數學公式,對于一些只是想了解這個模型,或者用這篇論文里面的模型的人來說,對數學的要求其實并不是很重要。但是當你的需求從用變成改的話,那么數學則變得格外的重要了。

很多時候,我們通過論文里面的公式可以了解整體的推導過程,并對里面很多參數的定義有了更深入的理解。一般來講,對于那些需要出研究成果的同學,就需要把這里面的每一個細節研究的非常細,需要去推導里面的各種邏輯關系和數學公式,甚至通過自己動手優化,來提高模型的性能,而這些實際上都是需要數學基礎的。

在AI算法領域中,我們常用的數學主要是線性代數、概率論和高等數學。

AI算法中的大部分算法都是跟矩陣相關,而線性代數實際上就是一門專門針對于矩陣進行研究的學科,因此,學好線性代數有助于后面在做深度學習關于矩陣和張量部分的內容的深入研究;概率論對于深度學習來講,也是一個必不可少的內容,在深度學習里,充斥著各種與概率論相關的算法,例如最常見的就是樸素貝葉斯算法;高等數學則一般運用于數學的推導中,各種積分推導都要用到高等數學的知識,最常見的就是BP算法。

另外,在這里我想跟大家安利一本書,就是《具體數學》這本書,這本書的話,實際上就是對計算機中常用的數學有了比較深入的總結,當然,看這本書的難度也是非常大的。


論文閱讀和代碼復現能力

可以說,閱讀論文是算法工程師的必修課,算法工程師與開發工程師最大的區別是,算法工程師需要通過對大量的論文進行復現,從而確定最終的擬選用模型,然后再加以改進或直接使用,而對于論文的復現,一般我們就需要能夠看得懂論文。

舉個例子來說,我們的時間前段時間在做圖像超分辨率這個領域的內容,那么我們所做的第一步就是去找最近兩三年內在頂會上的比較優秀的超分辨率相關的論文,然后再去GitHub上找到論文所對應的官方代碼來驗證我們的想法,但是有的時候,我們可能需要去指定特定的開發框架(例如TensorFlow),而開源的代碼中卻沒有這種框架的代碼,只有pytorch版本的代碼,這個時候我們就必須要自己使用TensorFlow進行手動實現,這時,我們就需要把論文讀懂,才可以更好的復現代碼。

因此,論文閱讀能力是開發轉算法過程中必須要準備的點,在這里,英語是必不可少的環節。一般我們可以通過以下幾個步驟來準備:

1、找一篇相對簡單的論文(例如文本分類方向的),然后試著去讀懂它(主要是網絡結構部分)

2、找到論文的相關復現代碼,并讀懂它;

3、試著自己用其他框架來復現它;

4、重復上述1~3步驟


算法式思維

開發和算法的同學其實在邏輯思維上會有比較大的不同。對于開發的同學來講,主要是以解決問題為出發點,而對于算法的同學來講,一般解決問題的方式會有很多,但是必須要選擇一條既快又好的路,這是算法工程師需要具備的能力,對于這一點其實也是在轉型過程中需要長期積累的過程。

算法的同學一般會碰到兩種問題,第一種就是已經有了代碼,要去優化它。例如,現在我們在做推薦系統時經常會使用到一種算法叫協同過濾,如果說基于item的協同過濾,用正常的協同過濾算法當數據量增大的時候,就會導致內存爆掉,實際上我們可以通過優化協同過濾中的對稱矩陣,來降低時間復雜度和空間復雜度,從而解決這一問題,而這種解決問題的能力,實際上就是算法工程師必須要具備的能力和思維,說白了,就是找到代碼中可以優化的點,然后進行優化,從而達到最終的目的。很多從開發轉型過來的同學,在這個方面經常會吃虧,因為很多時候,就是用傳統的開發的思路來解決問題,不會去注重里面的時間復雜度和空間復雜度,因此,這一點是要著重注意的。

第二種情況就是,我們還沒有代碼,但是有一個需求讓實現。例如我們在做圖像超分辨的時候,網上一般都是針對于三通道大圖像的超分辨率模型,但是如果業務中需要的是4通道的小分辨率的圖像進行超分,我們需要怎么去做,才能夠解決這個問題。作為開發的同學,一般的做法就是找到一個類似的解決方案,然后套上去,不斷的嘗試,從而解決問題;但是到了算法崗,實際上就會有另外的一種思路,那就是,我先研究相關的論文,然后去把論文進行復現,然后再看看哪些點的改進可以用在自己的需求上,然后再把自己的數據套進去,并做模型更改的嘗試,從而完成整個的需求。這種情況,實際上也是開發工程師在轉型算法工程師中經常會遇到的問題。

因此,算法式的思維對于開發轉算法來講,是格外重要的。

?

開發轉算法,說容易也容易,說難也難。上面是我所總結的幾個點,希望通過我的總結,能夠幫助大家,也歡迎大家在下面的留言區留言。

最后,祝大家轉型成功!

END

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯AI基礎下載(pdf更新到25集)機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085,加入微信群請掃碼喜歡文章,點個在看

總結

以上是生活随笔為你收集整理的【职场建议】开发转算法,我们应该如何准备(过来人的肺腑之言)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。