2013年11月13日 星期三

從 machine Learning 談「經驗」、「公式」與「學習」

來資工系聽到最吸引我的理論就是「Machine Learning」。不過,我也沒有正式的修過這門課,只是在人工智慧這門課裡面聽到一些介紹。在初步了解「Machine Learning」後,我覺得這應該改名為「Human Learning」。而我們平常的數學課「公理、定義、公式」的教學才該叫做 「Maching Learing」。


Machine Learning 用在哪邊呢?參考Icoding的介紹:

  • Gmail 的垃圾郵件判定
  • iPhoto 相片整理、人臉辨識
  • Amazon 的推薦商品
  • 手寫、聲音辨識系統

當你要教機器電腦一個概念時(諸如垃圾郵件),不適合把這個概念抽象出幾個規則,這樣子不管幾條規則都無法寫清楚,有時寫越多反而把原本不是垃圾郵件的也變成垃圾郵件。現行最有效的方式則是不斷地 traning 電腦,讓電腦一直去辨識這個是垃圾、這個不是垃圾。讓電腦自行理出一套判別準則。

其實人的認知發展也是這樣。聽史英提過這樣的例子,兩三歲的小孩怎樣學東西呢?你怎麼讓他知道什麼是「杯子」?當媽媽拿著一個塑膠杯對小孩說:「這是杯子」時,拿著玻璃杯,也對小孩說「這是杯子。」小孩認知中可能也還沒理清什麼是杯子,他沒有一個杯子的判別規則,但他心中有個模糊的印象,可能是「可以裝水的東西」,但下次看到水桶,就問媽媽這是杯子嗎?」。媽媽說「這叫水桶,不是杯子」,這時後小孩認知中可能又修正為「可以用來喝東西」。透過反覆很多次被告知「這是杯子」、「這不是杯子」小孩心中就會有這樣的認知。

但在教學現場裡面往往不是用這種經驗學習的方式來教學。反而像在教機器人一樣,一個規定、一個規則。我國中學習英語時,是背誦了一堆英文規定、單字,但心中就是沒有一個清楚的認知地圖,那時候總是想用規則、規定來學語文,但心中地經驗認知地圖卻都沒有建立起來。於是只有一堆可以用來應付國中英文考試的技巧、方法,要我自在的寫些通順的句子是不可能的事。

而我在數學學習就比較幸運,因為我從小喜歡上用自己的經驗、感覺來學數學,所以我對數學就有一套認知地圖。後來書上的定理定義、都只是把我的認知強化。

在看「根與係數(韋達定理)」、「牛頓一次因式檢驗法」時,我只覺得他是比較系數,根本不覺得是個公式定理。在國中算直線方程式時,也不清楚有分「點斜式」、「斜截式」、「截距式」、「兩點式」那麼多名目。在算等差、等比數列、級數時,也不覺得需要任何公式。早期教書時,學生問我指對數的公式有哪些、行列式的規則有什麼,可否幫他整理一下時,我還會對這問題一時愣住,這些問題不是看到題目就「自然」知道怎麼算。在教書前,我認知中實在不知「題型」為何物?


讓我引用費曼的一段話:

一位長我三歲的堂兄正在念中學。他的代數很糟,於是家裡請了個家教。 長輩們准我坐在旁邊,聽家庭教師講解代數。我聽到他在講 X。
我問堂哥:「你在做甚麼?」
「我在求 X 的值,例如在 2X+7=15 的式子裡,X 等於多少。」
「那不是 4 嗎?」
「對,但你是用算數算的,現在要用代數算。」
我慶幸自己不是在學校學到代數,而是在閣樓裡發現姑母的舊課本,自己學會的。
我領悟到代數的用意就是要求出 X 值,用甚麼方法無關緊要。
所謂「代數的方法」不過是方便所有的學生不管懂或不懂都可以過關的方法。 這就是堂哥老學不好的原因。
【你管別人怎麼想】(一個科學家的養成 p.11)

我教學數年後才了解,更能體會費曼那段話的神韻。所謂「方法」就是不管懂不懂都可以過關操作。諸如對於一間大公司,要讓大多數人做出一定的品質,就是要有套 SOP(標準作業程序),也不用讓每個員工是否懂得其中的意涵,更不允許員工更動質疑其中的規定。

若是個人自我學習,這種經驗式的建構的確是個比較良好的方式。但對教學而言,要執行這樣的操作的確有他的困難。我想數年前建構式理念到教學現場會變成一場噩夢也是不意外。平常的教學礙於固定的時間、進度,要同時讓多數人能有一定的成效,似乎只能教條式公式化的教導。也就導致多數悟性不夠的人都只學到表面形式,但無法內化運用。

但若是一對一的教學,我想這就相當有調整的空間。學習的過程就是讓學生多發表看法,老師則是給些意見。就像寫作文,還是要親自寫、有人指點批改這樣最有效。(但可惜這也不是幾個月就可以速成的。我想下個月要考個 TOEFL 考試,還是背個模板最有效。)

「排列組合」這單元,是我最擅長的部分,但早期教學時,則是最困擾的部分,有些學生就會問我這個要用C還是H?到底要除還是不用除?現在才了解,如同英國作家 G.K. Chesterton 所說:其實並不是看不到答案,而是根本不了解問題何在。


“It isn't that they cannot see the solution. It is that they cannot see the problem.”

所以要教這單元,就是要讓他們「排」與「列」,不要給他們公式。當他們有疑問時,就讓他慢慢畫樹狀圖,去感受到到底要數哪些東西(但在大班教學的卻施行有點困難)

其實學習如何解決這個問題所建構出來的經驗才是重要的,這才得以用在其他問題上。每次的學習要追問的是這學習對於認知結構有何影響改變。但只是記題型、背公式,就像程式遇到無法預期的參數就可能會死當一樣。

之前聽學長說,學數學就像學殺恐龍的方法,學成後,發覺世界上已經沒有恐龍給你殺。但我想若只是學對付孔龍的招式而不能活用,那所花的時間的確是白費。若能從殺恐龍的技巧增加內力並轉化為一般性經驗,用來對付其他小野獸也是相當有用。

沒有留言:

張貼留言