Soft & Share 站友好文分享 : 圖解分層增強學習觀念

本文同步發表於Soft & Share 資料分析與機械學習 Slack channel, 有興趣歡迎加入討論

前言

會想要分享這篇是最近一方面在社群中和大家討論有提到,此外就是這一兩年也有一些學術文章在探討分層深度增強學習,更重要的是我覺得對於普羅大眾而言,增強學習其實會比一般傳統機器學習模型更能幫助大家在商業應用或專業技術中能更塑造優勢,因為增強學習可以把你專業的Know-How整理進來,融入業務架構。

今天在此先帶來的還是觀念,未來想說可以把一些開源的封包應用來做個 Demo Code 或 Toy Package 給大家把玩,到時候會再斟酌是放在 softnshare 的 datamachlearn 還是 python 的 repo 中

分層增強學習

增強學習 (Reinforcement Learning, RL) 是一種機器學習的訓練架構,增強學習假定你的訓練輸出可以作為一個「決策參考」並透過決策結果來產生新的輸入資料,透過這樣反覆不斷地「決策-判斷」來訓練模型學會在特定的輸入資料下能始終做出最佳的決定。

最簡單的理解就是「機器人走路」機器人透過感知到地面周圍,進行判斷到底這個地面能不能走,然後最後決定是否要往前進。這裡可以發現,模型聰明之處是在於從非常原始的地面資料,最後能抽象做出走路與否和走向哪裡的決策。

但這會有個缺點,如果你的訓練目標稍微複雜一些,例如「機器人走路,還會閃避地面障礙物,然後先找尋地面鑰匙撿起來」 哇!這怎麼可能單純感知到地面資料,就能做出的簡單決策呢?在這樣的前提下,我們希望機器人能合格達成「多目標任務」就好,不用過度優化單一目標(舉例來說,機器人為了最佳化避開障礙物路線,結果永遠撿不到地面鑰匙),這時候就可以採用 【分層增強學習 (Hierarchical Reinforcement Learning, HRL)】

透過下圖,你可以簡單理解出有沒有分層的差異:

20a5c89e-25f7-11e6-8689-582a4a2afb72

透過把增強學習的決策過程,拆解成分解動作,每個分解動作的決策都搭配一組增強學習,成為一個複合式的增強學習模型,某種程度可以解決掉我們所需要完成的「多目標任務」

 

 但是!分層增強學習也被人詬病,由於你人為的給定了分層的框架,所以分層增強學習並沒有達到足夠智慧化的創新,他並不是自己學習到分層的框架,所以後來就有人發展出分層框架也透過機器學習來訓練出來,但這樣樣本和訓練過程的時間就又更長了。

 

 但是個人觀點是認為,任何方法的重點都是在解決問題,如果你的業務發展本來就有一些值得和模型鑲嵌在一起的知識框架或專業知識,分層增強學習搞不好還會成為你們公司機器學習相關產品服務對特定客群客戶的重大賣點呢!

About Me

RICKY,目前任職於瑞典摩爾資產管理,擔任小小 Quant (P-measure), 主要擅長混合新聞短訊與時間序列資料的複合式機器學習模型開發, 近一年來主要深耕於流形學習(manifold learning)盼能在中文世界遇到熟的知音

關於Soft & Share

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

最近招募中的網路讀書會

Soft & Share 的讀書會願景- 我們希望每本書會是一個連結, 最後這個連結會形成一個網路, 這個網路甚至會誕生新的創意, 這個新的創意會對社會有幫助, 讓人的生活變得更美好. 

目前招募中的網路讀書會請參考這個頁面

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

一種對機器學習模型過擬合的改良-參與機制(Attention)的觀念簡介

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

參與機制機器學習

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

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

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

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

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

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

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

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

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

 

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

未來不用Geotag, 電腦也會知道照片的拍照地點

今天看到MIT Technology Review-Google Unveils Neural Network with “Superhuan” Ability to Determine the Location of Almost Any Image 這則新聞, 這又是人工智慧, Deep learning的一大進步, 而且這也是拜大數據所賜, 因為自從相機, 手機內建了geotag功能, 人們習慣拍照後將有geotag的影像上傳到Flickr, Google Photo, Facebook,目前在網路上可以找到標geotag的照片數量大概是以千萬張起跳, 這篇文章提到Google就是利用這些既有的龐大資料庫來訓練電腦做影像比對分析, 這其實跟我們的大腦學習行為是一樣的, 我們可以看到照片中有艾非爾鐵塔就可以知道這個地標是在巴黎拍的, 現在電腦經過人類的大數據調教也可以做得到.

準確度?

裡面有提到研究團隊的一些測量數據, 他們使用Flickr中有標geotag的2千3百萬張的影像來測試, PlaNet可以分辨出3.6%的影像到街等級的精確度, 10.1/%到城市(city), 如果是國家區域等級則到達28.4%, 洲區域等級到達48%

這些數據很好, 但是好到什麼程度, 接下來當然就是跟人類比賽啦!, 研究團隊設計一個Game然後找10個經常旅遊的人來跟PlaNet比賽到底是人可以辨識更多, 還是PlaNet可以辨識更多地點. 這個遊戲放在www.geoguessr.com 任何人都可以參加.

