一維卷積神經網絡_序列特征的處理方法之二:基于卷積神經網絡方法

3c154fd915921698541e1c3c934f12cb.png

前言

上一篇文章介紹了基本的基于注意力機制方法對序列特征的處理,這篇主要介紹一下基本的基于卷積神經網絡方法對序列特征的處理,也就是TextCNN方法。序列特征的介紹,背景以及應用可以參考上一篇的詳細介紹,這里簡單回顧一下定義,用戶在使用APP或網站的時候,用戶會產生一些針對物品的行為,比如點擊感興趣的物品,收藏或購買物品等,而這些行為往往代表著用戶對這些物品是感興趣的,而將這些交互過的物品放在時間軸來看,就形成了用戶感興趣的物品序列,我們要處理的數據對象類似如圖 1 所示具有時序關系的序列特征,這里拿用戶感興趣的物品序列為例作為處理對象。

a2ac8b9d9ea119aa2a3ca41c1e6faf75.png
▲ 圖1. 用戶感興趣的物品序列

我們都知道用戶的歷史行為中可能存在著一些局部的連續行為,比如最近新型冠狀病毒疫情嚴重,可能用戶在過去幾天內連續買了口罩和酒精這種消毒和防護用品,那么在推薦中可以根據這種局部信息來推薦一些跟防護和消毒相關的商品。而淺層的卷積神經網絡由于其卷積感受野比較小,善于捕獲局部信息,因此可以利用淺層卷積神經網絡來對序列特征中的局部行為模式進行建模。鑒于針對句子序列建模的卷積神經網絡TextCNN也是針對embedding matrix做處理,因此選用TextCNN來對用戶感興趣的物品序列進行處理。

TextCNN原理

如圖 2 所示為TextCNN對句子序列建模并進行分類的示意圖:

6c0633fccb1379fc2c17c5cef5bb7b4e.png
▲ 圖 2. TextCNN示意圖[1]
  1. Embedding:每個單詞包括標點都被處理成5維的embedding vector,句長為7,因此處理之后為7×5的矩陣,為圖 2 的第一列所示。
  2. Convolution:經過 kernel_sizes分別為2,3,4的一維卷積層,每個kernel_size 都有2個卷積核,因此經過卷積之后輸出6個卷積結果,其中卷積核的示意圖為圖 2 第二列所示,卷積后的結果為圖 2 第三列所示。需要說明的一點是,從圖 2 可以看出卷積核的高分別有2,3和4,而卷積核的寬都是都和embedding vector的維度一致,這是因為每一個向量代表一個詞,在抽取特征的過程中,詞做為文本的最小粒度,應該保證其信息的完整性。
  3. MaxPooling:對卷積后得到的6個結果進行MaxPooling,然后進行concact,最終得到一個6維的特征向量,如圖 2 第四列所示。
  4. Fully Connect and Softmax:在6維的特征向量后加上一個神經元為2的全連接層,并進行softmax歸一化得到分類概率值,如圖 2 第五列所示。

應用在序列特征上

我們主要借鑒的是上面介紹的TextCNN提取特征的方法,也就是上面介紹的如何把embedding matrix變為最終的6維特征向量的方法。如圖 3 所示:

1bffecae5803acac7bb02fd467c33a81.png
▲ 圖 3. TextCNN的序列特征處理

一般在把TextCNN應用在序列特征的處理上時一維卷積的kernel_sizes設置為2或3,或者同時都用,每個kernel_sizes的卷積核個數一般都為1。一維卷積核大小分別設置為2和3時可以提取不同范圍大小的局部信息,保證了特征的多樣性。

除此之外,為了彌補有關全局信息提取的不足之處,還可以結合max/mean/sum pooling提取全局特征的方法,使得提取的特征既有全局信息又有局部信息[2],如圖 4 所示,其中全局pooling和textCNN共享序列特征的embedding matrix。

0fa0b55af9512dcf8f5b852c43eb39ea.png
▲ 圖 4. 結合TextCNN和全局pooling的序列特征處理

總結

卷積神經網絡因其滑動卷積的計算方式對局部特征的提取有天然的優勢,因此成為提取局部信息的首選建模方法。除此之外,還可以結合全局pooling的方法提取全局特征,彌補對全局特征提取的不足,提高特征的多樣性。與此同時,之前介紹過多值類別特征的處理方法,同樣可以采用textCNN進行局部特征的提取。

參考文獻

[1] Convolutional Neural Networks for Sentence Classification

[2] Convolutional Sequence Embedding Recommendation Model

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java socket 阻塞模式_(四) 如何將socket設置為非阻塞模式

1. windows平臺上無論利用socket()函數還是WSASocket()函數創建的socket都是阻塞模式的:SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, _In_ int t…

python中的pygame模塊使用方法_Pygame的基本使用

Pygame有很多模塊,每個模塊又有很多方法,在此不能夠逐一講解,所以,我們通過一個實例來學習Pygame,然后再分解代碼,講解代碼中的模塊。例:制作一個跳躍的小球游戲。創建一個游戲窗口,…

java mongodb 插入數據_mongoDB 插入數據 用java實現

import java.net.UnknownHostException;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBObject;import com.mongodb.Mongo;/** *用java 往mongoDB插入數據 * author wwd* */public class InsertData {publi…

python的特征提取實驗一_Spark 2.1.0 入門:特征抽取 — TF-IDF(Python版)

這一部分我們主要介紹和特征處理相關的算法,大體分為以下三類:特征抽取:從原始數據中抽取特征特征轉換:特征的維度、特征的轉化、特征的修改特征選取:從大規模特征集中選取一個子集特征提取TF-IDF (HashingTF and IDF)…

java addlast_Java中的LinkedList addLast()方法: java.util.LinkedList.addLast() - Break易站

Java中的java.util.LinkedList.addLast()方法用于在LinkedList的末尾插入特定元素。句法:void addLast(Object element)參數:此函數接受單個參數元素,如上面的語法所示。此參數指定的元素將附加在列表的末尾。返回值:此方法不返回…

macos降級_iOS12.3 beta2更新了什么 iOS12.3測試版2新特性與升降級方法

4月0日凌晨,蘋果發布了iOS12.3 beta2,作為iOS12.3第二個測試版,相比前一個版本,發布時間間隔近2周,這次依然是小版本更新,不過相對良心一些,主要是多了一些與國內用戶相關的東西。iOS12.3 beta …

java技術教程視頻_Spring開發視頻教程高級篇+源碼(400M)33講

Spring開發視頻教程高級篇源碼(400M)33講01_全面闡釋Spring及其各項功能.rar 02_搭建與測試Spring的開發環境.rar 03_編碼剖析Spring管理Bean的原理.rar 04_Spring的三種實例化Bean的方式.rar 05_配置Spring管理的bean的作用域.rar 06_Spring管理的Bean的生命周期.rar 07_編碼剖…

python的常見矩陣除法_Numpy矩陣除法返回所有零

我對下面的矩陣有個除法錯誤。我想用行和的101向量除以1010matrix。在[[5731, 3, 20, 8, 12, 54, 46, 8, 39, 2],[ 2, 6472, 47, 24, 7, 44, 7, 11, 116, 12],[ 55, 36, 5296, 104, 84, 27, 106, 53, 183, 14],[ 50, 49, 132, 5312, 2, 253, 36, 58, 142, 97],[ 16, 28, 36, 9,…

java rc2加密_急求java RC2加密算法

下面是一段C RC2加密 要求要用java 重寫 能互相加密解密QSBEncryptRc2::QSBEncryptRc2(){EncryKey "DingXin Communication Key 20080613";}//解密失敗時返回失敗描述AnsiString QSBEncryptRc2::GetDecryptErrMsg(){int ErrorCode;AnsiString ErrMsg;ErrorCode …

linux配置usb主從_雜集:淺談關于Mongodb數據庫主從復制

Linux下Mongodb數據庫主從復制配置Mongodb的三種集群搭建的方式:Master-Slaver:主從[目前被副本集取代]。Replica Set:副本集。Sharding:切片。Mongodb單實例缺點:適合簡易開發時使用,生產使用不行&#xf…

java讀取郵箱附件_使用javamail獲取附件內容

我正在使用javamail來自動化一些電子郵件處理。使用javamail獲取附件內容我設法連接到pop3服務器并獲取消息。其中一些包含附件。根據郵件標題,我可以“預測”我需要獲取的附件的文件名。但我無法得到它的內容:(我有一個函數public byte[] searchForContent(Part pa…

高斯擬合 vc++代碼_NMA2020W1 極大似然法模型擬合與bootstrap

常見的線性模型: 求解方式有兩種,一種是計算均方誤差(MSE),使得均方誤差最小。圖1找到梯度為零的點即可。而之前一直比較模糊的最大似然法也比較清楚了。一般線性模型,我們假定誤差項是符合高斯分布的&…

java文件快速掃描儀_Java掃描儀具有示例的NextNextShort()方法

掃描儀類hasNextShort()方法語法:public boolean hasNextShort();public boolean hasNextShort(int rad);hasNextShort()方法在java.util包中可用。hasNextShort()方法用于檢查此掃描程序在其輸入中是否具有下一個標記,是否可以將其作為隱式基數中的shor…

python sqlite并發處理_python sqlite大數據 處理

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術人對外發布原創技術內容的最大平臺&…

java sax xml文件解析_java解析xml文件-DOM/SAX

java解析xml文件的兩種方式1:DOM原理:把整個文檔加載到內存,轉化成dom樹,之后應用程序可以隨機的訪問dom樹的任何數據,靈活 快,但消耗內存一個簡單的xml使用java解析//builder工廠DocumentBuilderFactory f…

python現有兩個磁盤文件a和b_有兩個磁盤文件A和B,各存放一行字母,今要求把這兩個文件中的信息合并,輸出到一個新文件C中。...

首先,在.cpp所在的文件夾下建立A.txt與B.txt。向其中輸入字母。#include#include#includeint main(){FILE *a,*b,*c;char ch[100],outfile[10];int i0,n;void paixu(char a[100],int n);if((afopen("A.txt","r"))NULL){printf("Cant open …

python 遠程控制_用 Python 遠程控制你的電腦

用 Python 遠程控制你的電腦一、前言很多時候我們有這種需求,因為程序運行比較耗時,但是我們沒有足夠的時間等待。這個時候我們就可以用 Python 做一個遠程控制電腦的小工具,實現遠程控制電腦。當然,我們能做的操作十分有限&#…

攝像頭圖像分析目標物體大小位置_一文讀懂圖像定位及跟蹤技術

文 | 傳感器技術在科學技術日新月異的今天,人們對機器設備的智能性、自主性要求也越來越高,希望其完全替代人的角色,把人們從繁重、危險的工作任務中解脫出來,而能否像人一樣具有感知周圍環境的能力已成為設備實現智能化自主化的關…

java 相對路徑獲取_在java項目中通過相對路徑獲取資源的方式

1.可以通過 類名.class.getResource方法獲取或者getSystemResource2.可以通過當前線程 Thread.currentThread().getContextClassLoader().getResource獲取public class TestDemo {public static void main(String[] args) throws FileNotFoundException, IOException {Properti…

python循環嵌套的外循環必須完全包含內循環_Python:循環與嵌套循環實現規律數列...

很多人覺得編程很難,其實換個想法,這就是個用來解決問題的工具,我們為了解決實際問題而來學習和使用編程,這樣編程學習有了目的性,動力會更強。就像現在十分熱門的Python技術,就是人工智能領域所需求的&…