1. 程式人生 > >演算法小白的自我總結

演算法小白的自我總結

       2018年10月26號,覺得該把這段時間做一下總結了, 大概包括心理變化方面、找工作方面吧,csdn為什麼沒有表情可以用,並且終於在上線新版之後變得沒有那麼多bug了,快捷鍵也能用了,介面看起來還可以,為什麼把標誌性的紅色不見了,紅色變成了藍色,藍色變成了灰色,還是覺得紅色最CSDN,要不然寫著寫著都不知道在哪個軟體上。

       去年的這個時候師兄師姐在找工作,每天都來去匆忙,然而去年的我還在佛系搞課題,根本沒想到自己找工作的時候找什麼工作,找專業的還是非專業的,找什麼崗位,只是一心看論文,雖然什麼東西也研究不出來,什麼結果也得不到,整天用MATLAB模擬,其實到現在MATLAB用的也不怎麼樣。

       研究生期間很幸運的擁有一個年輕漂亮能力強的小導樑老師,研一剛開始的時候入門數字訊號處理,直接上手看英文原著,還記得當時一個單詞一個單詞查的時光,現在想想其實可以先查中文的介紹,然後再看英文會比較簡單。研一中期開始學影象相關的東西,老師說研究影象的“相位資訊”,當時真的是無比懵懵噠,查“相位”,一查全都是物理方面的相位,最後才發現是影象傅立葉變換後係數的相位。傅立葉變換本來就是本科期間的神理論,經常有人說傅立葉變換就是在神的角度看你的問題,是啊,把時域的東西變到頻域來看,真的不知道傅立葉是怎麼發現這個頻域的。傅立葉變換剛理解完開始理解小波變換,解決傅立葉無法將時頻域連線起來的問題,可以分析每時每刻對應的頻率,對一個標準的母小波進行各種伸縮變換來適應不同頻率的訊號,對應到影象中就是,邊緣、角點、紋理等細節資訊就是高頻資訊,也就是時域的灰度變化快的地方,過度區間就是低頻資訊,也就是灰度變化很緩慢的地方,小波變換可以適應與不同頻率訊號的分析。對絕世美女Lena圖進行了基本的小波分析之後就到了雙樹復小波,當時也是理解老難了,保留一個低頻影象,六個不同方向的高頻訊號,然後建模分析,做了很多實驗,還自己寫了非下采樣雙樹復小波,打算用來做邊緣檢測結果的融合,反正是前前後後一直在好好學影象,一直在做實驗,用實驗來驗證已知的理論,還挺有意思的,重構啊,邊緣檢測啊,閾值設定啊什麼的,真真切切的被老師看著手推了一篇經典邊緣檢測論文的公式,對影象訊號的提取,邊緣訊號的形態都有了比較實際的認識,雖然後來也沒有再做下去邊緣檢測了,但是真的很感謝老師帶給我的思想和學東西的方式。

       轉眼就慌慌忙忙過完了研一,來到了研二,研二第一學期末也就是十二月底是要開題的,但也就在十月中旬的時候老師開始讓我做影象分類,又是一臉懵啊,還是自己手動搭建多級網路框架,哈哈哈,開始了。讀了很多論文,不過老師說的很對,你連一篇真真正正讀懂的論文都沒有,要不然你早就找到自己的點了,讀論文很飄,經常討論的時候被問到很多沒考慮到的點,其實很多東西是不會的,也有查的,但是真的查不到,數學知識(線代、隨機過程、概率論等等)和數學思想並沒有真正的理解,查到一分,理解一分,還是get不到論文中的思想,其實我也在慢慢鑽進去。然後寫開題報告,開始的時候寫了兩部分,分別是邊緣檢測和影象分類,後來老師說先寫一部分吧,把影象分類寫好都很不容易了,然後就費勁的重新寫了一篇兩萬多字的開題報告。有時候看論文看好多天,還不如老師一句話來提煉一下我要寫的思路,果然老師還是厲害,佩服的不得行,老師的思路很清晰,你要解決的問題是什麼,傳統的方法有什麼缺點,CNN有什麼特點,那麼你建立的這個輕量級散射多級網路有什麼優點,也就是不用海量的樣本,不用很長的訓練時間而是使用預定義的濾波器作為卷積核來提取訊號,還有一個就是能在數學上分析為什麼要利用多級結構。嗯,思路無比清晰了,ppt改的比較有條理,開題前把ppt發給負責收集的同學,第二天碰到以前的舍友說她們教研室的人都說我的ppt做的好好看,而且很美,很清晰,各種飛和條條框框,哈哈哈,開題的時候還比較順利,老師沒問很深的問題。

       記得去年有一次和老師聊天,老師說問我以後想幹哪方面的工作,我說想幹一個非本專業的工作,不用費腦子,老師說為什麼咱們學校很多研究生出去幹專業的工作會很吃力會很難跟上公司的節奏,就是因為從本科開始就沒有形成學習問題和思考問題的方式,只會被動的接受一些理論或結果,而從來不問為什麼,從根本上就沒有理解,只是知道一個概念而已,這在以後是很害怕的,因為各行各業發展到現在,很多方面已經很成熟了,而想要創新必定是在細節上的,你們連為什麼都不知道,更不用說細節了,所以研究生期間要培養的是你們的思維方式,並不是要發多少論文,得到多少成果,雖然能有這些是更好的,但這不是終極目標,終極目標是讓你們知道該怎麼學習,該怎麼搞研究,該怎麼思考,該多問幾個為什麼。從老師說這些話到今天應該已經過去了一年了吧,但是我還是記得很清楚,雖然能力有限,但是思維要開闊,思維決定了你能到的地方,如果你思維都到不了,那能力更到不了。

       開完題了,沒壓力了,也不想做課題了,雖然啥也沒做出來,然後就有閒時間思考找工作的事情了。其實我真的不想思考找什麼工作,專業的還是非專業的,本地的還是外地的,網際網路還是非網際網路的,就想著一心搞好課題,發論文,拿獎學金。但是那個時候S整天跟我探討這個問題,搞得我整天不高興,可能就是不想面對壓力吧,不想考慮未來,就想過安逸的生活。可是他就和我說,他們以前一個師兄發了SCI,拿了兩萬塊的獎金,後來還是找不到工作,找了個論文翻譯的工作,說這個並不是說我沒有發論文我厲害什麼的,確實是因為沒有能力,發不了,還是很佩服發論文的大牛的。後來我想,發不了論文,那總得找工作,既然遲早得面對,那就好吧,好好探討一下吧。

       首先分析要找什麼工作,也就是2018年1月份,當時還不太瞭解這個行業,S是軟開方向,但是軟開吧對於我來說,不行,覺得自己程式設計不擅長,到時候肯定開不了;軟測吧,雖然學歷越高工資越高,但是連大專的也能和你競爭;所以,還是找演算法的工作吧,演算法又分的很多,機器學習的,深度學習的,影象的,語音的,文字的,大資料的,算了,考慮的太多了,關鍵還考慮不到點上,那就開始學習吧。經過分析之後,覺得基本的東西找工作肯定是要用的,所以經過討論之後,覺得就學這些東西吧:python+Tensorflow/caffe等框架+機器學習演算法+深度學習模型。所以我的部落格也是從2018年1月中旬開始寫的。

       那段時間每天就兩件事,一是在菜鳥教學上面學python,二是學並敲程式碼《Tensorflow:實戰GoogLeNet》。開始真的很難,知道python是一門語言,但是他和matlab不一樣,python自己的IDE功能,嗯,好像用的人比較少,然後S就說要用pycharm,好吧,pycharm是一個高階IDE,工業上用的比較多,好不容易理解了pycharm是用來幹嘛的,又說要裝很多庫,幸好發現Anaconda好像比較流行,沒有一個個庫踩坑安裝,裝好了,沒有不學習的理由了。開始學python,學Tensorflow,每天就在CSDN上看各位高人是怎麼學的,收藏了一大堆網頁,也看了很多別人的學習路程,看著看著一天就過去了,好像也沒實質性的理解某個演算法或者模型。1月中旬到一月底,每天就是學python的常用庫,Numpy、matplotlib、pandas什麼的,其實說實話,單一的學這些太容易忘了,還是得用實際的專案來加深記憶,二月初的時候就是看Tensorflow的書,把書裡邊的內容整理到部落格上,因為的習慣在看書的時候整理出來筆記,要不然總感覺看完了跟沒看一樣,啥都記不住,敲敲程式,看看內容,就快到過年了,就回家啦。

       開學三月份了好像,依然無心做課題,還是學東西比較簡單,研究東西太難了。然後就發現了“莫煩python”系列,一個很可愛的湖南小哥哥講的課,很有意義,深入淺出,跟著敲了程式碼,在部落格也記錄了,感覺思路一下子被串聯起來了,同時開始看《機器學習實戰》這本書,也是和西瓜書齊名的機器學習入門好書,講的很細很全面,同樣在部落格做了總結,跑了程式碼,學起來真的是吃力啊,作為一個自動化專業的,也是很艱難了。把書看完了,也總結完了,也跑程式碼了,感覺自己好像對機器學習比較懂了,可以應付面試了。

       四月份的時候可以開始找實習了,其實本身不是想找實習,只是想看看面試到底是怎麼樣的,然後在四月中的時候就接到了兩三個電話面試,首先會問專案,自己的專案一定要理解,而且要有和應聘的崗位有較大關係的專案,這樣會比較有優勢,問我最多的專案就是“十字路口交通擁堵監控系統”,簡單介紹了後面試官就會問,樣本怎麼採集的啊,樣本量是多少啊什麼的,問完專案後回問些基本的引數初始化或者基礎演算法的問題,其中一個公司是Momenta,面試官問了解機器學習演算法嗎,我說了解,然後讓我介紹幾個自己掌握的比較好的,當時一下懵了,就開始說決策樹,還沒說兩句,面試官問隨機森林知道嗎,不知道,Xgboost知道嗎,不知道,那你介紹一下卷積神經網路的經典模型吧,GoogLeNet知道嗎,聽過,那你能介紹一下他的框架和創新點嗎,不好意思我不太瞭解,blabla,那你還有什麼問題想要問的嗎,咱們公司招人比較看重什麼方面,還是比較看重基礎知識吧,然後就沒有然後了。

       面試之後我意識到其實我只是自以為自己掌握了那些演算法,實際上只是停留在能看懂書的層面而已,自己並沒有很理解的情況下,是沒有辦法再面試中很好的表達給面試官的。看了一遍又一遍機器學習實戰,但還是覺得很難走進機器學習的世界。每天刷刷七月線上的機器學習題庫,現在最後悔的就是那個時候沒有好好看資料結構和刷leetcode,導致找工作的時候資料結構是我的軟肋。

       五月份左右,基本上沒學習,發生了很多事情,好的不好的,可控的不可控的,反正是很凌亂,年輕,冷靜,幼稚。

       六月的時候,思前想後打算報個班,七月線上的機器學習集訓營看起來很厲害,不過當時覺得太貴了,然後就四五百報了機器學習第九期的課程,六月二十號左右開的課,真的是一轉眼就快七月份了,覺得一切都來不及了,而且前面還耽誤了一兩個月,然後就開始好好學習了。不過不得不說,七月線上的老師講的是真的好,尤其是寒老師,聲音好聽就不說了吧,講課還特別清楚,很有條理,想聽不懂都不行,每週六和周天上課,但是我一般就回家,後面發現聽錄播的課程更好,因為可以一邊聽,一邊在電子ppt上整理,然後把思路直接貼到部落格上,省去了很多功夫,也就有了我的那個系列《機器學習經典演算法》部落格,而這個系列也是我覺得我寫的最有條理的部落格,雖然和CSDN上的大牛部落格沒法比,但是我覺得是我這些裡邊最好的,哈哈哈,但是閱讀量很少。有緣看到我這個部落格的入門的朋友可以移步我的那個系列,一起學習學習。這個時候我還在七月線上網站的題庫刷機器學習的題,不得不說July老師真的是一個很厲害的人,在CSDN上是部落格紅人,部落格寫的真的是非常全面,很細心,很有分享精神,現在的七月線上輔導班的體制也很厲害,老師都是大牛。我在刷題的時候也用部落格記下來了,幫助自己記憶,也可以分享給大家,資訊共享,於是就有了我的這個系列部落格。真的發現學習的過程有大牛引導對自己的進步有很大的作用啊,我的那個班基本上就是每節課兩個小時,學一個機器學習的經典演算法,老師講的很好,有很多小迷妹和小迷弟,自身來講,對機器學習所要解決的問題,一般的思考方法,都有了很串聯的理解,串聯就是其實機器學習要解決的東西是一樣的,只是你構建不同的損失函式,利用不同的優化方法,選擇適應你專案的演算法,來實現對未知東西的預測。一步步理解了線性迴歸和邏輯迴歸的關係,從邏輯迴歸到決策樹,決策樹真的是一個大樹啊,包含的知識點太多了,決策樹和boosting、bagging的結合,迴歸樹和分類樹的不同,整合學習的不同方法,Adaboost、Random forest、Xgboost,不同的學習基,引數更新的方法,等等等太多了。還有一大經典手推演算法,當然是SVM了,這個演算法說實話是真的難懂,在之前我看過五六遍吧,但真的還是完全理不通思路,可能真的是腦子不行,後來上課之後,我又查了些寫的比較好的部落格,這才理清,然後試著手推,其實也就是那幾個關鍵點,不過是理解起來比較費勁而已。之後寒老師還講了特徵工程模型融合與調優,真的很經典,老師會用通俗的話來講出來那些比較複雜的知識點,會在腦子裡形成一個概念,為什麼會有過擬合,學習曲線為什麼是這個樣子,總之就是使得自己對那些概念的理解更清楚了,不像以前真的就是隻知道概念,知道過擬合是什麼,但並沒有對這個概念形成自己的理解。我覺得學習的過程還是要多問自己為什麼,為什麼這個曲線是這個樣子,為什麼用交叉熵損失,為什麼交叉熵可以衡量兩個分佈的距離,等等等。

       七八月份應該是這麼過來的,複習總結的題庫,複習總結的部落格,還在跟課,系統的整理了一下CNN的經典模型,真的是我最長的一個部落格。八月中應該開始投簡歷了,投一個沉一個,八月初的時候去醫啄科技面試了,沒想到就把我要了,那個時候就覺得找工作還挺簡單的,雖然我沒去那個公司,不過還是很感謝給了我自信。恍恍惚惚的就到了九月份了。

       開學了,開始正式找工作了,什麼百度啊騰訊啊阿里啊都投了,哈哈哈,都沒有然後了。其實投遞的時候崗位非常多,雖然說都是演算法,但是會有影象的,語音的,NLP的,機器學習的,深度學習的,強化學習的,python的,所以要給自己找一個明確的細分點,以我對自己的瞭解,我一般就會投“機器學習演算法”。面過掌閱、vipkid、噹噹、貝貝、APUS、巨集電、移動研究院、縱目還有什麼也記不清了。不得不說,今年的演算法真的是難找的不得行,自身太水,學校和專業也不佔優勢,全靠自己瞎找,身邊的同學都改投軟開和軟測了,不過我還是堅持找到演算法,因為畢竟準備了這麼久,找不到演算法的話我自己都會嘲笑自己。其實那段時間真的挺受打擊的,有時候和教研室小姐姐一塊跑宣講會,但是都沒有啥收貨,而且還總能聽到誰誰誰又拿了幾個offer,誰誰誰又多少錢簽到哪了,然而我啥都沒有,WY問了我一句,我覺得你肯定覺得很委屈,她不說我還沒啥感覺,她真正說出來之後我就真的覺得自己很委屈了,會的東西不被問到,問到的什麼NLP啥了的,都是不會的,委屈完了還是得找工作。有時候很重要的是你知道自己缺什麼,也就是蠢而自知,或者弱而自知,怕就怕啥都不會還覺得自己啥都會,雖然我確實有不會的,但是我知道自己不會,怕就怕你真的差的太多了,等你弱而自知的時候,就差的太遠了。

       九月15號早上,大雨傾盆,APUS的HR打電話讓我去西電面試,我沒有參加筆試,然後就直接面試了,面試官真的是很Nice,一個很可愛的小哥哥,粉紅色的短袖,聊了很多,是我開始面試以來聊得最多的,深入淺出引導著問問題,答不出來的問題也會給我講,還問我西安有什麼特色小吃可以帶回北京,哈哈哈,也是很可愛了,聊完專案,讓我寫一個Kmeans的程式,我就拿到後面寫了,他開始面試下一個人,其實我是用手機搜的答案,寫完了之後又聊了一會,他找了個面試官二面了一下,然後就等HR面,很高冷的一個小姐姐,等的好久,面試官小哥哥說可以先吃飯然後他給我打電話我再過來,我說我手機沒電了,他說我怎麼不早告訴他,然後就去包裡拿了充電器給我,簡直把我都感動了,後來面完HR面之後,小哥哥加了微信,過了兩天我問他結果,他說offer沒問題,然後就是薪資的問題,還說最近可以再找找,貨比三家,哈哈哈,很可愛了,後來給我推薦了HR小姐姐的微信,還讓我別害怕,自我介紹一下,也是很暖了,後面也是發了offer。

       另外一個印象很深刻也是比較感動的面試是移動研究院的面試,當時是在南洋大酒店,早上醒來看見半夜發的面試簡訊,九點到面試現場,去了之後人很多,面試場地也很正式,得了一個很精緻的小本本,原來覺得得個小本本就夠了,沒想到碰到了這麼懂我的面試官。我是去無線網路組面試機器學習的,給到簡歷之後,那位面試官說這是今天拿到了最厚的一份簡歷。然後就開始聊,聊專案,基本上每個專案都過了一遍,我一共寫了六個專案,還問了很多基本演算法的問題,好像有快排、學習曲線、池化過程怎麼反向傳播,有的回答的比較好,有的沒有回答上來,後來面試官說你有部落格啊,順手在電腦上打開了部落格,當時好像八九十篇原創的部落格吧,他就在那看了挺久,然後我和另一個面試官在隨便聊天,後來技術面試官就說,好了明天來複試吧,我一下子沒反應過來,然後面試官又說就是說你進複試了,我直接給你過了,後面會有工作人員通知你,我就很開心的走了。當天晚上快十二點的時候接到了第二天面試的簡訊,第二天中午兩點去面試了,簽到的時候一看,清一色交大和西電的,沒有之外的學校,心裡就大概有底了,就是來炮灰的,哈哈哈。等了大概有半個小時,然後居然是視訊面試,北京的三位面試官在視訊那邊,然後我在這邊帶個耳機,回答問題,問的東西到不多,但是也挺精準的,大概不到二十分鐘吧,然後就結束了,說是等通知。其實我真的已經不抱希望了,因為單純從學校來講,我毫無競爭力,然後面試完了之後就告一段落了。沒想到大概半個月之後,發郵件說我被預錄取了,但是10月21號還得走一場校招筆試,然後才發offer。然後我在這之間還有幾個公司的offer,就想著應該是等不到筆試了,然後21號那天還是筆試了,不過就真的是隨便答了答,因為跟別的公司籤三方也等不到他們的成績出來了。沒想到的是第二天中午,上次一面的那位Y面試官居然給我打電話了,聲音很好聽,問我籤沒簽三方什麼的,還問我筆試答得怎麼樣,我不好意思說沒好好答,就說還可以,然後他說在西安站的面試對我印象挺深刻的,也是唯一一個當時現場直接通知讓我進複試的,二面之後公司的面試官覺得可能我的學校有點達不到標準,然後他也是極力爭取的一個錄取機會,他覺得我一個自動化專業的居然自己學了這麼多機器學習的東西,這點把他感動了,所以挺想讓我去的,打完電話我是有點不知所措。有時候真的不知道別人為你做了什麼努力,真的是很感動,很不好意思,很受寵若驚吧,很感謝Y面試官給我的肯定,聊了很多,至少有人肯定你了,嗯,那種感覺很好。那段時間找工作備受打擊,一方面是學校,一方面是個人能力,雙重壓力,能有人看到你的努力或者肯定一句,對那個時候的我真的是很大的動力,或者說很感動吧,要努力哦!

       還有一個比較印象深刻的是深圳巨集電的HR小姐姐,那個時候大概是國慶放假的前兩天,去高新那邊面試的,和那位技術總監聊了大概有二十來分鐘,然後就和HR小姐姐聊天,聊到我說話都說不動了的那種,有時候迷茫的時候和別人聊天是很有效的一種整理自己思路的方式,那位小姐姐很漂亮,南方普通話,聊高考,聊大學,聊研究生,她問我對去外地排斥嗎,我說不排斥,只有有好的機會好的平臺都是願意的,不挑地方,她說不對,你要出去的話,首先要選的就是地方,北上廣深,和你在西安呆著能學到的東西都是不一樣的,我說其實我剛開始的時候覺得就呆到西安吧,找個安穩的,後來找著找著我發現,外面的機會更多,平臺更大,就想著出去,但是我的老師和同學甚至都覺得很奇怪,都25歲了出去幹嘛,以後還是得回來,結婚生子,按規劃走完一生,那位小姐姐說,她十年前從武漢到深圳,到現在結婚生子反而過的更好,她說目前你身邊的人所能看到的只能給到你這個建議,而你真正去北上廣看看,看看那裡的生活,看看那裡的工作,你以後再回來,你的眼界都是不一樣的,並不會說因為出去的三年回來就跟不上別人了,三年時間對一輩子來說,真的不長,完全可以出去看看,還聊了很多,吳軍的書,得到app,推薦了很多她覺得好的東西,受益匪淺。十一之後來給我發了offer,是做無人售貨方面的,雖然再三考慮之後沒有籤,不過感謝當時小姐姐和我聊得那麼多,還主動讓我加微信,說有什麼問題可以交流,一個很開朗,很正能量的人。

       後面還有幾個面試,記得沒那麼清楚了,很感謝S,在我最沒有目標的時候推了我一把,很感謝第一個肯定我的APUS粉紅短袖小哥哥,很感謝懂我並且在我不知道的情況下為我做了很多努力的移動研究院的Y面試官,也很感謝聊了一個小時人生的巨集電HR小姐姐,還有縱目的一面東北口音可愛的面試官,三面和我討論深度學習的HR小姐姐,還有很多交流過的人兒,不管最後去了哪個公司,秋招的這段經歷真的是很難忘,和教研室小可愛去西電領的很多小禮品,借卡吃大餡兒餛飩,西電門口的過橋米線,坐了很多次的二環線,理解我的樑老師,最開始讓我開始準備找工作且不怕我生氣的S,手推過的SVM,好多好多,單純的記下來而已。

       最後還是象徵性的總結一下吧,秋招找演算法崗位,掌握,真的是掌握機器學習演算法,深度學習模型,找一個比較細的方向下手,不要影象、語言、文字、強化什麼的都想懂,那除非是大牛,一般的,比如說我,反正是肯定達不到的,所以要確定目標,其次是專案,一定要有相關的專案,哪怕你現在沒有,那也要在網上或者找人拿到比較好的專案,一般情況下面試官會讓你介紹一個你覺得你做的比較好的的專案,那這個時候你有沒有一個出彩的專案就很重要了,哦還有,一般還會讓你選擇一個掌握的比較好的演算法,用自己的話介紹一遍,所以不管哪個方面,總要有拿的出嘴的演算法,然後比較重要的一個方面也是我跌的最慘的一個方面就是資料結構,找演算法也一定會問資料結構的。珍惜每一次筆試和麵試的機會,後面會越來越皮,但是你真的不知道哪一次真的可能就成功了,所以要好好珍惜,好好準備,好好學習,感謝遇到的所有人。

       最後,附一些比較好的網站吧,之後再新增,還有就是我的部落格也可以看看,哈哈哈。