欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)了一個(gè)強(qiáng)強(qiáng)聯(lián)合型模型來預(yù)測股票價(jià)格,為什么這么形容?

電子工程師 ? 來源:lp ? 2019-04-22 11:38 ? 次閱讀

【導(dǎo)語】用深度學(xué)習(xí)預(yù)測股票價(jià)格不是一個(gè)新話題,隨著技術(shù)的不斷發(fā)展,大家一直在不斷嘗試新技術(shù)。這次教程中,作者設(shè)計(jì)了一個(gè)強(qiáng)強(qiáng)聯(lián)合型模型來預(yù)測股票價(jià)格,為什么這么形容?作者設(shè)計(jì)了一個(gè) GAN 模型,其生成網(wǎng)絡(luò)為 LSTM 模型用來預(yù)測時(shí)間序列數(shù)據(jù)、CNN 模型作判別網(wǎng)絡(luò),用 BERT 模型作為情緒分析模型。帶有高斯過程的貝葉斯優(yōu)化和深度強(qiáng)化學(xué)習(xí)方法來獲得 GAN 的超參數(shù)。為什么創(chuàng)建這樣的組合?都將在下面的內(nèi)容中為大家進(jìn)行一一解答。

這篇教程的篇幅很長,為了讓大家能對重要技術(shù)內(nèi)容一目了然,作者在開始加入了層級清晰的目錄,主要從【背景】、【數(shù)據(jù)特征】、【GAN 模型架構(gòu)】、【超參數(shù)優(yōu)化】等幾大方面進(jìn)行全面講解。

下面營長對其中涉及的技術(shù)細(xì)節(jié)進(jìn)行了編譯:

背景

在今天的任務(wù)中,預(yù)測的是高盛公司(本文中會簡稱為 GS)的股票變化趨勢,使用 2010 年 1 月 1 日至 2018 年 12 月 31 日的日收盤價(jià)作為訓(xùn)練(七年)和測試(兩年)數(shù)據(jù)。

成功訓(xùn)練一個(gè) GAN 最棘手的部分是獲得正確的超參數(shù)。為此,作者使用 Bayesian optimisation(帶有高斯過程的貝葉斯優(yōu)化)和用于決定何時(shí)以及如何改變 GAN 的超參數(shù)的深層強(qiáng)化學(xué)習(xí)(DRL),在創(chuàng)建強(qiáng)化學(xué)習(xí)過程中,將使用一些最新技術(shù),如 RAINBOW 和 PPO。

此外,在模型中還使用許多不同類型的輸入數(shù)據(jù)。隨著股票的歷史交易數(shù)據(jù)和技術(shù)指標(biāo),設(shè)計(jì)了一些技術(shù)方法,如使用 NLP 中的 BERT 來創(chuàng)建情緒分析模型(作為基本面分析的來源),以及用傅立葉變換(Fourier transforms)提取總體趨勢方向、識別其他高級特征的棧式自動編碼器( Stacked autoencoder);采用特征投資組合尋找相關(guān)資產(chǎn);采用 ARIMA 方法進(jìn)行股票函數(shù)近似。實(shí)際上,這些技術(shù)都是為了盡可能多的獲取關(guān)于股票的信息、模式、依賴關(guān)系等等。

開發(fā)環(huán)境和框架選擇 MXNet 和其高級 API(Gluon)創(chuàng)建所有的神經(jīng)網(wǎng)絡(luò),并在多個(gè) GPU 上進(jìn)行訓(xùn)練。

圖:完整體系結(jié)構(gòu)概覽

通過上面的技術(shù)背景介紹,相信大家已經(jīng)感覺到想準(zhǔn)確預(yù)測股市是一項(xiàng)非常復(fù)雜的任務(wù),影響股票變化的事件、條件或因素等實(shí)在是太多了。所以,想更好的了解這些先決條件,還需要先做幾個(gè)重要的假設(shè):(1)市場不是 100% 的隨機(jī);(2)歷史重復(fù);(3)市場遵循人們的理性行為;(4)市場是“完美的”。

數(shù)據(jù)

首先,要了解什么因素會影響 GS 的股票價(jià)格波動,需要包含盡可能多的信息(從不同的方面和角度)。將使用 1585 天的日數(shù)據(jù)來訓(xùn)練各種算法(70% 的數(shù)據(jù)),并預(yù)測另外 680 天的結(jié)果(測試數(shù)據(jù))。然后,將預(yù)測結(jié)果與測試數(shù)據(jù)進(jìn)行比較。每種類型的數(shù)據(jù)(亦稱為特征)將在后面的部分中詳細(xì)解釋。

簡而言之,將使用的特征有:

a.相關(guān)資產(chǎn):涉及商品、外匯、指數(shù)、固定收益證券等各類資產(chǎn)數(shù)據(jù);影響高盛公司股票價(jià)格趨勢的外部因素又有很多,并且很復(fù)雜,包括競爭對手、客戶、全球經(jīng)濟(jì)、地緣政治形勢、財(cái)政和貨幣政策等等,這些因素還會相互產(chǎn)生影響。選擇合適的相關(guān)資產(chǎn)是非常重要的:

(1)首先是和 GS 相似的公司,如將摩根大通(JPMorgan Chase)和摩根士丹利(Morgan Stanley)等加入數(shù)據(jù)集。

(2)作為一家投資銀行,高盛依賴于全球經(jīng)濟(jì),需要關(guān)注全球經(jīng)濟(jì)指數(shù)和 libor 利率。

(3)每日波動指數(shù)(VIX)。

(4)綜合指數(shù),如 NASDAQ 和 NYSE(美國)、FTSE 100(英國)、日經(jīng)指數(shù) 225(日本)、恒生指數(shù)和 BSE Sensex(APAC)指數(shù)。

(5)貨幣,全球貿(mào)易多次反映在貨幣流動中,使用一籃子貨幣(如美元-日元、英鎊-美元等)作為特征。

總的來說,在數(shù)據(jù)集中還有 72 個(gè)其他資產(chǎn)(每個(gè)資產(chǎn)的每日價(jià)格)。

b.技術(shù)指標(biāo):許多投資人都會關(guān)注技術(shù)指標(biāo),在這里,把最受歡迎的指標(biāo)作為獨(dú)立特征,包括 7 天和 21 天波動平均值、指數(shù)波動平均、Momentum、MACD 等 12項(xiàng)技術(shù)指標(biāo)。

def get_technical_indicators(dataset): # Create 7 and 21 days Moving Average dataset['ma7'] = dataset['price'].rolling(window=7).mean() dataset['ma21'] = dataset['price'].rolling(window=21).mean() # Create MACD dataset['26ema'] = pd.ewma(dataset['price'], span=26) dataset['12ema'] = pd.ewma(dataset['price'], span=12) dataset['MACD'] = (dataset['12ema']-dataset['26ema']) # Create Bollinger Bands dataset['20sd'] = pd.stats.moments.rolling_std(dataset['price'],20) dataset['upper_band'] = dataset['ma21'] + (dataset['20sd']*2) dataset['lower_band'] = dataset['ma21'] - (dataset['20sd']*2) # Create Exponential moving average dataset['ema'] = dataset['price'].ewm(com=0.5).mean() # Create Momentum dataset['momentum'] = dataset['price']-1 return datasetdataset_TI_df = get_technical_indicators(dataset_ex_df[['GS']])dataset_TI_df.head()

c.基本面分析:無論股票漲跌,這都是一個(gè)非常重要的數(shù)據(jù)。分析時(shí)會用到兩個(gè)特征:公司業(yè)績報(bào)告和新聞將引導(dǎo)的一些趨勢,因此通過分析新聞來準(zhǔn)確預(yù)測市場的情緒也是一項(xiàng)非常重要的工作,所以這次的方法中,將使用 BERT 來構(gòu)建情緒分析模型,提取股票新聞中的情緒傾向。最后采用 sigmoid 歸一化,結(jié)果介于 0 到 1 之間,(0 表示負(fù)面情緒,1 表示正面情緒),每一天都會創(chuàng)建一個(gè)平均每日分?jǐn)?shù)作為一個(gè)特征添加。

使用的是 MXNet 中 Gluon NLP 庫中所提供的經(jīng)過預(yù)訓(xùn)練的 BERT 模型,大家可以嘗試一下。此前我們也為大家介紹過簡單易上手的 Gluon,詳情可參考營長親自上手的教程。

d.傅里葉變換:利用每日收盤價(jià),創(chuàng)建傅立葉變換,以獲得幾個(gè)長期和短期趨勢。使用這些變換消除大量的噪聲,獲得真實(shí)股票波動的近似值。有了趨勢近似,可以幫助 LSTM 網(wǎng)絡(luò)更準(zhǔn)確地選擇其預(yù)測趨勢。

data_FT = dataset_ex_df[['Date', 'GS']]close_fft = np.fft.fft(np.asarray(data_FT['GS'].tolist()))fft_df = pd.DataFrame({'fft':close_fft})fft_df['absolute'] = fft_df['fft'].apply(lambda x: np.abs(x))fft_df['angle'] = fft_df['fft'].apply(lambda x: np.angle(x))plt.figure(figsize=(14, 7), dpi=100)fft_list = np.asarray(fft_df['fft'].tolist())for num_ in [3, 6, 9, 100]: fft_list_m10= np.copy(fft_list); fft_list_m10[num_:-num_]=0 plt.plot(np.fft.ifft(fft_list_m10), label='Fourier transform with {} components'.format(num_))plt.plot(data_FT['GS'], label='Real')plt.xlabel('Days')plt.ylabel('USD')plt.title('Figure 3: Goldman Sachs (close) stock prices & Fourier transforms')plt.legend()plt.show()

