最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

量化交易軟件:赫茲量化中輕松學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)自適應(yīng)優(yōu)化方法

2023-10-16 14:10 作者:大牛啊呢  | 我要投稿

在之前的文章中,我們采用了不同類型的神經(jīng)元,但我們始終利用隨機(jī)梯度下降法來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。 該方法可稱為基本方法,在實(shí)踐中經(jīng)常會(huì)用到其變體。 不過,還有許多其他的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法。 今天,我提議研究自適應(yīng)學(xué)習(xí)方法。 這一族方法可在神經(jīng)網(wǎng)絡(luò)訓(xùn)練期間改變神經(jīng)元學(xué)習(xí)速率。


1. 自適應(yīng)優(yōu)化方法的顯著特征

您知道并非所有饋入神經(jīng)網(wǎng)絡(luò)的特征值都會(huì)對最終結(jié)果產(chǎn)生相同的影響。 一些參數(shù)可能會(huì)包含很多噪聲,且比其他變化更頻繁,振幅也有所不同。 其他參數(shù)的樣本可能包含稀有值,當(dāng)采用固定學(xué)習(xí)速率訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),這些稀有值可能不會(huì)被注意到。 之前研究過的隨機(jī)梯度下降方法的缺點(diǎn)之一是在此類樣本上無法使用優(yōu)化機(jī)制。 結(jié)果就是,學(xué)習(xí)過程可能在局部最小值處停止。 可采用自適應(yīng)方法訓(xùn)練神經(jīng)網(wǎng)絡(luò)來解決該問題。 這些方法能夠在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中動(dòng)態(tài)改變學(xué)習(xí)率。 這樣的方法及其變體有很多數(shù)量。 我們來研究其中最受歡迎的。

1.1. 自適應(yīng)梯度方法(AdaGrad)

自適應(yīng)梯度法于 2011 年提出。 它是隨機(jī)梯度下降法的一種變體。 經(jīng)由比較這些方法的數(shù)學(xué)公式,我們輕易注意到一個(gè)不同之處:對于所有之前的訓(xùn)練迭代,AdaGrad 的學(xué)習(xí)率除以梯度平方和的平方根。 這種方式可降低頻繁更新參數(shù)的學(xué)習(xí)率。


而該方法的主要缺點(diǎn)來自其公式:梯度的平方和只能增長,因此學(xué)習(xí)率趨于 0。 這最終會(huì)導(dǎo)致訓(xùn)練停止。

利用這種方法需要額外的計(jì)算和內(nèi)存分配,以便保存每個(gè)神經(jīng)元的梯度平方和。

實(shí)現(xiàn)

研究過理論方面之后,我們便可以進(jìn)行實(shí)際實(shí)現(xiàn)了。 我建議采用作者提供的默認(rèn)超參數(shù)來實(shí)現(xiàn) Adam 方法。 進(jìn)而,您可以嘗試其他超參數(shù)變體。

早前建立的神經(jīng)網(wǎng)絡(luò)采用隨機(jī)梯度下降法進(jìn)行訓(xùn)練,為此我們已經(jīng)實(shí)現(xiàn)了反向傳播算法。 現(xiàn)有的反向傳播功能可用來實(shí)現(xiàn) Adam 方法。 我們只需要實(shí)現(xiàn)權(quán)重更新算法。 這個(gè)功能需經(jīng)由 updateInputWeights 方法,它是在每個(gè)神經(jīng)元類里實(shí)現(xiàn)的。 當(dāng)然,我們不會(huì)刪除之前創(chuàng)建的隨機(jī)梯度下降算法。 我們來創(chuàng)建一個(gè)替代算法,令您可以選擇要采用的訓(xùn)練方法。

2.1. 構(gòu)建 OpenCL 內(nèi)核

研究 CNeuronBaseOCL 類的 Adam 方法實(shí)現(xiàn)。 首先,創(chuàng)建 UpdateWeightsAdam 內(nèi)核實(shí)現(xiàn) OpenCL 方法。 指向以下矩陣的指針則會(huì)通過參數(shù)傳遞給內(nèi)核:

__kernel void UpdateWeightsAdam(__global double *matrix_w, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__global double *matrix_g, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__global double *matrix_i, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__global double *matrix_m, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?__global double *matrix_v, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int inputs, double l, double b1, double b2)

