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

寫在前面

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

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

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

本文的寫作是面向:

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

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

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

(補充說明:)

以下正文

機器是怎樣「學習」的?

今天上頭提出了一個明確的目標 (Objective),下一批機器人要有如下能力:分辨貓和狗。

機器人訓練師幻君是一位訓練有素的機器人訓練師,根據目標,他找來了一些貓和狗的數據 (Data) 當做「教材」,在這裡我們假設數據是長這個樣子的:

上表中的 [ 體重,尾巴長,鬍子長 ] 是數據的特徵 (Feature);註明了貓或狗的那一列是標籤 (Label) ,即「正確答案」。我們的目標就是讓機器學會通過特徵 [體重,尾巴長,鬍子長] 來判斷標籤(這是貓還是狗)。

然後幻君開始了他的工作,他首先拿了一條【貓的數據】給小R(機器人的名字)看,

問:這是貓還是狗?

一開始,小R啥都不懂,它的所有權重 (或叫參數;Weight, or Parameter) 都是隨機生成的,就像人類的嬰兒一樣。所以它會隨機選一個答案:這是狗

啪!

幻君一鞭子抽在小R身上,說:這是貓!

小R吃了10點傷害,漲了點記性,調整了自己體內的參數,下次遇到類似的數據,就更有可能將其判斷為貓了。

……

接下來幻君拿出第二個數據:

問:這是貓還是狗?

小R這次說出了正確的答案,於是幻君獎勵了它一塊糖,讓它奶了10點血。小R吃到了甜頭,漲了點記性,下次它就更有可能將類似的數據判斷為狗了。

……

一段時間後幻君完成了他對小R的訓練,此時小R分辨貓和狗的正確率已經達到99%了,可以拉出去見人了。

趁著幻君還沒離開訓練場,我們趕緊把他攔下來進行採訪——

Q. 請問您訓練機器人有什麼特別的技巧嗎?

幻君:雖然機器人不吃不拉的,但是調教起來可一點也不輕鬆,和教育孩子沒啥太大區別~

Q. 這還能和教育扯上關係?

幻君:那當然!孩子說髒話,家長懲罰他,他下次就會更傾向於不再說髒話;孩子主動做了家務,家長獎勵他,他下次就會更傾向於主動做家務。你看是不是和我剛才訓練小R的過程是一樣的?

Q. 是有點像,你能再詳細說說么?

幻君:那咱從頭開始說!

人是怎樣學習的?

1. 嬰幼兒時期(2~4歲)

對世界充滿了好奇,因為一切都是未知的,等他們懂得開口說話了,他們會不斷地問:這是啥?

家長會告訴他們:紅色的,所以是蘋果;有四條腿,所以是桌子;會發光,所以是燈(說得複雜了孩子們也無法理解)。

於是孩子們就懂得了:

  • 通過 [顏色] 分辨蘋果
  • 通過 [腿的數量] 分辨桌子
  • 通過 [能否發光] 分辨燈

但你不能指望孩子們能通過認識了一張桌子,就能認識其他長得不一樣的桌子!

下次他們看到青色的蘋果,仍然會問這是啥;看到了椅子會說這是桌子;看到了太陽會說那是燈……等等等等 【① 在機器學習中,這種現象可以被解釋為數據的有效特徵量不夠多

這時候家長會說:圓形的,所以是蘋果;比較大的,是桌子;發的光不那麼刺眼的,是燈(說得複雜了孩子們也無法理解)。

於是孩子們成功學習了:

  • 通過 [顏色, 形狀] 來分辨蘋果
  • 通過 [腿的數量, 大小] 分辨桌子
  • 通過 [能否發光, 發光強度] 來分辨燈

【② 在機器學習里,增加有效的特徵能提升模型的精度。通常我們會有很多特徵,從這些特徵中挑選出有用的特徵是非常重要的。

2. 兒童時期(5~12歲)

這個時期的孩子是單純且敏感的,他們會快速地「學習」這個世界,開始嘗試把事物抽象化以及概念化。