圖:高盛股票的傅里葉變換

e.ARIMA:這是預(yù)測時(shí)間序列數(shù)據(jù)未來值的最流行技術(shù)之一。

frompandasimportread_csvfrom pandas import datetimefrom statsmodels.tsa.arima_model import ARIMAfrom sklearn.metrics import mean_squared_errorX = series.valuessize = int(len(X) * 0.66)train, test = X[0:size], X[size:len(X)]history = [x for x in train]predictions = list()for t in range(len(test)): model = ARIMA(history, order=(5,1,0)) model_fit = model.fit(disp=0) output = model_fit.forecast() yhat = output[0] predictions.append(yhat) obs = test[t] history.append(obs)error = mean_squared_error(test, predictions)print('Test MSE: %.3f' % error)Test MSE: 10.151# Plot the predicted (from ARIMA) and real pricesplt.figure(figsize=(12, 6), dpi=100)plt.plot(test, label='Real')plt.plot(predictions, color='red', label='Predicted')plt.xlabel('Days')plt.ylabel('USD')plt.title('Figure 5: ARIMA model on GS stock')plt.legend()plt.show

f.Stacked autoencoders?(棧式自動編碼器):上面提到的一些特征是研究人員經(jīng)過幾十年的研究發(fā)現(xiàn)的,但是還是會忽視一些隱藏的關(guān)聯(lián)特征,由此,Stacked autoencoders? 就可以解決這個(gè)問題,通過學(xué)習(xí)每個(gè)隱藏層,發(fā)現(xiàn)更多新特征(可能有些是我們無法發(fā)現(xiàn),理解的)。這次沒有把 RELU 作為激活函數(shù),而是使用了 GELU,也可以用于 BERT 模型中。至于為什么選擇 GELU,大家可以在原文中看到作者給出的和 RELU 對比的實(shí)例。

g.深度無監(jiān)督學(xué)習(xí):用于期權(quán)定價(jià)中的異常檢測,將再使用一個(gè)特征:每天都會增加高盛股票90天看漲期權(quán)的價(jià)格。期權(quán)定價(jià)本身結(jié)合了很多數(shù)據(jù)。期權(quán)合約的價(jià)格取決于股票的未來價(jià)值(分析師也試圖預(yù)測價(jià)格,以便為看漲期權(quán)得出最準(zhǔn)確的價(jià)格)。使用深度無監(jiān)督學(xué)習(xí)(自組織映射),嘗試發(fā)現(xiàn)出現(xiàn)異常的每日價(jià)格。異常(如價(jià)格的劇烈變化)可能表明出現(xiàn)了一個(gè)事件,這有助于LSTM了解整體股票模式。

from utils import *import timeimport numpy as npfrom mxnet import nd, autograd, gluonfrom mxnet.gluon import nn, rnnimport mxnet as mximport datetimeimportseabornassnsimport matplotlib.pyplot as plt%matplotlib inlinefrom sklearn.decomposition import PCAimport mathfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.metrics import mean_squared_errorfrom sklearn.preprocessing import StandardScalerimport xgboost as xgbfrom sklearn.metrics import accuracy_scoreimport warningswarnings.filterwarnings("ignore")context = mx.cpu(); model_ctx=mx.cpu()mx.random.seed(1719)Note: The purpose of this section (3. The Data) is to show the data preprocessing and to give rationale for using different sources of data, hence I will only use a subset of the full data (that is used for training).def parser(x): return datetime.datetime.strptime(x,'%Y-%m-%d')dataset_ex_df = pd.read_csv('data/panel_data_close.csv', header=0, parse_dates=[0], date_parser=parser)dataset_ex_df[['Date','GS']].

接下來,有了這么多特征,還需要執(zhí)行幾個(gè)重要步驟:

h.對數(shù)據(jù)的“質(zhì)量”進(jìn)行統(tǒng)計(jì)檢查:確保數(shù)據(jù)質(zhì)量對模型來說非常重要,因此要執(zhí)行以下幾個(gè)簡單的檢驗(yàn),如異方差、多重共線性、Serial correlation 等。

i.確定特征重要性:采用 XGBoost 算法。這么多的特征,必須考慮是否所有這些都真正地指示了 GS 股票波動方向。例如,數(shù)據(jù)集中包括其變化可能意味著經(jīng)濟(jì)變化的 LIBOR,而這又可能暗示 GS 股票將會發(fā)生波動,因此需要對此預(yù)測進(jìn)行測試,在眾多的測試方法中,本教程中選擇了 XGBoost,其在分類和回歸問題上都提供了很好的結(jié)果。

