本文想要告訴你,程序員可以進入機器學習領域。我會告訴你學習機器學習就像學習其他任何一門技術一樣。我們會首先將學習機器學習和編程進行對比,這本身就是一向更大的挑戰。
創新互聯建站專注于企業營銷型網站建設、網站重做改版、開陽網站定制設計、自適應品牌網站建設、HTML5、商城網站建設、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為開陽等各大城市提供網站開發制作服務。想要學習編碼的設計師
設想你是一個設計師,一個經驗不多的設計師。你使用類似Photoshop的工具,切圖并且轉換成CSS。你的身邊都是程序員,或許你也羨慕他們的編碼能力。你想要學習編程。不管對錯,你認為CSS和HTML是“實踐編碼”,是一種創意的表達,但是編程,和你的創意相比,完全是另外一回事。
你跑到Quora和StackOverflow去提類似于“我是一個設計師,如何學習編程?”這樣的問題。
你得到一堆不著邊際的回答。你得到貌似高手的程序員奉上免費的建議“學習C和指針”,“學習二進制”,“買一本ASM的書”,“先學LIST”。可能會有一個雄辯家寫了長篇大論來說服你買一本Knuth的《編程藝術》1-3卷。你接受了他的建議,只看了介紹就從Amazon買了那書,然后覺得自己學不會編程是因為自己不夠聰明,并且在接下來的3個月中重復著向同的過程。
發生了什么?建議看起來沒問題呀?
問提出在建議過時了。這樣的建議來自從他們自己的角度考慮問題的程序員,并且是關于已經是程序員的人如何做得更好。這樣的建議沒有考慮一個完全的新手的情況,好比一個僅有一點興趣的業余選手正在試探水溫,看看是否適合游泳。
現在我承認,情況有一點不一樣了。這種場景已經被重視,并且已經有針對這種場景的服務了。例如:教人如何編程。
當然,我們也需要學習指針,ASM,LISP甚至閱讀Knuth的著作(我相信不會有人一頁一頁的讀的),那是稍后的事情了。那如何開始呢?我是通過改造一些東西,嘗試一些東西,來體驗,創造和學習。我會把深挖技術的部分往后放,因為我想創造更大規模,更好,更強大的程序。我沒有從技術的細節入手。我認為這種經驗和當前大部分程序員是相似的,這和你的相似么?在評論中告訴我。
想要學習機器學習的程序員
現在正在閱讀這篇文章的你,很可能是個程序員或某方面的開發人員。想想你在機器學習方面的興趣。你有看到過專業的機器學習領域的專家給你免費的如何開始的建議嗎?
我已經搜索并且閱讀了這樣的建議,有用的很少。如下是我收集的一部分。
學習機器學習需要具備那些數學知識?
你需要熟練使用線性代數(向量和矩陣)并且懂得指數和對數。
如果你想簡單一點,你至少需要知道線性代數中的特征項量。
對于機器學習,很強的數學功底真的這么重要嗎?
你的確需要熟悉一些概率,線性代數,線性編程,多變量微積分的東西。
對于機器學習,哪些技能是必須的呢?
第一,你要有個相當的計算機/數學背景。機器學習是一個高級玩意,所以大多數文檔都假設你有這樣的背景。
統計學,概率,分布式計算。
有一些好的建議,但是這些建議對于一個完全的新手是否合適?是否適合那些正在試探水溫的程序員?
有可能大家在問一個錯誤的問題。并且,我已經摘取了在回答中提到學習機器學習必須先學習數學的片段。我需要指出的是,如果一個初學者把大量時間花在他們不具備的條件和無法做到的事情上,他們會過早得放棄,而那時,他們甚至都沒有是個。
很好的掌握線性代數和概率論對進入機器學習領域是一個很好的基礎,我完全同意。對多階分析《統計元素》是一本很棒的書,我完全同意。我只是不贊成學習機器學習的第一步應該是學一門數學課程或讀一套領域中相當深奧的理論。實際上,我強烈的反對這樣。
兩個機器學習領域
機器學習有兩個方面:
機器學習實踐:這會涉及數據查詢,數據清洗,編寫用于轉換數據的腳本和把算法和庫連接起來和寫一些代碼來解決困難的定義不清的命題。這個都是現實中的。
機器學習理論:這會涉及數學,抽象,理想方案,極限,美學和可行性判斷。這個相對純粹并且脫離現實。
沒有了理論部分的支持,實踐部分便失去了框架和嚴謹性。沒有了實踐部分,理論就失去了意義和動力。將這兩者分開說是行不通的,這真的是一個有很多工具,很多公式的領域,跟著我就好了。
作為一個程序員,你會更傾向于實踐方面,但是,作為一個“技術人員”,你遲早會碰帶天花板,你會需要學習理論來得到有效的提高。你必須閱讀關于算法的數學論文,你必須讀很厚的書。那是在這個領域作出杰出成果必須要做的。但,問題是,那是一個實踐者給初學者的建議,那過于理想化,適合程序員,所以,對初學者依然是不合適的。
程序員喜歡強大的工具。
我認為,對于一個經驗豐富的程序員,把機器學習看成是一個高級的編程方法,就像線程(跟上我)。
如果你想掌握線程,你只需寫一些多線程的程序并且了解他能解決哪些問題。你把線程的知識和你原先的知識體系進行綁定,你原先的知識體系會起作用,并且你會注意到線程可以解決哪些以前不能解決的問題。如果你確定這是適合你的,你可以閱讀書籍并且挖得更深。
你可以使用現成的多線程庫,你也可以自己寫一個,你可以挖得更深并且學到更多線程結構背后包含的數學知識。你的興趣驅使著你學習并且最終你可以確保完成一段多線程的代碼。這是一個漸變的過程。
顯然,機器學習是一個更龐大的更復雜的領域,我提倡使用循序漸進的策略,在未來的文章中我會詳細說明。
不要讓一個初學者來學習機器學習,并且把系統上線。這是很危險的。你遲早會得到足夠多的教訓,并且意識到這是危險的。不過,如果有編程的經驗就不一樣了,代碼審查,主從意識,編程常識都會控制那些可能存在的危險性。
就像學習編程,學習機器學習是一個沒有終點的旅途,精通就意味著持續的學習。學會閱讀公式,用代碼實現公式,如果有興趣的話,接下來就用你自己的代碼來解決問題。
資源
如果你想要持續研究這個問題,下面有我列出的資源。可能有一點深,我確定我們會產生很多不錯的討論。
向上翻,看看那些來自StackOverflow的回答。有說程序員不能學機器學習,除非他們懂數學的,但也有鼓勵的,給你信心的。
為什么成為一名數據科學家會比你想像的容易?一篇來自Gigaom的報道稱,在同等條件下,從scratch起步的數據科學家可以很快具備國際競爭力。
數學對編程是必須的嗎?有趣的是,我認為兩方的辯論是十分相關的,并且這是一個很有用的觀點。
這篇文章可能引發論戰,我很感興趣你們怎嗎看。和你的朋友太論這個話題,我的確聽到很多關于危險區和“技術人員”循序漸進學習學習機器學習的觀點。我會在未來的文章中對以上兩個話題進行跟進。
網站標題:程序員可以進入機器學習領域
當前網址:http://vcdvsql.cn/article22/sohgcc.html
成都網站建設公司_創新互聯,為您提供小程序開發、搜索引擎優化、網站收錄、Google、網站營銷、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