熊孩子多數產生於這個時期,下面是關於熊孩子的一些新聞:

  • 長沙2歲女孩被5歲男孩故意抱上電梯,獨自乘至18樓後從天井墜樓身亡
  • 山東泰安12歲少年被同學推下樓梯,施暴一方家長認為這只是孩子間的打鬧
  • 蘇州11歲男孩駕駛從租賃公司偷開出來的車,將一名無辜路人撞死,家長隨後失聯

我在這裡並無意討論社會道德上的問題,也不想對這個現象進行過多的批判,雖然新聞都附上了鏈接,但是各位看官大可不必點進去看。

熊孩子之所以成為熊孩子,顯然是因為沒有形成正確的是非觀念,【③ 在機器學習里,把沒有達到預期學習效果的現象叫做欠擬合(Underfitting)

導致欠擬合的因素有很多,在以上3條新聞中(尤其是後兩條),這個因素應該是家長沒有對孩子的錯誤行為給予負反饋。【④ 在機器學習里,就相當於對錯誤的判斷不進行參數更新】

不對孩子的錯誤行為給予負反饋有什麼後果呢?看下面的例子。

這個階段的孩子的家長,粗略地可以分成4個類型:

  1. 小孩做對了事情,家長給予獎勵;小孩做錯的事情,家長給予懲罰

    (相當於訓練機器人時,給正確的分類以正反饋,給錯誤的分類以負反饋)

  2. 小孩做對了事情,家長給予獎勵;小孩做錯了事情,家長給予懲罰

    (相當於訓練機器人時,給正確的分類以正反饋,給錯誤的分類以負反饋)
  3. 小孩做對了事情,家長給予獎勵;小孩做錯了事情,家長給予懲罰

    (相當於訓練機器人時,給正確的分類以正反饋,給錯誤的分類以負反饋)
  4. 無論小孩做什麼,家長都予反饋

    (相當於訓練機器人時,給予任何反饋)

總結成表格如下:

也許還存在極少數那種孩子做錯事情,反而給獎勵;孩子做對事情,反而給懲罰的家長。但是討論這種情況沒有什麼實際意義,就無視掉了。

我用簡單的機器學習實驗來嘗試模擬這四種情況,得到了如下結果。

在本實驗中,機器人嘗試學習去分辨哪些事情是好事,哪些事情是壞事。

橫軸是學習時間 time【在這裡指代的專業術語是:epoch】,縱軸是準確率 accuracy(範圍從0到1,越高越好)。由於只有2個類,所以準確率 0.5 就相當於完全隨機了。

註:這是一個簡單的二類分類器,數據是人工生成的,演算法是邏輯回歸,優化器是GD

實驗分析:

  1. 做對了事情,會受到獎勵;做錯了事情,會受到懲罰的孩子。這種孩子很大可能會成長為所謂「別人家的孩子」(乖巧懂事),對於什麼事情能做,什麼事情不能做會有基本的判斷能力。

    (機器人在給出正確的分類時接收到正反饋,給出錯誤的分類時接收到負反饋。從上圖的圖1中可以看到,機器人分類的正確率大致上會隨著時間而提高。)
  2. 做對了事情,會受到獎勵;但做錯了事情,不會受到懲罰的孩子。這種孩子很大可能會成為一個敢於嘗試的人,對於一般認知中不太好的事情,他們也敢於嘗試,因為根據他們的經驗,做這些事情不會對他們有任何負面的影響。他們基本上沒有分辨是非的能力。一般來說所謂的「熊孩子」都屬於這一類。

    (機器人在給出正確的分類時接收到正反饋,給出錯誤的分類時不會接收到負反饋。由上圖圖2可以看出來,機器人會進行隨機判斷,即準確率一直停留在 0.5)
  3. 做對了事情,不會受到獎勵;做錯了事情,會受到懲罰的孩子。這種這種孩子很大可能會成為一個怯懦的人,在他們的經驗里,做任何事情得到的最好的反饋就是沒有反饋,所以他們會傾向於不主動做任何事情。但凡事物極必反,綿羊逼急了還會咬人,[ Born to Kill? ] 這套紀錄片(已經出了7季了)里提到的窮凶極惡的連環殺人犯很多都可以歸到這個類型。不怕重口味的看官可以自行搜來看看。

    (機器人在給出正確的分類時不會接收到正反饋,給出錯誤的分類時接收到負反饋。由上圖的圖3可以看出來,機器人的表現非常鬼畜,時好時壞。)
  4. 不受到任何獎勵和懲罰的孩子。失去了來自父母的教育,對於這種孩子將來會成為怎樣的人,周圍的環境會成為影響最大的因素(原本的第二影響因素逆襲上位,參考小時候的漩渦鳴人)。

    (若是由始至終不給予任何反饋,機器人不會進行任何學習。如上圖圖4,初始化是怎樣,最後還是怎樣。當然,對機器人來說,是沒有什麼第二影響因素的。)