defget_feature_importance_data(data_income): data = data_income.copy() y = data['price'] X = data.iloc[:, 1:] train_samples = int(X.shape[0] * 0.65) X_train = X.iloc[:train_samples] X_test = X.iloc[train_samples:] y_train = y.iloc[:train_samples] y_test = y.iloc[train_samples:] return (X_train, y_train), (X_test, y_test)# Get training and test data(X_train_FI, y_train_FI), (X_test_FI, y_test_FI) = get_feature_importance_data(dataset_TI_df)regressor = xgb.XGBRegressor(gamma=0.0,n_estimators=150,base_score=0.7,colsample_bytree=1,learning_rate=0.05)xgbModel = regressor.fit(X_train_FI,y_train_FI, \ eval_set = [(X_train_FI, y_train_FI), (X_test_FI, y_test_FI)], \ verbose=False)eval_result = regressor.evals_result()training_rounds=range(len(eval_result['validation_0']['rmse']))

最后一步,使用主成分分析(PCA)創(chuàng)建特征組合,以減少自動編碼器生成特征的維數(shù)。在自動編碼器中創(chuàng)建了 112 個(gè)特征,不過高維特征對我們的價(jià)值更大,所以在這 112 個(gè)特征的基礎(chǔ)上通過 PCA 創(chuàng)建高維的特征組合,減少數(shù)據(jù)維度。不過,這也是我們提出的實(shí)驗(yàn)性方法。

plt.figure(figsize=(15, 5))plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=.5, hspace=None)ranges_ = (-10, 3, .25)plt.subplot(1, 2, 1)plt.plot([i for i in np.arange(*ranges_)], [relu(i) for i in np.arange(*ranges_)], label='ReLU', marker='.')plt.plot([i for i in np.arange(*ranges_)], [gelu(i) for i in np.arange(*ranges_)], label='GELU')plt.hlines(0, -10, 3, colors='gray', linestyles='--', label='0')plt.title('Figure 7: GELU as an activation function for autoencoders')plt.ylabel('f(x) for GELU and ReLU')plt.xlabel('x')plt.legend()plt.subplot(1, 2, 2)plt.plot([i for i in np.arange(*ranges_)], [lrelu(i) for i in np.arange(*ranges_)], label='Leaky ReLU')plt.hlines(0, -10, 3, colors='gray', linestyles='--', label='0')plt.ylabel('f(x) for Leaky ReLU')plt.xlabel('x')plt.title('Figure 8: LeakyReLU')plt.legend()plt.sho

讓我們看一下過去 9 年的股價(jià)變化。虛線表示訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)之間的分割線。

plt.figure(figsize=(14, 5), dpi=100)plt.plot(dataset_ex_df['Date'], dataset_ex_df['GS'], label='Goldman Sachs stock')plt.vlines(datetime.date(2016,4, 20), 0, 270, linestyles='--', colors='gray', label='Train/Test data cut-off')plt.xlabel('Date')plt.ylabel('USD')plt.title('Figure 2: Goldman Sachs stock price')plt.legend()plt.show()

圖:過去9年高盛股價(jià)的波動

num_training_days = int(dataset_ex_df.shape[0]*.7)print('Number of training days: {}. Number of test days: {}.'.format(num_training_days, \ dataset_ex_df.shape[0]-num_training_days))Numberoftrainingdays:1585.Numberoftestdays:680.

生成對抗性網(wǎng)絡(luò)(GAN)

圖:GAN 架構(gòu)

1、為什么采用GAN進(jìn)行股市預(yù)測?

GAN 最多被應(yīng)用在創(chuàng)作逼真的圖像、畫作和視頻剪輯等。對預(yù)測時(shí)間序列數(shù)據(jù)的應(yīng)用并不多。但這兩者的思想都是類似的。我們希望預(yù)測未來的股票價(jià)格,GS 的股票波動和行為應(yīng)該大致相同(除非開始以完全不同的方式運(yùn)作,或者經(jīng)濟(jì)急劇變化)。因此,希望“生成”的數(shù)據(jù)與已經(jīng)擁有的歷史交易數(shù)據(jù)分布相似,當(dāng)然不是完全相同。在這個(gè)例子中將使用 LSTM 作為時(shí)間序列生成模型,CNN 作為判別模型。

2、Metropolis-Hastings GAN 和 Wasserstein GAN

(1)Metropolis-Hastings GAN:與傳統(tǒng)的 GAN 相比,Uber 團(tuán)隊(duì)最近提出一種新改進(jìn)的 GAN 模型——Metropolis-Hastings GAN (MHGAN),它有點(diǎn)類似于谷歌和加州大學(xué)伯克利分校提出的Discriminator Rejection Sampling。通常情況下,在訓(xùn)練完GAN之后就不再使用 D 了。然而,MHGAN 和 DRS 試圖使用 D 來選擇由 G 生成的接近真實(shí)的樣本。

(2)Wasserstein GAN:訓(xùn)練 GAN 是相當(dāng)困難的。模型可能永遠(yuǎn)不會收斂,模式崩潰也很容易發(fā)生。,通過 Wasserstein GAN 嘗試解決這個(gè)問題。KL 距離和 JS 距離是兩種常用的分布,而 WGAN 使用的是 Wasserstein distanc。

