Spotify’s Discover Weekly : Machine Learning ช่วยเลือกเพลงที่โดนใจเราได้อย่างไร

ในทุก ๆ วันนั้น ผู้ใช้กว่า 100 ล้านคนของ Spotify จะได้เจอ playlist ใหม่ ๆ อยู่ตลอดเวลา ซึ่ง อาจจะเป็นการ mix 30 เพลง ที่เราแทบไม่เคยได้ยินมาก่อนเลยก็ว่าได้ แต่คุณจะตกหลุมรักเพลงเหล่านั้น ซึ่ง Features นี้ก็คือ Discover Weekly แล้ว Spotify รู้ใจเราได้อย่างไร?

Spotify นั้นรู้รสนิยมในการฟังเพลงของลูกค้ามากกว่าบริการอื่นใด แต่ระบบเบื้องหลังการทำงานนั้น ทำอย่างไรล่ะ ที่จะคอยหาเพลงที่เราจะชอบมัน ในทุก ๆ สัปดาห์ ผ่าน Features Discover Weekly  ซึ่งเพลงเหล่านั้น เราแทบจะไม่เคยได้ฟังมาก่อน แต่มาโดนกับรสนิยมเราได้ ซึ่ง Spotify ที่มีการเติบโตอย่างรวดเร็วนั้น ปัจจัยสำคัญอย่างนึงก็คือ ระบบ Playlist ที่แนะนำให้เรานี่แหละ ที่ทำให้ใครหลาย  ๆ คนหลังรัก Spotify  ซึ่งเป็นสิ่งที่ Spotify นั้น Focus มาตั้งแต่แรกเริ่มหลังจากปล่อยบริการนี้ออกมา เพราะ Spotify นั้นไม่ใช่บริการแรก ๆ ที่ทำบริการด้าน online music stream แต่ผู้ใช้หลายล้านคนนั้นหลงรักระบบของ Spotify ซึ่ง Spotify นั้นลงทุนไปเป็นจำนวนมากกับการสร้าง algorithm ในการสร้าง Playlist เหล่านี้

A brief history of online music curation

history of online music

history of online music

จุดเริ่มต้นคือในปี 2000 บริการ Songza ได้เริ่มบริการ music online โดยใช้ระบบ manual มีคนช่วยสร้างระบบ Playlist ให้กับ Users โดยใช้ กูรูทางด้าน music มาช่วยจัด Playlist จากเพลงที่คิดว่าน่าสนใจให้ ซึ่งลูกค้าก็แค่คอยเลือก Playlist เหล่านี้มาฟัง ซึ่บริการแบบนี้ก็ work ในช่วงแรก เพราะเราได้ฟังเพลงใหม่ ๆ ผ่านระบบ Playlist จากผู้เชี่ยวชาญคอยเลือกเพลงให้ แต่ไม่สามารถให้ประสบการณ์ในรสนิยมของลูกค้าแต่ละคนได้ ทุกคนก็ต้องมาฟัง Playlist คล้าย ๆ กัน ซึ่งอาจจะไม่ถูกจริตสำหรับบางคน แต่คนส่วนใหญ่ก็ชอบกัน

ซึ่งหลังจากบริการของ Songza ได้รับความนิยมนั้น Pandora ก็ได้สร้างบริการในลักษณะคล้าย ๆ กัน แต่มีการปรับแต่งบางอย่าง เริ่มมีการเพิ่งระบบ Tag ให้กับเพลง ซึ่งผู้ใช้บริการสามารถที่จะ สร้าง tag เพื่อกำหนดคุณสมบัติของแต่ละเพลงได้ เพื่อให้สามารถ filter เพลงได้ง่ายยิ่งขึ้น และสามารถที่จะสร้าง playlist จากเพลงที่แนวทางคล้าย ๆ กันได้ง่ายขึ้น

ในขณะเดียวกันนั้น กลุ่ม MIT Media Lab ได้เริ่มปล่อยบริการ The Echo Nest ซึ่งมีการปรับปรุงระบบให้เข้ากับรสนิยมส่วนบุคคลมากกว่า โดยเริ่มใช้รูปแบบของ computer algorithm ในการวิเคราะห์เสียง รวมถึง content ของเพลง ซึ่งสามารถทำให้ระบุรสนิยมของเพลง รวมถึงเริ่มมีระบบ personalized recommendation การสร้าง playlist ที่เริ่มเป็นแบบระบบอัติโนมัติจาก computer algorithm

และบริการที่อยู่มาจนถึงปัจจุบันอย่าง Last.fm ใช้การมีส่วนร่วมของ user ในระบบ ซึ่งเรียกว่า collaborative filtering ที่ช่วยในการระบุเพลงที่ user น่าจะชอบในขณะนั้นได้

ในขณะที่บริการทั้งหลายเหล่านี้นั้น เน้นในเรื่อง music recommendations แต่ Spotify ที่เปิดบริการหลัง แต่มาพร้อมด้วย engine พิเศษ ที่สามารถที่จะรับรู้รสนิยมการฟังเพลงของ user ได้แบบรายบุคคล และมีความแม่นยำในการจำแนกรสนิยมการฟังเพลงได้มากกว่าบริการอื่น ๆ ที่เปิดมาก่อนได้อย่างไร?

Spotify’s 3 Types of Recommendation Models

Spotify นั้นไม่ได้ใช้เพียงรูปแบบของ Recommendation models เพียงแบบเดียวเท่านั้น แต่เป็นการผสมผสาน หลาย  ๆ เทคนิคเข้าไปและประยุกต์ให้กลายเป็นระบบที่ทรงพลังและมีเอกลักษณ์ในรูปแบบของ Discovey Weekly ซึ่ง Spotify นั้นใช้ 3 models คือ

  1. Collaborative Filtering  ใช้รูปแบบคล้าย ๆ กับ Last.fm โดยการนำเอาพฤติกรรมการฟังของคุณ รวมถึงคนอื่นๆ ในระบบ มาทำการวิเคราะห์
  2. Natural Language Processing (NLP)  ซึ่ง model นี้จะเกี่ยวข้องกับการวิเคราะห์ด้านข้อความ หรือ content จากเพลงที่มีลักษณะเป็นข้อความ
  3. Audio ส่วน model นี้จะนำเอา file เพลงดิบ ๆ มาทำการวิเคราะห์ในส่วนของเสียง
spotify recommendation model

spotify recommendation model

Recommendation Model #1 : Collaborative Filtering

หลาย ๆ หากได้ยินคำว่า “Collaborative Filtering” นั้นอาจจะนึกถึง Netflix  ซึ่งเป็นหนึ่งในบริการแรก ๆ ที่ใช้ collaborative filtering ใสการสร้าง recommendation model โดยจะใช้รูปแบบการให้ดาว ตาม rating ของหนัง ซึ่งเป็นส่วนที่ใช้แนะนำให้กับผู้ใช้คนอื่น ๆ ในระบบ หลังจากความประสบความสำเร็จของ Netflix ในการใช้ collaborative filtering ซึ่งหลาย ๆ บริการก็จะใช้รูปแบบของการให้ดาวในการแนะนำให้กับ user อื่นในระบบ

แต่ Spotify นั้นไม่ได้มีระบบการให้ดาวแบบเดียวกับ Netflix เพื่อให้ user ให้คะแนนกับเพลง เหมือนกับที่ user ให้ดาวกับหนังของ netflix แต่ Spotify นั้นจะใช้รูปแบบของ implicit feedback โดยจะใช้การนับจำนวน stream ที่เรียกฟังเพลง รวมถึงการที่ user ได้ทำการ save เพลงเข้ามายัง playlist ของตน หรือมีการเข้าเยี่ยมชมในส่วนของ Artist page หลังจากได้ฟังเพลง ซึ่งแสดงให้เห็นถึงความสนใจต่อเพลงนั้น ๆ ของ user

How does it work?

Collaborative Filtering ทำงานอย่างไร

Collaborative Filtering ทำงานอย่างไร

จากรูปตัวอย่างแสดงให้เห็นรูปแบบการทำงานอย่างง่าย จากรูปชายทางซ้ายนันชอบเพลงใน tracks P,Q,R และ S  ส่วนชายที่อยู่ด้านขวานั้นชอบ tracks Q,R,S และ T

ซึ่งจากการวิเคราะห์อย่างง่าย ๆ นั้น ก็ต้องแนะนำชายที่อยู่ด้านขวาให้ลองฟังใน track P และ ชายคนที่อยู่ด้านซ้ายให้ลองฟังใน track T เพราะรสนิยมของทั้งสองนั้นใกล้เคียงกัน ซึ่งตรงนี้ดูเหมือนเป็นวิธีง่าย  ๆ แต่ Spotify นั้นต้องคำนวนจากจำนวน user เป็นร้อยล้านคน ซึ่งมาจากร้อยล้านรสนิยมการฟังเพลงของ user แล้ว spotify ทำอย่างไร?

…matrix math , done with Python Libraries!

matrix math

matrix math

จากรูปเป็นตัวอย่างแบบย่อ ๆ ในรูปแบบ matrix  ซึ่ง matrix จริง ๆ นั้นจำนวนแถวของ matrix นั้นจะเท่ากับจำนวน user ในระบบซึ่งจะมีกว่าร้อยล้านแถว ซึ่งแต่ละแถวนั้นให้แทน user แต่ละคนในระบบ ส่วนของ column นั้นจะเป็นจำนวนเพลงทั้งหมดในระบบ ซึ่งหากเป็น matrix ในระบบจริง ๆ ก็จะมีกว่า 30 ล้านเพลง ก็จะมี 30 ล้าน column ตามฐานข้อมูลของ spotify

ซึ่ง Python Library นั้นจะ run matrix ทั้งหมดโดยใช้สมการคือ

สมการ python

สมการ python

ซึ่งเมื่อ run จบนั้น จะได้รูปแบบของ Vectors สองชนิดคือ X จะแทน user vector ซึ่งจะหมายถึง รสนิยมการฟังเพลงของ single นั้น ๆ ของ user  ส่วน Y นั้นจะเป็น song vector จะเป็นตัวแทนของ profile ของเพลงนั้น ๆ

The User/Song matrix produces two types of vectors: User vectors and Song vectors

ซึ่งเราจะได้ User Vectors จำนวน 140 ล้านตามจำนวน user ทั้งหมดในระบบ  และ Song Vectors จำนวน 30 ล้าน ตามจำนวนเพลงทั้งหมดในระบบ  ซึ่งเหล่า Vector ข้อมูลเหล่านี้นั้น เป็นประโยชน์อย่างยิ่งในการเปรียบเทียบรสนิยมการฟังเพลงของ user แต่ละคน ซึ่งการที่จะหาว่า user  คนใด  ๆ มีรสนิยมการฟังเพลงคล้ายกับใครนั้น จะต้องใช้ collaborative filtering ในการเปรียบเทียบ vector ของ user นั้น ๆ กับ vector ของคนอื่น ๆ ในระบบทั้งหมด ซึ่งเมื่อใช้ computer algorithm ทำการเปรียบเทียบทั้งหมด เราก็จะได้เห็นว่าใครมีรสนิยมการฟังเพลงคล้ายกัน  เช่นเดียวกับในส่วนของ Song Vector เราก็ต้องนำ song vector ของเพลงนั้น ๆ ไปเปรียบเทียบหาจาก song vector ของเพลงทั้งหมดในระบบ ก็จะได้เพลงที่มีสไตล์คล้าย ๆ กัน  ถึงแม้ว่าจากตัวอย่างที่ผ่านมานั้น collaborative filtering นั้นสามารถที่จะให้ผลลัพธ์ที่น่าสนใจ แต่ spotify ก็รู้ว่าเค้าต้องทำอะไรได้ดีกว่าการใช้ engine รูปแบบเดียวกับบริการอื่น ๆ เพียงอย่างเดียว

Recommendation Model #2 : Natural Language Processing (NLP)

สำหรับส่วนที่ 2 ใน Recommendation Model ของ Spotify นั้นใช้ เทคนิค ของ Natural Language Processing (NLP)  สำหรับ source ของข้อมูลที่จะนำมา analyse ผ่านเทคนิค NLP นั้นจะใช้ ข้อมูลของ track metadata ของเพลง ,  news articles, blogs รวมถึงข้อมูลที่เป็น text อื่น ๆ ในระบบ internet

Natural Language Processing (NLP)

Natural Language Processing (NLP)

Natural Language Processing นั้น จะเป็นการใช้ความสามารถของ computer ในการวิเคราะห์ข้อความ text โดยส่วนใหญ่นั้นจะใช้วิธีผ่าน sentiment analysis APIs ซึ่งผมได้เคยเขียน blog การวิเคราะห์ Market Trend ของหุ้น โดยใช้ปัจจัยพื้นฐานด้านข่าว  ซึ่งจะใช้เทคนิคคล้าย ๆ กันคือ sentiment analysis เพื่อไปวิเคราะห์ market trend ของหุ้น

