好書試閱

【摘錄1】

主題01:谷歌的搜尋功能是如何運作的?

無論何時在谷歌上進行搜尋,搜尋引擎都會爬梳超過三十兆個網際網路上的頁面,然後找到前十筆符合您搜尋的結果。有92%的時間你會點選在第一頁當中的某個結果(也就是前十筆結果當中)。從三十兆的網頁中找到前十筆相當困難——就如同在紐約市尋找掉在地上的一分錢。然而谷歌用專家的方式在平均半秒的時間內找到結果。但是,它是如何做到的?

實際上谷歌並不是你每次搜尋的時候,就前往網際網路上的每個頁面。谷歌實際上是將網頁的資訊存在資料庫(資訊的表格,如Excel),然後使用演算法讀取資料庫,決定要呈現哪些內容。演算法只是一連串的指令——人類也許有個「演算法」用於製作一個花生醬與果醬的雙醬三明治,如同谷歌有演算法用於尋找你在搜尋列中輸入的內容。

※爬取

谷歌的演算,是從建立資料庫用於儲存網際網路上每個頁面的資料開始的。谷歌使用稱為蜘蛛的程式,用於「爬取」(crawl)網頁,直到找到所有頁面(或者至少是谷歌覺得是所有的頁面)。蜘蛛先從少數的頁面著手,再將這些頁面新增到谷歌的網頁列表,稱為「索引」(index)。然後蜘蛛從這些頁面的向外的連結開始,找到新的一組頁面,也加到索引中。下一步,他們跟著這些頁面上的連結繼續同個步驟,直到谷歌無法找到其他頁面。

爬取的動作不斷在進行,谷歌一直在新增頁面到他們的索引,或者是當頁面有變更時,谷歌也會更新索引。索引的檔案規模非常巨大,超過一億GB。假如你想把它裝進容量為1TB的外接硬碟,會需要十萬個外接硬碟——如果將它堆疊起來,大概會有一英里高。

※文字搜尋

當你在谷歌進行搜尋,谷歌會抓取查詢內容(你輸入在搜尋框的文字),然後比對它的索引,尋找最相關的頁面。

谷歌如何做到這件事?最簡單的方法是尋找特定關鍵字出現的地方,有點類似按下Ctrl+F或者Cmd+F搜尋一個巨大的Word文件。確實,這是90年代搜尋引擎運作的方式:就是在其索引當中尋找符合你搜尋的文字,並且顯示最相關的頁面,這個「相關」的屬性稱為關鍵字密度。

這個方法很容易被操弄。假如你輸入士力架糖果棒(Snickers),想像你會看到snickers.com排在第一位。但是如果搜尋引擎只是計算士力架這個單字在頁面上出現的次數,任何一個人可以製作隨機的網頁,頁面上只出現「士力架士力架士力架士力架」(如此一直下去),然後就會被排到搜尋結果的首位。很明顯,這並不是非常有用的方式。

※佩吉排序

捨棄關鍵字密度,谷歌核心的創新技術是一個稱為佩吉排序(PageRank)的演算法,這是由谷歌的創辦人賴瑞・佩吉(Larry Page)與 謝爾蓋・布林(Sergey Brin)在1998年為了博士論文所撰寫的。佩吉與布林注意到,一個網頁的重要性可以從哪些重要的網頁連結到該網頁來進行評估。這就如同在一個派對當中,你知道某個人受歡迎,是因為他被其他受歡迎的人包圍。佩吉排序給每個網頁一個分數,這個分數是由其他連至該頁面的其他網頁的佩吉分數所計算出來的。(那些其他網頁的分數,是由其他連結至他們的網頁分數所計算出來的,持續這樣計算其他網頁的分數;這是由線性代數所計算。)

例如,假如我們製作一個關於亞伯拉罕・林肯的新網頁,一開始會有很低的佩吉排序分數。如果有一個沒沒無聞的部落格連結到我們的網頁,網頁的分數會稍微上升。佩吉排序關心的是連至我們網頁的連結的品質,而不是數量。即使好幾十個沒沒無聞部落格連至我們的頁面,我們網頁的分數也不會提升太高。但是假如《紐約時報》的一篇文章(或許擁有很高的分數)連結到我們的頁面,我們頁面的分數就會大爆發。

一旦谷歌在其索引當中找到符合你搜尋的文字內容,谷歌就會用多個準則進行排序,包含了佩吉排序。谷歌也有許多其他準則:例如頁面更新的時間,以及忽略看起來像是垃圾的頁面(如之前我們所提到的寫滿「士力架士力架士力架士力架士力架士力架」的網站)。同時谷歌也會考慮到你所在的位置(如果您在美國搜尋「足球」,它會回傳國家美式足球聯盟,如果你在英格蘭,它則會回傳英格蘭足球超级聯賽),以及其他種種準則。

※操弄谷歌

然而,佩吉排序存在許多漏洞。很多像是濫用關鍵字密度的垃圾頁面(就如同「士力架士力架士力架士力架士力架士力架」),現在也開始有 「連結農場」(link farm),或者是頁面上有許多不相關的連結。網站擁有者可以付錢給連結農場,將連結加到連結農場的網站,藉此人為操作來使佩吉排序暴增。然後,谷歌已經很熟練地抓到與忽略這些連結農場。

但是,仍然有幾個主流的方式可以玩弄谷歌。一個稱為搜尋引擎最佳化(search engine optimization, 縮寫為SEO)的產業興起,幫助網站擁有者破解谷歌的搜尋演算法,確保他們的網頁能出現在谷歌搜尋的前幾筆結果中。搜尋引擎最佳化的最基本方式是讓更多的網頁連結到你的頁面。搜尋引擎最佳化包含了相當多的技巧,例如在你頁面名稱與標題選對正確的關鍵字,或者是讓你網站的頁面彼此相連。

然而,谷歌的搜尋演算法一直在變;谷歌在一年內有超過五百次的小升級。偶爾會有一些大升級,在每次升級之後,搜尋引擎最佳化的專家會試著找到改善方法來領先他人。例如,谷歌在2018年更改演算法,偏好那些在行動裝置上顯示內容較快的網站,這使得專家們建議網站的擁有者利用谷歌稱為加速行動頁面(Accelerated Mobile Paghes,縮寫為AMP)的工具製作過的頁面用以取得較好的搜尋排名。
【摘錄2】

主題02:Spotify如何推薦歌曲給你

每個週一早晨,Spotify會送給聽眾三十首歌的播放清單,這些歌曲很神奇地符合聽眾們的喜好。這個播放清單稱為「每週探索」(Discover Weekly),也成為熱門話題。在2015年6月發行的六個月內,「每週探索」被發送超過十億七千萬次。Spotify為什麼能這麼了解兩億個使用者的喜好呢?

Spotify的確有雇用音樂專家,手動製作播放清單,但是他們沒有辦法為兩億個使用者製作這個清單。Spotify是採用演算法,每週執行以製作歌單。

「每週探索」的演算法是先查看兩項基本資訊。第一,它會先看使用者喜愛到會加入到音樂庫或者是播放清單的所有歌曲。這個演算法甚至聰明到可以知道,使用者是否在播放的前三十秒就已經跳過該首歌曲,這代表使用者可能不喜歡這首歌曲。第二,演算法會看其他人所製作的所有播放清單,同時假設每個播放清單都有主題關聯,比如使用者可能會有「跑步」或者是「披頭四即興演奏」播放清單。

當Spotify有了這些資料,就利用這兩個方式找到使用者可能喜歡的歌曲。第一個方法是比較上述的兩個資料集(dataset),找到符合使用者喜好的新歌。例如,有個使用者的播放清單有八首歌曲,而當中的七首有在你的音樂庫,他們判斷你可能喜歡這類型的歌曲,所以「每週探索」就推薦那首不在你音樂庫的歌曲。

這種方式稱為「協同過濾」,這也被亞馬遜所採用,其根據你與數以百萬計的使用者的購買紀錄,推薦建議商品給你。網飛的電影建議、Youtube的影片建議,和臉書的朋友建議都是採用協同過濾。

隨著服務獲得更多使用者,協同過濾變得越來越有用——在這種情況下,當Spotify使用者越多,就越容易找到與特定品味相符的人,因此也更容易提出建議。 但是,隨著使用者數量的增長,這些演算法也會變慢且計算量龐大。

第二個方法是將使用者的播放清單視為個人的「品味檔案」(taste profile),根據個人所聽且喜歡的歌曲,Spotify會以不同類別(如獨立搖滾或者是R&B)以及更細微的類別(如室內流行樂與新美國音樂)推薦使用者相同類別的音樂。這仍然是根據過往聽過的音樂模式,只是不同形式的推薦。

※為什麼要投資在音樂推薦上?

然而,雇用工程師建置這樣的推薦引擎是很昂貴的,Spotify的工程師一年薪水要幾十萬美金,所以,為什麼Spotify要這麼做?

第一點,一個強力的推薦系統是一個賣點,讓Spotify顯得比其他競爭對手突出,如蘋果音樂(Apple Music)。那是因為有龐大的音樂庫是不夠的,以商業語彙來說,音樂是一個商品——任何歌曲在Spotify或者是蘋果音樂,或者是其他類似的地方聽起來都一樣——並且只要有錢的人就可以去購買音樂的授權,建立一個巨大的音樂庫。

所以,如果所有的音樂串流服務都能夠有效率地擁有相同的音樂,Spotify需要有與其他競爭對手不同的地方。而Spotify的推薦系統也確實達到這個目標——被認為比蘋果音樂更好。

而且,當有更多的使用者,協同過濾的表現會更好,Spotify(已經有了很多使用者)持續維持領先。

第二個理由是個人化的推薦使得使用者的服務黏著度更高。越常使用Spotify,演算法越了解你的品味,也因此更能推薦適合的音樂。所以假如你常常使用Spotify,你的推薦結果將會相當好,也因此你不會想改用蘋果音樂,因為蘋果音樂一點也不了解你的偏好。所以這個高「轉換成本」(switching cost),減少你想改用其他類似應用程式的可能性。(更一般地來說,任何存放在應用嘗試的個人資料,例如製作Spotify的播放清單,將會提高轉換成本,因為必須在新的應用程式中重新建立資料。)

簡而言之,個人化的播放清單對聽音樂的人來說相當重要,這也是Spotify厲害的商業策略,難怪越來越多的應用程式提供個人化的推薦內容。

金石堂門市 全家便利商店 ok便利商店 萊爾富便利商店 7-11便利商店
World wide
活動ing