3、生成模型:單層RNN

(1)LSTM 還是 GRU?

關(guān)于 RNN、LSTM 等模型的基礎(chǔ)介紹這里不多做贅述,主要聚焦在 RNN 在時(shí)間序列數(shù)據(jù)上的應(yīng)用,因?yàn)樗鼈兛梢愿櫵幸郧暗臄?shù)據(jù)點(diǎn),并且可以捕獲經(jīng)過時(shí)間發(fā)展的模式??梢酝ㄟ^裁剪解 RNN 梯度消失或梯度爆炸問題。

在精度方面,LSTM 和 GRU 的結(jié)果相差不多,但是 GRU 使用的訓(xùn)練參數(shù)要比 LSTM 少,計(jì)算強(qiáng)度也要小。

(2)LSTM 體系結(jié)構(gòu)

LSTM架構(gòu)非常簡單:一個(gè)LSTM層,包含112個(gè)輸入單元(數(shù)據(jù)集中有112個(gè)特征)和500個(gè)隱藏單元;一個(gè)以每日股價(jià)為輸出的 Dense 層;采用 Xavier 初始化,使用 L1 損失函數(shù)

在下面的代碼中,采用adam作為優(yōu)化器,學(xué)習(xí)率為 0.01。

gan_num_features = dataset_total_df.shape[1]sequence_length = 17class RNNModel(gluon.Block): def __init__(self, num_embed, num_hidden, num_layers, bidirectional=False, \ sequence_length=sequence_length, **kwargs): super(RNNModel, self).__init__(**kwargs) self.num_hidden = num_hidden with self.name_scope(): self.rnn = rnn.LSTM(num_hidden, num_layers, input_size=num_embed, \ bidirectional=bidirectional, layout='TNC') self.decoder = nn.Dense(1, in_units=num_hidden) def forward(self, inputs, hidden): output, hidden = self.rnn(inputs, hidden) decoded = self.decoder(output.reshape((-1, self.num_hidden))) return decoded, hidden def begin_state(self, *args, **kwargs): return self.rnn.begin_state(*args, **kwargs)lstm_model = RNNModel(num_embed=gan_num_features, num_hidden=500, num_layers=1)lstm_model.collect_params().initialize(mx.init.Xavier(), ctx=mx.cpu())trainer = gluon.Trainer(lstm_model.collect_params(), 'adam', {'learning_rate': .01})loss=glu

(3)學(xué)習(xí)率調(diào)度器

學(xué)習(xí)率是非常重要的參數(shù)之一,每個(gè)優(yōu)化器設(shè)置學(xué)習(xí)率,如 SGD、Adam 或 RMSProp 在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)至關(guān)重要,因?yàn)樗瓤刂浦W(wǎng)絡(luò)的收斂速度,又控制著網(wǎng)絡(luò)的最終性能,接下來就要確定每個(gè)階段的學(xué)習(xí)率。

classTriangularSchedule(): def __init__(self, min_lr, max_lr, cycle_length, inc_fraction=0.5): self.min_lr = min_lr self.max_lr = max_lr self.cycle_length = cycle_length self.inc_fraction = inc_fraction def __call__(self, iteration): if iteration <= self.cycle_length*self.inc_fraction: unit_cycle = iteration * 1 / (self.cycle_length * self.inc_fraction) elif iteration <= self.cycle_length: unit_cycle = (self.cycle_length - iteration) * 1 / (self.cycle_length * (1 - self.inc_fraction)) else: unit_cycle = 0 adjusted_cycle = (unit_cycle * (self.max_lr - self.min_lr)) + self.min_lr return adjusted_cycleclass CyclicalSchedule(): def __init__(self, schedule_class, cycle_length, cycle_length_decay=1, cycle_magnitude_decay=1, **kwargs): self.schedule_class = schedule_class self.length = cycle_length self.length_decay = cycle_length_decay self.magnitude_decay = cycle_magnitude_decay self.kwargs = kwargs def __call__(self, iteration): cycle_idx = 0 cycle_length = self.length idx = self.length while idx <= iteration: cycle_length = math.ceil(cycle_length * self.length_decay) cycle_idx += 1 idx += cycle_length cycle_offset = iteration - idx + cycle_length schedule = self.schedule_class(cycle_length=cycle_length,**self.kwargs)????????return?schedule(cycle_offset)?*self.magnitude_decay**cycle_idx

(4)防止過擬合與偏差-方差權(quán)衡

防止過擬合,注意總損失也是要在訓(xùn)練模型中非常重要的一個(gè)問題。不僅在生成器中的 LSTM 模型,判別器中的 CNN 模型、自動編碼器中都使用了幾種防止過擬合的技術(shù):

a.確保數(shù)據(jù)質(zhì)量

b.正則化,或權(quán)重懲罰:最常用的兩種正則化技術(shù)是L1 和 L2 正則法。L1對離散值更有魯棒性,當(dāng)數(shù)據(jù)稀疏時(shí)使用,可得到特征重要性。因此,在股票價(jià)格預(yù)測這個(gè)應(yīng)用案例中將使用 L1 正則法。

