日常思考:從機器學習到人類學習(二)

上一章傳送門:日常思考:從機器學習到人類學習(一)

寫在前面

——日常思考系列,說的輕鬆點的話,是我開的腦洞;說的嚴肅點的話,是我的哲學思考。

目前主流的機器學習並不是在模擬人類學習或思考,而是用概率論、統計學的方法來實現的弱人工智慧。但我一直都覺得機器學習里很多現象能與人類的學習(從嬰幼兒起一直到成人)一一對應。但腦子裡一直以來都是只有個模模糊糊的想法,趁此機會將其凝練總結出來。各位看官請帶著這個問題閱讀本文:我們是否能反過來將機器學習(Machine Learning)中的一些技巧應用在人的學習中呢(自我教育 or 下一代教育)

本文為了提升可讀性犧牲了一定的專業性,有一些表述是不準確的。

本文的寫作是面向:

  • 自己
  • 喜歡將常見的事象歸納為能自洽的邏輯的人
  • 喜歡機器學習的人
  • (准)爸爸媽媽們(霧)

封面圖片來自於網路,侵刪。

本文中沒有聲明引用的內容,皆是原創。

以下正文

上一章我講了12歲以前人類學習與機器學習能對應起來的一些現象。接下來我會講13歲以後的學習過程中又有哪些現象可以和機器學習對應起來。

3. 青少年時期(13~18歲)

傳統意義上來講,這個階段的孩子最主要的任務就是狹義上的「學習」(應試教育學習)。所以我們的例子就從「學習」開始。

為了方便,我把學習的過程等價為刷題的過程了。而在刷題里,主要包含以下3個層面:

  • 學習方法
  • 題量
  • 重複的次數

先忽略學習方法,只看 [ 題量 和 重複的次數 ]

因為學生們的時間有限,他們只能在有限的時間內刷有限的題目,所以就有如下問題:

「我應該刷多少道題,每道題刷幾次(因為會遺忘)?」

如果小明距離下次考試的時間夠他刷20000道題,並且假設他總能源源不斷地找到新的同類型題目,那麼他可以作出類似這樣的選擇:

  1. 刷1000道題,每道題刷20次。
  2. 刷4000道題,每道題刷5次。
  3. 刷20000道題,每道題刷1次。

我用機器學習進行了模擬實驗,得到了如下結果:

(註:這是MNIST數據集上的實驗,訓練數據抽取自原訓練集,測試集保持不變。模型是MLP,只有一層隱藏層,50個units。優化器是Adam。)

可以看到同一個機器人在相同的學習時間(在這裡是指題量乘以重複次數的值相同)內,題量越多效果是越好的。【⑩ 在機器學習中,數據量總是越多越好,但增加數據量的收益是遞減的

回過頭再來看學習這一邊。在初中或是高中里,一位刷20000道題且每道題只刷1次的學生,與一位刷1000道題且每道題刷20次的學生相比較,前者成績應該相對會更好。

這裡的表述可能有點曖昧,因為按照經驗1000道題這個數量已經足夠大了……各位看官不如想像一下這個更極端的情況:第三位學生他只刷10道題,每道題重複了2000次。這時候我說這位同學的成績要弱於上面提到的2位,大家應該不會有太大的意見。(因為現實中不可控因素太多,所以只能說大抵會是這樣,並不是絕對的)

由於源源不斷地找到同類型的題目畢竟太科幻,所以小明必須在有限的題目中盡量提高他的成績。讓我們具體看一下 實驗1 (題量1000,重複20)中的細節:

在這裡橫軸 epoch 是重複的次數,縱軸是準確率(範圍 [0, 1]),越高越好。藍線代表了學習過程的正確率的變化,綠線代表了考試的正確率的變化。

可以看得出來,重複次數超過4次後,成績(accuracy)的增長就很小了;而重複超過10次後考試的成績基本上不會有什麼變化了,這意味著機器人已經接近了它的極限(也就是87%左右的成績)。

事實上人的學習曲線也差不多是這樣。小明的英語成績不好,父母一開始可能會覺得是因為他不夠努力,所以會逼他花更多的時間學習英語。但如果小明努力了一段時間之後成績仍不見顯著提高,父母就需要意識到這就是小明在英語方面的極限了(前提是學習方法沒有問題。關於學習方法下面會提到)。與其讓他繼續花大量時間學習英語,不如讓他將時間節省下來去做別的事情,否則就是使錯了力。我的經驗是,如果在一件事情上花了4,5倍的時間,效果沒有比原來有顯著提升的話,說明1倍時間就已經接近你的極限了,沒有必要在裡面花更多的時間。

【? 在機器學習中,一般來講收斂速度是從快到慢的,即:在同樣長的一段時間內,前期精度的提升幅度要比後期更大

……

接下來我們關注 [ 學習方法 ]。想必在座的各位大多數都上過初中高中的,學習方法這個詞肯定已經聽到想吐血。不過我在這裡並不是打算介紹什麼學習方法,而僅僅是想通過機器學習的例子來說明:好的學習方法確實可以讓你花更短的時間接近自身的極限

