传统方法学习IT已不再适用,快速提升的方法原来是这样
當(dāng)下從事IT行業(yè)無非是純技術(shù)人員和非純技術(shù)人員,但是學(xué)習(xí)的方法、套路還是一樣的。
在談?wù)?『寫代碼』 時最常提到的領(lǐng)域就是軟件工程,它基于計算機科學(xué)和應(yīng)用數(shù)學(xué)的基礎(chǔ)。雖然沒有必要成為一名數(shù)學(xué)家或計算機科學(xué)家才能成為軟件工程師,但對于大多數(shù)人來說,有時候基本的編程概念也很難學(xué)習(xí)。
就拿數(shù)據(jù)分析師這個行業(yè)來說吧,如果想進階成為算法工程師,那肯定需要自己嘗試去寫代碼來完成某些特定領(lǐng)域的業(yè)務(wù)。對新手而言學(xué)習(xí)數(shù)據(jù)分析的第一個門檻就是 『機器學(xué)習(xí)』,因為這個很多人誤認(rèn)為需要很好的數(shù)學(xué)基礎(chǔ)才能掌握機器學(xué)習(xí)相關(guān)算法,例如貝葉斯概率,線性回歸等等,其實可以不用那么糾結(jié)的。
這里為廣大新入行自學(xué)的小伙伴分析一下常規(guī)的三種方法, 自上而下、自下而上、其他方法。還會列出一些概念的優(yōu)缺點,以及一些值得考慮的替代方案。
@[TOC]
『自下而上』 和 『自上而下』 的學(xué)習(xí)方法已應(yīng)用于諸多學(xué)科,最需要的是知道如何應(yīng)用與實際工作解決問題。解決這種問題需要將問題和實際結(jié)果聯(lián)系起來才能夠處理,最終指向提供一個結(jié)果或者解決方案,這個方案可以是人工的也可以是機器程序計算的。
不同學(xué)習(xí)方式的區(qū)別。
- 『自上而下』 的學(xué)習(xí)一般定義是使學(xué)習(xí)者沉浸在主題的完整背景中的過程。也就是說如果想要學(xué)習(xí)打乒乓球,會直接給你球拍跟人進行對打。
- 『自下而上』 的學(xué)習(xí)是讓學(xué)習(xí)者只接觸學(xué)習(xí)理論知識,比如打乒乓球涉及的動力學(xué)、物理學(xué)。但是不會涉及球桌和球拍。
自下而上的學(xué)習(xí)
選擇一個例如『數(shù)學(xué)』這種研究領(lǐng)域,使用常規(guī)的邏輯來看待數(shù)學(xué)問題,基于目標(biāo)通過技能、能力、理解力自然地引導(dǎo)學(xué)習(xí)。
問題是這種方式僅僅是對那些有著一定基礎(chǔ)或者專長領(lǐng)域的人才有意義而已。
『自下而上』的缺點
學(xué)校的大部分內(nèi)容都是圍繞著這種方式來教學(xué)、學(xué)習(xí)的。許多技術(shù)和科學(xué)研究領(lǐng)域也都是通過這種方式教授的。這就是為什么很多學(xué)校的學(xué)生出來之后雖然知識儲備很豐富,但是一干活就傻眼的原因。回想一下高中或本科學(xué)習(xí)以及可能從事過的基礎(chǔ)學(xué)科,例如:數(shù)學(xué)、生物、化學(xué)、物理、計算機等等。是不是老師僅僅教了你知識,卻很少教實際應(yīng)用的事情。
還是拿乒乓球舉例,無論你對空氣動力學(xué)、材料學(xué)、物理力學(xué)掌握得多么透徹,但是從來沒有真正意義上拿過球拍和其他人上陣對打,那么永遠(yuǎn)不會成為一名乒乓球運動員。
『自下而上』的優(yōu)點
但是還是有很多優(yōu)點的許多優(yōu)點。我認(rèn)為其中最重要的是學(xué)習(xí)者能夠獲得對主題的完整理解,只要花時間掌握每個組成部分(也就是常說的系統(tǒng)性學(xué)習(xí))。將問題分解成小的、連貫的片段。在編程世界中,理解任何語言、框架或工具的重要部分是一個漫長而困難的過程。
在學(xué)習(xí)一門新語言時,自下而上的方法對于需要在高層次上理解一個概念以便對轉(zhuǎn)向另一個概念充滿信心的學(xué)習(xí)者很有用。例如使用自下而上的方法學(xué)習(xí) JavaScript 的基礎(chǔ)知識可能涉及學(xué)習(xí)原始值,如數(shù)字、字符串、布爾值、數(shù)組和 null/undefined,然后轉(zhuǎn)到對象和函數(shù),最后轉(zhuǎn)到范圍和控制流。理想情況下每個概念都將建立在以前的概念之上,為學(xué)習(xí)下一個知識點做鋪墊。
自上而下的學(xué)習(xí)
是一個一個面向宏觀的、實用的過程,讓學(xué)習(xí)者沉浸在主題中。自上而下方法的優(yōu)先級是為問題或主題領(lǐng)域提供更廣泛的視角,而不必詳細(xì)介紹特定組件如何協(xié)同工作。將自上而下學(xué)習(xí)應(yīng)用于編程的一個很好的例子是給新開發(fā)人員一個他們需要使用不熟悉的語言或工具集完成的項目。自上而下的方法不是依賴于對孤立組件的掌握進展,而是讓學(xué)習(xí)者通過探索和實驗來理解各個部分。
『 自上而下』的缺點
說真的我聽過很多次『 專家』這樣說:
你必須先了解理論,才能使用這個技巧,否則你不能正確使用它。
我同意結(jié)果一開始是不完美的,但改進甚至專業(yè)知識不僅必須來自理論和實踐基礎(chǔ)。但是失去了目標(biāo)導(dǎo)向的學(xué)習(xí)努力是耽誤時間的。
自上而下的學(xué)習(xí)也有缺點。很多時候會對概念的理解不完整。學(xué)習(xí)者可能掌握的僅僅是協(xié)同操作,沒有清晰的路徑來理解基礎(chǔ)組件如何協(xié)同工作。
舉個最簡單的例子來說字符串和數(shù)字的區(qū)別。
>>> 1 + "1"
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for +: 'int' and 'str'
如果你想成為技術(shù)員,在實踐中使用工具來幫助其他人,而不是成為研究人員,天天動嘴皮胡扯。不需要涵蓋所有相同的領(lǐng)域,因為有不同的學(xué)習(xí)目標(biāo)。盡管一旦有了可以整合抽象知識的上下文,就可以回過頭來學(xué)習(xí)任何喜歡的東西。工業(yè)開發(fā)人員不是計算機科學(xué)家,而是工程師。
『 自上而下』的優(yōu)點
自上而下的學(xué)習(xí)方法對一些學(xué)生來說特別有利。就個人而言我對編程的興趣是由數(shù)據(jù)的處理和應(yīng)用,可以讓我可以實現(xiàn)自己完整的(大部分)工作項目。最初這與進行命令行測驗和通過腳本做一些簡單的游戲輔助工具。除了學(xué)習(xí)的動力外,自上而下的方法也是實用的。對于許多學(xué)習(xí)者來說,目標(biāo)是只學(xué)習(xí)理解或?qū)嵤┓浅>唧w的概念所必需的內(nèi)容。在這種情況下,自下而上的過程將是多余的甚至可能浪費時間。
好比說你要做一個用戶畫像的分類需要用到邏輯回歸公式計算,但是我們沒有必要從頭寫邏輯回歸的公式,直接應(yīng)用第三方包調(diào)用直接可以計算結(jié)果了。畢竟老板們要的是結(jié)果,而不是說你能寫公式啥的。
如何學(xué)習(xí)閱讀?
回想一下你是怎么學(xué)會閱讀的?
比如我現(xiàn)在教我的孩子讀書:
- 從產(chǎn)生興趣開始,比如好看的書籍封面。
- 是直接進行發(fā)音閱讀而不是拼音。
- 記住最常用的單詞、它們的發(fā)音以及如何拼寫。
- 學(xué)習(xí)啟發(fā)式方法來處理未知生詞。
- 在有(無)父母的監(jiān)督下通讀書籍。
但是孩子不懂為什么要讀書,只是單單從興趣出發(fā),例如:
- 閱讀電視節(jié)目(廣告)的字幕。
- 閱讀有關(guān)他喜歡的主題的故事,例如汪汪隊。
- 我們外出時閱讀標(biāo)志和菜單。
同樣他也獲得了可以跟蹤并看到改進的結(jié)果。
- 擁有更多的詞匯量。
- 能夠獨立流暢地閱讀習(xí)慣。
- 可以閱讀越來越復(fù)雜的書籍。
以下是他目前階段沒有必要學(xué)習(xí)的內(nèi)容:
- 詞類定義(動詞、名詞、副詞等)
- 語法規(guī)則。
- 標(biāo)點符號規(guī)則。
- 人類語言理論。
如何學(xué)開車?
你會開車嗎?你是怎么學(xué)會開車的?
我們在報考駕校的時候一般不會學(xué)的這些,例如:
- 汽車的歷史。
- 內(nèi)燃機理論。
- 汽車常見的機械故障。
- 汽車的電氣系統(tǒng)。
- 交通流理論。
直到今天,我仍然設(shè)法在不了解這些內(nèi)容的情況下安全駕駛。事實上,我從沒想過要學(xué)習(xí)這些內(nèi)容。因為我對這些東西沒啥興趣,而且學(xué)了之后也不會幫助我在開車過程中有什么幫助。
如果在路上車壞了,我會打電話給道路救援。
如何學(xué)習(xí)編碼?
最初,我開始編程時對編碼或軟件工程的含義一無所知。
經(jīng)常會使用 Excel 中處理一些工作上的問題。也會修改了電腦游戲(金山游俠)更加愉快的玩耍等等。
當(dāng)我開始學(xué)習(xí)編程和軟件工程時,那是在工作以后是。因為對編程一無所知,因此有著這種想法,想從頭學(xué)習(xí):
- 語言理論
- 數(shù)據(jù)類型
- 控制流結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)
當(dāng)我們開始編寫代碼時,受到是在命令行上并受到編譯器問題、路徑問題以及與實際學(xué)習(xí)編程無關(guān)的一大堆問題的困擾,因為沒有人能把這個窗戶紙幫我捅破,所以走了很多彎路。
討厭編程?
我最終開始在一些受到用戶重視的復(fù)雜系統(tǒng)上擔(dān)任專業(yè)軟件工程師。然后做了一門課程,展示了如何創(chuàng)建圖形用戶界面。
還用編程做了一些游戲的外掛,比如AI打王者榮耀。
我將無聊的東西與我真正喜歡的東西聯(lián)系起來:用代碼可以解決問題的,其他人也可以使用。我將它與重要的事情聯(lián)系起來,它不再抽象和深奧。
至少對我和許多像我一樣的開發(fā)人員來說,像我這樣熱情而沒有時間的學(xué)生可以將數(shù)年的時間、精力和成果/成果浪費在自己真正熱愛的事情上。
如何學(xué)習(xí)機器學(xué)習(xí)?
那么,是如何處理機器學(xué)習(xí)這個主題的呢?
看看你現(xiàn)在的學(xué)習(xí)方法是不是這樣:
- 你在學(xué)習(xí)自下而上的大學(xué)課程嗎?
- 是否在這樣的課程中為的學(xué)習(xí)建模?
我強烈建議使用自下而上的方法學(xué)習(xí)機器學(xué)習(xí)。
- 不要從初級數(shù)學(xué)開始。
- 不要從機器學(xué)習(xí)理論開始。
- 不要從頭開始編寫每個算法。
一旦對這些抽象知識有了聯(lián)系,這一切都可以在以后完善和加深的理解。
- 首先學(xué)習(xí)如何使用帶有免費且易于使用的開源工具的固定框架來解決非常簡單的預(yù)測建模問題。
- 在許多小項目上練習(xí),慢慢增加它們的復(fù)雜性。
- 通過建立公共開源軟件組合來展示的作品。
很多機構(gòu)想割韭菜的那些人會說這些都是徒勞的,別理他們。
世界一流的從業(yè)者會告訴這是他們學(xué)習(xí)并繼續(xù)學(xué)習(xí)的方式。為他們建模。
記住:
- 你通過練習(xí)閱讀來學(xué)習(xí)閱讀,而不是通過學(xué)習(xí)語言理論。
- 你是通過練習(xí)駕駛來學(xué)習(xí)駕駛的,而不是通過學(xué)習(xí)內(nèi)燃機。
- 你通過練習(xí)編碼來學(xué)習(xí)編碼,而不是通過學(xué)習(xí)可計算性理論。
可以通過練習(xí)預(yù)測建模來學(xué)習(xí)機器學(xué)習(xí),而不是通過學(xué)習(xí)數(shù)學(xué)和理論。
這不僅是我學(xué)習(xí)和繼續(xù)實踐機器學(xué)習(xí)的方式,而且?guī)椭宋业臄?shù)千名學(xué)生。
如何學(xué)習(xí)數(shù)學(xué)?
拉開機器學(xué)習(xí)的數(shù)學(xué)(如線性代數(shù)、微積分、統(tǒng)計學(xué)、概率等)的帷幕時,可以使用完全相同的自下而上的方法。
選擇一個對重要的目標(biāo)或結(jié)果,并將其用作鏡頭、過濾器或篩選主題,以研究和學(xué)習(xí)獲得該結(jié)果所需的深度。
例如,假設(shè)選擇線性代數(shù)。
目標(biāo)可能是了解 SVD 或 PCA。這些是機器學(xué)習(xí)中用于數(shù)據(jù)投影、數(shù)據(jù)縮減和特征選擇類型任務(wù)的方法。
自自下而上的方法可能是:
- 在 scikit-learn 等高級庫中實現(xiàn)該方法并獲得結(jié)果。
- 在 NumPy/SciPy 等低級庫中實現(xiàn)該方法并重現(xiàn)結(jié)果。
- 直接使用 NumPy 或 Octave 中的矩陣和矩陣運算來實現(xiàn)該方法。
- 研究和探索所涉及的矩陣算術(shù)運算。
- 研究和探索所涉及的矩陣分解操作。
- 近似矩陣特征分解的研究方法。
目標(biāo)動力,你可以讓你的好奇心定義學(xué)習(xí)的深度。
按照這種方式,學(xué)習(xí)數(shù)學(xué)與學(xué)習(xí)編程、機器學(xué)習(xí)或其他技術(shù)學(xué)科中的任何其他主題沒有什么不同。
它的效率很高,而且很有趣!
#機器學(xué)習(xí)##數(shù)據(jù)分析##學(xué)習(xí)方法##什么基礎(chǔ)也沒有,怎么自學(xué)編程#
總結(jié)
以上是生活随笔為你收集整理的传统方法学习IT已不再适用,快速提升的方法原来是这样的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaFX官方教程(八)之JavaFX
- 下一篇: 电脑和Switch通吃:莱仕达PXN-9