2018年3月20日 星期二

[情報] 目前市面上有哪些 Open Source Function As Service (FaaS)



前陣子因為好奇加入了 Cloud Native 的Slack 群組,看看最近熱門在討論的話題是什麼,有什麼有趣的技術正在發展,最近就剛好看到一個有趣的投票話題,請大家推薦 open source 的 FAAS Solution。



2018年3月17日 星期六

非技術團隊的敏捷與自省會議


究竟非技術團隊也適合跑敏捷方法嗎?一直以來我對這個議題也蠻感興趣的,如果適合那該怎麼推行和實踐呢?雖然以前有上網找到了一些文章,不過沒有實際執行過也不會有感覺。

其實敏捷推行久了慢慢會發現,其實瓶頸可能已經不在技術團隊,而會轉移到其它非技術團隊,或者應該說瓶頸往往產生再技術團隊與非技術團隊的交付以及溝通的過程,而一間公司和一個集團想要能更加的成長茁壯,就必須不分團隊別的共同進步與成長,這也是Lean 與 DevOps 的精神。

2018年3月13日 星期二

透過Java開發 Spark 2.x ML 的 LDA (Latent Dirichlet allocation) model 的感想

借用 Deep Learning 那門課的一張投影片來代表我最近在做的事,一直不斷的在轉圈圈,但是其實更多時候腦袋都是下圖這種轉圈圈:


主要的挑戰如下:
  1. 第一次用Spark 寫 ML 相關的程式,然後網路上的範例和討論幾乎都是用 scala 和python 寫的,為了要轉成Java版花了不少力氣。
  2. 資料散亂且難以理解,關於LDA 的文章幾乎都是論文等級了,充滿了難以下嚥的數學公式,往往都是直接略過,而且關於LDA 和 Spark ML 相關的中文討論又是以大陸居多,不過也因此挖到不少寶。

Spark ML 內建的Pipeline 主要分為以下四個步驟:



不過後來才發現Spark ML 的 pipeline 是給 supervisor learning 使用的,因為有 label 的 data  可以用來驗證訓練的結果是好還是不好,但是我們這次用到的不論是 LDA 或是 word2vec 都是屬於 unsupervised learning 沒有一個明確的基準點可以驗證,因次不適合用 cross validation 來找出最佳的 hyper parameter 。



那LDA 可以調的參數有哪些些呢?如下圖所示,主要是 K (topic number) , max iteration,doc Concentration和 topic Concentration,不過上網看了許多論文和討論,似乎影響最大的還是K 值。




原本以為只要把這些參數排列組合,找出最大 likelihood 或最小的 perplexity 結果居然看到以下的討論......



在研究中產生許多問題,順便把問題整理在這裡:

1. LDA 跟 word2vec 的差異在哪裡?

LDA 注重的是文章與文章間所有詞的關係,而word2vec 是詞與某篇文章上下文之間的關係,也就是說 word2vec 並沒有考慮語法層面的訊息,一篇文章被看成文字序列(word sequences),只考慮詞與詞之間的位置與邊界關係。

網路上找了一個有趣的解釋,假如你輸入HTC:

普通的word2vec 會找到:Android,cellphone,Taiwan,Google...
但是考慮語法後:Moto,Apple,Nokia,Xiaomi...

雖然看起來都有關連,但是本質上卻是不一樣,真得好難啊....

更多網路資訊:

關於LDA 與 Spark 相關文章: