2018年6月16日 星期六

[Spark 學習小筆記] 什麼是 Hyperparameter Tunning? 有什麼方法?



不論在學習或是工作常常都經歷過一段知其然不知其所以然的階段,是否能突破其實就是看有沒有這個機運和決心去突破,話說之前在翻譯 Spark ML 那本書時,看到 Grid Search (網格搜尋) 和 Random Search (隨機搜尋) 的時候其實是一頭霧水,只知道是用來搜尋Hyperparameter 的演算法,但是原理和如何使用卻是一無所知,直到最近開始利用Spark 開發Machine Learning 專案,就慢慢開始有感覺了。

訓練每個Machine Learning  演算法都會有專屬於他的參數可以做調整,舉Word2Vector 為例,就至少有兩個參數:
  • Vector Size
  • Window
那我們要怎麼知道給怎樣的參數Train 出來的Model 是最好的?最直觀的作法就是用For 回圈把所有的排列組合都跑一遍,也就是所謂的 Grid Search:以固定的間隔,把所有可能的參數組合都跑一遍找出最佳組合。

雖說 Grid search 最直觀也最好實作,但是有兩大缺點:
  1. 如果參數少那還好,一個參數就是一維 Grid O(n),兩個參數就是二維 Grid O(n^2),也就是說每增加一個參數就等於是增加一個維度,超過三圍以上的Grid 就很難想像和視覺化。
  2. 此外如果資料量小,Train 一個 model 不用花太多時間還可以接受,但是只要資料量一大,這個方法就會變的曠日費時。
這時候就產生了第二種方法,Random Search 隨機搜尋,讓我感到驚訝的是,這種方法居然有效,而且大大縮短搜尋得時間,而且很難打敗這個方法,詳情請參考這篇論文:Bergstra & Bengio’s “Random Search for Hyper-Parameter Optimization”

當然學術界不會因此就滿意,後來又研究出 Bayesian optimization,有興趣的可以參考下面的投影片。




最近的感想就是一旦開始玩Machine Learning 就會不斷的在工程與學術間切換,一方面要考量工程的議題:如何快速開發,如何模組化,如何調教效能...,一方面又要開始看論文研究有什麼更好的演算法,或是更好的方法。

說實在還蠻享受這種每天都有腦漿燒乾的感覺,但是不知道還有多少可以燒...XD

Reference:

[1] Bayesian Optimization for Hyperparameter Tuning
[2] What methods do you prefer when performing hyperparameter optimization?


2018年6月1日 星期五

關於 2019 年 Oracle Java 即將收費有什麼是我們必須知道的?


最近網路上吵的沸沸揚揚的話題之一就是Oracle Java 將要對商業用途收費,相關的新聞也不少:

然後這些話題在ptt 和Facebook TWJUG 也引起很大的討論

資料來源:Facebook TWJUG


但詳情究竟是怎樣呢?其實我觀察到應該是兩個議題被混再一起討論,造成的恐慌:
  • 一個是已經存在已久的商業授權議題
  • 另一個是Oracle java 8 在 2019年更新要收費

Java 商業授權的定義


首先官網開宗明義就回答Java 是否還是免費?

Is Java still free?

The current version of Java - Java SE 9 as well as Java SE 8 - is free and available for redistribution for general purpose computing. Java SE continues to be available under the Oracle Binary Code License (BCL) free of charge. JRE use for embedded devices or use of commercial features may require a license fee from Oracle. Read more about embedded use of Java SE or contact your local Oracle sales representative to obtain a license.

請參考官網:
另外有興趣的可以參考這份報告:


根據這份報告的結論,會被收費的應該是:
  • 使用 Commercial feature 功能的公司
  • Non-General Purpose Computing Usage
  • Embedded use of Java SE (這應該就是針對POS/ 網通...等設備廠商)
所以一般提供雲端/網站服務的公司是應該不算在收費範圍,唯一弔詭的用詞在這段:

Any usage of the Java SE8 software programs that does not fall under the “General Purpose Computing Usage”, is by definition “Non-General Purpose Computing Usage” and as such required to be licensed separately through Oracle Corporation.

那到底什麼是一般用途使用?XDDD


關於Java 8 升級收費


根據官網資料:

Public updates for Oracle Java SE 8 released after January 2019 will not be available for business, commercial or production use without a commercial license.



我的解讀就是,Java 8 我們不想再維護摟,所以大家趕快升級去用新版的Java 9 甚至10唷,但是有些比較有錢的公司必須繼續使用Java 8 的話,那要我們幫忙升級patch 那就繳錢吧....:P




2018年5月21日 星期一

阿里鐵軍 - 企業價值的考核



阿里鐵軍第二章講的是公司的願景,教育訓練和績效考核,先來看看阿里巴巴的價值觀的演進,從原本的獨孤九劍:
  • 創新
  • 激情
  • 開放
  • 教學相長
  • 群策群力
  • 質量
  • 專注
  • 服務與尊重
  • 簡易

精簡為六脈神劍:
  • 客戶第一
  • 團隊合作
  • 擁抱變化
  • 誠信
  • 激情
  • 敬業

乍看一下跟一般公司的價值觀沒什麼差別,不過就是口號罷了?大部分的公司可能把價值觀當口號喊完就算了,了不起讓員工能都能背起來,但是如果要落實價值觀呢?阿里的觀念就是把它融入到考評系統,在阿里巴巴價值觀考核和業績考核各佔50%,但是最讓我感到好奇的就是對於價值觀的考核??考評員工是否有符合這些價值觀?到底該怎麼做呢?作文大賽嗎?XD

很好奇的上網查了一下,每條價值觀都有具體的行為準則和等級,然後如果符合也必須舉出具體案例(不管是自評和長官評),雖說上有政策下有對策,KPI 訂出來都可能被玩弄,但是對於大部分的人來說都是很具體可以落實的,不是那種虛無縹緲自己覺得給自己幾分,或是長官覺得給你幾分就幾分


而對於用人的準則也有整理如下(真得很愛取名字和口號XD)




另外也找到下面這個投影片做的蠻不錯的。