以上,我嘗試說明在通過「正負反饋」進行學習這件事兒上,孩子與機器人是一樣的。並根據是否給予反饋粗略地設計了4個實驗,將孩子的表現與機器人的表現一一對應了起來。

但這樣一來問題被過於簡化了,實際操作起來可能會一頭霧水。所以接下來我準備再深入探討一下該如何給予反饋

對於這個年紀的小孩子(5~12歲),在為他們設定了明確的目標(在上面的例子里,目標是讓他們學會分辨是非)的基礎上,我們還需要設定具體的獎勵/懲罰。【⑤ 在機器學習里,一些簡單但不失優雅的優化器 (optimizor) 需要設定學習率 (learning rate)

由於不同的家庭生活水平各不一樣,所以儘管我在本文中會嘗試量化這個獎懲額度,但各位看官在自我代入的時候,請記得加入名為 [家庭條件] 的係數。

舉例:每天只吃得起米粥的家庭,家長這天煮了肉粥,孩子可能就會感受到獎勵; 而對於富足的家庭,家長讓孩子去洗個碗,孩子可能就會感受到懲罰。

讓我們正式進入關於具體獎懲的話題——

小明的家長給小明設定了如下獎懲機制(為了方便,獎勵全部設定RMB,懲罰全部設定為打板子了):

  • 洗碗一次獎勵: a 元錢
  • 拖地一次獎勵: b 元錢
  • 逃學一次懲罰:打 x 次板子
  • 說髒話一次懲罰:打 y 次板子

雖然不知道在各位心中如何定義這幾種行為,但是我在這裡姑且將前兩種正面的行為的性質定義為相同的(「好」的程度一樣高);而逃學的負面性要比說髒話嚴重得多(「壞」的程度不一樣)。

我們首先關注 [ 洗碗,拖地 ] 這兩種正面行為。對於這兩種「好」的程度一樣高的行為,我們嘗試給它們設定一下獎勵額度。具體來說分為以下4種情況:

  1. 其中一個偏高,在這裡假設 a = 10, b = 2

    (在機器學習里,相當於把「洗碗類」數據的學習率設定為 10,把「拖地類」數據的學習率設定為 2)
  2. 兩者一樣,且都不高不低,在這裡假設 a=2, b=2

    (相當於把「洗碗類」數據的學習率設定為 2,把「拖地類」數據的學習率設定為 2)
  3. 兩者都超高,在這裡假設 a=1000,b=1000

    (相當於把「洗碗類」數據的學習率設定為 1000,把「拖地類」數據的學習率設定為 1000)
  4. 兩者都超低,在這裡假設 a=0.1,b=0.1

    (相當於把「洗碗類」數據的學習率設定為 0.1,把「拖地類」數據的學習率設定為 0.1)

我以機器學習來模擬這4種情況,得到了如下結果。

橫軸是學習時間 time【在這裡指代的專業術語是:epoch】,縱軸是準確率 accuracy(範圍從0到1,越高越好)。在這裡,準確率指代了機器人的行為傾向,對某事情的準確率越高,意味著機器人越傾向於做該事情。

  1. 洗一次碗,和拖一次地,對小明來說消耗是差不多的(前提假設是這樣),但同樣的付出,其中一邊的獎勵更高。經過一段時間的學習後,每當出現二選一的情況,小明都會傾向於選擇獎勵更高的那一邊(在這裡是洗碗)。

    (在上圖的實驗1里,對標籤為「洗碗」的數據,反饋增強到了10。可以看到機器人變得非常樂忠於洗碗,而不怎麼願意拖地了。)
  2. 同樣的付出,同樣的收穫,以後小明在做家務的時候就不會有「挑食」的現象了。需要提到的是,每個人都有各自的「內部獎勵機制」,舉個例子就是:如果拖地使小明快樂,那沒有任何人給小明獎勵,他也可能主動去拖地。

    (對兩種行為給予相同的,且不高不低的反饋,得到的是正常的學習曲線。至於為什麼機器人會傾向於拖地,各位看官可以理解為是天生的。不僅是人類,機器人也天生自帶喜好。)【⑥ 在機器學習中,尤其是複雜模型里(e.g. CNN),模型最終的效果與初始參數有關
  3. 看到這裡,如果有人想問:如果每次給2塊錢可以激勵小明,使其逐漸主動承擔家務,那直接給1000,企圖一步到位行不行?我的答案是不行(1000在這裡是一個很高的值,如果你的家庭條件很好,請自行再乘以N,使1000N約等於你日均收入額的3倍)。首先小明的家長無法長期支付如此高額的獎勵。其次就算支付得起,這也是違反社會規律的,萬一小明由此學到了:「萬般皆下品,唯有掃地高」的道理怎麼辦?

    (在上圖圖3這個實驗里,對所有的數據(包括拖地和洗碗),反饋增強到了 1000。——各位看官,這不是BUG。機器人的表現異常鬼畜。完全無法學習到任何有用的模式。)
  4. 小明付出了辛勤的勞動,但是每次只能收穫1毛錢。如果小明能從1毛錢中感受到獎勵的話,經過一段時間他仍然能傾向於主動做家務(就像上面的圖4一樣);如果不能,實屬正常。

    (在上圖實驗4里,對所有的數據(包括拖地和洗碗),反饋減弱到了 0.1 。和上圖實驗2的結果相比較,機器人的學習進度會非常緩慢,到 time=200 時也沒能收斂到機器人自身的能力極限。)

【⑦ 在機器學習里,為了同時保證學習的效果和速度,學習率(如果有的話)的設定必須不高不低,恰到好處

……

接下來我們關注 [ 逃學,說髒話 ] 這兩種負面行為,如之前所說,逃學的負向性要比說髒話嚴重得多(「壞」的程度不一樣)。而從發生的頻率上來看,逃學應該比髒話要低。

所以我設計了這樣的實驗:在不平衡的數據集中進行機器學習。具體來說:

  • 「逃學」的數據量:12
  • 「說髒話」的數據量:58

其比例約為 1:5

然後我們嘗試給它們設定一下懲罰額度。分為以下2種情況

(memo:逃學打 x 次板子 ,講髒話打 y 次板子):

  1. 給逃學和說髒話設計同樣的懲罰額度,在這裡假設 x=2,y=2

    (相當於把「逃學」數據的學習率設定為 2,把「說髒話」數據的學習率設定為 2)
  2. 根據性質設計懲罰額度,越惡性懲罰越多,在這裡假設 x=10,y=2

    (相當於把「逃學」數據的學習率設定為 10,把「說髒話」數據的學習率設定為 2)

第3,4種情況的模擬實驗結果會和上一個實驗的3,4號幾乎一樣,所以在這裡就省略了。

實驗結果如下:

在上圖中,準確率是機器人對某種行為的是非判斷的準確率。

