深度學習word embedding猜測性別初探


根據用戶的一些特征數據,如果能推測出用戶的性別借此提高產品的服務質量、廣告的精准性等都是極好的。

機器學習方法有很多,而且一般都可以達到不錯的效果,比如svm或神經網絡等。

本文使用的代碼參考——《TensorFlow練習18: 根據姓名判斷性別》

 但原文代碼已經無法直接跑起來,對於最新的TensorFlow需要酌情調整部分參數和函數名等,根據報錯調整即可比較容易,文末我也可以考慮放出自己的代碼,看心情吧 O(∩_∩)O~

下面我們開始一步步剖析原文中用到的word embedding方法:

  雖然word embedding通常是用於自然語言處理的,但其實用於分析用戶性別也不錯,通過訓練word embedding可將一句話分為積極、消極或高興、生氣等態度,所以把用戶特征當做一句話,分析出男女(相當於這句話的態度)自然是可行的。

  word embedding中用到了卷積神經網絡,關於什么是卷積神經網絡,可參考這篇知乎回答——《CNN(卷積神經網絡)是什么?有入門簡介或文章嗎?》,講解的深入淺出,非常適合入門理解。

  而對於《TensorFlow練習18》中的代碼只有一類特征就是姓名,先將名字中每個字向量化(前57行代碼)並用於embedding計算和卷積計算等,實際情況下可能不會知道姓名而且也會做數據脫敏,當然這都是后話,通常的特征數據類型有設備類型、安裝的軟件等,這些特征也要先經過向量化處理,比如設備A,軟件x、軟件y、軟件z,把其中每項當成原文中一個字來做向量化即可,轉換之后就變成了4個數值(下文簡稱向量值),向量值才是計算機可以理解的信息。

  接下來就到了最關鍵的embedding層了,至於這個embedding到底是怎么回事,可以參考這篇文章《TensorFlow學習筆記3:詞向量》,核心就是上述向量值太簡單了,沒有相關性,無法直接用於計算卷積神經網絡,所以在訓練模型過程中用embedding算法得出每個向量值在多個維度的語義和相關性數據。原文中embedding_size=128,所以就會為每個向量值計算128維的數據,當然對於實際的應用場景可能維度太多反倒會適得其反,可以調整embedding_size多訓練幾個模型來確定最適合的值,比如我最終確定embedding_size=16准確率最高。

  在embedding層之后就是卷積層和池化層了,還有dropout層,這些在《CNN(卷積神經網絡)是什么?有入門簡介或文章嗎?》也有詳細介紹,就不贅述了。原文中filter_sizes = [3,4,5]一共三項,所以一共三層卷積,而每層卷積的感受野分別為3、4、5,至於num_filters=128即每層卷積有128個卷積核(可以認為是128種濾鏡)。另外其中的filter_sizes也是可以根據應用場景適當調整的,num_filters也可以調下試試,不過我感覺調整num_filters對於我的場景幫助不大。

 未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM