日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习相关从业者如何兼顾理论与工程能力

發布時間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习相关从业者如何兼顾理论与工程能力 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

理論與工程

首先,小夕說一下自己目前對理論與工程的理解吧,這也是小夕當前研究理論和熟練工程時主要的出發點。(僅為個人思考,請勿當成真理

?

理論注重的是學科中各個知識點的大一統,將各種散亂的算法、現象、技巧來歸結到一張大網中。這樣在新理論、新技術到來的時候,你可以很快的從這張大網中get到新理論、新技術的本質,并將這些創新納入你的大網,并且可以反思這張網,歸結出其中的規律或者疑問,以此為突破點來“靈光一現”出創新的idea,說不定就是一篇轟動學術界的論文。

?

而工程,或者說用于實現想法的代碼,則是對某個理論點的細節化實現。雖然在理論上只需要幾個數學公式就描述清楚了,但是用代碼實現的話往往充斥著大量細節需要仔細斟酌,一不小心就是一個bug。當然了,一些太過復雜的算法,如最優化算法,一般都在各種優秀的科學計算庫里封裝好了,調調API就可以了。但是每個工程總是有一些數學細節和小trick需要自己去實現或優化的。在工程里遇到的問題,有時也可以抽象成理論,反思一下或許也是一個改良模型的idea,發個小論文也行呀。

然后,鑒于大家喜歡聽故事,就講講小夕自己的故事啦。

故事一

小夕是在大二暑假的時候接觸的機器學習相關領域。在那之前,是移動計算特別火熱的時代,就像現在是個程序員都喜歡吹噓自己是做機器學習的一樣,那時候好像身邊的同學(當然包括小夕自己),都喜歡吹噓自己Android開發/IOS開發多么多么厲害,又上架了一個IOS應用賺了幾塊錢之類的。

小夕也有幸在那個時代啪了好多代碼(哪像現在,沒敲多少行代碼的就開始坐等幾天的模型訓練,然后改改參數,又開始坐等了),也因此熟悉了各類平臺(linux、android、ios)。

?

然后那時候,形成的一種錯誤的思維就是“變成xx開發者/工程師無非就是將xx平臺的API熟練一下,然后深入平臺、框架的源碼”,因此都快把數學丟干凈了。

那時每天就是開腦洞,觀察生活,搜集idea。然后借助xx語言在xx平臺,甚至搬出單片機,來實現這個idea。在這個過程中,小夕發現用代碼實現一個想法的時間遠小于調試自己的爛代碼的時間,于是扎進各種語言和平臺的細節里無法自拔。

故事二

?

大二暑假,在機緣巧合下,被某個老師帶去做人臉識別了(那時候實驗室里沒人知道深度學習是啥),然而小夕還是帶著舊思維去做,最終的結果匯報如下:

“老師,這里我用PCA做的,效果還不錯。但是我想試試SVD。”

(然后老師很慈愛的在心里默默說了一句“逗逼”。)

?

“小夕,你講一下這部分怎么實現的”

“啊,好的。這里用兩個for循環就可以了,第一層@#$%&,第二層#$%^&”

“停停停,別講這些細節,講原理”

“啊,好的。這里就是先用那個xxx函數預處理一下,然后用這個svm函數訓練一個模型,然后調用模型的predict這個api得到結果”

“停停停,講原理,講原理!你為什么要用這個算法預處理?你為什么要用svm呢?”

“啊。。。因為我用了opencv里其他完成這個功能的api,效果都沒這個好啊”

“@#¥%……%&*(”

?

沒錯,這是很真實的一次開會的內容。現在每次想到都深深的尷尬。。。

?

那時候,深深的感覺到玩弄黑匣子的笨拙,就好像試圖用暴力法解決一切算法問題一樣笨拙。

?

故事三

然而,你們沒有想到的是,后來,小夕又矯枉過正了。在惡(chong)補(xue)了微積分、線性代數、概率統計后,一頭扎入機器學習和圖像處理算法無法自拔。以致于半年之內,除了用matlab練了幾個小demo外,絲毫沒有敲代碼。

?

然后,都是淚...現在真想回大學里跟那位帶我做人臉識別的老師說聲謝謝。

正文

?

走上正軌是在上研究生以后,深刻的認識到在這個研究方向上,理論與工程缺一不可。于是摸索出如下自認為比較舒服、效率比較高、不易造成理論或工程斷層的方法或原則:

?

  • 精力劃分:理論與工程基本7/3分。

  • 編程語言:一門精,一門輔,剩下的備用。在完全切入這個領域之前,盡量避開C、C++、Java等編程范式或者說編程語言的感覺比較濃厚的編程語言(這句話講的好奇怪),以防過多的編程語言細節干擾了你對算法的宏觀理解,除非已經非常精通那門語言,且確保那門語言有該領域成熟的庫。小夕首推精python,輔C++,備用matlab和java。

  • 如何入手一個新算法/新模型:

  • 除非工程任務壓得緊,否則在學習一個新算法/新模型時盡量先從數學角度理解透,納入理論的大網下,再去看形式化的算法過程。

  • 而形式化的算法過程要盡量與數學過程對應起來,如果感覺斷層大,要盡量試圖找到斷層。如果實在找不出,或者精力少,則一定要記下這個斷層。

  • 之后就可以用代碼去實現形式化的算法了,在這個過程中,就不要再過多糾結它的數學原型了,而是要試圖從“感性意義上”去理解算法過程,并且用代碼去實現這個感性的算法過程。

    • 如何入手一個新領域:比如你一直在做分類,然后要去做序列標注/預測相關的東西。這時就不是看一個新算法那么簡單了,而是要盡量找到相關領域的綜述性論文,或者比較權威的書籍,將這個新領域的各種算法概覽、解決的任務類型、解決問題的一般化框架/流程給做到了然于胸,然后再去扎進其中具體的算法里。

    • 如何應對緊迫的工程任務:

    • 此時千萬不要做一個“完美主義者”(這里是超級貶義詞)。比如工程需要,老師讓對該領域一無所知的你趕緊實現一個機器學習模型,可不要先看微積分、線代、概率統計,再看機器學習算法原理巴拉的。既沒有必要又耽誤了任務。

    • 直接按照工程任務的標準找到符合該標準的最成熟的模型/算法,然后去找實現了該算法的庫。如果連庫都沒有,說明要么你找的有問題,要么確實需要很新的算法去解決,那就stackOverFlow尋找新思路+github找代碼呀。算法原理什么的,甚至算法的工作流程什么的,不出問題就不用細看,只粗看懂這個算法用在哪里,輸入是什么,輸出是什么,有哪些參數需要調,大神們說怎么調就可以了,實在不知道怎么調就交叉驗證啊(只要數據量不是特別大)。

    • 快速入門一個庫或者框架時,切記別上來就啃工具書的第一頁。官網的《get start》往往是最好的入門資料,別人寫的書籍雖然看起來靠譜、厚實,但是別忘了,書籍作者也僅僅是個使用者,而不是開發這個工具的人,他理解的再深也難免有偏差甚至偏見,最要命的是,這些書籍的作者往往默認為你有一大堆的時間去品他的書,實際上你哪有這些時間啊。因此,官網的《get start》之后,一般對這個新的庫或框架就有大概輪廓了,這時邊著手將其用在你的工程任務上,邊結合官網進一步的指導文檔(如果有的話)進一步學習。有條件的話備一本大而全的工具書,沒條件的話官網的API文檔也足矣,用到哪里查哪里。

    • 完成工程任務后,趁熱打鐵,記錄下本任務過程中遇到的所有的黑匣子。如果黑匣子特別多,就先不要管了,按照第4條如何切入新領域的過程做。如果已對該領域有一定了解,則不妨從這些黑匣子算法或黑匣子框架入手,蔓延開自己的理論大網(經工程練手后的黑匣子會激發特別強的求知欲,往往理解和記憶更加深刻)

    • ?

      都說,真正愿意把看家本領教給你的只有父母和中學老師。然而,其實還有一個人,那就是小夕呀o(≧v≦)o~

      ?

      當然啦,經驗類的東西,有個體差異的,如果發覺小夕的經驗讓你的情況更糟糕了,趕緊stop,微調甚至舍棄這些方法。

    總結

    以上是生活随笔為你收集整理的机器学习相关从业者如何兼顾理论与工程能力的全部內容,希望文章能夠幫你解決所遇到的問題。

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