www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 智能硬件 > 人工智能AI
[導(dǎo)讀] 我們熟知的SQL是一種數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句,它方便了開(kāi)發(fā)者在大型數(shù)據(jù)中執(zhí)行高效的操作。但本文從另一角度嵌套SQL查詢(xún)語(yǔ)句而構(gòu)建了一個(gè)簡(jiǎn)單的三層全連接網(wǎng)絡(luò),雖然由于語(yǔ)句的嵌套過(guò)深而不能高效計(jì)算,但仍然是

我們熟知的SQL是一種數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句,它方便了開(kāi)發(fā)者在大型數(shù)據(jù)中執(zhí)行高效的操作。但本文從另一角度嵌套SQL查詢(xún)語(yǔ)句而構(gòu)建了一個(gè)簡(jiǎn)單的三層全連接網(wǎng)絡(luò),雖然由于語(yǔ)句的嵌套過(guò)深而不能高效計(jì)算,但仍然是一個(gè)非常有意思的實(shí)驗(yàn)。

在這篇文章中,我們將純粹用SQL實(shí)現(xiàn)含有一個(gè)隱藏層(以及帶 ReLU 和 softmax 激活函數(shù))的神經(jīng)網(wǎng)絡(luò)。這些神經(jīng)網(wǎng)絡(luò)訓(xùn)練的步驟包含前向傳播和反向傳播,將在 BigQuery 的單個(gè)SQL查詢(xún)語(yǔ)句中實(shí)現(xiàn)。當(dāng)它在 BigQuery 中運(yùn)行時(shí),實(shí)際上我們正在成百上千臺(tái)服務(wù)器上進(jìn)行分布式神經(jīng)網(wǎng)絡(luò)訓(xùn)練。聽(tīng)上去很贊,對(duì)吧?

也就是說(shuō),這個(gè)有趣的項(xiàng)目用于測(cè)試 SQL 和 BigQuery 的限制,同時(shí)從聲明性數(shù)據(jù)的角度看待神經(jīng)網(wǎng)絡(luò)訓(xùn)練。這個(gè)項(xiàng)目沒(méi)有考慮任何的實(shí)際應(yīng)用,不過(guò)最后我將討論一些實(shí)際的研究意義。

我們先從一個(gè)基于神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單分類(lèi)器開(kāi)始。它的輸入尺寸為 2,輸出為二分類(lèi)。我們將有一個(gè)維度為 2 的單隱層和 ReLU 激活函數(shù)。輸出層的二分類(lèi)將使用 softmax 函數(shù)。我們?cè)趯?shí)現(xiàn)網(wǎng)絡(luò)時(shí)遵循的步驟將是在 Karpathy’s CS231n 指南(https://cs231n.github.io/neural-networks-case-study/)中展示的基于 SQL 版本的 Python 示例。

模型

該模型含有以下參數(shù):

輸入到隱藏層

W: 2&TImes;2 的權(quán)重矩陣(元素: w_00, w_01, w_10, w_11)

B: 2&TImes;1 的偏置向量(元素:b_0, b_1)

隱藏到輸出層

W2: 2&TImes;2 的權(quán)重矩陣(元素: w2_00, w2_01, w2_10, w2_11)

B2: 2&TImes;1 的偏置向量(元素:b2_0, b2_1)

訓(xùn)練數(shù)據(jù)存儲(chǔ)在 BigQuery 表格當(dāng)中,列 x1 和 x2 的輸入和輸出如下所示(表格名稱(chēng):example_project.example_dataset.example_table)

如前所述,我們將整個(gè)訓(xùn)練作為單個(gè) SQL 查詢(xún)語(yǔ)句來(lái)實(shí)現(xiàn)。在訓(xùn)練完成后,通過(guò) SQL 查詢(xún)語(yǔ)句將會(huì)返回參數(shù)的值。正如你可能猜到的,這將是一個(gè)層層嵌套的查詢(xún),我們將逐步構(gòu)建以準(zhǔn)備這個(gè)查詢(xún)語(yǔ)句。我們將會(huì)從最內(nèi)層的子查詢(xún)開(kāi)始,然后逐個(gè)增加嵌套的外層。

前向傳播

首先,我們將權(quán)重參數(shù) W 和 W2 設(shè)為服從正態(tài)分布的隨機(jī)值,將權(quán)重參數(shù) B 和 B2 設(shè)置為 0。 W 和 W2 的隨機(jī)值可以通過(guò) SQL 本身產(chǎn)生。為了簡(jiǎn)單起見(jiàn),我們將從外部生成這些值并在 SQL 查詢(xún)中使用。用于初始化參數(shù)的內(nèi)部子查詢(xún)?nèi)缦拢?/p>