โดยรูปแบบการทำงานเบื้องหลังของ NLP ที่ spotify ใช้นั้น spotify จะสร้าง crawls คล้าย ๆ กับที่ google ใช้ในการเก็บ index ข้อมูล data เพื่อมา index ให้ user ทำการค้นหา แต่ spotify นั้นจะ focus ไปที่ blogs หรือ งานเขียน ที่เกี่ยวข้องกับวงการเพลง  และนำมาวิเคราะห์ว่าผู้คน ใน internet กำลังพูดถึง ศิลปิน หรือ เพลงนั้นๆ อย่างไร แต่วิธีการในการ process ข้อมูลเหล่านี้นั้นยังเป็นความลับที่ spotify ยังไม่มีการเผยแพร่ออกมาว่าจัดการกับข้อมูลเหล่านี้อย่างไร  แต่จะขอยกตัวอย่างจาก Echo Nest ที่ใช้วิธีการคล้าย ๆ กัน ซึ่ง Echo Nest นั้้นนำข้อมูลมา process โดยเรียกว่า “cultural vectors” หรือ “top terms”  โดยแต่ละ ศิลปิน รวมถึง แต่ละเพลงนั้น จะมีการเปลี่ยนแปลงของ top-terms อยู่ทุกวันผ่านการ analysis ข้อมูลจากระบบ internet  ซึ่งแต่ละ term นั้นจะมีค่า weight อยู่ ขึ้นอยู่กับความสำคัญของคุณลักษณะของแต่ละ term

“Cultural vectors” , or “top terms” , as used by the Echo Nest.

หลังจากนั้น รูปแบบก็จะคล้าย ๆ กับ collaborative filtering ซึ่ง NLP Model จะใช้ terms และ weights ในการสร้าง vector ของเพลง ซึ่งสามารถที่จะนำมาเปรียบเทียบว่า เพลงใด มีสไตล์ คล้าย ๆ กับเพลงใด ซึ่งจะส่งผลต่อการแนะนำให้กับ user ที่ใช้งานได้ตรงรสนิยมของ user คนนั้น ๆ ได้

Recommendation Model #3: Raw Audio Models

Raw Audio Models

Raw Audio Models

หลาย ๆ ท่านอาจจะคิดว่า แค่ 2 model ข้างต้นนั้นก็สามารถวิเคราะห์ข้อมูล ของเพลงและ user ได้อย่างมีประสิทธิภาพแล้ว แต่ Spotify ได้เพิ่มในส่วนของ Raw Audio Model เพื่อเพิ่มความแม่นยำในส่วนการแนะนำเพลงให้มีความแม่นยำมากที่สุด และ Raw Audio Model นั้นยังสามารถที่จะเปิดประสบการณ์ฟังเพลงใหม่ ๆ ให้กับ user ได้อีกด้วย

ลองนึกถึงตัวอย่างว่า มีเพลง ที่เราคิดว่าเพราะมาก ๆ อยู่ใน spotify แต่อาจจะเพราะเป็นจากศิลปินหน้าใหม่ที่ยังไม่ดัง ซึ่งอาจจะมีคนฟังเพลงนี้แค่ 50 คน ทำให้การใช้ collaboratively filter นั้นอาจจะยังไม่ได้ผลนักเพราะยังมีคนน้อยคนที่ฟังเพลงดังกล่าว รวมถึง ยังไม่มีใครพูดถึงเพลงดังกล่าวใน internet ทำให้ NLP ไม่สามารถที่จะไปวิเคราะห์ได้  แต่ Raw Audio Models นั้นมาปิดจุดอ่อนในส่วนนี้ คือไม่ว่าจะเป็นเพลงใหม่ หรือ เพลงฮิต นั้น ก็สามารถที่จะทำให้เพลงดังกล่าว ขั้นไปอยู่ใน Discovery Weekly ได้เหมือนกัน

ซึ่งเทคนิคของ Raw Audio Model นั้นเป็นสิ่งไม่ง่ายเลย แต่สามารถที่จะทำได้ด้วย convolutional neural networks

convolutional neural networks นั้นเป็นเทคโนโลยีเดียวกันกับที่เราใช้ใน facial recognition ใน case ของ spotify นั้น ได้ทำการดัดแปลงจากการใช้ pixel data ใน facial recognition มาใช้ audio data แทน ซึ่ง ตัวอย่างของ Architecture ที่ใช้ Neural network มีดังนี้

convolutional neural networks

convolutional neural networks

