Inside 硬塞的網路趨勢觀察

“笑傲「演算法」江湖的獨孤九劍” 與新的 2 篇文章 - Inside 網路趨勢行銷與開發

Link to Inside 硬塞的網路趨勢觀察

笑傲「演算法」江湖的獨孤九劍

Posted: 14 Aug 2014 03:50 AM PDT

笑傲「演算法」江湖的獨孤九劍

圖片來源:The Social Network

最近恰巧在書店看到了一本書,書名叫做演算法統治世界說明了演算法如何的重要如何與生活息息相關,很可惜書中並沒有提到太多關於演算法的實質內容。最近剛好在因緣際會下也讀到了一本覺得非常實用的書 “ Algorithms That Changed the Future”,中譯 “改變世界的九個演算法” 由 John MacCormick 合著。 本書以一種非常淺顯易懂的方式,試圖讓不論是否具有背景的讀者們都能夠了解這些偉大的演算法如何運作,以及他們是怎麼樣在各層面影響我們的生活。

為何需要了解演算法

不論看到各種議題,大家心中所想到的往往是:與我何干?。 在如此繁忙的生活下,我們已經很難拿出額外的精力去注意與自己不相關的議題了。但是電腦運算正一點一滴地改變我們的生活,我們或許沒有辦法全盤的去了解它的運作。但我們可以藉由概念性的去理解其核心,然後去明白究竟在生活上電腦運算的發展會對生活產生什麼樣的影響。舉個例子來說:我們知道輪胎或者是鞋子上了防滑紋路是為了要增加摩擦力,因此我們知道當紋路磨損之後要換新的。但非專業人士的我們不需要去了解紋路的設計對摩擦力的影響,以及計算究竟可以產生多少摩擦力。

什麼是演算法

那究竟何謂演算法? 演算法簡單來說就好比是一個「精確的食譜」,把我們所遭遇到的問題的解決方法,藉由有系統與條理的方式一步一步的解釋清楚。從上述我們可以知道幾件事情:

  • 演算法是用來解決問題
  • 演算法將解法切割成不同步驟
  • 演算法的解決問題的步驟是精確的,不靠人類的直覺與猜測

因為上面的幾個特性,我們才能夠藉由將演算法編寫成程式利用電腦做運行計算,來解決我們生活上的問題。

在這裡舉一個很簡單的演算法實例,費波納契數列求解給想要看一下演算法長什麼樣子的讀者們。但這部分與書中內容無關只是讓讀者知道真正的演算法大概長什麼樣子。

費波納契數列

首先先解釋費波納契數列: 0、1、1、2、3、5、8、13、21、34 。這個數列的特性是:

  1. 第一個數為 0
  2. 第二個數為 1
  3. 從第三個數開始,每個當前的數為前面兩個數的總和。舉例來講:
    2 = 1 + 1,3 = 1 + 2,5 = 2 + 3。

問題

現在的問題是費波納契數列的第 n 個數是什麼? 舉例來講,當 n 為 1,答案就是 0,n = 3 答案就是 1,n = 5 答案就是 3。

演算法

我們可以發現,除了第一個與第二個費波納契數沒有辦法用公式解之外,其他的數字都有規律。(因為第一個數與第二個數前面沒有數字,沒有辦法用前面兩個數字相加)。

從上面這個數列我們得到下述的演算法:

  1. 當 n = 1 答案就是 0
  2. 當 n = 2 答案就是 1
  3. 當 n 不為 1 或者是 2 ,我從第三位開始將每一位算出來並記下來直到我算到第 n 位。計算的方法是: 當前的數字等於前兩個數字之和。然後得到第 n 位的答案。

我們再舉個例:假設今天 n 是 5 。我的演算法會有如下的步驟:

  1. n = 3,於是我把已知的第二位與第一位相加 1 + 0 = 1
  2. n = 4,我把剛得到的第三位與已知的第二位相加 1 + 1 = 2
  3. n = 5,我把剛得到的第四位與剛得到的第三位相加 1 + 2 = 3
  4. 我得到第五個費波納契數是 3