請(qǐng)注意,表格 example_project.example_dataset.example_table 已經(jīng)包含了列 x1、 x2 和 y。模型參數(shù)將會(huì)被作為上述查詢(xún)結(jié)果的附加列添加。

接下來(lái),我們將計(jì)算隱藏層的激活值。我們將使用含有元素 d0 和 d1 的向量 D 表示隱藏層。我們需要執(zhí)行矩陣操作 D = np.maximum(0, np.dot(X, W) + B),其中 X 表示輸入向量(元素 x1 和 x2)。這個(gè)矩陣運(yùn)算包括將權(quán)重 W 和輸入 X 相乘,再加上偏置向量 B。然后,結(jié)果將被傳遞給非線(xiàn)性 ReLU 激活函數(shù),該函數(shù)將會(huì)把負(fù)值設(shè)置為 0。SQL 中的等效查詢(xún)?yōu)椋?/p>

上面的查詢(xún)將兩個(gè)新列 d0 和 d1 添加到之前內(nèi)部子查詢(xún)的結(jié)果當(dāng)中。 上述查詢(xún)的輸出如下所示。

這完成了從輸入層到隱藏層的一次轉(zhuǎn)換?,F(xiàn)在,我們可以執(zhí)行從隱藏層到輸出層的轉(zhuǎn)換了。

首先,我們將計(jì)算輸出層的值。公式是:scores = np.dot(D, W2) + B2。然后,我們將對(duì)計(jì)算出來(lái)的值用 softmax 函數(shù)來(lái)獲得每個(gè)類(lèi)的預(yù)測(cè)概率。SQL 內(nèi)部的等價(jià)子查詢(xún)?nèi)缦拢?/p>

首先,我們將使用交叉熵?fù)p失函數(shù)來(lái)計(jì)算當(dāng)前預(yù)測(cè)的總損失。首先,計(jì)算每個(gè)樣本中正確類(lèi)預(yù)測(cè)概率對(duì)數(shù)的負(fù)值。交叉熵?fù)p失只是這些 X 和 Y 實(shí)例中數(shù)值的平均值。自然對(duì)數(shù)是一個(gè)遞增函數(shù),因此,將損失函數(shù)定義為負(fù)的正確類(lèi)預(yù)測(cè)概率對(duì)數(shù)很直觀(guān)。如果正確類(lèi)的預(yù)測(cè)概率很高,損失函數(shù)將會(huì)很低。相反,如果正確類(lèi)的預(yù)測(cè)概率很低,則損失函數(shù)值將很高。

為了減少過(guò)擬合的風(fēng)險(xiǎn),我們也將同樣增加 L2 正則化。在整體損失函數(shù)中,我們將包含 0.5*reg*np.sum(W*W) + 0.5*reg*np.sum(W2*W2),其中 reg 是超參數(shù)。在損失函數(shù)中包括這一函數(shù)將會(huì)懲罰那些權(quán)重向量中較大的值。

在查詢(xún)當(dāng)中,我們同樣會(huì)計(jì)算訓(xùn)練樣本的數(shù)量(num_examples)。這對(duì)于后續(xù)我們計(jì)算平均值來(lái)說(shuō)很有用。SQL 查詢(xún)中計(jì)算整體損失函數(shù)的語(yǔ)句如下:

反向傳播

