有些小夥伴知道我作nlp的總問我怎麼學習,其實我也是個菜鳥,就介紹一下我對算法的理解,說說怎麼入門。 對算法的理解: 關於算法工程師,應用很廣,用的知識也被分爲不少分支,地圖的道路規劃可能用到動態規劃,代碼計算的優化算法簡單的就是熟知的數據結構中的排序與查找,廣告推薦用到關聯規則,而後近些年火起來的機器學習,深度學習都是算法。這些算法也沒有嚴格的界限,工業上常常各類算法一塊兒使用。我的認爲目前算法能夠分爲兩類,一是優化計算量,如查找排序,路徑搜索,這種主要利用一些巧妙的思惟邏輯減小計算量,最後獲得想要的準確的結果;二是利用機率統計從數據中挖掘有用信息,這種就是機器學習與深度學習,從已有的數據中計算各類機率,並優化處理過程的計算量,最後獲得的結果是一個有機率的結果,這還有一個搜索算法。目前互聯網公司比較多的算法崗位可能是指人工智能,機器學習,以及廣告推薦,而風險評估這崗位也多用機器學習算法作的,也就是第二類。這一類的一個依據是什麼大數定理,還有其餘的定理,我忘記了,通俗意思就是:當一件事(如拋硬幣)發生的次數多了,咱們就能夠粗糙的認爲這件事中的某個現象(如正面朝上)出現的理論機率就是這個現象出現的次數與這件事發生次數的比值,即正面朝上的次數/投硬幣次數=正面朝上的機率。當咱們沒法得知一件事的準確機率時,就從已有的數據去這樣計算來估計,而後數據越多,計算出的機率越準確。 人工智能大概分爲幾個領域:天然語言處理,圖像處理,語音處理。 天然語言處理主要是對文本的處理,底層是要對文本分詞,詞性標註,創建詞向量等。往上又主要分爲:文本分類,文本翻譯,閱讀理解,智能問答,知識圖譜等。具體業務應用好比新聞稿分類,商品的正面負面評論分類,語言上的翻譯,客服自動回答等,這些都沒有嚴格界線,都很靈活的應用在系統上。好比淘寶的商品推薦首先要對商品的屬性進行相似文本分類,接着對客戶的數據進行分類添加標籤,而後互相對應又用到搜索匹配算法。 圖像處理了解的很少,文本以詞或字符爲單位,圖像以像素點爲單位,傳統的會對圖像像素的色彩數值進行計算,如腐蝕膨脹等,深度學習以CNN爲開端則是對圖像以一個小區域爲單位進行計算,全部帶有相鄰像素的信息更準確。主要應用有OCR識別,如識別車牌號,門禁識別人臉,識別圖片的文字,如今有app能夠掃描銀行卡識別卡號,具體又有分類或者識別出具體的文字或字符。不少時候都要傳統的算法進行圖象預處理,把圖像特徵突出的更明顯效果更好。 語音處理這塊我接觸的最少,幾乎爲0,大概就是把聲音轉成文字,一段聲音分多幀,還有音素什麼的,其實只要識別成文本後剩下的就是天然語言處理的工做了。 不少業務場景都是不少算法結合使用的,好比智能機器人首先語音識別把聽到的聲音轉爲文字,而後利用天然語言處理判斷意圖進而去領域數據庫或者知識圖譜內利用搜索算法快速檢索可能性最大的詞彙,再組織成語言利用語音技術發聲回答。 那麼具體怎麼學習與入門呢? 首先要會一門編程語言,首推python其次java與c++和c,不用太熟,能寫數據結構中的排序與查找算法就行。 而後建議學一些機器學習的算法,從工程入手,跟着書籍或者視頻調用現成的包實現小demo,瞭解這是究竟是幹什麼的,而後嘗試瞭解具體算法原理,最簡單的是k-近鄰算法,而後貝葉斯,邏輯迴歸等等。我推薦一本書<機器學習實戰>「圖靈程序設計叢書,Peter Harrington著,李銳,李鵬,曲亞東,王斌翻譯」。裏面有很好的案例與解釋,還有python代碼,最適合工程入手的小夥伴。而後是周志華的西瓜書(因裏面常以西瓜舉例得綽號)與李航的《統計學習方法》,視頻推薦「唐宇迪博士」的,若是英文好看國外視頻更好,還有吳恩達大佬的。當有了機器學習的一點基礎在學一點神經網絡玩玩。接着看往哪一個領域發展,作天然語言處理要了解分詞,詞性標註,實體識別,文本分類,句子類似,詞向量等等。具體能夠先看tf-idf,餘弦類似,跟着衆多博客寫寫,我以爲簡單易懂還有效。而後ng-ram,hmm,crf,rnn,lstm,sequency2sequency,word2vec,fasttext,bert等等都嘗試嘗試。圖像的話我不知道,能夠先看看圖像的基本處理方法如腐蝕膨脹等等,不看也影響不大,直接從CNN開始到Alex Net 還有VGG等等,最近有個fasterRcnn。作NLP能夠看看吳軍的《數學之美》,其餘的好像沒什麼好書,硬要推薦就是宗成慶老師的天然語言處理綜述 關於特徵工程 其中作機器學習有一個過程叫「特徵工程」,結果的怎麼樣和特徵提取的好壞有很大的關係。常見的兩個機器學習入門案例,一個是房價預測,一個是垃圾郵件分類。所謂的「特徵工程」就是提取準確的特徵,而「特徵」就是蘊含咱們須要信息的屬性,咱們能夠根據這些屬性來計算咱們最終想要的結果,好比房價預測,房價確定和房子的大小,房子的位置有很大關係關,因此咱們的特徵就有房子的面積,房子距市中心的距離等,而無關的特徵則不必加上去還會增長計算量,好比房價會和小區有多少單元相關嗎?就算有,影響也不大。如何能從一堆數據中找到和咱們關心的結果有影響的屬性數據是十分重要的,有時只能把全部屬性全加上去靠算法反饋賦予不一樣權重來弱化無關特徵的影響,有時無關屬性多了反而影響咱們的預測結果。算法工程師一大半時間在數據處理和提取特徵上。而深度學習則是至關於自動提取特徵了,咱們一股腦的把全部數據放上去,深度學習算法則不斷反饋修改權重參數,最終分配好不一樣特徵的權重,而後再預測,可是這時各個特徵的權重對咱們來講也是一個黑盒子。不管用什麼算法,能精準提取特徵或提早去除無用特徵總歸對算法準確度的提高有很大的幫助。忽然想到一個例子,好比看相先生,實際也是提取特徵,根據人的五官容貌,衣着,皮膚,談吐這些特徵判斷這我的的家境經歷脾氣性格。。。還有就是要會把這些特徵進行量化,就是表示成數字來讓計算機去計算,NLP的詞向量就是對特徵的量化,圖像的卷積也是。 最後 看書,視頻學習,看博客。。。多多百度google一些專有名詞,擴大領域知識積累。都這麼入門而後看論文論壇作項目提高。有心的能夠看看kaggle的比賽,裏面有數據有案例.後端小夥伴轉算法仍是很好轉的,可是若是工做還不錯不建議轉,去年開始算法崗位就有些難找工做了,由於已經出了幾屆搞算法的學生了,接下來須要的是大神資深人士,能夠先搞搞,以爲本身學的很不錯了再去轉。而後一些工程上經常使用的東西:python模塊的numpy,pandas,matplotlib,sklearn,tensorflow,keras,pytorch...若是熟悉C++能夠考慮作圖像用caffe.其實文中不少東西我只是據說或瞭解,你們一塊兒學習呀! 本文不少內容憑記憶寫的,有誤望諒解!