【? 在機器學習中,好的優化器可以加速模型的訓練,優化器一直是被重點關注的研究方向之一

這張圖來自Adam的論文。橫軸可以理解為學習的時間,縱軸是學習的「損失」(cost,or loss)。與準確率相反,學習的「損失」是越低越好。然後每一條線是一種學習方法,可以看到紫色的線(Adam)表現最為突出,在同樣的時間裡它的學習損失下降得最多。

這個實驗里比較的是,同一個機器人用不同學習方法進行學習時,其速度的差別。作者證明了相對於其他的學習方法,Adam可以讓機器人更快的進行學習。(需要注意的是,圖中只顯示了前期的差別。一般來說只要時間足夠長,到了後期大家都是差不多的)

所以作為中學生的小明應該了解到,也許他付出再多的努力也不可能考到98%的分數,但好的學習方法的確可以讓他花更短的時間接近98%,節省下來的時間就可以讓他去做他更喜歡的事情了。

怎樣找到好的學習方法呢?

初中高中里,很多老師喜歡讓成績好的人上講台介紹TA的學習方法,就彷彿成績好=學習方法好一樣……其實這是不對的。TA的成績好可能是因為TA花了大量時間,還有可能是TA天生就很聰明,學習方法只是其中一個方面而已;況且,對學霸來說好用的學習方法,對學渣來說未必是好用的。

怎樣的學習方法對自己來說更好,是由自己不停地試錯(try and error)試出來的。別人的做法可以參考,但是切忌原樣照搬。

……