接下來(lái),對(duì)于反向傳播,我們將計(jì)算每個(gè)參數(shù)對(duì)于損失函數(shù)的偏導(dǎo)數(shù)。我們使用鏈?zhǔn)椒▌t從最后一層開(kāi)始逐層計(jì)算。首先,我們將通過(guò)使用交叉熵和 softmax 函數(shù)的導(dǎo)數(shù)來(lái)計(jì)算 score 的梯度。與此相對(duì)的查詢(xún)是:

在上文中,我們用 scores = np.dot(D, W2) + B2 算出了分?jǐn)?shù)。因此,基于分?jǐn)?shù)的偏導(dǎo)數(shù),我們可以計(jì)算隱藏層 D 和參數(shù) W2,B2 的梯度。對(duì)應(yīng)的查詢(xún)語(yǔ)句是:

同理,我們知道 D = np.maximum(0, np.dot(X, W) + B)。因此,通過(guò) D 的偏導(dǎo),我們可以計(jì)算出 W 和 B 的導(dǎo)數(shù)。我們無(wú)須計(jì)算 X 的偏導(dǎo),因?yàn)樗皇悄P偷膮?shù),且也不必通過(guò)其它模型參數(shù)進(jìn)行計(jì)算。計(jì)算 W 和 B 的偏導(dǎo)的查詢(xún)語(yǔ)句如下:

最后,我們使用 W、B、W2 及 B2 各自的導(dǎo)數(shù)進(jìn)行更新操作。計(jì)算公式是 param = learning_rate * d_param ,其中l(wèi)earning_rate 是參數(shù)。為了體現(xiàn) L2 正則化,我們會(huì)在計(jì)算 dW 和 dW2 時(shí)加入一個(gè)正則項(xiàng) reg*weight。我們也去掉如 dw_00, correct_logprobs 等緩存的列,它們?cè)谧硬樵?xún)時(shí)被創(chuàng)建,用于保存訓(xùn)練數(shù)據(jù)(x1, x2 及 y 列) 和模型參數(shù)(權(quán)重和偏置項(xiàng))。對(duì)應(yīng)的查詢(xún)語(yǔ)句如下:

這包含了正向和反向傳播的一整個(gè)迭代過(guò)程。以上查詢(xún)語(yǔ)句將返回更新后的權(quán)重和偏置項(xiàng)。部分結(jié)果如下所示:

為了進(jìn)行多次訓(xùn)練迭代,我們將反復(fù)執(zhí)行上述過(guò)程。用一個(gè)簡(jiǎn)單 Python 函數(shù)足以搞定,代碼鏈接如下:https://github.com/harisankarh/nn-sql-bq/blob/master/training.py。

因?yàn)椴樵?xún)語(yǔ)句的多重嵌套和復(fù)雜度,在 BigQuery 中執(zhí)行查詢(xún)時(shí)多項(xiàng)系統(tǒng)資源告急。BigQuery 的標(biāo)準(zhǔn) SQL 擴(kuò)展的縮放性比傳統(tǒng) SQL 語(yǔ)言要好。即使是標(biāo)準(zhǔn) SQL 查詢(xún),對(duì)于有 100k 個(gè)實(shí)例的數(shù)據(jù)集,也很難執(zhí)行超過(guò) 10 個(gè)迭代。因?yàn)橘Y源的限制,我們將會(huì)使用一個(gè)簡(jiǎn)單的決策邊界來(lái)評(píng)估模型,如此一來(lái),我們就可以在少量迭代后得到較好的準(zhǔn)確率。

我們將使用一個(gè)簡(jiǎn)單的數(shù)據(jù)集,其輸入 X1、X2 服從標(biāo)準(zhǔn)正態(tài)分布。二進(jìn)制輸出 y 簡(jiǎn)單判斷 x1 + x2 是否大于 0。為了更快的訓(xùn)練完 10 個(gè)迭代,我們使用一個(gè)較大的學(xué)習(xí)率 2.0(注意:這么大的學(xué)習(xí)率并不推薦實(shí)際使用,可能會(huì)導(dǎo)致發(fā)散)。將上述語(yǔ)句執(zhí)行 10 個(gè)迭代得出的模型參數(shù)如下:

