來自Soft & Share 資料分析與機械學習版主ricky的分享, 對於ricky的分享有任何問題, 歡迎加入slack聊天室討論

參與機制機器學習

今天來和大家分享一個主題,是關於機器學習領域中,我們怎麼來處理「過擬合」(Overfit),事實上我個人較長使用的方法仍然是在機器學習模型中置入模糊邏輯,在公司(財經)中開發的lib中我也是寫了比較多套模糊邏輯,主要原因是計量經濟學有一些現成結合模糊邏輯的理論,關於模糊邏輯的應用與實務上的一些理論應用的觀念,下次再多分享。今天要來介紹給大家的是所謂的參與機制(Attention)。

一般來說,機器學習模型主要是透過各種理論方法,得到一組模型的權重與參數,由於希望盡可能地將資料屬性挖掘出來,因此模型的權重參數通常會很多,這樣才能給予足夠高的自由度來呈現出輸出結果,有種螞蟻雄兵的感覺。

但是個別權重的意義不大,一定要把所有權重置入模型才有用,我有沒有辦法只使用「部分」的模型權重呢?聰明的你一定想到,我就把部分以外的其他權重都令成0,這樣不就得了嗎?但是你要挑那些權重變成0呢?此外有些權重如果變成零,搞不好還會有反效果(例如原本權重是負的,變成0反而變大了!)

好吧!既然我們不能使用「部分」的權重,那我們使用「部分」的輸入資料總行了吧?但是問題還是一樣,我怎麼知道我們選的部分資料是正確的呢?舉例來說,如果我要輸入一張照片,但我事先切割成了兩張照片,但是好死不死就剛好把你的頭剖成兩半,放到能辨識整顆頭的機器學習模型中不是也是白忙一場嗎?

【參與機制】就是這樣來的,既然你我都不知道該如何取捨權重和輸入資料,我們就事先在模型訓練的過程中,我們不但要訓練出一組模型權重參數,還要訓練出一套參與機制,這套參與機制(也叫做留意機制、注意力機制)讓我們的機器學習模型不但能【學習】還能把【注意力】放到正確的地方。

因此當我輸入一張照片資料,經過輸入機制中的【參與輸入】計算能幫我們把注意力放到正確的地方(例如照片資料中的人臉部分)經過一個能辨識開心/難過的模型之後,他就能輸出到底是開心還是難過。反之亦然,我們也可以對模型計算的結果投入不同的關注,透過【參與輸出】來呈現出更為重要的輸出結果。

你感覺到了嗎?參與機制最關鍵的地方,就是讓你的機器學習模型的輸入/輸出資料的維度可以彈性變化!例如你把照片剪裁成小一點,他也是一樣能透過把注意力放在照片中的人臉,得到正確的結果!

我的工作主要在時間序列資料,有時候我們要選擇到底用過去多少時間的資料來搭建時間序列,然而透過參與機制的加入,我就不用再為選擇多長時間的資料來煩惱,因為我的模型就能自動對「應該的時間長度」投以「應該的關注眼神」當我的輸入資料有急遽變化(例如金融商品價格飆升與驟降)他就能更關注短期變化,並透過模型中對短期變化的反應來輸出我想要了解的結果。反之,若資料呈現一種穩定的緩步趨勢變化,參與機制就會多考量一些我的資料中較久以前的資料,透過參與輸入帶進模型計算,最後輸出結果~!

我一直很好奇把術語拔掉看起來很拗Orz…希望仍對大家有幫助!

相關課程與書籍

關於Soft & Share

Soft & Share目前有經營 FB團購社群 並會透過slack召開網路讀書會, 有興趣歡迎來加入, Soft & Share也是廣受開發者喜愛的開發工具JetBrains合作夥伴, 歡迎透過FB搜尋 “JetBrains Taiwan" 即可找到JetBrains開發工具的社群, 歡迎加入社群討論.

喜歡我們的分享嗎? 記得使用以下社群分享按鈕分享給您的社群朋友吧!

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

分類

人工智慧機械學習