2024-11-18|閱讀時間 ‧ 約 0 分鐘

今天不寫 code -- 聊聊心理學的妙用

雖然我主修數學,但偶然在大學選修心理學課程後,從此對它念念不忘。即使研究所甄試收到兩間學校的錄取通知,依然選擇留在可以修更多心理學知識的學校,為此延畢一年也不後悔。

因為同時有修習心理學專業課程的經歷,我才能在沒有教師證的狀況下,剛畢業就擔任數學教育領域的職務(當然是體系外的,體系內不可避免地需要證照)。現在跳脫數學教育,轉職成軟體工程師後,用到一點數學還可以想像,用到不少心理學可就新鮮了😲

目前我主要接觸的領域是「資料科學」和「人工智慧」,發現它們跟心理學有微妙的連結,接下來我會從上述相關的範疇,分享我認為心理學派得上用場的地方。軟體開發的其他領域我就無法肯定了,如果讀者有看到其他可應用的部分,也歡迎分享~


講到人工智慧,就不得不提到機器學習(machine learning),目標是希望讓只看得懂數字編碼的機器(電腦),模擬人類學習、思考的過程,展示近似於人類智慧的表現。以現在工作的術語來說,就是要讓模型(model)能根據任務需求,學會各種資料解讀、分析與生成等等的操作。

想像模型是個剛入學、什麼都還不懂的小朋友,我們給他一張紙,上面有各種動物的圖案,想教會他認識這些動物,並能寫出動物的名稱,該怎麼做呢?首先要先準備各種動物的圖案及其名稱給模型看。雖然模型內部的神經網路設計,可能決定它較為擅長的領域,例如 ImageNet 擅長圖片分類,但都不可能「無中生有」,要先讓模型認識未來要處理的目標為何;我們也不會期待小朋友突然會認得身邊的所有事物吧,稀有的天才案例除外

準備資料的同時,也要審慎地篩選,避免無效的資料影響成果。比如,給一張拍得很糊的照片,要模型認得照片中有特定的動物,太強「機」所難了;但是,每張都給高畫質的照片,之後看到稍微模糊一點的,就完全認不得,也說不過去。以我目前的經驗,有個判斷的原則可以參考:人類都要花點精力才看得懂的,不強求模型可以幫你100% cover,其他可以適時地準備一些變體,讓模型運作保有彈性。

前面的準備階段,就像是老師備課的過程,接下來就要開始授課,也就是訓練模型囉。回想一下學生時期的上課時光,通常是老師先教一段,再穿插幾次隨堂考試、作業,還有驗收較長期成果的期中、期末或模擬考——訓練模型也需要經過這些階段。

訓練期間會需要一些設定,主要為訓練、驗證、預測資料的比例,還有調節訓練過程的參數。訓練資料是同時知道題目與答案,就像是老師課堂講解的例題,驗證資料是跟訓練類似的題目,需要先解題後再對答案,驗收先前學習的狀況,是不是跟隨堂考試很像呢?

模型訓練時,可以隨機分配每次一小批訓練資料,經過一小段時間後,再以驗證資料確認“答題”情形,如果答對的不多,就需要回頭調整參數,可能是一次學習的量太多(batch size),或者學得太急(learning rate),試著用不同的組合,重新讓模型學習,直到你覺得驗證資料的結果穩定為止。

經過不斷地學習、調整後,再餵給模型預測資料,面對更貼近真實情境的問題,看看「一試定江山」的成果。人類面對大型測驗,偶有「失常」或考運不佳的時候,不過模型理想上不會遇到;在訓練、驗證期間的成果,通常跟預測的相去不遠。如果覺得表現不太一致,有幾種可能:預測資料跟訓練、驗證資料的差異大,或者訓練期間的成果曲線太不穩定 or 好的太穩定

考試的時候,我們總希望有讀的都有命中、沒讀的剛好沒出,除此之外,就會發生準備得再多,都不是大考想要考的,自然就不會得到相符的成果。這就是各階段資料差異過大,可能造成的結果,此時需要再好好分配訓練、驗證、預測資料的組成,避免某一種 pattern 的資料,只出現在某幾組當中。

訓練期間的成果曲線,在領域中的術語稱作「收斂」。比如以分類的任務來說,會以正確率的收斂情形當作成果指標,經過一段時間的訓練,數值提高到某個點就不再大幅變動,表示模型差不多已經學會了。不穩定的情形,應該很好想像,就是隨堂測驗時好時壞,有可能是對特定題型擅長,剛好遇到就考高分,反之就差了點。

那麼好的太穩定,為什麼也會影響預測表現呢?我先以之前工作跟一位教授討論到的案例來說明。有年大型測驗結束後,我分析了某題學生的作答情形,這題有兩種策略可解,假設是策略 A 和策略 B,策略 A 有將近90%以上的學生用,可想而知,用策略 B 的佔比非常少,但策略 B 明明可以更簡潔的解決這道題目,用到的知識也沒有超過課綱範疇,為什麼有這麼明顯的差距呢?教授聽了我的發現,不假思索地回答:「學生在學習期間,已經過度練習策略 A 用到的知識,以至於學生看到題目的某些關鍵字,就反射性地用策略 A 做,根本不會去想有沒有更好、更不會出錯的解法。」

回到模型巡練的情形,這通常發生在開始訓練沒多久,指標數值就收斂在高點,經過再久的訓練,也沒有太大的變化,表示模型以“異常”的速度學會了這些資料中的 pattern,無論資料怎麼隨機分配,都能很熟練地通過驗證資料的評估——它就只會這些了!只要預測資料稍有點不一樣,模型就不會,預測跟訓練後的結果產生了落差,就像做了很多制式的題目,面對稍微生活化的問題就被擊倒,這就是所謂的 overfitting

為了讓訓練期間的成果曲線,達到恰到好處地穩定,這也能透過訓練、驗證資料的重新分配,盡可能每次學習、隨堂小考,都有遇到各種 pattern,就不容易發生只學會特定資料的狀況。若心有餘力,可以再搭配相關參數的調整,多觀察看看吧!


以上心理學與機器學習的關聯,首先是在職訓時發覺的,因為我用心理學的知識去想像模型訓練的細節,感覺比其他同學理解得更快。又在工作期間,帶了一位本科系的實習生,跟他討論模型訓練的議題時,他用他的專業術語跟我說明,我用我的心理學的語言轉譯後再回應他,我們都能理解彼此的說法並取得共識,想必兩者之間關係匪淺。如果讀者覺得機器學習的模型訓練機制不好懂,或許可先試著讀看看心理學的基礎知識喔!

Epilogue
這篇想寫想了很久,但終究被許多專案卡著,只能在出國休假一個禮拜的時間,真的沒有在寫 code 的時候寫完它😅
分享至
成為作者繼續創作的動力吧!
🐾歡迎來到貓想享🐾給自己一個有貓(ねこ)的筆名🐈人生如貓,慵懶自豪🐈‍⬛
© 2024 vocus All rights reserved.