讀到這裡或許有讀者問為什麼要這麼麻煩?第五個數不是一看就知道是 3 嗎? 是的,因為我們現在數字很小,那假設我們說的是第兩千個費波納契數呢? 或者是第兩萬個費波納契數呢?人沒有辦法在這麼短的時間內計算並記住這麼多數字,所以才需要利用演算法,讓電腦來為我們處理。

九大演算法

當然,在書中並不是像上面那樣子,一行一行的列出解法,而是藉由簡單有趣的例子,以及一些簡化的數字運算來為我們點出這幾個演算法的精髓部份。在書中提出了八個與我們生活切身相關的演算法與一個如果存在將會很了不起的演算法來討論電腦能力的極限。其中現存的八種如下:

搜尋引擎的索引

搜尋引擎的索引,是幫助你我在網路上正確地找到資料不可或缺的工具,我們要怎麼樣才能夠做有效的搜尋讓我們從網路海中撈出一根針?

網頁排序

當我們搜尋關鍵字,出來了這麼多的頁面,我要怎麼樣才能判斷哪個頁面是真正重要的?才能優先將它列出來?

公鑰加密

我在亞馬遜上輸入我的信用卡買東西,我要怎麼才能夠確定我的資料只有亞馬遜才看得到?

錯誤更正碼

網路更正碼被應用在網路之間封包的傳遞,以及 CD、DVD還有硬碟上。祝要是用來確認我所讀取以及接收到的資料是否正確。舉例而言:假設我電話傳錯一碼,那我整個傳送就沒有意義了。

辨識模式

辨識模式被廣泛應用在人工智能上,像是語音便是服務客戶的自動電話,網路上按照個人興趣推薦商品以及大數據的處理,辨識模式都占有一席之地。

資料壓縮

我們總打開或者是將檔案做成過 zip 或 rar 檔吧? 圖片以及文字是怎麼樣縮小與放大都與資料壓縮有關。

資料庫

銀行的資料庫要怎麼樣才能確保我的交易是正確的?我會不會在交易的時候因為銀行的伺服器當機然後錢沒了?我要怎麼樣才能夠讓資料可以更快的儲存與被讀取都跟這部分有關

數位簽章

一般而言我們並不會接觸到數位簽章,因為我們的電腦會自動對數位簽章做檢驗,通常發生在下載軟體的時候。

這些演算法所包含的範圍有:網際網路搜尋、網路安全、資料傳輸的正確性、大數據、以及資料儲存與處理等。每項都與我們的生活緊扣,除非我們完全不使用電腦,否則你我都會多少接觸到上述演算法所涉及的領域。

公鑰加密

在書中,最令我印象深刻的一段是公鑰加密的部分,利用以塗漆做舉例讓大家來了解公鑰的基本精神,因此在這裡特別和大家分享。

問題如下:假設今天有三個人我、你、他以及有很多罐顏料,每個人有自己的小房間可以藏自己的顏料。在所有的溝通必須公開透明的情況下,我該怎麼樣才能夠在他不知道的情況下混合出和你相同的顏色?假設顏色代表秘密,我和你該怎麼樣才能在他的眼皮下傳達你我共同的小秘密?

演算法如下:

  1. 我們每個人選出自己的個人色
  2. 我們任一個人選出公共色
  3. 我與你將公共色與自己的顏色做混合,並公開混合之後的顏色(你知,我知,他知)
  4. 解答慎入1

為了不妨礙讀者思考的樂趣,在這裡將演算法的最後一步寫在最後,但在這裡有兩個重要的假設,其中之一是顏色非常的多,所以他無法知道我選的個人色是什麼,再來是我無法將顏色重新分開來得到原本你選的顏色。

結語

演算法一直是每個電腦科學系的必修,常常我們在學習的時候卻陷入了數字的囹圄或者是因為理論而暈頭轉向但很多的時候我們不妨可以像書中介紹的方法一樣,退一步,仔細看清楚這些演算法的全貌仔細想清楚他們想要解決的問題試著用生活的方式所舉例來加深自己的了解。