比賽結果呢?  人類慘敗 🙁

In total, PlaNet won 28 of the 50 rounds with a median localization error of 1131.7 km, while the median human localization error was 2320.75 km,” say Weyand

為何PlaNet不需賴以人類依靠的線索而執行的比人類好? (這是文中的提問, 小編當下就想, 一定是大數據的幫助不是嗎?), 後面的計畫主持人就回答了PlaNet可以贏過人類是因為它見過的地方遠比人類多, 而且它可以識別出細微的差異,這對於那些經常旅行的人也是很困難去分辨.

如果是在室內拍的呢? PlaNet就要利用相簿的功能, 它會去辨識與這些室內拍的照片放在一起的其他照片中的地點, 然後假設這個室內拍攝照片就是在同一個地點. 看起來未來的Google Photos會加入這個自動辨識影像拍攝地點的功能.

Google還針對這項技術出了一篇論文arxiv.org/abs/1602.05314

感想:

這個功能真的很方便, 以後不用打開手機的GPS功能也可以省下很多電力:-) 但是人工智慧強到看照片就知道地點, 未來結合網路PC Camera, 這又是另一種隱私的問題.

延伸閱讀

想要加入Soft & Share的Slack線上討論群組與讀書會嗎加入Soft & Share Slack 

Soft & Share在Facebook有經營兩個粉絲團, 歡迎來加入

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

Google開放了Cloud Vision API給所有的開發者

TechCrunch的報導 : Google Opens Its Cloud Vision API To All Developers 

Cloud Vision API的網址 : Google Cloud Vision 

之前看到Cloud Vision API是要提出申請, 過沒多久就全面開放了. 摘要一下這個Cloud Vision API的重點

根據TechCrunch的報導, 這個API可以從影像中解析出文字, 但是它最強大的功能是辨識影像中的物體, 這個功能已經用在目前Google Photos服務中的影像搜尋, 可以識別出花, 食物, 動物甚至地標, Google指出目前這個演算法已經被訓練到可以識別上千種的不同物體.

TechCrunch認為影像分類大概是這個API最有趣的功能. 而且這個服務可以標出不適當的內容, 例如你希望讓你的影像服務App不能出現成人內容(PG-rated, 類似電影級別, 保護級), 這個API還有情緒分析的功能, 例如你只想在所有影像中找出有快樂的人的影像. 

這個服務是要收費的, 一千張影下以下是Free的, 一千張以上就要收費. 詳細收費可以看Google官方網站.  在Beta階段, Google限制每個開發者每個月最多處理2千萬張影像, Google指出目前已經有公司導入這個Service, 例如Yik Yak使用API解析影像中的文字. TechCrunch也指出Vision API的競爭對手是MicroSoft的Project Oxford. Oxford也提供電腦視覺, 臉部辨識, 情緒分析等功能.

到Google官網看一下Cloud Vision API的描述, 摘要一下這個API的重要功能

  • Insight from Your images: 將影像的的物件分類
  • Detect Inappropriate Content: 昨天有分享一篇第一次上架到Apple Store被拒絕的歷程, 裡面就有提到Apple的上架指引有提到開發者必須可以讓使用者舉發不當的內容, 如果可以更進一步使用Cloud Vision API來過濾掉, 就可以避免掉這個問題.
  • Image Sentiment Analysis – Google官方說明一個案例, 例如你讓使用者去看你設計的Logo, 你可以用情緒分析的API來分析使用者是否喜歡這個Logo, 這讓我想到台灣一家新創公司UXTesting, 我想未來他們應該會導入這個API, 讓App開發者知道使用者是否喜歡他們的人機界面設計.
  • Extract Text – 不知道中文是否也可以辨識

範例程式

Realtime People Counter with Google’s Cloud Vision API and RxJava 這個範例是使用Java 8來示範如何使用Google Could Vision API, 這個範例展示了Vision API辨識照片中有幾張人臉, 有一張圖很有趣包含了一隻猴子, Vision API沒有漏氣不會將猴子當作是人臉

 

感想:

人工智慧, 影像視覺, 還有情緒分析, 未來你用Skype跟朋友做視訊, Skype搞不好還會跟你提示你說了哪句話讓對方高興, 不高興. 這個未來是好還是不好?

延伸閱讀

想要加入Soft & Share的Slack線上討論群組與讀書會嗎加入Soft & Share Slack 

Soft & Share在Facebook有經營兩個粉絲團, 歡迎來加入

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

最近幾個網路大咖釋出的Machine learning開放原始碼

TensorFlow – Google’s latest machine learning system, open sourced for everyone 2015年11月9號發布, Google這是拋磚引玉

Microsoft release CNTK, its open source deep learning toolkit, on GitHub

Baidu releases open source AI code  值得一提的是這次百度開發的原始碼裡面有語音辨識的相關功能, 能辨識英文, 與中文, 聽起來像是iOS中的Siri功能

AlphaGo: using machine learning to master the ancient game of Go Google的人工智慧打敗了歐洲圍棋冠軍, 未來雲端+AI 過去在科幻電影裡面看到的情節似乎不遠

由 WordPress.com 建置.

Up ↑