c.Dropout。Dropout層隨機(jī)刪除隱藏層中的節(jié)點(diǎn)。

d.Dense-sparse-dense training

e.提前停止.

(5)權(quán)衡偏差-方差

建立復(fù)雜神經(jīng)網(wǎng)絡(luò)時(shí),另一個(gè)重要的考慮因素是偏差-方差權(quán)衡。訓(xùn)練網(wǎng)絡(luò)的誤差基本上是偏差、方差和不可約誤差 σ(噪聲和隨機(jī)性引起的誤差)的函數(shù)。

最簡單的權(quán)衡公式是:誤差=偏差^2+方差+σ.

a.偏差(Bias):偏差衡量一個(gè)經(jīng)過訓(xùn)練的(訓(xùn)練數(shù)據(jù)集)算法對未見數(shù)據(jù)的概括能力。高偏差(欠擬合)意味著模型在隱藏?cái)?shù)據(jù)上不能很好地工作。

b.方差(Variance):方差衡量模型對數(shù)據(jù)集變化的敏感性。高方差意味著過擬合。

4、 一維 CNN 判別模型

(1)為何采用CNN作為判別模型?

CNN 網(wǎng)絡(luò)在提取隱藏特征等工作上具有優(yōu)勢,那如何應(yīng)用于這個(gè)任務(wù)中?大家不妨嘗試一下,數(shù)據(jù)點(diǎn)行程小趨勢,小趨勢行程大趨勢,趨勢反之形成模式,而 CNN 在此用檢測特征的能力來提取 GS 股價(jià)趨勢中的模式信息。

圖:本文提出的 CNN 模型的體系結(jié)構(gòu)。

超參數(shù)優(yōu)化

(1)跟蹤和優(yōu)化的超參數(shù)是:

batch_size:LSTM 和 CNN 的 Batch 大小

cnn_lr:CNN 的學(xué)習(xí)率

strides:CNN 的跨步卷積數(shù)

lrelu_alpha:GAN 中 LeakyReLU 的 Alpha 值

batchnorm_momentum:CNN Batch 正則化的 momentum

padding:CNN 中的 Padding

kernel_size:1 CNN 的內(nèi)核大小

dropout:LSTM 中的 Dropout 層

filters:過濾器的初始數(shù)目

epoch = 200

(2)超參數(shù)優(yōu)化

經(jīng)過 200 次 GAN 訓(xùn)練后,將記錄 MAE(LSTM、GG 中的誤差函數(shù))并作為獎勵(lì)值傳遞給強(qiáng)化學(xué)習(xí)(RL)模型,以決定是否用同一組超參數(shù)來改變保持訓(xùn)練的超參數(shù),如果RL決定更新超參數(shù),它將調(diào)用 Bayes 優(yōu)化庫。

(3)超參數(shù)優(yōu)化中的強(qiáng)化學(xué)習(xí)

為什么在超參數(shù)優(yōu)化中使用強(qiáng)化學(xué)習(xí)?股票市場一直在變化。即使能夠訓(xùn)練 GAN 和 LSTM 來創(chuàng)造非常精確的結(jié)果,結(jié)果也只能在一定的時(shí)間內(nèi)有效。也就是說,我們需要不斷優(yōu)化整個(gè)過程。為了優(yōu)化這一過程,可以添加或刪除特征,或改進(jìn)深度學(xué)習(xí)模型。改進(jìn)模型的最重要的方法之一就是通過超參數(shù)。一旦找到了一組特定的超參數(shù),就需要決定何時(shí)修改它們,以及何時(shí)使用已經(jīng)知道的集合(探索或利用)。此外,股票市場代表了一個(gè)依賴于數(shù)百萬參數(shù)的連續(xù)空間。

(4)強(qiáng)化學(xué)習(xí)理論

使用無模型的 RL 算法,原因很明顯,我們不知道整個(gè)環(huán)境,因此沒有關(guān)于環(huán)境如何工作的定義模型(如果存在,就不需要預(yù)測股票價(jià)格的變化)。使用兩個(gè)細(xì)分的無模型RL:策略優(yōu)化(Policy Optimization)和 Q-Learning。構(gòu)建 RL 算法的一個(gè)關(guān)鍵方面是精確設(shè)置獎勵(lì)。它必須捕捉環(huán)境的所有方面以及代理與環(huán)境的交互。

a.Q-Learning:一種基于Q-Learning的非策略深度強(qiáng)化學(xué)習(xí)算法,它將7種算法結(jié)合在一起:DQN、Double Q Learning(雙QL)、Prioritized replay、決斗網(wǎng)絡(luò)(Dueling networks)、多步學(xué)習(xí)、分布式RL、噪聲網(wǎng)絡(luò)(Noisy Nets)。在Q-Learning中,學(xué)習(xí)價(jià)值從某一狀態(tài)采取行動。Q 值采取行動后的預(yù)期回報(bào)。