書中所介紹的演算法其實都非常的重要,在筆者就學的期間幾乎學過,或接觸過更甚至親手寫出程式來執行一半以上的演算法。往往很多人認為現在在寫 App 大多都是使用 Library,究竟演算法有什麼重要的?我記得當時在演算法課上,老師告訴我們兩個答案:

  1. 因為國外面試都問演算法
  2. 學習演算法是一種思維的訓練可以讓你變聰明。

很多的時候學習演算法可以讓你在學習各種新的東西上都快速了許多,因為我們必須從每個角度來檢視自己的思考是否正確,然後將每一步都說明清楚來得到正確的答案,長久下來訓練自己的思維就是讓你自己與別人可以分出差距的地方。

也同樣的,很多新的想法都是建立在原有的基礎上,學習演算法可以讓我們在遇到新的問題的時候,靠著原有的基礎想出更新更快的解法。這也就是為什麼在國外公司面試的時候,演算法受到如此的重視。因為知識性的考題可以靠著記來補強,但是思維卻沒有辦法短時間訓練。

這裡再舉個例:假設學過化學,我們就不會說出類似吃鹽細胞會爆炸或讓身體腐蝕之類的話2(曾在台灣某節目上有來賓認為鈉離子比鈉恐怖,與與身體細胞結合會產生嚴重的影響)。

在電腦運算如此發達的時代,我們非常幸運的可以站在這些巨人的肩膀上了解好幾十年下來所累積的智慧。


  1. 只要你我都個把對方的公共混合色帶回自己的房間加上自己的個人色即可
  2. 寶傑,你說說看鈉有多恐怖?

記帳總是不到一個月就放棄?試試台灣團隊開發的全自動服務 Moneybook

Posted: 14 Aug 2014 03:33 AM PDT

記帳總是不到一個月就放棄?試試台灣團隊開發的全自動服務 Moneybook

細數我曾用過的記帳軟體,從桌面電腦時代的豬頭記帳、自製的陽春版 Excel,到智慧型手機上數不清的 app,包括本土的 Monny、國外的 Wally、Ahorro、Money Care Lite⋯⋯記帳工具淘汰的速度堪比衣服。究其原因,問題並不出在喜新厭舊,而是三天捕魚、五天曬網,跟寫日記一樣,經常半途而廢,app 就這麼放在角落生灰。也許某一天無意間下載了新的記帳 app,才又開始新一次輪迴,但是通常不出一兩個月,就又前功盡棄。

那些年我曾用過的記帳軟體

這些 app 除了視覺介面愈來愈美,說實在的,功能大同小異,使用者必須一筆一筆手動記錄,早上來一杯小確幸星巴克 110 永和豆漿 25、中午嗑盤 70 元的炒飯、借了同事 100 塊、下午肚子餓採購 79 元的零食、回家途中悠遊卡加值 500、在屈臣氏補 540 元的髮妝品、路過東區買了件 280 元的背心。每消費一次,就要:

  • 打開手機
  • 找到記帳 app
  • (輸入密碼)
  • 輸入品項
  • 輸入價錢
  • 選擇分類
  • 確認

看似舉手之勞,但是其實隨便都能漏掉好幾筆,可能是忘記記錄、來不及記錄,懶得記錄⋯⋯如此一來也就失去記帳的意義。

相信很多人,都有跟我一樣的毛病。我們需要一款不同思維的記帳軟體。

去年 11 月,一個名為 Moneybook 的服務悄悄上線,立基於美國知名理財服務 Mint 的概念,標榜自動抓取使用者銀行帳戶資料,進行整理與分析,免去手動記錄的麻煩。聽起來這才是智慧時代的產品,來看看有什麼實用功能吧!

自動記帳好智慧

我的存款帳戶中國信託以及信用卡華南銀行,Moneybook 剛好都有支援。首先必須申請網路銀行,取得帳號密碼之後登入,就可以翹腿等待 Moneybook 從銀行匯入每筆消費記錄,並且自動分類。

