產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

上一節講了多標籤識別,圖像分割和data block,這之前講的都是圖像識別的方法,今天一節課把剩下的3種核心領域都講了:自然語言處理,表格數據處理,協同過濾,並且把神經網絡層與層之間的微觀活動也都詳細的描述了一遍,可謂是乾貨滿滿。

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

1.概覽

  • 首先是自然語言處理 NLP(Natural Language Processing ),主要講解通過遷移學習來實現IMDB評論的正負面情緒分辨;
  • 然後是根據個人信息的數據,預測哪些人可以獲得高薪;
  • 最後是協同過濾,在用戶喜歡了一些電影之後,可以預測某個他沒看過的電影是否會喜歡。

2.1核心流程

NLP - IMDB情緒分析大概需要3步,建立宏觀的語言模型,利用的是Wikipedia的數據訓練的模型;然後是根據IMDB的數據訓練定向的電影行業語言模型;最後是用訓練好的語言模型,訓練一個正負面情緒的分類器。

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

表格數據處理-薪資預測:主要是把類別變量轉化成連續變量,比如職業、婚姻情況等……會轉化成0,1,2這樣的數字;然後通過processor進行預處理,然後就可以訓練了。

協同過濾-推薦喜歡的電影:流程都一樣,只不過使用特殊類型的CollabDataBunch,以及特殊的collab_learner。

2.2核心機器學習概念

  • 參數 weights/parameters:用於計算的參數/權重矩陣
  • 激活 activations:計算後的結果,包含矩陣運算後的結果和激活函數運算後的結果
  • 激活函數 activation functions:一般是ReLU函數,只改變內容不改變size
產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

3.1實例詳細分析(NLP)

建立宏觀的語言模型,利用的是Wikipedia的數據訓練的模型(Wikitext 103);

  • "I'd like to eat a hot ___":
  • Obviously, "dog", right?
  • "It was a hot ___":
  • Probably "day"
  • 不需要label,因為每個next word都是一個label,這種方式叫自監督學習;

然後是根據IMDB的數據訓練定向的電影行業語言模型;

  • 準備數據:read from csv
  • token化:把一句話拆成一個個詞,不常用的詞會用xxunk,xxpad之類的統一代替,成為vocab詞彙表
  • 數字化:把一個個詞,轉化成一個個數字,像這樣array([ 43, 44, 40, 34, 171, 62, 6, 352, 3, 47])
  • 創建databunch
  • 創建learner:會用到dropout和regularization參數,之後會講
  • 訓練:得到的模型叫encoder
  • 調整

最後是用訓練好的語言模型,訓練一個正負面情緒的分類器;

  • text_classifier_learner
  • learn.load_encoder
  • freeze_to:解凍後幾層,而不是全部解凍,這樣可以訓練處更高的準確率

3.2實例詳細分析(tabular & collab)

流程上沒什麼新東西,就不展開來說了

3.3原理詳細分析(神經網絡訓練過程)

整個過程如下圖,先輸入一個[10,20,30]的vector,然後和一個3*N的矩陣相乘,得到一個結果,再把結果用激活函數處理成更劇本特徵量的結果,在進行矩陣乘積,直到最後的輸出。

輸出結果一般會使用sigmoid函數將其轉化成0,1區間內的額值,然後再和驗證組的數據進行比對,求loss,然後進行SGD,最後得到了一個93%準確度的擬合出的函數。

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

Jeremy還用excel演示了一下這個過程,真的是對大神佩服的五體投地,用excel訓練神經網絡,對就是這樣。

首先這裡是用於訓練的數據,14號用戶對27號電影的評價是3顆星,滿分5顆星。

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

然後隨機生成了2組矩陣,分別給用戶和電影,相當於weights

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

實驗的目標是要預測空白處的值,比如293號用戶對49號電影的評價是幾顆星?

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

下面開始初始運算,運用點積運算,將每個空格填上,其實就是2個矩陣的矩陣乘積的結果

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

這時候就可以看第一次運算的結果和實際結果的偏差,計算出的loss是2.81,接下來去調整weights然後降低loss,即SGD的過程,就可以得到一個好的模型了。

產品經理也能動手實踐的AI(五)- IMDB電影評論NLP,協同過濾

4.最後

這一期可能需要多看兩遍,反正我是2-3遍之後才能基本吃透裡面的概念,因為一開始真的沒那麼好懂。


分享到:


相關文章: