999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多頭自注意力機制的基數(shù)估計研究

2023-10-31 09:39:50陳珊珊
智能計算機與應(yīng)用 2023年10期
關(guān)鍵詞:機制特征方法

王 焱, 陳珊珊

(南京郵電大學(xué) 計算機學(xué)院, 南京 210023)

0 引 言

基數(shù)估計是數(shù)據(jù)庫查詢數(shù)據(jù)過程中的關(guān)鍵流程,數(shù)據(jù)庫的查詢優(yōu)化器根據(jù)基數(shù)估計算法的結(jié)果來選擇最終執(zhí)行計劃,所以提高基數(shù)估計的準(zhǔn)確性對查詢優(yōu)化十分重要。

傳統(tǒng)的基數(shù)估計方法,如采樣法和直方圖等,在數(shù)據(jù)量不大、數(shù)據(jù)分布較均勻的情況下能夠獲得相對準(zhǔn)確的結(jié)果。 然而現(xiàn)實中數(shù)據(jù)分布差異明顯,不同屬性之間往往存在一定的關(guān)聯(lián)性,數(shù)據(jù)規(guī)模也經(jīng)常難以預(yù)料,基于直方圖或采樣法的基數(shù)估計準(zhǔn)確性就會降低。 尤其是查詢中關(guān)聯(lián)到多張表,數(shù)據(jù)規(guī)模急劇增大時,計算結(jié)果的偏差會成倍增加,準(zhǔn)確性快速下降,最終導(dǎo)致優(yōu)化器選擇非最優(yōu)的執(zhí)行計劃[1]。 而Leis[2]等提出基于索引的IBJS(Index-Based Join Sampling) 方法,在一定程度上解決了數(shù)據(jù)量的問題,但比較依賴于表的索引結(jié)構(gòu),較差的索引結(jié)構(gòu)會導(dǎo)致基數(shù)估計結(jié)果也較差。

近年來,以神經(jīng)網(wǎng)絡(luò)為代表的機器學(xué)習(xí)技術(shù)迅速發(fā)展,也推動了數(shù)據(jù)庫相關(guān)技術(shù)的研究,尤其是在一些復(fù)雜場景,如Li[3]等針對參數(shù)調(diào)優(yōu)的問題提出了一種基于深度強化學(xué)習(xí)的自動化調(diào)優(yōu)系統(tǒng)。 為了提高基數(shù)估計的準(zhǔn)確性,本文采用神經(jīng)網(wǎng)絡(luò)中的多頭注意力機制對表中數(shù)據(jù)列之間存在的邏輯關(guān)系進行學(xué)習(xí),并針對SQL 語句的特征編碼算法進行研究,結(jié)合多種更細(xì)粒度的特征編碼算法,提升數(shù)據(jù)的編碼效果。 實驗結(jié)果表明該方法可以有效提高基數(shù)估計的準(zhǔn)確率,優(yōu)化數(shù)據(jù)庫的查詢,驗證了模型的有效性。

1 相關(guān)工作

最近一些研究者已經(jīng)開始將機器學(xué)習(xí)與基數(shù)估計 結(jié) 合, Kipf 等[4]提 出 了 MSCN ( Multi - Set Convolutional Network)框架,開創(chuàng)了將機器學(xué)習(xí)用于基數(shù)估計處理的先河;Karamyan 等[5]在MSCN 的基礎(chǔ)上進行擴展,提出了一種基于遞歸樹型的神經(jīng)網(wǎng)絡(luò)框架;LingChen 等[6]則提出了一種結(jié)合算子級深度神經(jīng)網(wǎng)絡(luò)的基數(shù)估計方法。

從對數(shù)據(jù)處理方式上看,目前利用機器學(xué)習(xí)來優(yōu)化基數(shù)估計的方法主要分為兩種:數(shù)據(jù)驅(qū)動(Data-Driven)和查詢驅(qū)動(Query-Driven)。 基于數(shù)據(jù)驅(qū)動的模型主要是利用深度自回歸模型(Deep Autoregressive)分析測試集中數(shù)據(jù)列的分布來計算估計值,主要缺點是其假設(shè)數(shù)據(jù)每一列都和前面列存在相關(guān)性,而現(xiàn)實中數(shù)據(jù)一些列有關(guān),一些列之間無關(guān),所以數(shù)據(jù)驅(qū)動模型在數(shù)據(jù)分布偏差較大時會出現(xiàn)明顯誤差[7]。 查詢驅(qū)動則主要依賴于對于查詢語句的分析和學(xué)習(xí),使用特征化方法將查詢語句轉(zhuǎn)化為特征向量。 現(xiàn)有基于查詢驅(qū)動的方法基本都采用單熱編碼(One-Hot Encoding)、二進制編碼(Binary Encoding)等特征化的編碼方法。 本文采用基于查詢驅(qū)動的方式進行研究。

在結(jié)合機器學(xué)習(xí)應(yīng)用和基數(shù)估計的過程中,Karamyan 等[5]采 用 的 RNN ( Recurrent Neural Network)模型,嚴(yán)重依賴數(shù)據(jù)的序列順序,在查詢語句含有多表連接的時候速度較慢;而Sun J 等[8]采用CNN (Convolutional Neural Network)模型,針對復(fù)雜查詢時需要構(gòu)建較多的卷積核來進行特征提取,參數(shù)較多,模型復(fù)雜。 針對上述問題,本文創(chuàng)新性地采用多頭自注意力機制來對基數(shù)估計進行優(yōu)化。 注意力機制的優(yōu)點主要是不依賴于數(shù)據(jù)的序列順序,更擅長捕捉數(shù)據(jù)或特征內(nèi)部的相關(guān)性,能夠充分利用和靈活捕捉數(shù)據(jù)列之間存在的邏輯關(guān)系,提高基數(shù)估計的準(zhǔn)確性,減小估計誤差。 注意力機制(Attention Mechanism)最早由Mnih 等[9]提出,用于計算機視覺,后來慢慢擴展到其他諸多領(lǐng)域的研究,比如語音識別、視頻解析等。

2 模型架構(gòu)和技術(shù)要點

數(shù)據(jù)庫的查詢過程中,查詢優(yōu)化部分會根據(jù)基數(shù)估計的結(jié)果來選擇最終執(zhí)行計劃。 而基于多頭自注意力機制的機器學(xué)習(xí)模型能夠根據(jù)樣本數(shù)據(jù)進行訓(xùn)練和學(xué)習(xí),找到不同列之間的內(nèi)在聯(lián)系,提高基數(shù)估計的準(zhǔn)確性,從而提高查詢效率。

現(xiàn)有基于機器學(xué)習(xí)的基數(shù)估計模型框架如圖1所示。

圖1 基于機器學(xué)習(xí)的基數(shù)估計模型框架Fig.1 Machine learning based cardinality estimation model framework

本文主要在現(xiàn)有的模型框架基礎(chǔ)上,對編碼和模型部分進行優(yōu)化。 為了更好地獲取數(shù)據(jù)列之間的關(guān)系,本文采用了多種編碼方式,從而在編碼環(huán)節(jié)提高對數(shù)據(jù)關(guān)系的提取;不同于其他大多模型采用的CNN 和RNN 神經(jīng)網(wǎng)絡(luò)模型,本文使用多頭注意力機制作為模型主體。

2.1 查詢特征表達(dá)(Query Featurization)

查詢特征表達(dá)主要是將一條文字形式的查詢語句通過編碼轉(zhuǎn)為查詢向量,以作為后續(xù)訓(xùn)練模型的輸入,所以特征表達(dá)的編碼方式十分關(guān)鍵。 與通常的單熱編碼、二進制編碼不同,為了提高特征表達(dá)編碼后得到的信息量,能夠更細(xì)粒度捕獲列之間的相關(guān)性,針對不同SQL 不同部分采用了不同的編碼方法。

一條典型的SQL 查詢語句可以分為4 個部分:查詢涉及到的表、WHERE 子句中的列、WHERE 子句中的值、JOIN 連接關(guān)系。 例如語句SELECT *FROM orders JOIN users ON orders.user_id =user.id WHERE order.create_time >=“2022-01-01”AND user.age >=25,組成部分可以表示為:表-orders,列-order.create_time 和user.age,值-“2022-01-01”和25,連接關(guān)系-orders.user_id =user.id。

2.1.1 表編碼(Tables Encoding)

因為可以把數(shù)據(jù)庫中的所有表看做一個無向圖(Undirected-graph)G,其中頂點是單個表,每邊連接兩個可以JOIN 的表,所以針對表編碼采用了圖嵌入的編碼方法。

2.1.2 列編碼(Columns Encoding)

對于數(shù)據(jù)表中的不同列,本文采用隨即相關(guān)系數(shù)(Randomized Dependence Coefficient,RDC) 計算出數(shù)據(jù)列之間的相關(guān)性,并設(shè)置關(guān)系閾值。 經(jīng)過驗證,將相關(guān)系數(shù)的閾值取值為0.5,當(dāng)RDC >0.5時,認(rèn)為兩列相關(guān),否則認(rèn)為兩列無關(guān);基于每兩列之間的RDC值,本文針對每個表都構(gòu)建出一個有向無環(huán)圖(Directed Acyclic Graph, DAG);最后,利用node2vec 算法進行編碼。

2.1.3 值編碼(Value Encoding)

值編碼主要是對于WHERE 子句中出現(xiàn)的值進行編碼。 先對WHERE 子句中所有的值篩選并進行格式規(guī)范化處理,轉(zhuǎn)換為范圍查詢,即a≤V(c)≤b的形式,其中V(c) 表示表V中的任意字段c,[a,b]是c的取值范圍。 具體過程為等值查詢V(c)=x表示為x≤V(c)≤x;對于單邊范圍查詢,假設(shè)字段的范圍大小是[0,1 024],則V(c)>x可以表示為x <V(c) ≤1 024;最終對于一條含有m個字段查詢語句的值編碼,可以用向量<ac1,bc1,ac2,bc2, … ,acm,bcm >表示。

2.1.4 連接編碼(Join Encoding)

連接編碼采用Joins2Vec 算法。 該算法分為3步:

(1)獲取查詢表的所有連接圖;

(2)獲得每個連接圖的上下文關(guān)系;

(3)對連接圖進行編碼和優(yōu)化。

假設(shè)分別有表T1、T2 和T3,其中T1 和T3 均與T2 存在連接關(guān)系,則獲取表T3 的JOIN 編碼過程如圖2 所示。

圖2 JOIN 編碼過程示例Fig.2 Join coding process example

本文模型特征表達(dá)原理示例如圖3 所示。

圖3 模型特征表達(dá)原理示例Fig.3 Example of model feature expression principle

2.2 多頭自注意力機制

由于自注意力機制在對特征加權(quán)處理等多方面優(yōu)勢,逐漸成為深度學(xué)習(xí)領(lǐng)域的熱門方向[10]。 而多頭自注意力機制是針對需要獲取多個維度特征等場景需求對注意力機制的一種優(yōu)化[11]。 多頭自注意力機制利用多個頭部采用相同的計算方式,給予不同的參數(shù),從而從多個子空間進行特征表達(dá),能夠捕捉到更加豐富的特征信息,其基本原理是縮放點注意力機制如圖4 所示,主要公式(1):

圖4 縮放點積注意力機制Fig.4 Scaled dot-product attention mechanism

其中, 輸入?yún)?shù)Q(Query)、K(Key)、V(Value)均為矩陣參數(shù),分別代表查詢矩陣、鍵矩陣和值矩陣;代表調(diào)節(jié)因子;k是矩陣K的維度;W0為轉(zhuǎn)換矩陣。

在注意力機制中Q、K、V均由同一個輸入,即由數(shù)據(jù)編碼最終生成的特征向量,經(jīng)過線性變換得到。 這樣每一列都會和查詢中涉及到的其他列進行注意力計算,從而提取學(xué)習(xí)列與列之間的依賴關(guān)系。 在對QKT點乘操作后,為避免維度爆炸導(dǎo)致梯度消失,增加因子進行調(diào)節(jié)。 多頭注意力機制會賦予多個頭部不同的參數(shù)來進行多次的線性映射,最后拼接所有子空間的注意力值。

本文考慮到某一列可能同時和其他多個數(shù)據(jù)列之間存在關(guān)系,所以選擇多頭自注意力機制提高對于不同字段關(guān)系的特征提取效果,其原理如圖5所示。

圖5 多頭自注意力機制Fig.5 Multi-head self-attention mechanism

3 實 驗

本文實驗步驟主要分為3 步:

(1)根據(jù)IMDb 數(shù)據(jù)集生成隨機樣本數(shù)據(jù);

(2)對樣本數(shù)據(jù)進行查詢特征編碼;

(3)將第二步得到的查詢向量表達(dá)和實際基數(shù)作為機器學(xué)習(xí)模型的輸入,然后進行模型訓(xùn)練,最終得到結(jié)果。

3.1 實驗環(huán)境

實驗配置見表1。

表1 實驗配置Tab.1 Experimental configuration

3.2 數(shù)據(jù)集和訓(xùn)練集生成

IMDb 是一個收集全球影視數(shù)據(jù)的數(shù)據(jù)集,主要包括名稱、演員、評論、票房、評分等信息,被廣泛應(yīng)用于科學(xué)研究。

為了防止多層JOIN 產(chǎn)生的空間爆炸,樣本數(shù)據(jù)被限制最多包含2 層JOIN 關(guān)系。 基于IMDb 數(shù)據(jù)集,從表編碼中抽取至少含有一個連接表的表t,以t為根節(jié)點進行廣度優(yōu)先搜索找到所有可以連接的表Dt,從Dt中選擇一個表t′與t進行連接,整個過程重復(fù)[0,2]次;從每個表中抽取相應(yīng)的列,根據(jù)列的類型和表中數(shù)據(jù)的范圍大小選擇值,隨機組合謂詞(=、<或>)生成WHERE 子句,這樣就得到了一條完整的樣本語句;最后,實際運行語句獲得真實的查詢基數(shù),同時排除結(jié)果為空的樣本,反復(fù)執(zhí)行上述流程,即可獲得實驗所需的數(shù)據(jù)集,總計60 000 條,其中訓(xùn)練集40 000條,測試集10 000 條,驗證集10 000 條。

3.3 數(shù)據(jù)預(yù)處理

為了簡化并對輸入?yún)?shù)統(tǒng)一處理,本文對實際獲得的查詢基數(shù)進行最大-最小縮放處理。 假設(shè)一個查詢基數(shù)的集合為S ={card1,card2,…,cardn},其中 最 小 值 和 最 大 值 分 別 為card(min) 和card(max),則S中的每個數(shù)均可以用式(2) 代替。

3.4 實驗結(jié)果分析

為驗證方法的有效性,本文實驗選擇了兩種流行的 關(guān) 系 型 數(shù) 據(jù) 庫PostgresSQL (v13)、 MySQL(v5.7),和一種新型的基數(shù)估計方法(IBJS)、一種基于機器學(xué)習(xí)的基數(shù)估計方法(MSCN)作對比。采用式(3) 中的Qerror和式(4) 中的Loss來對方法的準(zhǔn)確性進行描述,Qerror用于衡量測試結(jié)果與真實基數(shù)的偏差,Loss為模型的損失函數(shù)。 實驗結(jié)果見表2。

表2 與其它4 種方法的結(jié)果對比Tab.2 Comparison with the other four methods

由表2 可知,IBJS 方法在Qerror中值表現(xiàn)最好,但是過于依賴索引結(jié)構(gòu)使得如果表中沒有合理的索引結(jié)構(gòu),IBJS 的性能就會變得較差。 本文方法在第95 和99 個百分位上優(yōu)于其他方法。 從平均值上看,方法的魯棒性要優(yōu)于IBJS 和MSCN。

基于機器學(xué)習(xí)的本文方法(SELF)和MSCN 方法在不同訓(xùn)練周期后的損失收斂對比如圖6 所示。可以看出利用機器學(xué)習(xí)的基數(shù)估計方法在經(jīng)過多次訓(xùn)練周期之后,其方法的損失迅速下降,準(zhǔn)確度迅速提高;基于多頭自注意力機制的本文方法在初期時效果不如MSCN 方法,但是經(jīng)過20 次左右的訓(xùn)練周期之后,在準(zhǔn)確性上略優(yōu)于MSCN,并且在75 次訓(xùn)練周期之后,這兩種基于機器學(xué)習(xí)的模型損失收斂趨于接近。

圖6 本文方法和MSCN 方法的損失收斂對比Fig.6 Comparison of the loss convergence between the proposed method and the MSCN method

4 結(jié)束語