按下每筆消費記錄,可以自行修改記錄細節。

當然,跟數字最有關係的圖表「趨勢分析」,是不能少的。花費、收入、淨收入、資產與負債一一以長條圖與圓餅圖分別列出日期與分類,這也是最殘酷的頁面,太久沒檢視自己的花費,赫然發現自己七月份簡直傾家蕩產,簡直驚嚇。

如果同步所有帳戶,每個月的淨收入報告顯示得一清二楚,肯定會讓自己「很有感」。

在資產與負債的地方,則提供使用者記錄自己的不動產、貸款等內容。

Moneybook 也會提醒該繳信用卡費用了。

不想提供網銀的使用者也可單純使用手動記帳,不過這就跟一般記帳軟體沒兩樣了。有網銀的使用者也可以手動記帳,兩者彼此獨立,但如自動、手動併用會產生一些問題。

自動與手動的衝突

按進「趨勢分析」,觀察我上個月的消費分類,包括 ATM 提款與金融卡簽帳款項在內的「現金」占了 4/3,這是 Moneybook 這類服務比較麻煩的地方,儘管自動化,但是經常語焉不詳。由於日常生活依然多以現金交易,如果真要清楚細節,還是得靠自己手動註記。

但手動記帳在「趨勢分析」的地方會有重複計算的麻煩,比如我今天從 ATM 領了大概 10 天的生活費 3000 塊,每天記下這 3000 塊是怎麼一點一滴花掉的,如果每筆都記錄下來,那該月我的支出可能就會變成 6000 塊。

根據我們詢問 Moneybook 團隊,他們表示未來將會推出與 Mint 類似的「Split」功能。以我領出的 3000 塊為例,未來我可以直接在上面隨時「分割」消費項目與分類,今天花了 100 塊吃飯、明天不小心血拚了 1000 塊⋯⋯如此一來就不會有重複計算的問題,各種消費比例也能清楚明瞭。

美中不足

當然,Moneybook 作為只上線半年的服務,除了功能面上與 Mint 相較仍略薄弱之外,也存在一些令人不知所措的地方。比如當初匯入中國信託帳戶時,發生好幾次錯誤,遲遲無法同步,相當惱人。另外一個小小的細節是,我們登入各家網銀時,鍵入的帳號與密碼通常都不會以明碼出現,不過在 Moneybook 新增帳戶時,帳號的部分大方暴露。

Moneybook 的 iOS app 已經上架(Android 版本開發中),只不過略顯薄弱,無法直接在上面註冊、無法新增網銀、缺乏圖表功能。

安全疑慮

交出自己的網銀帳號密碼給第三方業者?

相信不少人都無法安心信任銀行以外的「網路業者」,萬一哪天被盜怎麼辦?不過其實Moneybook 只會列出交易資料,無法轉帳、提款或繳費,我們也沒提供信用卡號碼與安全碼,不致於有被盜刷的風險。

Moneybook 強調他們定期請第三方服務公司(目前為 DEVCORE)做滲透測試與防範,確保客戶資料安全性。團隊並進一步說明 Moneybook 與銀行的關係:

Moneybook 的運作方式與早期 Mint.com 一樣,我們是經由使用者授權後去讀取他們的銀行或信用卡交易紀錄資料。下面的比喻可以說明我們與銀行的關係:

Moneybook 與銀行的關係有點像是單機版 email 軟體(例如 Mailbox 這個 app)之於 Gmail、Yahoo Mail 等電子郵件服務,使用者在軟體上輸入 Gmail 或 Yahoo Mail 的帳號密碼,之後的工作(讀取/下載/傳送 email)交由機器去對接,因為 Google 與 Yahoo 開放 API 的關係,這些電子郵件軟體即便不是前述電子郵件服務商的正式合作夥伴,在使用者同意後,還是可以為使用者提供收發電子郵件的服務。

從記帳進化到理財