ซึ่งส่วนประกอบของ neural network นั้นจะประกอบด้วย 4 convolutional layers ซึ่งจากรูปคือ บาร์ที่มีขนาดกว้างที่อยู่ด้านซ้าย  และ 3 dense layers ซึ่งจากรูปคือ บาร์ที่มีขนาดแคบที่อยู่ทางด้านขวา  ซึ่ง input ที่เข้ามานั้นจะนำเอา audio data มาแปลงเป็น time-frequency เพื่อแทนส่วนของ audio frames ซึ่งต่อมาจะแปลงไปสู่รูปแบบของ spectrogram

Audio frames นั้นจะเข้าสู่ convolutional layers และหลังจากแท่ง convolutional layers แท่งสุดท้ายนั้นจะเป็นส่วนของ “global temporal pooling” layer  ซึ่งเป็นเทคนิคที่ใช้ Neural Network ในการเรียนรู้คุณลักษณะของเพลง โดย จะส่งเป็นชุด audio frame เพื่อให้ Neural Network ทำการ Learning

หลังจาก process เสร็จนั้น neural network นั้นจะสามารถที่จะเข้าใจคุณลักษณะต่าง ๆ ของเพลง ตัวอย่างเช่น time signature , key , mode , tempo หรือ loudness ซึ่ง output รูปตัวอย่างข้างล่างนั้นจะเป็นการนำเพลง “Around the world” ของศิลปิน Daft Punk มาผ่าน process จากรูปข้างบน และจะได้ output ดังรูป

ใช้เทคโนโลยี Neural Network

ใช้เทคโนโลยี Neural Network

ซึ่งหลังจากเข้าใจคุณลักษณะหลัก ๆ ของเพลงนั้น Spotify ก็สามารถที่จะนำข้อมูลต่าง ๆ เหล่านี้ไปวิเคราะห์เพื่อเปรียบเทียบเพลง ซึ่งสามารถทำให้ user ได้รับเพลงที่มีรสนิยมคล้าย ๆ กันโดยนำข้อมูลจากประวัติการฟังเพลงของ user นั้น ๆ มาเปรียบเทียบกับเพลงใหม่ ๆ ที่ได้ทำการวิเคราะห์ผ่าน Raw Audio Model

ซึ่งการประกอบกับของทั้ง 3 models นั้น ได้สร้างความแตกต่างและประสิทธิภาพให้กับ Features Discover Weekly Playlist ของ Spotify ที่ทำให้แตกต่างจากบริการฟังเพลง online อื่น ๆ และทำให้ user ต่างหลงรัก Spotify

Spotify Recommendation Model

Spotify Recommendation Model

ซึ่งทุก ๆ model นั้นมีการเชื่อมต่อกับ service ของ Spotify ซึ่งเป็น ecosystem ที่มีขนาดใหญ่มากตามจำนวน user และ เพลง ที่มีในระบบ ซึ่งต้องประกอบไปด้วยฝั่ง infrasturcture หลังบ้านที่แข็งแกร่งเพื่อรองรับ data จำนวนมหาศาล และสามารถจะวิเคราะห์ข้อมูลจำนวนมหาศาลเหล่านี้ได้อย่างรวดเร็ว ทำให้ user ที่ใช้งานรู้สึกสะดวกที่สุดและสามารทำงานได้อย่างมีประสิทธิภาพมากที่สุด ซึ่งเราจะเห็นได้ว่าจากตัวอย่างของ Spotify นั้นแม้จะเป็นบริการที่เปิดทีหลัง แต่ก็สามารถต่อกรกับยักษ์ใหญ่ได้อย่างไม่เป็นรอง เพราะระบบหลังบ้านที่มีความแข็งแกร่ง และการใช้ Machine Learning หรือ AI มาช่วยในการพัฒนาบริการนั้นก็ได้เพิ่มความแตกต่างให้กับบริการของ Spotify  รวมถึง Features ที่สามารถตอบโจทย์ให้กับ user ทำให้ user นั้นต่างหลงรักและยอมเปลี่ยนมาใช้ Spotify กว่าร้อยล้านคน และกำลังเติบโตขึ้นเรื่อย ๆ ในขณะนี้

References : 

ติดตาม ด.ดล Blog เพิ่มเติมได้ที่
Fanpage :facebook.com/tharadhol.blog
Blockdit :blockdit.com/tharadhol.blog
Twitter :twitter.com/tharadhol
Instragram :instragram.com/tharadhol

Comments