摘要:在過(guò)去的幾個(gè)月中,我對(duì)深度學(xué)習(xí)非常著迷,特別是它在自然語(yǔ)言處理中的應(yīng)用。對(duì)這篇文章可以簡(jiǎn)單總結(jié)如下如果我們學(xué)習(xí)莎士比亞的作品,然后一個(gè)字一個(gè)字的進(jìn)行學(xué)習(xí)。然后這個(gè)模型會(huì)產(chǎn)生一大堆看起來(lái)像莎士比亞風(fēng)格的文字。
作者:chen_h
微信號(hào) & QQ:862251340
微信公眾號(hào):coderpai
簡(jiǎn)書(shū)地址:http://www.jianshu.com/p/f9ca...
本文的代碼請(qǐng)點(diǎn)擊這里。Talk is cheap, show me the code.
在過(guò)去的幾個(gè)月中,我對(duì)深度學(xué)習(xí)非常著迷,特別是它在自然語(yǔ)言處理中的應(yīng)用。我的大部分職業(yè)生涯都是在金融領(lǐng)域度過(guò)的,特別是在算法交易和交易數(shù)據(jù)替換方面。
我寫(xiě)這篇文章的想法直接來(lái)自我的工作經(jīng)驗(yàn)。我作為一名“深度學(xué)習(xí)”的愛(ài)好者時(shí),對(duì)于深度學(xué)習(xí)我沒(méi)有很深入的了解。但是我希望我的理解可以表達(dá)到位,并且可以幫助到你。
為什么股票預(yù)測(cè)與 NLP 存在關(guān)聯(lián)性?在很多的 NLP 問(wèn)題中,我們最終會(huì)把序列編碼成一個(gè)固定大小的表示,然后將這個(gè)編碼再解碼成另一個(gè)序列。例如,我們可能會(huì)在文本中進(jìn)行實(shí)體標(biāo)記,從英文翻譯成法語(yǔ),或?qū)⒁纛l轉(zhuǎn)換成文本。在這些領(lǐng)域都出現(xiàn)了大量的工作,并且很多成果都取得了最先進(jìn)的表現(xiàn)。
在我看來(lái),NLP 與金融數(shù)據(jù)分析之間的最大不同在于,語(yǔ)言有一定的結(jié)構(gòu)性,雖然這個(gè)結(jié)構(gòu)性比較模糊難懂。另一方面,金融市場(chǎng)數(shù)據(jù)可能是沒(méi)有任何結(jié)構(gòu)可以學(xué)習(xí)的。
在這個(gè)文章中,我們假設(shè)金融市場(chǎng)數(shù)據(jù)是存在結(jié)構(gòu)性的,當(dāng)然這個(gè)假設(shè)可能是不成立的,我們這個(gè)文章可能也會(huì)直接推翻這個(gè)假設(shè)。我們按照 NLP 的語(yǔ)義編碼模型來(lái)類比這個(gè)市場(chǎng)結(jié)構(gòu),如果你覺(jué)得這個(gè)想法沒(méi)有意義,那么請(qǐng)閱讀下去,我相信你會(huì)覺(jué)得會(huì)有意義的。
詞向量詞向量的模型有很多的,Richard Socher 的講座是一個(gè)非常好的教程。簡(jiǎn)而言之,我們可以用語(yǔ)言模型來(lái)描述所有的單詞,并且在坐標(biāo)圖中進(jìn)行顯示,并且利用幾何圖形來(lái)捕捉單詞之間的關(guān)聯(lián)性。有一個(gè)經(jīng)典的例子是 “King - man + woman = Queen” ,或者類似別的例子。
詞嵌入是非常酷的一個(gè)應(yīng)用,因?yàn)槲覀兛梢岳靡粋€(gè)很濃縮的方式來(lái)表示一個(gè)詞信息。比較傳統(tǒng)的詞嵌入方法是構(gòu)建一個(gè)包含所有單詞的詞表,如果當(dāng)前詞是查詢?cè)~,那么該位置設(shè)置為 1 ,其余設(shè)置為 0 。但是這不是一個(gè)有效的方法,而且也沒(méi)有任何詞關(guān)聯(lián)意義。但是通過(guò)詞嵌入,我們用一個(gè)固定維度的向量來(lái)表示一個(gè)單詞,然后利用更高維度的幾何特性來(lái)尋找詞之間的關(guān)聯(lián)性。
下圖展示了一個(gè)例子。詞向量的模型是需要一個(gè)大型的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練。經(jīng)過(guò)幾天的高密度訓(xùn)練,每個(gè)詞都會(huì)得到一個(gè)高維度的詞向量。這個(gè)“空間”向量會(huì)有類似于“距離”的概念,所以我們可以計(jì)算哪些詞是互相接近的。該方法的作者舉了一個(gè)例子(就是下圖),用來(lái)計(jì)算跟 Frog 距離近的詞。
但是除了詞,我們對(duì)別的事物也可以進(jìn)行高維度的編碼,比如我們接下來(lái)要介紹的金融市場(chǎng)數(shù)據(jù)。
Market2Vec第一個(gè)我聽(tīng)說(shuō)的詞嵌入算法是 word2vec 。我想在金融市場(chǎng)數(shù)據(jù)上面得到相同的效果,雖然我會(huì)使用一些比較不同于 word2vec 的算法。我的輸入數(shù)據(jù)是 csv 格式的。第一類表示日期,另外的 4*1000 列對(duì)應(yīng)于 1000 只股票的高低開(kāi)倉(cāng)價(jià)。那么,我們的輸入向量就是 4000 維度的,這個(gè)維度太大了。所以,我們第一件事就是把這個(gè)高維度的向量壓縮到一個(gè)低維度的向量,比如說(shuō) 300 維度(因?yàn)槲覀兿矚g這個(gè)電影 ^_^)。
如果你覺(jué)得把一個(gè) 4000 維度的向量壓縮到 300 維度是一件很難的事,那么你就大錯(cuò)特錯(cuò)了。其實(shí)這很簡(jiǎn)單,我們只需要乘以一個(gè)矩陣,矩陣就相當(dāng)于一個(gè)巨大的 excel 表格,每個(gè)單元格中都會(huì)有一個(gè)數(shù)字,并且不存在任何的格式。想象一下,我們有一個(gè) 4000 列和 300 行的 excel 表格,我們把這個(gè)表格與上面的 4000 維度向量進(jìn)行相乘,那么我們就可以得到一個(gè) 300 維度的向量。這個(gè)就是最基礎(chǔ)的線性代數(shù)知識(shí),你肯定能明白。
那么,現(xiàn)在的難點(diǎn)就是如何去設(shè)置這個(gè)巨大的表格矩陣,“深度學(xué)習(xí)” 就是用在這個(gè)矩陣的初始化和更新上面。最終,這個(gè)電子表格矩陣將會(huì)是一個(gè)不錯(cuò)的轉(zhuǎn)移矩陣,可以將我們的 4000 維度向量轉(zhuǎn)換成一個(gè)簡(jiǎn)潔的 300 維度向量。
接下來(lái),我們要做一些比較神奇的事,那就是激活函數(shù)。我們要給每一個(gè)值加上一個(gè)激活函數(shù)。將這個(gè)激活函數(shù)添加到每一個(gè)值上面,將每個(gè)值的大小歸到 0 到 1 之間。那么,為什么這樣做可以使得我們的向量更加特別,可以學(xué)習(xí)和理解更加復(fù)雜的事。你可以點(diǎn)擊這里進(jìn)行學(xué)習(xí)。
那么接下來(lái)我們需要處理的重要的事就是如何去找到這個(gè)轉(zhuǎn)移矩陣,使得我們可以損失更少的信息,將高維的股票向量轉(zhuǎn)換成低維的股票向量。我們希望能利用這個(gè)向量來(lái)挖掘各個(gè)股票之間的相關(guān)性,也許我們會(huì)發(fā)現(xiàn)當(dāng)某個(gè)行業(yè)下滑時(shí),另一個(gè)行業(yè)的股票也會(huì)下滑。當(dāng)然,我們可能也會(huì)發(fā)現(xiàn)一些別的特征,我認(rèn)為這對(duì)我們將來(lái)的研究會(huì)非常有用。
初步接觸神經(jīng)網(wǎng)絡(luò)讓我們先把股票向量放在一邊,來(lái)談?wù)務(wù)Z言模型。Andrej Karpathy 寫(xiě)了一篇很流行的文章 The Unreasonable effectiveness of Recurrent Neural Networks 。對(duì)這篇文章可以簡(jiǎn)單總結(jié)如下:
如果我們學(xué)習(xí)莎士比亞的作品,然后一個(gè)字一個(gè)字的進(jìn)行學(xué)習(xí)。那么我們可以深度學(xué)習(xí)來(lái)學(xué)習(xí)一種語(yǔ)言模型。
在這種情況下,語(yǔ)言模型是一個(gè)魔術(shù)盒。你可以提供一句話的前面幾個(gè)字符,模型就會(huì)告訴你下一個(gè)字符是什么。
如果我們把語(yǔ)言模型的預(yù)測(cè)結(jié)果重新輸入到語(yǔ)言模型,那么我們模型將永遠(yuǎn)運(yùn)行下去。
然后這個(gè)模型會(huì)產(chǎn)生一大堆看起來(lái)像莎士比亞風(fēng)格的文字。然后,我們也可以將這個(gè)思想用在 Linux 源碼上面,然后程序來(lái)產(chǎn)生代碼。或者,我們可以用在幾何代數(shù)課本上面,讓程序來(lái)產(chǎn)生內(nèi)容。
這個(gè)魔術(shù)盒的實(shí)現(xiàn)機(jī)制我們會(huì)在后續(xù)進(jìn)行介紹,但是讓我們先來(lái)假想一下,Karpathy 是利用前面的一些字符來(lái)預(yù)測(cè)下一個(gè)字符,那么我們是否可以根據(jù)之前的市場(chǎng)向量,來(lái)預(yù)測(cè)下一個(gè)市場(chǎng)表現(xiàn)、市場(chǎng)向量或者別的東西,而這個(gè)預(yù)測(cè)模型就是這個(gè)魔術(shù)盒。我們還沒(méi)有決定我們想要預(yù)測(cè)的是什么,但是沒(méi)有關(guān)系,因?yàn)槲覀儾粫?huì)將我們的輸出反饋到我們的輸入中。
更加深入分析 我想指出,從現(xiàn)在開(kāi)始我們要開(kāi)始深入的去分析深度學(xué)習(xí)。到目前為止,我們只是使用單層網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),也就是只是使用我們上面設(shè)計(jì)的按個(gè) 4000 * 300 的轉(zhuǎn)移矩陣。接下來(lái),我們會(huì)添加更多的層次,來(lái)設(shè)計(jì)一個(gè)深層的神經(jīng)網(wǎng)絡(luò)來(lái)設(shè)計(jì)這個(gè)市場(chǎng)向量,這就是深度學(xué)習(xí)。所以,Karpathy 向我們介紹了一些 Linux 例子的輸出,下面的代碼就是魔術(shù)盒的內(nèi)容:
static void action_new_function(struct s_stat_info *wb) { unsigned long flags; int lel_idx_bit = e->edd, *sys & ~((unsigned long) *FIRST_COMPAT); buf[0] = 0xFFFFFFFF & (bit << 4); min(inc, slist->bytes); printk(KERN_WARNING "Memory allocated %02x/%02x, " "original MLL instead "), min(min(multi_run - s->len, max) * num_data_in), frame_pos, sz + first_seg); div_u64_w(val, inb_p); spin_unlock(&disk->queue_lock); mutex_unlock(&s->sock->mutex); mutex_unlock(&func->mutex); return disassemble(info->pending_bh); }
請(qǐng)注意,該魔術(shù)盒可以知道如何去打開(kāi)和關(guān)閉括號(hào),并且能遵守程序的縮進(jìn)約定,也就是函數(shù)代碼的正確縮進(jìn),多行 printk 語(yǔ)句也具有正確的內(nèi)部縮進(jìn)。這也就意味著這個(gè)魔術(shù)盒可以理解代碼的遠(yuǎn)程依賴關(guān)系,即魔術(shù)盒可以聯(lián)系到前面的代碼進(jìn)行分析推敲。當(dāng)它預(yù)測(cè)在 print 語(yǔ)句中時(shí),它會(huì)知道它在一個(gè) print 語(yǔ)句中,并且會(huì)記住它是在一個(gè)函數(shù)中(或者至少記住是在另一個(gè)縮進(jìn)范圍)中。太好了,這就很容易理解,具有捕捉細(xì)節(jié)和記住長(zhǎng)期依賴關(guān)系的算法是非常有用的,因?yàn)?strong>我們也是希望能在市場(chǎng)上找到長(zhǎng)期的依賴關(guān)系。
深入探索魔術(shù)盒那么這個(gè)神奇的魔術(shù)盒里面有什么呢?它是一種被稱為 LSTM 的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。RNN 是一種深度學(xué)習(xí)算法,它擅長(zhǎng)的是對(duì)序列進(jìn)行操作(如字符序列)。在每一步,它對(duì)會(huì)對(duì)下一個(gè)字符進(jìn)行預(yù)測(cè),并且使用一個(gè)矩陣記性表示,就像我們之前看到的那樣。因?yàn)?RNN 有一些內(nèi)部的記憶,所以它可以記住一些以前看到的東西。它會(huì)使用這個(gè)內(nèi)部記憶來(lái)決定下一次輸入中應(yīng)該如何操作。使用該內(nèi)存記憶,RNN 可以記住它在一定范圍內(nèi)的內(nèi)容,這就是我們?yōu)槭裁纯梢詫?duì)輸入文本進(jìn)行預(yù)測(cè)處理。
RNN 有一個(gè)很好的變體稱為 LSTM,LSTM 巧妙的設(shè)計(jì)了 RNN 內(nèi)部的記憶單元,這個(gè)單元可以做以下事:
可以選擇性的記住一些東西;
可以選擇性的去忘記一些東西;
選擇應(yīng)該輸出多少記憶內(nèi)存;
所以,當(dāng)一個(gè) LSTM 看到一個(gè) “{” ,并且對(duì)自己說(shuō)“這個(gè)非常重要,我應(yīng)該把它記住” 。而當(dāng)它這樣做時(shí),它基本上就記住了這是一個(gè)嵌套的范圍。一旦看到相應(yīng)的 “}” ,它就會(huì)決定忘記原來(lái)的大括號(hào),因此忘記它在一個(gè)嵌套的范圍內(nèi)。
我們可以將幾個(gè) LSTM 堆疊在一起,這樣 LSTM 可以學(xué)習(xí)到更多的抽象概念。現(xiàn)在,前一個(gè) LSTM 的輸出變成了下一個(gè) LSTM 的輸入,每個(gè) LSTM 會(huì)學(xué)習(xí)到更加抽象的數(shù)據(jù)。在上面的例子中(這個(gè)只是說(shuō)明性的猜測(cè)解釋),第一層的 LSTM 可能會(huì)學(xué)習(xí)由空格分割的字符,下一層可能會(huì)學(xué)習(xí)像(static void action_new_function)這樣的字符類型,下一層可能會(huì)學(xué)習(xí)函數(shù)的概念以及參數(shù)等等。雖然 Karpathy 在博客中已經(jīng)有非常好的說(shuō)明例子了,但是要清楚的說(shuō)明每一層的具體任務(wù)還是非常苦難的。
Market2Vec 與 LSTMs 的結(jié)合你可能會(huì)注意到,Karpathy 使用字符作為他模型的輸入,而不是詞嵌入(技術(shù)上是使用 0-1 編碼)。但是,Lars Eidnes 在 Auto-Generating Clickbait With Recurrent Neural Network 文章中使用詞嵌入來(lái)處理。
上圖顯示了他使用的網(wǎng)絡(luò)。我們先不考慮 softmax 部分(這部分我們后續(xù)介紹),先來(lái)看看 LSTM 堆棧和模型的輸入部分。我們發(fā)現(xiàn)模型的底部輸入是一系列的單詞向量(記住,一個(gè)詞向量表示的是一個(gè)單詞的語(yǔ)義)。Lars 輸入一個(gè)字向量序列,其中每一個(gè)作用如下:
影響第一個(gè) LSTM;
前一個(gè) LSTM 的中間輸出作為下一個(gè) LSTM 的輸入;
前一個(gè) LSTM 輸出的下一個(gè)字作為下一個(gè) LSTM 的輸入;
雖然我們要做同樣的事情,但是可能有一點(diǎn)小小的區(qū)別,我們不是把字向量作為輸入,而是我們的 Market2Vec ,這個(gè)市場(chǎng)向量就是我們之前描述出來(lái)的。我們來(lái)回顧一下,對(duì)于給定的時(shí)間點(diǎn),我們的 MarketVectors 應(yīng)該包含在這個(gè)時(shí)間點(diǎn)發(fā)生的市場(chǎng)情況的總和。通過(guò) LSTM 的序列化,我們希望能夠捕捉到市場(chǎng)上發(fā)生的一個(gè)長(zhǎng)期依賴關(guān)系。通過(guò)幾個(gè) LSTM 的堆棧,我們希望可以得到更高層次的市場(chǎng)行為抽象數(shù)據(jù)。
我們來(lái)談?wù)劰善?/strong>到目前為止,我們還沒(méi)有談到算法是如何在實(shí)際環(huán)境中工作的,我們上面只是談?wù)摿巳绾螌?duì)數(shù)據(jù)做巧妙的轉(zhuǎn)換,把一個(gè)高維度的數(shù)據(jù)轉(zhuǎn)換成低維度的數(shù)據(jù)。在接下來(lái)的文章中,我們會(huì)來(lái)具體說(shuō)如何應(yīng)用這個(gè)算法,但是請(qǐng)記住,正是因?yàn)榍懊娴匿亯|才使得后面的應(yīng)用有了價(jià)值。
在 Karpathy 的例子中,LSTM 的輸出是抽象的表示下一個(gè)字符的預(yù)測(cè)向量。在 Eidnes 的例子中,LSTM 是輸出下一個(gè)字符向量。這兩種情況的下一步都是將一個(gè)抽象的事物表示成一個(gè)概率向量,這是一個(gè)概率列表,說(shuō)明每個(gè)字符或者單詞在下一個(gè)位置出現(xiàn)的可能性。這里則是 softmax 函數(shù)在工作了,一旦我們擁有了這個(gè)概率列表,我們則需要選擇出最有可能出現(xiàn)的單詞或者字符。
當(dāng)我們處理“市場(chǎng)預(yù)測(cè)”的問(wèn)題時(shí),我們需要問(wèn)自己,我們真正想要預(yù)測(cè)的是市場(chǎng)的什么情況?我這里有一些自己的想法,大家可以參考一下:
預(yù)測(cè) 1000 支股票中每一支股票接下來(lái)的價(jià)格變化;
預(yù)測(cè)在接下來(lái)的 n 分鐘內(nèi),一些指標(biāo)(S&P,VIX等等)的變化;
預(yù)測(cè)在接下來(lái)的 n 分鐘內(nèi),哪些股票的價(jià)格將上漲超過(guò) x%;
(我個(gè)人最喜歡的)預(yù)測(cè)哪些股票在接下來(lái)的 n 分鐘內(nèi),上漲/下跌 2x%,而這段時(shí)間內(nèi)不會(huì)下跌/上漲超過(guò) x% ;
(本文將會(huì)介紹的)預(yù)測(cè)在接下來(lái)的 n 分鐘,VIX 的值上漲/下跌 2x %,而這段時(shí)間內(nèi)不會(huì)下跌/上漲超過(guò) x%;
第一和第二個(gè)就是回歸問(wèn)題,我們必須預(yù)測(cè)的是一個(gè)實(shí)際的數(shù)字而不是一個(gè)特定事件的概率(比如字符 n 出現(xiàn)或者市場(chǎng)上漲)。這個(gè)非常準(zhǔn)確,但是不是我想做的事。
第三和第四是兩個(gè)非常相似的問(wèn)題,他們都要求預(yù)測(cè)一個(gè)事件(技術(shù)術(shù)語(yǔ),就是一個(gè)類標(biāo)簽)。這個(gè)事件可能是接下來(lái)出現(xiàn)字母是 n ,或者接下來(lái)10分鐘內(nèi)某只股票是否會(huì)上升 5%,而不會(huì)下降超過(guò) 3%。第三和第四之間的權(quán)衡關(guān)系是,第三個(gè)問(wèn)題更加常見(jiàn),因此更容易學(xué)習(xí)到,而第四個(gè)問(wèn)題更加有價(jià)值,它不但對(duì)利潤(rùn)有預(yù)測(cè),而且對(duì)風(fēng)險(xiǎn)也有一定的約束。
第五個(gè)問(wèn)題是我們?cè)谶@篇文章需要解決的,這個(gè)問(wèn)題跟第三個(gè)和第四個(gè)問(wèn)題非常類似,但是它更加容易一些,因?yàn)槲覀冇幸恍C(jī)制可以遵循。VIX 指數(shù)被稱為恐怖指數(shù),它代表了 S&P 500 指數(shù)的股票波動(dòng)。它是通過(guò)觀察指數(shù)中每個(gè)股票的隱含波動(dòng)率得出來(lái)的。
為什么預(yù)測(cè) VIX 指數(shù)?那么我們?yōu)槭裁磿?huì)去預(yù)測(cè) VIX 這個(gè)指數(shù)呢?原因主要如下:
這只是一個(gè)數(shù)字,而不是 1000 支股票,這就使得我們?cè)谒惴ㄔO(shè)計(jì)上會(huì)更加簡(jiǎn)單,計(jì)算成本也會(huì)降低很多;
這是多個(gè)股票的總結(jié),所以跟大多數(shù)股票是相關(guān)的;
它不是單純的對(duì)我們的輸入數(shù)據(jù)進(jìn)行線性組合。隱含的波動(dòng)率是從一個(gè)非常復(fù)雜的非線性公式中計(jì)算出來(lái)的,而 VIX 是基于這個(gè)波動(dòng)率再進(jìn)行推導(dǎo)得出來(lái)的。如果我們可以進(jìn)行預(yù)測(cè),那么這將是一件非常酷的事。
這個(gè)是直接可以用來(lái)指導(dǎo)交易的額,如果我們真的可以設(shè)計(jì)出一個(gè)有價(jià)值的網(wǎng)絡(luò),那么我們就可以直接在線上使用它。
繼續(xù)討論 LSTM 和 softmax 函數(shù)在未來(lái)幾分鐘內(nèi),我們?nèi)绾问褂弥暗臄?shù)據(jù)來(lái)預(yù)測(cè) VIX 的變化呢?對(duì)于我們數(shù)據(jù)集中的每一個(gè)點(diǎn),我會(huì)在 5 分鐘后再次看到該數(shù)據(jù)點(diǎn)的 VIX 變化。如果在那段時(shí)間內(nèi)上升了超過(guò) 1%,但是沒(méi)有超過(guò) 0.5%。那么,我們的模型將輸出 1,否則就是輸出 0。然后我們會(huì)得到如下一系列的標(biāo)簽:
0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0 ….
我們想利用之前壓縮的市場(chǎng)向量,然后輸入到 LSTM 模型中得出最終的概率結(jié)果,從技術(shù)上來(lái)分析,因?yàn)槲覀冏罱K只要輸出一個(gè)標(biāo)簽,我們也可以使用 sigmoid 函數(shù),但是如果我們做二分類結(jié)果,還是建議使用 softmax 函數(shù)。
所以,在我們深入分析這個(gè)算法應(yīng)用之前,讓我們先來(lái)回顧一下我們已經(jīng)學(xué)習(xí)了哪些內(nèi)容:
我們以 1000 支股票的價(jià)格作為輸入數(shù)據(jù);
數(shù)據(jù)序列中的每一個(gè)時(shí)間點(diǎn)都是市場(chǎng)的一個(gè)快照反饋。我們使用一個(gè)壓縮網(wǎng)絡(luò),將輸入的 4000 維度壓縮到 300 維度;
現(xiàn)在我們有一系列的股票市場(chǎng)向量,我們把這些股票向量輸入堆棧 LSTM 中,然后按照每個(gè)時(shí)間步驟來(lái)進(jìn)行學(xué)習(xí)。LSTM 會(huì)記住一些市場(chǎng)之前的有效信息,這些信息會(huì)影響后續(xù)的市場(chǎng)反饋;
我們將第一層 LSTM 的輸出傳遞到另外的 LSTM 結(jié)構(gòu)。這些結(jié)構(gòu)會(huì)記住一些更高層次的抽象信息;
最后,我們會(huì)根據(jù)堆棧 LSTM 的最后輸出,利用 softmax 函數(shù)來(lái)得到VIX 在接下來(lái)5分鐘內(nèi)上漲 1%,而不下降 0.5%的具體股票;
這個(gè)過(guò)程是如何選擇的?現(xiàn)在是最有趣的部分。我們現(xiàn)在所做的一切都可以被稱為是一個(gè)前向的過(guò)程。當(dāng)我們訓(xùn)練算法時(shí),我們也會(huì)去做以上的那些步驟,然后部署到生產(chǎn)環(huán)境中使用它。現(xiàn)在我們需要討論的是一個(gè)反饋的過(guò)程,這個(gè)反饋是我們需要在算法中進(jìn)行學(xué)習(xí)的過(guò)程。
在訓(xùn)練的過(guò)程中,我們不僅準(zhǔn)備了數(shù)年的歷史訓(xùn)練數(shù)據(jù),還手動(dòng)準(zhǔn)備了一系列的預(yù)測(cè)目標(biāo),0 和 1 都是我們對(duì)歷史數(shù)據(jù)進(jìn)行打的標(biāo)簽。
為了學(xué)習(xí),我們需要將市場(chǎng)數(shù)據(jù)輸入我們的神經(jīng)網(wǎng)絡(luò),并且將網(wǎng)絡(luò)的輸出結(jié)果和我們的標(biāo)簽數(shù)據(jù)進(jìn)行對(duì)比,最后得到一個(gè)損失值,這個(gè)對(duì)比函數(shù)就是一個(gè)損失函數(shù)。在我們的例子中這個(gè)對(duì)比比較簡(jiǎn)單,我們可以將我們的損失函數(shù)設(shè)計(jì)如下:
ERROR = (1/2)*(((precomputed)— (predicted probability))2 )
這就是一個(gè)損失函數(shù)。也就是說(shuō),我們可以去計(jì)算出深度學(xué)習(xí)模型的輸出值與準(zhǔn)確值之間的誤差有多大。根據(jù)這些誤差,我們可以利用一些更新函數(shù)來(lái)更新一整個(gè)網(wǎng)絡(luò)的權(quán)重,從而得到一個(gè)比較好的模型。
該更新過(guò)程會(huì)一直更新到模型的開(kāi)始,所以模型會(huì)不斷的調(diào)整我們的 MarketVectors 向量,以便我們的 MarketVectors 可以表示更多的信息。
LSTM 模型可以選擇去記住哪些內(nèi)容和忘記哪些內(nèi)容,以便模型可以分析那些與我們?nèi)蝿?wù)最相關(guān)的量。
LSTM 模型還可以學(xué)習(xí)數(shù)據(jù)的更加抽象表示,以便模型學(xué)習(xí)數(shù)據(jù)更多的特征。
這一點(diǎn)是非常讓我吃驚的,因?yàn)樯疃葘W(xué)習(xí)可以學(xué)習(xí)那么多負(fù)責(zé)和抽象的東西。我們從前都沒(méi)有接觸過(guò)這種模型。
一些想法對(duì)于這個(gè)項(xiàng)目我還有一些更加深入的想法,一些我可能還會(huì)嘗試的想法,并且我認(rèn)為這些想法對(duì)實(shí)際項(xiàng)目時(shí)有用的。
一般來(lái)說(shuō),特定市場(chǎng)的流動(dòng)性越高資金的利用效率越高。我認(rèn)為這是一個(gè)雞與蛋之前的循環(huán),而市場(chǎng)變得更加的流動(dòng),它能夠吸收更多的資本交易,并且資本收到的損害最小。隨著市場(chǎng)變得更加流動(dòng),更多的資本可以在市場(chǎng)中使用,你會(huì)發(fā)現(xiàn)更多復(fù)雜的交易玩家會(huì)進(jìn)入市場(chǎng)。
一個(gè)快速的推論是,在一個(gè)比較不流動(dòng)的市場(chǎng)中,競(jìng)爭(zhēng)并不是那么復(fù)雜,所以這樣的機(jī)制可能會(huì)帶來(lái)機(jī)會(huì),我會(huì)在這樣的市場(chǎng)嘗試交易。
這些算法的知識(shí)和架構(gòu)對(duì)計(jì)算機(jī)領(lǐng)域是比較陳舊的,但是在股票金融領(lǐng)域的應(yīng)用是一個(gè)全新的應(yīng)用。我們假設(shè)一些頂級(jí)玩家已經(jīng)在使用這些技術(shù)進(jìn)行套利,并且可能已經(jīng)很長(zhǎng)一段時(shí)間了。但是正如我前面提到的,他們可能是在一個(gè)流動(dòng)性很大的市場(chǎng)進(jìn)行套利工作,他們需要很大的市場(chǎng)資金規(guī)模,這樣才能去平攤他們的運(yùn)營(yíng)成本。我認(rèn)為,下一次的市場(chǎng)應(yīng)用會(huì)在那些流動(dòng)性比較小的市場(chǎng),這些市場(chǎng)還沒(méi)有被開(kāi)發(fā)完全,存在很大的套利空間。
雖然我在上面提到的是輸入一個(gè)單通道的數(shù)據(jù)流,但我認(rèn)為一個(gè)更加有效的訓(xùn)練方法是在多個(gè)時(shí)間通道上面對(duì)市場(chǎng)數(shù)據(jù)進(jìn)行訓(xùn)練。也就是說(shuō),我目前采用的是 30 秒采樣一次,我希望網(wǎng)絡(luò)可以解決幾個(gè)小時(shí)的數(shù)據(jù)依賴關(guān)系。
我不知道這個(gè)想法是否有意義,但是我認(rèn)為如果我們可以將計(jì)算成本降低到一定程度,那么我們可以把多個(gè)時(shí)間點(diǎn)進(jìn)行融合訓(xùn)練。這個(gè)融合模型的訓(xùn)練我還在思考中,目前有點(diǎn)困難。
當(dāng)我們?cè)谧匀徽Z(yǔ)言處理中,使用的詞向量模型都是在一個(gè)預(yù)訓(xùn)練模型之上進(jìn)行微調(diào)的。但是在我們的情況下,沒(méi)有一個(gè)預(yù)訓(xùn)練好的市場(chǎng)向量可以使用,也沒(méi)有一個(gè)明確的算法去進(jìn)行訓(xùn)練。
我原來(lái)的想法是使用一個(gè)自動(dòng)編碼器來(lái)進(jìn)行訓(xùn)練,就好像這篇論文,但是端到端的訓(xùn)練好像看起來(lái)更加酷。
更重要的考慮是,端到端的序列模型在機(jī)器翻譯領(lǐng)域已經(jīng)比較成熟了,也就是說(shuō)我們可以把一些文本編碼成一個(gè)向量,并且進(jìn)行解碼。在這種觀點(diǎn)下,我所描述的整個(gè)架構(gòu)本質(zhì)上就是一個(gè)編碼器,但是我還沒(méi)有真正的設(shè)計(jì)出一個(gè)解碼器。
但是,對(duì)于網(wǎng)絡(luò)的第一層,我想設(shè)計(jì)一個(gè)特殊層,即我們需要把輸入的 4000 維度向量降維到一個(gè) 300 維度的向量。通過(guò)這些低維度的向量,我們需要去找到各個(gè)股票之間的一些關(guān)聯(lián)度。
另一個(gè)替代的方向是對(duì)每個(gè) LSTM 輸入一個(gè)數(shù)據(jù),然后編碼成一個(gè)輸出向量。但我認(rèn)為這個(gè)可能是無(wú)效的,因?yàn)楦鱾€(gè)數(shù)據(jù)模型之間的相關(guān)度會(huì)下降很多,并且這種方法會(huì)需要 10 倍的計(jì)算資源,比較浪費(fèi)。但是從另一方面來(lái)說(shuō),這種架構(gòu)可以多個(gè) GPU 進(jìn)行訓(xùn)練,可以提高一點(diǎn)速度。
最近,字符級(jí)的機(jī)器翻譯方面出現(xiàn)了很多的論文。這篇論文帶給了我很多的啟發(fā),因?yàn)檫@篇文章試圖采用 CNN 來(lái)解決長(zhǎng)距離的依賴關(guān)系,而不是 RNN 。我還沒(méi)有深入的去閱讀這篇論文,但是我們可以假想一下,我們把每個(gè)股票當(dāng)做一個(gè)通道(類似于 RGB圖像的三個(gè)通道),然后把每個(gè)通道輸入卷積模型中進(jìn)行卷積操作,從而來(lái)捕捉市場(chǎng)的長(zhǎng)期依賴信息。這種方法跟他們從字符級(jí)別上進(jìn)行語(yǔ)義編碼的方式是相同的。
算法社區(qū)直播課:請(qǐng)點(diǎn)擊這里
作者:chen_h
微信號(hào) & QQ:862251340
簡(jiǎn)書(shū)地址:http://www.jianshu.com/p/f9ca...
CoderPai 是一個(gè)專注于算法實(shí)戰(zhàn)的平臺(tái),從基礎(chǔ)的算法到人工智能算法都有設(shè)計(jì)。如果你對(duì)算法實(shí)戰(zhàn)感興趣,請(qǐng)快快關(guān)注我們吧。加入AI實(shí)戰(zhàn)微信群,AI實(shí)戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長(zhǎng)按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(hào)(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41086.html
摘要:接下來(lái),介紹了使用深度學(xué)習(xí)的計(jì)算機(jī)視覺(jué)系統(tǒng)在農(nóng)業(yè)零售業(yè)服裝量身定制廣告制造等產(chǎn)業(yè)中的應(yīng)用和趨勢(shì),以及在這些產(chǎn)業(yè)中值得關(guān)注的企業(yè)。 嵌入式視覺(jué)聯(lián)盟主編Brian Dipert今天發(fā)布博文,介紹了2016年嵌入式視覺(jué)峰會(huì)(Embedded Vision Summit)中有關(guān)深度學(xué)習(xí)的內(nèi)容:谷歌工程師Pete Warden介紹如何利用TensorFlow框架,開(kāi)發(fā)為Google Translate...
摘要:訓(xùn)練和建模邏輯的算法既是瓶頸也是突破口,深度學(xué)習(xí)的未來(lái)應(yīng)用與發(fā)展值得矚目。自研發(fā)深度學(xué)習(xí)系統(tǒng)薄言豆豆人機(jī)對(duì)話成功率達(dá),是目前比較優(yōu)秀的的中文理解智能系統(tǒng)。 2016正好是人工智能概念誕生60周年。早在1956年,美國(guó)達(dá)特茅斯(Dartmouth)大學(xué)召開(kāi)的學(xué)術(shù)會(huì)議上就提出了人工智能的概念。60年里,科學(xué)技術(shù)的積累使得機(jī)器學(xué)習(xí)、模式識(shí)別、人機(jī)交互這三個(gè)基礎(chǔ)支撐可以得到較為廣泛的應(yīng)用。隨著一個(gè)甲...
摘要:技術(shù)總言這次主要說(shuō)最近發(fā)展的無(wú)監(jiān)督特征學(xué)習(xí)和深入學(xué)習(xí),其對(duì)于時(shí)間序列模型問(wèn)題的評(píng)價(jià)。建模連續(xù)數(shù)據(jù)的傳統(tǒng)方法包括從假定時(shí)間序列模型參數(shù)的估計(jì),如自回歸模型和線性動(dòng)力系統(tǒng),和著名的隱馬爾可夫模型。此外,時(shí)間序列對(duì)時(shí)間變量有明顯依賴性。 技術(shù)總言:這次主要說(shuō)最近發(fā)展的無(wú)監(jiān)督特征學(xué)習(xí)和深入學(xué)習(xí),其對(duì)于時(shí)間序列模型問(wèn)題的評(píng)價(jià)。這些技術(shù)已經(jīng)展現(xiàn)了希望對(duì)于建模靜態(tài)數(shù)據(jù),如計(jì)算機(jī)視覺(jué),把它們應(yīng)用到時(shí)間序列數(shù)...
摘要:月日,騰訊云宣布,推出國(guó)內(nèi)首款高性能異構(gòu)計(jì)算基礎(chǔ)設(shè)施云服務(wù)器,以云服務(wù)方式將大型公司才能長(zhǎng)期支付使用的推廣到更多企業(yè)。此舉讓騰訊云成為國(guó)內(nèi)在云端開(kāi)放計(jì)算服務(wù)的云服務(wù)商。 1月20日,騰訊云宣布,推出國(guó)內(nèi)首款高性能異構(gòu)計(jì)算基礎(chǔ)設(shè)施——FPGA云服務(wù)器,以云服務(wù)方式將大型公司才能長(zhǎng)期支付使用的FPGA推廣到更多企業(yè)。騰訊云官網(wǎng)現(xiàn)已開(kāi)放FPGA使用申請(qǐng)通過(guò)FPGA云服務(wù)器,企業(yè)可以進(jìn)行FPGA硬件...
摘要:百度北京深度學(xué)習(xí)實(shí)驗(yàn)室主任余凱和吳是朋友,就是他力勸吳恩達(dá)加入百度的,余凱說(shuō)實(shí)驗(yàn)室確實(shí)以基礎(chǔ)技術(shù)為目標(biāo)。實(shí)驗(yàn)結(jié)果證實(shí),深度學(xué)習(xí)是開(kāi)發(fā)機(jī)器學(xué)習(xí)軟件的切實(shí)可行的辦法。 百度是中國(guó)網(wǎng)民上網(wǎng)時(shí)的常用工具,它致力于成為影響全球的力量。作為世界上人工智能領(lǐng)域的頂尖研究員,吳恩達(dá)先生能否助其成功挑戰(zhàn)硅谷較大的互聯(lián)網(wǎng)公司?百老匯音樂(lè)廳位于舊金山北海岸,是新古典主義建筑,已擁有95年歷史,歷經(jīng)歲月磨蝕,四周環(huán)...
閱讀 2881·2021-11-22 09:34
閱讀 1211·2021-11-19 09:40
閱讀 3334·2021-10-14 09:43
閱讀 3565·2021-09-23 11:22
閱讀 1601·2021-08-31 09:39
閱讀 880·2019-08-30 15:55
閱讀 1413·2019-08-30 15:54
閱讀 854·2019-08-30 15:53