整體而言,Moneybook 相當適合我這種懶人使用,即使不想一一記錄每日消費細節,什麼都不用做就能看出每個月的花費概況,輕輕鬆鬆帶來可怕的嚇阻效果。

去年 Echelon 台灣站,howrich.me 以「理財工具的大革命」的口號,同樣推出類似 Mint 的服務,不過支援的銀行比 Moneybook 少了一些,目前也還沒有 app 版本。

同樣是在去年,我們曾經採訪過日本知名創投 CyberAgent Ventures 台灣區前副總經理 Catherine Chang,談到下一個可能的投資標的:

她特別提示「個人理財」這個「台灣人特別感興趣,但同樣沒有優異解決方案」的類別:電視廣播名嘴天天吹、理財書籍成堆,無論奶奶還是計程車司機談及此都滔滔不絕,然而,行動或網路服務卻很殘缺。

的確,Mint 在美國擁有不俗的成績,目前已累積 1000 萬使用者,帳戶共有 1700 萬。2009 年 11 月以 30 人公司之姿,被競爭對手 Intuit 以 1.7 億美金收購。

我們欣見台灣終於有類似 Mint 的專業網路服務出現,無論是 howrich.me 或 Moneybook,都希望它們繼續精進功能,真正從記帳軟體進化到理財服務。

行善不落人後,Mark Zuckerberg 潑自己一大桶冷水,接下來比爾蓋茲請接招!

Posted: 13 Aug 2014 08:42 PM PDT

行善不落人後,Mark Zuckerberg 潑自己一大桶冷水,接下來比爾蓋茲請接招!

我點名比爾蓋茲、我的 Facebook 好夥伴 Shery Sandberg、Netflix 創辦人 Reed Hastings,我要挑戰你們,24 小時內你們得把一桶冰水往自己頭上澆下去,不然就捐錢給 ALS——當然,更歡迎你們潑水又捐錢啦!

語畢,堂堂 Facebook CEO Mark Zuckerberg 拿著裝滿水的藍色水桶,往自己潑去,停了幾秒才吐出,「Wow,實在有夠冷」。

今天 Mark Zuckerberg 在 Facebook 張貼這段潑水影片,原來是響應美國 ALS(肌萎缩性脊髓侧索硬化症)協會發起的慈善行動「Ice Bucket Challenge」。

自 7/29 以來,「冰桶挑戰」——不是潑水就是捐錢,在社群網站掀起熱潮,一時之間 #IceBucketChallenge 的標簽淹沒 Facebook、Twitter,時值炎夏,大家玩得不亦樂乎,紛紛在後院拍下潑水影片上傳,效果奇佳,至今已為該協會募集到 230 萬美金,去年同期募款額僅有 2.5 萬而已。歌手賈斯丁、家居富商瑪莎史都華、甚至小甘迺迪遺孀 Ethel Kennedy 都大方「潑自己一大桶冷水」,搞笑之餘,他們當然也同時捐錢做善事。


微軟 CEO Satya Nadella 開放員工潑自己水,並且點名微軟前 CEO Steve Ballmer、Google CEO Larry Page 還有 Amazon Jeff Bezos 接受挑戰!

知名脫口秀主持人 Jimmy Fallon 的影片也堪稱經典,自己潑太寂寞,他把節目來賓跟樂隊一起拖下水!一群人一起潑,好壯觀啊~(影片 2:30 處)

紐澤西州州長欽點 Mark Zuckerberg「接受挑戰」,過去參與慈善不遺餘力的 Mark Zuckerberg 義不容辭,現在就看比爾蓋茲、Shery Sandberg、Reed Hastings 三位怎麼接招囉!

仰賴外界捐款的非營利性組織、非政府組織,也許也能思考善用社群媒體的力量,以有趣幽默的方式「吸金」,又歡樂又達到目的,威力應該比悲情訴求、名人熱線來得強更多。

arrow
arrow
    全站熱搜

    投機客的行銷世界 發表在 痞客邦 留言(0) 人氣()