本文針對傳統(tǒng)基數(shù)估計方法存在問題,以及現(xiàn)有深度學(xué)習(xí)模型(RNN/CNN)的不足,提出了一種基于多頭自注意力機制,并結(jié)合圖嵌入等多種編碼進行特征提取的基數(shù)估計方法。 實驗結(jié)果表明該方法能夠有效提取和利用數(shù)據(jù)列之間的關(guān)系,提高基數(shù)估計結(jié)果的準(zhǔn)確性,且該方法不依賴與特定的數(shù)據(jù)庫平臺和存儲引擎,能夠和絕大多數(shù)的數(shù)據(jù)庫結(jié)合,是數(shù)據(jù)庫和機器學(xué)習(xí)領(lǐng)域相結(jié)合一次應(yīng)用創(chuàng)新和探索。

因為實驗是基于查詢驅(qū)動,受到查詢數(shù)據(jù)樣本和真實數(shù)據(jù)的差異影響較大,且實驗采用的是靜態(tài)數(shù)據(jù),所以對線上動態(tài)數(shù)據(jù)進行有效建模,解決模型實時訓(xùn)練慢等問題將是未來的研究重點。

猜你喜歡
機制特征方法
如何表達(dá)“特征”
不忠誠的四個特征
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
抓住特征巧觀察
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
破除舊機制要分步推進
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
注重機制的相互配合
打基礎(chǔ) 抓機制 顯成效
中國火炬(2014年4期)2014-07-24 14:22:19
主站蜘蛛池模板: 国产精品冒白浆免费视频| 日韩无码视频播放| 国产主播在线一区| 美女一级毛片无遮挡内谢| 蜜桃视频一区二区三区| 激情亚洲天堂| 亚洲日韩Av中文字幕无码| 玖玖精品视频在线观看| 国产网站免费| 亚洲日本在线免费观看| 香蕉伊思人视频| 中文国产成人精品久久一| 国产91小视频在线观看| 国产成人调教在线视频| 国产网站在线看| 国产精品久线在线观看| 亚国产欧美在线人成| 中文字幕在线日本| 欧美在线视频不卡第一页| 亚洲成人在线免费| 狠狠色噜噜狠狠狠狠色综合久| 日韩AV无码一区| 欧美亚洲一二三区| 亚洲高清无码久久久| 中国一级特黄视频| 欧洲一区二区三区无码| 高清大学生毛片一级| 国产在线观看精品| 欧美日韩一区二区三区在线视频| 97无码免费人妻超级碰碰碰| 国产午夜福利在线小视频| 米奇精品一区二区三区| 国产va在线| 91麻豆国产视频| 久久久久亚洲精品成人网| 国产精品专区第1页| 国产精品太粉嫩高中在线观看| 亚洲成a人片在线观看88| 亚洲αv毛片| 99成人在线观看| 久久 午夜福利 张柏芝| 亚洲人人视频| 国产一级α片| 免费在线观看av| 91精品国产91欠久久久久| 欧美特级AAAAAA视频免费观看| 视频二区亚洲精品| 亚洲中文无码av永久伊人| 国产日韩精品一区在线不卡| 亚洲中文无码av永久伊人| 亚洲成人动漫在线观看| AV网站中文| 国产成人久久综合777777麻豆| 91蜜芽尤物福利在线观看| 亚洲欧美日韩动漫| 天堂久久久久久中文字幕| 直接黄91麻豆网站| 欧美成人日韩| 亚洲视频四区| 性激烈欧美三级在线播放| 国产精品成人久久| 波多野结衣一区二区三区四区视频| 久久香蕉国产线看精品| 青青网在线国产| 国产精品一区二区在线播放| 国产精品嫩草影院av| 91久久国产热精品免费| 久久国产高潮流白浆免费观看| 国产在线观看91精品| 亚洲色成人www在线观看| 免费观看三级毛片| 国产欧美综合在线观看第七页 | 国产乱人伦偷精品视频AAA| 国产综合日韩另类一区二区| 72种姿势欧美久久久大黄蕉| 免费大黄网站在线观看| 国产人人干| 欧美特级AAAAAA视频免费观看| 91在线日韩在线播放| 国产精品开放后亚洲| 国产自产视频一区二区三区| 国产激情无码一区二区免费|