接下來我要講一個殘酷的事實,在上面這個例子中我不斷的提到「極限」這個概念,是因為無論數據量再多,重複再多次,學習方法再怎麼好,都不能讓一個機器人突破其自身的極限(類似於割圓法再怎麼割也無法突破 pi ——所以後來我們才有了深度學習(極限的上限更大的機器人)。

下圖是我用普通的神經網路,和一個深度學習的網路對同一個數據集進行學習的實驗結果:

上圖中,兩者都在重複5,6次就接近了極限,但為了獲取更精確的極限值,所以跑滿了20次。可以看到深度學習機器人的極限值要高於普通的神經網路不少。

這個世界上就是有每天學1小時玩7小時,考起試來還次次年級第一的人(「深度學習機器人」)。而大多數人只能是「普通神經網路機器人(量產版)」。怎麼辦呢?如果各位看官裡面有初中高中生,我想對你們說三件事情:

  • 雖然幸福感是通過與周圍的人對比產生的,但你周圍的人不會總停留在你的周圍。勇敢的少年,首先,請幹了這碗毒雞湯:比你強很多(或弱很多)的人現在和你同班,是因為社會制度就是如此設定的。但三年後,六年後,或者十年後,你就會發現你周圍的人都是和你差不多的人了。所以在學生階段,你要做的不是與比你強很多的人比從而獲取自卑感,也不是與比你弱很多的人比從而獲取滿足感。你只需要知道,十年後就是物以類聚人以群分的世界了,自己十年後能進入什麼樣的圈子,全靠當下的努力。
  • 去發現自己的天賦以及興趣。一個人總不可能沒有任何天賦吧。音樂,繪畫,體育,什麼都可以。在中國,很多孩子的天賦都沒有被順利挖掘出來,這和國家對下一代設定的優化目標有很大關係(不作展開)。這方面做得比較好的國家比如美國和日本,有特殊天賦的人可以拚命往這方面發展,大學錄取也會非常照顧這類學生。
  • 不要輕易說自己達到了極限。毫無疑問學習是一件辛苦的事情。但如果每次很累就覺得自己達到了極限,而轉過頭去把主要精力投入下一件事情,最終只能一事無成。適當的堅持是有必要的。

另外,對於(廣義上的)學習這件事兒我個人的觀點是,你可以跑得慢,但你不能停下來。這也是我對自己的要求:成為終身學習者。之所以定下這個目標,我有一套完整的邏輯,寫在了本文的最後一章,希望各位看官能夠再堅持一會~

上面我講了關於這個時期(13~18歲)的第一個例子。第二個例子是「青春期」,在日文里對應的單詞是——「反抗期」,真是簡單粗暴。

青春期的特點就是開始反抗父母,其最大的原因可能是,隨著年齡和經歷的增長,孩子變得不再認同父母為他設定的目標(比如要考一所好大學)。機器學習中也有類似的現象。為了說明這個現象,我還是從舉例子開始。

小明來到一片非常廣袤的丘陵地帶,他的任務是找到這一塊區域中海拔最高的位置,因為霧很濃,所以他的能見度總是只有1米。他手裡只有測量海拔的儀器,他不用吃喝也不會累。如果你是小明,你會怎麼做?

一個最簡單的辦法就是觀察方圓一米的範圍,哪個方向往上的角度最大,就往哪個方向前進。不停重複以上過程,直到觀察到所有方向都是下降的為止。這樣一來雖然不能保證走到全地圖的最高點(全局最優,Global Optimal),但起碼是走到了一小塊區域內的最高點(局部最優,Local Optimal)。這就是梯度下降演算法(Gradient Descent)(一種機器人的學習方法)的工作原理。

圖來自維基百科:Gradient Descent

從圖中我們可以看出來,有兩個局部極值,紅線是小明的前進路線,藍點是小明停下來觀察的地點,最後小明停在了其中一個極值上。別忘了!小明的可視距離只有1米而且沒有上帝視角,他無法判斷他找到的局部最高點到底是不是全地圖中的最高點。

小明有可能會喜歡當前這個局部最高點,從而決定放棄繼續搜索,死守此處;他也可能不喜歡這個點,離開此處繼續努力去搜索下一個最高點。

讓我們從頭開始。小明的父母相對是比較開明的,在為小明定目標的時候沒有設定得太遙遠,而只是定了個廣大民眾都覺得能通向一條康庄大道的目標——考大學(接下來就叫做O點好了)。因此所有的獎懲機制都是根據這個目標來設定的。

小明在12歲以前還沒有形成自己的判斷,父母說的都是對的,所以他也就一直朝著O點前進。而從13歲開始(初中),他會根據自身的經歷逐漸形成一套自己的想法(等於重新畫一幅自己想像出來的地圖)。如果在小明的新地圖中,O點仍然是一個比較好的局部最高點,那麼自然皆大歡喜。但如果在小明的新地圖中,O點只是個小山包呢?

不知道小明喝了什麼樣的雞湯,現在他覺得上大學沒前途,而打算去創業了!於是小明與父母之間爆發了激烈的衝突。

如果說「把人生過好」是每個人的終極目標的話,那上大學也好,創業也好,都可以想像成是這個目標下的某一個局部最高點。從這個角度來說,父母沒錯,小明也沒有錯。我們沒有上帝視角,不親自走到那個點是無法判斷它的具體高度的。

【? 在機器學習中,每個目標都有無數個局部最高點,機器人不喜歡最初找到的局部最高點,跳往下一個點是很常見的

這個年齡的孩子(13~18歲)將要逐漸完成外部教育轉向自我教育的過程。——也就是說,以前,爸媽和老師說什麼都是對的(外部教育);以後,我要能夠根據我的經驗(三觀)自行判斷什麼事情是對的(自我教育)。

如果有人還記得上面我講過這個觀點:對於12歲以下的孩子,父母給予的正負反饋很重要。那13歲以上呢?那麼我的答案就在這裡了。

孩子13歲以後,家長要學會尊重孩子自己給予自己的正負反饋。只要大是大非上不出現偏差,家長可以適當地支持孩子們進行嘗試。

——具體到上面講過的那個例子,如果小明是因為喝了「雞湯」而打算創業的話,家長有必要喂一些「毒雞湯」進行中和;但如果小明是自發地想要做這件事情,也就是說他有一套完整的邏輯能夠證明:對自己來講創業確實要比上大學好,那家長可以考慮支持他的想法。

……

有的家長可能會覺得孩子老玩電腦/手機遊戲不聽管教也算是青春期反抗父母的表現……我想說,和上面那個例子比,這個只能算小兒科吧,接下來我將用三行講解如何解決這個小問題:

  1. 了解孩子玩的遊戲的類型和主要機制,最好親自參與一段時間
  2. 孩子在遊戲中表現的好的時候,給予些許獎勵
  3. 孩子在遊戲中表現的不好的時候,給予較大的懲罰

除了上文已經寫過的獎懲機制之外的理由主要有以下兩點:

  • 大多數父母不了解遊戲,所以孩子覺得父母對玩遊戲這件事發表評論是沒有說服力的。
  • 玩遊戲也是需要智商的,以我身邊的情況來看,遊戲玩得好的孩子學習一定不會差。所以如果孩子遊戲玩得好,父母為何要吝嗇那點獎勵呢?

最後,回到上面那個找最高點的問題中,所以說我們到底應該如何才能找到全地圖裡的最高點呢?答案是沒有辦法

【? 在機器學習中,複雜到一定程度的模型(非凸的優化目標)已經不可能收斂到全局最優(或者說,我們無法證明是否收斂到了全局最優)

……

以上,我從這四個方面

  • 學習方法——優化器
  • 題量——數據量
  • 重複次數——Epoch
  • 天賦——演算法與模型結構

將機器人的學習與中學生的學習對應了起來。

另外,我還用機器學習中機器人尋找局部最優的現象,嘗試去解釋了青春期中孩子的行為。

下一章會講在成年初期(19~25歲)是如何通過學習形成/更新三觀的。我將嘗試用機器學習來解釋這一現象。這也是本文最大的重點,希望各位能夠堅持到底~

日常思考:從機器學習到人類學習(三)

以上是個人的一點淺見,歡迎交流~

推薦閱讀:

搞機器學習/AI有什麼必備的數學基礎?|經驗之談+資源大全
《Web安全之機器學習入門》上市
Numpy複習總結(一)
人工智慧是不是只是一場鬧劇?

TAG:机器学习 | 教育 | 学习 |