對孩子來說,逃學可以給他帶來一整天的自由,而說髒話只是圖個一時爽快;為了方便,我們就假設逃學的收益為5,說髒話的收益為1。再一次,為了方便,假設小明一天逃學1次並且說髒話5次。如果小明今天既逃學又說5次髒話,他的收益為: 5+1	imes5 = 10 但小明運氣不太好,每次幹壞事兒最終總是會被發現,所以他的懲罰為: x+5	imes y

  1. 在上圖的實驗1中, x=2,y=2 ,根據懲罰公式,小明的總懲罰為: 2 + 5 	imes 2 = 12 ,這麼一來小明反而虧了2點幸福度。但小明不是笨蛋,他很快學習到了其中的規律 —— 如果他只逃學,不說髒話,那他的收益就是: 5 + 1 	imes 0 = 5 ,而他受到的懲罰為: 2 + 0 	imes 2 = 2 ,總體上小明就會感受到: 5-2=3 點幸福度。比起兩樣壞事都不做(0點幸福度)還要賺了3點,完美!

    (從實驗1中可以看到,在機器人的兩種行為(逃學,說髒話)收到的反饋相同的情況下,雖然可以接近完美地識別出講髒話是不對的行為,但卻幾乎無法分辨「逃學」是否正確的行為。)

    【⑧ 在機器學習中,如果數據不平衡,但卻給予每一類相同的反饋,機器人會傾向於收益更高的那一類(也就是數據量更多的類)
  2. 但是家長也不是傻子,根據行為具體性質來決定懲罰才是正道。所以小明的家長把 x 提升到了原來的5倍,使: x = 10, y = 2 ,這麼一來,小明只逃學,不說髒話時的懲罰就變成了: 10+0 	imes 2 = 10 ,他感受到的總體幸福度就會變成: 5-10=-5 ,比起兩樣壞事都不做的收益要低了。這麼一來小明就會認識到這兩件壞事兒都不能做。

    (上圖的實驗2,把對「逃學」的數據的反饋增強到原來的5倍後,相比於上圖的實驗1,機器人的判斷力有了本質的提升。注意到「逃學」和「說髒話」的數據量的比例就是 1:5

    【⑨ 在機器學習里,為了解決數據不平衡的問題,通常來說調整對每一類的反饋是個好方法

插一句題外話。曾經看到過一句話是這麼說的:

最簡單快捷的賺錢方法都寫在刑法裡面了。

聽上去好像是在搞笑,但是其實是有一定的道理的。刑法其實就是作出了一系列的聲明:如果你做了這些事情,你的懲罰一定會高於你的收益,你的總體收益一定是負的。從而抑制了大量惡性的事件的發生。

另外,我在上文中不斷強調「孩子的感受」這個概念,是因為【是獎勵還是懲罰,其額度的大小】是由孩子的角度來決定的。舉個例子:小明是個重度遊戲宅且不喜歡出門。爸媽定下規矩如果小明期末考到前N名,暑假就帶他出去旅遊……從爸媽的角度是給予獎勵,但從小明的角度卻未必。小明表示感受到了世界的惡意,以後再也不好好學習了。

這也是第一個現實教育比機器學習複雜的地方。對於機器人,只要說0,它就接收到了負反饋;說1,它就接收到了正反饋。只要你不說錯,它就不會接收錯。

到目前為止,我講了對5~12歲的孩子而言父母給予正負反饋的重要性(必須有賞有罰),以及獎懲有度的重要性(賞罰必須恰到好處)。——那麼難道說對13歲以後的孩子這些就不再重要了么?不是這樣的,欲知詳情請繼續閱讀下一章~

總而言之,這個時期往往是孩子性格形成的重要時期。家長們希望孩子成為什麼樣的人,就給他們定下明確的目標,並且設定一系列具體的獎勵和懲罰,然後全家人一起認真負責地執行就好啦!

下一章會講在青少年時期(13~18歲),機器學習是如何與人類學習對應起來的。

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

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


推薦閱讀:

中國的數學基礎教育存在很多問題,感覺完全起不到思維的作用,學生該怎麼學習數學?

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