另外,在內(nèi)核參數(shù)中,傳遞輸入數(shù)據(jù)數(shù)組的大小和 Adam 算法的超參數(shù)。

在內(nèi)核伊始,獲取在兩維的流序列號,其分別指示當(dāng)前層和先前層的神經(jīng)元數(shù)量。 使用接收到的編號,判斷緩沖區(qū)中已處理元素的初始編號。 請注意,第二維中的結(jié)果流編號應(yīng)乘以 “4”。 這是因?yàn)闉榱藴p少流數(shù)量和程序執(zhí)行的總時(shí)間,我們將利用含有 4 個(gè)元素的向量計(jì)算。

?{ ? int i=get_global_id(0); ? int j=get_global_id(1); ? int wi=i*(inputs+1)+j*4;

判斷已處理元素在數(shù)據(jù)緩沖區(qū)中的位置后,聲明矢量變量,并用相應(yīng)的數(shù)值填充它們。 利用先前講述的方法,并在向量中將缺失數(shù)據(jù)填充零值。

? double4 m, v, weight, inp; ? switch(inputs-j*4) ? ? { ? ? ?case 0: ? ? ? ?inp=(double4)(1,0,0,0); ? ? ? ?weight=(double4)(matrix_w[wi],0,0,0); ? ? ? ?m=(double4)(matrix_m[wi],0,0,0); ? ? ? ?v=(double4)(matrix_v[wi],0,0,0); ? ? ? ?break; ? ? ?case 1: ? ? ? ?inp=(double4)(matrix_i[j],1,0,0); ? ? ? ?weight=(double4)(matrix_w[wi],matrix_w[wi+1],0,0); ? ? ? ?m=(double4)(matrix_m[wi],matrix_m[wi+1],0,0); ? ? ? ?v=(double4)(matrix_v[wi],matrix_v[wi+1],0,0); ? ? ? ?break; ? ? ?case 2: ? ? ? ?inp=(double4)(matrix_i[j],matrix_i[j+1],1,0); ? ? ? ?weight=(double4)(matrix_w[wi],matrix_w[wi+1],matrix_w[wi+2],0); ? ? ? ?m=(double4)(matrix_m[wi],matrix_m[wi+1],matrix_m[wi+2],0); ? ? ? ?v=(double4)(matrix_v[wi],matrix_v[wi+1],matrix_v[wi+2],0); ? ? ? ?break; ? ? ?case 3: ? ? ? ?inp=(double4)(matrix_i[j],matrix_i[j+1],matrix_i[j+2],1); ? ? ? ?weight=(double4)(matrix_w[wi],matrix_w[wi+1],matrix_w[wi+2],matrix_w[wi+3]); ? ? ? ?m=(double4)(matrix_m[wi],matrix_m[wi+1],matrix_m[wi+2],matrix_m[wi+3]); ? ? ? ?v=(double4)(matrix_v[wi],matrix_v[wi+1],matrix_v[wi+2],matrix_v[wi+3]); ? ? ? ?break; ? ? ?default: ? ? ? ?inp=(double4)(matrix_i[j],matrix_i[j+1],matrix_i[j+2],matrix_i[j+3]); ? ? ? ?weight=(double4)(matrix_w[wi],matrix_w[wi+1],matrix_w[wi+2],matrix_w[wi+3]); ? ? ? ?m=(double4)(matrix_m[wi],matrix_m[wi+1],matrix_m[wi+2],matrix_m[wi+3]); ? ? ? ?v=(double4)(matrix_v[wi],matrix_v[wi+1],matrix_v[wi+2],matrix_v[wi+3]); ? ? ? ?break;


量化交易軟件:赫茲量化中輕松學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)自適應(yīng)優(yōu)化方法的評論 (共 條)

分享到微博請遵守國家法律
佛冈县| 眉山市| 舟山市| 宜兰县| 中超| 厦门市| 龙泉市| 镇江市| 江西省| 凌海市| 武义县| 淮安市| 泾川县| 区。| 南靖县| 上林县| 苗栗市| 阜阳市| 贺兰县| 黎平县| 华亭县| 贞丰县| 河北省| 班玛县| 壤塘县| 专栏| 从江县| 无极县| 白山市| 色达县| 海门市| 定日县| 桃江县| 巴南区| 北安市| 宿州市| 突泉县| 旅游| 浦江县| 恩施市| 晋宁县|