b.策略優(yōu)化:這里采用近端策略優(yōu)化(Proximal Policy Optimization, PPO),在決策優(yōu)化中,學(xué)習(xí)從某一狀態(tài)采取的行動。(如果使用諸如Actor/Critic之類的方法,也會了解處于給定狀態(tài)的價(jià)值。

(5)貝葉斯優(yōu)化

使用貝葉斯優(yōu)化,不采用網(wǎng)格搜索,因?yàn)榭赡苄枰荛L時(shí)間才能找到超參數(shù)的最佳組合。

圖:貝葉斯超參數(shù)優(yōu)化的高斯過程

5、結(jié)果

最后,使用測試數(shù)據(jù)作為不同階段的輸入,LSTM 的輸出與實(shí)際股價(jià)進(jìn)行比較:

(1)繪制第一次訓(xùn)練之后的結(jié)果

(2)繪制 50 次訓(xùn)練后的結(jié)果。

(3)繪制 200 次訓(xùn)練后的結(jié)果。

RL 運(yùn)行了 10 eposide ,本文定義一個(gè) eposide 是 GAN 完整訓(xùn)練 200 次后,下圖是得到的最終的結(jié)果。

總結(jié)

可見,作者在把各路強(qiáng)模型聯(lián)合打造的結(jié)果還是非常優(yōu)秀的。不過作者還嘗試創(chuàng)建一個(gè) RL 環(huán)境,用于測試決定何時(shí)以及如何進(jìn)行交易的交易算法。GAN 的輸出將是此環(huán)境中的一個(gè)參數(shù),雖然這些都不能完全做到預(yù)測的作用,但是在實(shí)際任務(wù)中不斷嘗試新技術(shù)還是很有意義的,期待作者后續(xù)工作可以帶來更好的結(jié)果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • GaN
    GaN
    +關(guān)注

    關(guān)注

    19

    文章

    1966

    瀏覽量

    74340
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5517

    瀏覽量

    121601
  • 強(qiáng)化學(xué)習(xí)

    關(guān)注

    4

    文章

    268

    瀏覽量

    11307