我們將使用 Bigquery 的函數(shù) save to table 把結(jié)果保存到一個(gè)新表。我們現(xiàn)在可以在訓(xùn)練集上執(zhí)行一次推理來(lái)比較預(yù)測(cè)值和預(yù)期值的差距。查詢(xún)語(yǔ)句片段在以下鏈接中:

https://github.com/harisankarh/nn-sql-bq/blob/master/query_for_prediction.sql。

僅通過(guò)十個(gè)迭代,我們的準(zhǔn)確率就可達(dá) 93%(測(cè)試集上也差不多)。

如果我們把迭代次數(shù)加到 100 次,準(zhǔn)確率高達(dá) 99%。

優(yōu)化

下面是對(duì)本項(xiàng)目的總結(jié)。我們由此獲得了哪些啟發(fā)?如你所見(jiàn),資源瓶頸決定了數(shù)據(jù)集的大小以及迭代執(zhí)行的次數(shù)。除了祈求谷歌開(kāi)放資源上限,我們還有如下優(yōu)化手段來(lái)解決這個(gè)問(wèn)題。

創(chuàng)建中間表和多個(gè) SQL 語(yǔ)句有助于增加迭代數(shù)。例如,前 10 次迭代的結(jié)果可以存儲(chǔ)在一個(gè)中間表中。同一查詢(xún)語(yǔ)句在執(zhí)行下 10 次迭代時(shí)可以基于這個(gè)中間表。如此,我們就執(zhí)行了 20 個(gè)迭代。這個(gè)方法可以反復(fù)使用,以應(yīng)對(duì)更大的查詢(xún)迭代。

相比于在每一步增加外查詢(xún),我們應(yīng)該盡可能的使用函數(shù)的嵌套。例如,在一個(gè)子查詢(xún)中,我們可以同時(shí)計(jì)算 scores 和 probs,而不應(yīng)使用 2 層嵌套查詢(xún)。

在上例中,所有的中間項(xiàng)都被保留直到最后一個(gè)外查詢(xún)執(zhí)行。其中有些項(xiàng)如 correct_logprobs 可以早些刪除(盡管 SQL 引擎可能會(huì)自動(dòng)的執(zhí)行這類(lèi)優(yōu)化)。

多嘗試應(yīng)用用戶(hù)自定義的函數(shù)。如果感興趣,你可以看看這個(gè) BigQuery 的用戶(hù)自定義函數(shù)的服務(wù)模型的項(xiàng)目(但是,無(wú)法使用 SQL 或者 UDFs 進(jìn)行訓(xùn)練)。

意義

現(xiàn)在,讓我們來(lái)看看基于深度學(xué)習(xí)的分布式 SQL 引擎的深層含義。 BigQuery、Presto 這類(lèi) SQL 倉(cāng)庫(kù)引擎的一個(gè)局限性在于,查詢(xún)操作是在 CPU 而不是 GPU 上執(zhí)行的。研究 blazingdb 和 mapd 等基于 GPU 加速的數(shù)據(jù)庫(kù)查詢(xún)結(jié)果想必十分有趣。一個(gè)簡(jiǎn)單的研究方法就是使用分布式 SQL 引擎執(zhí)行查詢(xún)和數(shù)據(jù)分布,并用 GPU 加速數(shù)據(jù)庫(kù)執(zhí)行本地計(jì)算。

退一步來(lái)看,我們已經(jīng)知道執(zhí)行分布式深度學(xué)習(xí)很難。分布式 SQL 引擎在數(shù)十年內(nèi)已經(jīng)有了大量的研究工作,并產(chǎn)出如今的查詢(xún)規(guī)劃、數(shù)據(jù)分區(qū)、操作歸置、檢查點(diǎn)設(shè)置、多查詢(xún)調(diào)度等技術(shù)。其中有些可以與分布式深度學(xué)習(xí)相結(jié)合。如果你對(duì)這些感興趣,請(qǐng)看看這篇論文(https://sigmodrecord.org/publications/sigmodRecord/1606/pdfs/04_vision_Wang.pdf),該論文對(duì)分布式數(shù)據(jù)庫(kù)和分布式深度學(xué)習(xí)展開(kāi)了廣泛的研究討論。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