詞向量在商業的應用-系列1-人類邏輯能量化?(附Pytorch模型與程式碼)

行銷資料科學
Jun 24, 2018 · 16 min read

到底啥是詞向量? 那跟人類邏輯啥關係?

詞向量(Word Vector)是什麼?

我們首先以簡單的例子來闡述詞向量概念,讓讀者快速進入詞向量的世界!

詞向量概念與釋例:

從詞向量中抽取人類邏輯性與相似字詞,如何辦到?

一般進行詞向量建模時,會將每個字詞進行切割,變成一個個的字詞(Word),然後字詞在類神經模型中組件成句子,自動學習出句子之間的邏輯性與字詞相關性。

Image for post
Image for post
每一字詞皆有他所代表的「詞向量」
Image for post
Image for post
讓我們來點數學解釋詞向量如何運作吧~

所以... 詞向量具體是怎麼運作的?

接下來,本篇文章將以較數學性的方式來解釋詞向量中常使用的Skip-Gram模型是如何運作的。

Image for post
Image for post
Skip-Gram會統計每個字詞與上下文的字詞機率,找到每一個字最批配的邏輯性字詞

那… 以類神經模型如何找尋?

我們將詞向量模型最基礎的skip-Gram模型中Naive Softmax到較為進階的Negative sampling方法,帶大家一覽詞向量模型的奧秘。

Naive Softmax

我們先來以Naive Softmax的方法,將每一個做skip-Gram字詞列為獨立的連乘式,形成一損失函數評估式(L),然後會再以W對L進行偏微分,協助類神經模型以梯度降階法(Gradient Descent)找出連乘式中機率連乘後最高的數值。

Image for post
Image for post
  1. 但如果是機率是0.1,則log(0.1) = -2.3
Image for post
Image for post
Image for post
Image for post

Negative Sampling

基本概念與Naive Softmax及其相似,首先我們在損失函數上一樣看到,主要還是最大化「中央字」與「上下文字詞」的詞向量內積的機率,並最小化「中央字」與「非上下文的隨機字詞」的詞向量內積的機率。

Image for post
Image for post
Image for post
Image for post
Sigmoid function,也是羅吉斯迴歸中使用的函數,本處利用Sigmoid function來計算詞向量內積的機率
Image for post
Image for post
Sigmoid function的input如果加負號,便是如此形式,本處加負號主要是要最小化「中央字」與「隨機字詞」的詞向量內積與機率
假設中央字與上下文個別的詞向量僅有1x1的維度,且機器學習前的中央字與上下文的詞向量內積是1.21,與隨機字詞的詞向量內積為1.08
中央字與上下文一起出現的機率 = 1/(1+np.exp(-1.21)) = 0.77
中央字與隨機字詞一起出現的機率 = 1/(1+np.exp(-1.08)) = 0.74
那損失函數的數值就是:
-np.log(1/(1+np.exp(-1.21)))-np.log(1-1/(1+np.exp(-1.08))) = 1.633
經訓練,假設中央字與相關上下文的詞向量內積是2.7,與隨機字詞的詞向量內積為0.4
中央字與上下文一起出現的機率 = 1/(1+np.exp(-1.21)) = 0.94
中央字與隨機字詞一起出現的機率 = 1/(1+np.exp(-0.4)) = 0.60
那損失函數的數值就是:
-np.log(1/(1+np.exp(-2.7)))-np.log(1-1/(1+np.exp(-0.4))) = 0.848

所以Negative Sampling真的有比較好嗎?

從Mikolov et al. 在2013年在論文中做的實驗中來看,我們看到使用Negative Sampling(NEG-5)與 2005年改良Naive Softmax訓練效率的Hierarchical Softmax(HS-Huffman)的結果而言,Negative Sampling訓練速度更有效率,且準確度、邏輯語意性達更好的效果(如下表)。

Image for post
Image for post
source: T. Mikolov, I. Sutskever, K. Chen, G. Corrado, and J. Dean. Distributed Representations of Words and Phrases and their Compositionality. Accepted to NIPS 2013.

如何實做詞向量的商業應用?

首先,讓我們先從實做開始!我們先開啟main.py,載入skip_model.py,接著將您自己想要訓練的資料整理成下圖格式。

  1. comment_popularity:該評論所帶來的頁面點擊次數。
Image for post
Image for post
資料輸入格式(本comment字詞經過處理,故無確切品牌與產品名稱)
Image for post
Image for post
Image for post
Image for post
中央字與上下文權重維度為4943 *300
Image for post
Image for post
Skip-Gram類神經模型權重一覽
Image for post
Image for post
訓練過程,建議使用GPU運作,否則CPU相對慢5–10倍的速度
Image for post
Image for post
損失函數落在0.28

呼~訓練完了!然後呢?

就到關鍵處啦!我們透過其他監督式機器學習模型找出會影響頁面點擊次數的關鍵字 — 「滋潤」與「出油」,便可使用word_similarity function,找出與其邏輯性相似的字詞!