原文標(biāo)題:開什么玩笑?股票價(jià)格如何經(jīng)得起AI的推敲?| 技術(shù)頭條

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【「時(shí)間序列與機(jī)器學(xué)習(xí)」閱讀體驗(yàn)】時(shí)間序列的信息提取

    。 時(shí)間序列的單調(diào)性理論是數(shù)學(xué)求導(dǎo)。下面是使用EWMA分析股票價(jià)格變動,以決定買入還是賣出。通過仿真數(shù)據(jù),這種指數(shù)移動平均的技術(shù)剔除了短期波動,有助看清股票整體趨勢。 通過對本章學(xué)習(xí),對時(shí)間序列的研究目的、方法與特征有較全
    發(fā)表于 08-17 21:12

    基于網(wǎng)絡(luò)共識的股票價(jià)格行為數(shù)據(jù)挖掘(英文

    線索并存儲到平臺數(shù)據(jù)庫。圍繞融合兩方面數(shù)據(jù)進(jìn)行股票價(jià)格行為數(shù)據(jù)挖掘,完成了體系架構(gòu)、數(shù)據(jù)結(jié)構(gòu)和分析支持組件的設(shè)計(jì),實(shí)現(xiàn)股票價(jià)格行為數(shù)據(jù)挖掘原型系統(tǒng)。【關(guān)鍵詞】:數(shù)據(jù)挖掘;;網(wǎng)絡(luò)共識
    發(fā)表于 04-24 09:56

    炒股福利:樹莓派股票查詢庫(Python)

    本帖最后由 348081236 于 2016-1-6 14:20 編輯 本教程介紹如何通過樹莓派用Yahoo Finance API建個(gè)股票查詢庫,獲?。ù蟛糠郑?shí)時(shí)股票價(jià)格。第
    發(fā)表于 01-06 14:20

    阿里云MaxCompute(大數(shù)據(jù))公開數(shù)據(jù)集---帶你玩轉(zhuǎn)人工智能

    摘要: 目前阿里云大數(shù)據(jù)產(chǎn)品已經(jīng)免費(fèi)向全部用戶開放了多種公用數(shù)據(jù)集。開放的數(shù)據(jù)類別包括:股票價(jià)格數(shù)據(jù),房產(chǎn)信息,影視及其票房數(shù)據(jù)。點(diǎn)此查看原文:http://click.aliyun.com/m
    發(fā)表于 01-23 17:16

    模型預(yù)測控制+邏輯控制

    模型預(yù)測控制(MPC)+邏輯控制(相平面分區(qū)控制)–matlab例程介紹MATLAB-模型模糊神經(jīng)網(wǎng)絡(luò)預(yù)測控制demo(訓(xùn)練數(shù)據(jù)用):鏈接:目錄構(gòu)建思想matlab simulink框
    發(fā)表于 08-17 07:09

    使用keras搭建神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)基于深度學(xué)習(xí)算法的股票價(jià)格預(yù)測

    本文使用keras搭建神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)基于深度學(xué)習(xí)算法的股票價(jià)格預(yù)測。本文使用的數(shù)據(jù)來源為tushare,個(gè)免費(fèi)開源接口;且只取開票價(jià)進(jìn)行
    發(fā)表于 02-08 06:40

    基于混沌時(shí)間序列分析的股票價(jià)格預(yù)測

    根據(jù)股票市場是非線性動力系統(tǒng)的假設(shè),利用混沌理論對混沌時(shí)間序列的分析方法,提出了股票價(jià)格預(yù)測方法。同時(shí)利用重構(gòu)相空間的嵌入維數(shù)和延遲時(shí)間分別確定經(jīng)向基函數(shù)模
    發(fā)表于 02-18 14:07 ?40次下載

    基于CART和相似股的股票價(jià)格走勢預(yù)測算法研究

    目前預(yù)測股票價(jià)格大多都基于單支股票的歷史價(jià)格數(shù)據(jù),并試圖找出其股價(jià)變化規(guī)律,訓(xùn)練出可預(yù)測價(jià)格
    發(fā)表于 11-28 14:25 ?0次下載
    基于CART和相似股的<b class='flag-5'>股票價(jià)格</b>走勢<b class='flag-5'>預(yù)測</b>算法研究

    基于支持向量回歸的交易模型的穩(wěn)健性策略

    多樣化的方法。首先,介紹基于支持向量回歸技術(shù)的算法交易模型;然后,基于常用指標(biāo),構(gòu)造若干導(dǎo)出指標(biāo),用于股票價(jià)格的短期預(yù)測。這些指標(biāo),刻畫了近期價(jià)格
    發(fā)表于 12-05 15:30 ?0次下載
    基于支持向量回歸的交易<b class='flag-5'>模型</b>的穩(wěn)健性策略

    高通或?qū)⒎艞壊①彾髦瞧郑?b class='flag-5'>一旦破局,高通將進(jìn)行300億美元的股票庫藏股計(jì)劃

    7 月 25 日最后期限前,如果中國相關(guān)監(jiān)管單位仍不批準(zhǔn)行動芯片大廠高通(Qualcomm)并購競爭對手恩智浦(NXP),高通可能放棄并購,外媒對此表示,旦高通并購恩智浦破局,高通預(yù)計(jì)實(shí)施金額高達(dá) 200 億到 300 億美元的庫藏股計(jì)劃,以穩(wěn)定股票價(jià)格。
    的頭像 發(fā)表于 07-20 15:04 ?2354次閱讀

    Oracles正在為物質(zhì)世界和區(qū)塊鏈之間架起座橋梁

    Oracle對期貨合約交易平臺(即預(yù)測市場)特別有用,而預(yù)測市場本質(zhì)上是種DU BO形式。體育比賽的結(jié)果、政治選舉、天氣、股票價(jià)格、比特幣的價(jià)格
    發(fā)表于 02-26 13:47 ?654次閱讀

    利用人工智能,成功預(yù)測2020年2月18日當(dāng)前的市場崩潰

    Vantagepoint交易員有洞察力,可以避免股票價(jià)格突然下跌,因?yàn)?b class='flag-5'>股票價(jià)格 在2月最后周下跌了超過 2.5萬億美元,抹去了許多交易員辛辛苦苦賺的資本。
    的頭像 發(fā)表于 03-01 17:58 ?2128次閱讀

    基于LSTM和遺傳算法的股票價(jià)格漲跌預(yù)測模型

    如何準(zhǔn)確地進(jìn)行股票預(yù)測直是量仳金融領(lǐng)域的重要問題。長短期記憶細(xì)胞神經(jīng)網(wǎng)絡(luò)(LSTM)的岀現(xiàn)較好地解決股票
    發(fā)表于 06-17 15:04 ?20次下載

    LSTM GRU Bidirectional-LSTM股票預(yù)測

    本文使用keras搭建神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)基于深度學(xué)習(xí)算法的股票價(jià)格預(yù)測。本文使用的數(shù)據(jù)來源為tushare,個(gè)免費(fèi)開源接口;且只取開票價(jià)進(jìn)行
    發(fā)表于 12-05 09:06 ?11次下載
    LSTM GRU Bidirectional-LSTM<b class='flag-5'>股票</b><b class='flag-5'>預(yù)測</b>

    python數(shù)據(jù)挖掘案例

    Python數(shù)據(jù)挖掘的強(qiáng)大功能。 、金融領(lǐng)域 1.股票價(jià)格預(yù)測 股票市場是個(gè)復(fù)雜的系統(tǒng),而
    的頭像 發(fā)表于 08-17 16:29 ?1748次閱讀