高效學習神經網絡技術——以具體的任務類型為切入點 原創
“ 學習技術要從解決實際問題出發,這樣才能更快更好的學習新技術,并不容易忘記;而如果單純的為了技術而學習技術,那么你將會一邊學一邊忘。”
這段時間一直在學習神經網絡技術,包括神經網絡模型架構,神經網絡設計,數據集前置處理等;但這幾天突然發現一個問題,會看這段時間的學習,雖然不能說一點收獲都沒有,但卻覺得進度很慢,而效果也不好。
比如說,到目前為止依然沒有理解怎么實現一個具體的神經網絡網絡,以及獨立設計和實現一個數據集。
原因主要有兩點,一是學習的過程中全都是自己摸著石頭過河沒有人能指導;其次很重要的一點就是學習的方法不對,學習的過程中是把神經網絡不同模塊分開來學的,但卻沒有認識到神經網絡技術是一個多環節的整體。
以具體任務為切入點
在學習神經網絡技術的過程中,又犯了一個常見的錯誤;拋開了具體的任務需求,去嘗試學習一些所謂的“通用”技能;比如神經網絡需要模型設計,數據集處理等。
但神經網絡是一項復雜的技術,不同神經網絡之間,以及不同數據集之間雖然有一些交集,但更多的是巨大的差異;雖然從更抽象的角度來看,神經網絡技術都需要經過固定的幾個步驟;比如模型設計,數據集整理,損失函數,優化算法,訓練等;但不同的神經網絡,其每一步都是有差別的。
比如說在自然語言任務和圖像處理中,對神經網絡的結構以及數據集的要求都是不一樣的;兩種任務類型存在著天然的技術差異。
因此,在學習的過程中,最好的方式是從具體的任務出發,去解決具體的問題;而不是把技術當作空中樓閣,單純的去學習技術,而這也是技術人員在學技術的過程中會經常犯的錯誤和問題。
最直接的體現就是,我們在學校或者在學習某一項新技術的時候,總是喜歡從理論和基礎出發;然后結果就是,一段時間花大力氣學的東西,沒幾天就忘得差不多了。
雖然說不懂技術和理論,很難去上手去做一件事情;但如果是從問題出發,比如為了解決某個問題,然后去學習某個技術,這時學東西就會特別快;然后因為有具體的應用場景,因此就會記得更深刻,理解的也更深刻,也更難忘記。
技術的誕生是為了解決問題,而不是為了學技術而研究技術。
以作者自己學習數據集處理的過程來說,在自然語言(NLP)任務中,不同的NLP任務,需要不同形式的數據集;比如說分類任務,問答任務,聊天任務,需要的數據和神經網絡模型都是不一樣的。
而在數據集處理的過程中,其要求和處理過程也是不一樣的;舉例來說,在比較嚴謹的應用場景中,訓練語料中需要的是嚴肅且嚴謹的內容;而在一些感情領域,需要的不是邏輯性,而是有足夠的情緒表達。
而這兩種模式,即使模型是相同的;但語料絕對不會一樣,因此在具體的數據集收集和處理的過程中也不能一樣。前者需要把嘿嘿,哈哈等情感詞匯作為停用詞,但后者需要把嘿嘿,哈哈這種情感詞匯作為關鍵詞。
而去由于沒有經歷過完善的神經網絡設計與訓練流程,雖然感覺自己每個環節都學了,但結果卻是每個環節都不一樣,整體就更不行了。
本文轉載自公眾號AI探索時代 作者:DFires