Image for post
Image for post
每一個字詞都有他的詞向量
Image for post
Image for post
Image for post
Image for post
找出關鍵字的相關性邏輯字詞,以數學上來說,利用cosine similarity(範圍0到1)去尋找每個字詞之間最近的距離,數值越接近0,代表相關性邏輯越強

結果很酷,但還是沒回答到商業應用的層面阿?

這時候讀者可以先花個5分鐘想想,如果您是「行銷資料科學家」,千辛萬苦得到了這款面膜的關鍵字詞與上下文字詞的邏輯性之後,您會怎樣應用到商業上

  1. 行銷宣傳
    在行銷宣傳與訴求上,針對「出油」,很清楚的可看出業者們應該往「泛紅」、「隔天的效果」、「改善脫皮」概念出發,直接打中該品牌消費者的特徵,增加產品頁面的點擊次數。
  2. 找到對的寫手
    我們再看對這款產品的關鍵字「保養」。拿到一款面膜,最關鍵的就是如何使用,放到面膜產品,就是如何進行「保養」。在保養方面,我們看到,如「程序、晚上、白天」等關鍵字詞,皆是相關的邏輯性字詞,且透過機器學習判斷出來,對頁面點擊次數具有影響,於是我們就可以從該平台的寫手Pool中抓出適合撰寫這些文章的寫手,增加文章點擊次數。

這樣做…阿是真的有效果喔?

有沒有效果,測試一下就可以知道! 我們結合上述所提的選項2與3 -「找到對的寫手與行銷宣傳」,實際將本次機器學習挑選字詞的方法應用到某一期間的行銷宣傳上,也就是針對關鍵字直接找對應的寫手進行行銷文案宣傳,我們總共提出3種作法比較之:

  1. 方法二:「關鍵單詞挑選法」來挑選寫手,也就是根據我們使用的監督式學習的機器學習模型選出的單字進行寫手挑選,例如:我們上述利用機器學習挑選出「保養」是很重要的因素,那就依照這個單詞狀況,挑選寫手。
  2. 方法三:「隨機發試用品挑選法」來挑選寫手,這也是廠商根本在沒有data evidence based狀況下最常做的事情,簡單來說,就是看到誰,就發試用品,看誰來寫…

結果顯示:

使用法三相較於其他兩法來說,頁面點擊次數顯著要大於其他兩法。

Image for post
Image for post

看起來是有效果了! 那我最care的營收呢?

由於我們對該品牌頁面點擊次數轉換率不甚清楚… 但還是讓我們來假設一下數字吧!

方法一:np.exp(3.89) = 48.910886523731889
方法二:np.exp(3.34) = 28.219126705408609
方法三:np.exp(2.99) = 19.885682491564729
方法一:48.910886523731889 * 0.02 * 100 = 98組面膜
方法二:28.219126705408609 * 0.02 * 100 = 56組面膜
方法三:19.885682491564729 * 0.02 * 100 = 40組面膜
方法一:98組面膜 * 2190 = $214,620元新台幣
方法二:56組面膜 * 2190 = $122,640元新台幣
方法三:40組面膜 * 2190 = $87,600元新台幣
  1. 方法一(我們提出的方法),比起方法二,一週內還可以多賺$91,980
  2. 方法一(我們提出的方法),比起方法三,一週內還可以多賺$127,020
  3. 方法一比較起廠商直覺式的方法三(試用品隨機灑),簡單估算下來,光一個月就可以多賺上$508,080(這還不包含原先時間對頁面點擊次數的累積營收)。
  4. 方法一節省約23倍人工分析時間,也就是說,方法一完全可一週一次排程自動化(約2–3小時)進行機器學習,更加節省銷分析人員在分析評論與挑選寫手的時間成本(約花2–3天),達到精準行銷與機器學習輔助之真正效果。
  5. 如果將方法一對不同產品進行分析,有很大的機率可以得出與本面膜產品同樣的效果。

讀者可能又有幾個疑問:

  1. 在預測價格、預測銷售等精準行銷之應用上,有其他用途嗎?
  2. 我如果想要檢視競爭者與自家產品外部環境狀況,可以使用這種方法嗎?好處是?
  3. 剛剛文章說的會影響點擊次數的關鍵字如何透過機器學習找尋的?
  4. 可否作為監督式學習 - 類神經模型輸入變數(input)的特徵值(features)? 讓類神經模型能透過字詞邏輯性的關聯,對損失函數達更快收斂之效果?
  5. 亦或者讀者還想知道其他想知道的疑問?都可以留言提出喔。

作者:

鍾皓軒(臺灣行銷研究有限公司 共同創辦人)

報名表單

Marketingdatascience

行銷資料科學 — 數據驅動精準行銷。基礎概念、趨勢、方法和實戰。

行銷資料科學

Written by

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

Marketingdatascience

行銷資料科學 — 數據驅動精準行銷。基礎概念、趨勢、方法和實戰。

行銷資料科學

Written by

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

Marketingdatascience

行銷資料科學 — 數據驅動精準行銷。基礎概念、趨勢、方法和實戰。

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store