亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于梯度下降算法的蛻變關(guān)系生成方法

        2020-11-26 00:36:16穆翔宇李蘇吉
        關(guān)鍵詞:程序

        穆翔宇, 范 鈺, 李蘇吉,2, 張 鵬, 劉 磊

        (1. 吉林大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 長(zhǎng)春 130012; 2. 吉林大學(xué) 口腔醫(yī)院, 長(zhǎng)春 130021)

        文獻(xiàn)[1]提出的蛻變測(cè)試方法解決了傳統(tǒng)測(cè)試中的Oracle問題. 蛻變測(cè)試的思想是根據(jù)待測(cè)程序中的某些性質(zhì), 尋找程序不同輸入之間存在的關(guān)系以及這些輸入對(duì)應(yīng)輸出之間存在的關(guān)系, 這種輸入之間的關(guān)系和輸出之間的關(guān)系稱為蛻變關(guān)系. 蛻變測(cè)試?yán)猛懽冴P(guān)系在現(xiàn)有成功測(cè)試用例的基礎(chǔ)上構(gòu)造新的測(cè)試用例, 通過判斷這些測(cè)試用例對(duì)應(yīng)的輸出之間是否滿足相應(yīng)的蛻變關(guān)系判定程序中是否存在錯(cuò)誤. 目前, 蛻變測(cè)試的研究主要分為蛻變測(cè)試技術(shù)的應(yīng)用和改進(jìn)兩類, 蛻變測(cè)試技術(shù)的改進(jìn)又分為原始測(cè)試用例的生成和有效蛻變關(guān)系的獲取兩類.

        在蛻變測(cè)試技術(shù)應(yīng)用方面, Lindvall等[2]將蛻變測(cè)試和基于模型的測(cè)試相結(jié)合, 開發(fā)了自動(dòng)化的NASA DAT系統(tǒng)測(cè)試框架; Sun等[3]設(shè)計(jì)了一種利于蛻變測(cè)試過程規(guī)范化的基于XML的語言表示, 并開發(fā)了一種支持Web服務(wù)應(yīng)用程序的自動(dòng)化測(cè)試工具M(jìn)T4WS, 將其應(yīng)用于Web服務(wù)測(cè)試中; Yan等[4]針對(duì)一個(gè)無測(cè)試預(yù)言的現(xiàn)實(shí)世界中科學(xué)計(jì)算程序提取該程序的蛻變關(guān)系, 并證明了蛻變測(cè)試探測(cè)錯(cuò)誤的有效性; 文獻(xiàn)[5]對(duì)比了錯(cuò)誤捕獲和蛻變測(cè)試在電子表格測(cè)試中的故障檢測(cè)功能, 并發(fā)現(xiàn)兩者存在互補(bǔ)關(guān)系, 因此提倡同時(shí)使用; Saha等[6]將蛻變測(cè)試運(yùn)用到強(qiáng)化學(xué)習(xí)中, 為強(qiáng)化學(xué)習(xí)的監(jiān)督分類器測(cè)試提供了一種新方法; Nakajima[7]將蛻變測(cè)試和機(jī)器學(xué)習(xí)相結(jié)合, 提出了一種適用于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型的新蛻變測(cè)試方法, 數(shù)據(jù)集多樣性考慮了訓(xùn)練結(jié)果對(duì)數(shù)據(jù)集的依賴性, 并提供了一種生成后續(xù)測(cè)試輸入的新方法. 對(duì)于測(cè)試用例生成, Barus等[8]比較了隨機(jī)測(cè)試和自適應(yīng)隨機(jī)測(cè)試作為原始測(cè)試用例選擇策略對(duì)蛻變測(cè)試有效性的影響, 實(shí)驗(yàn)結(jié)果表明, 自適應(yīng)隨機(jī)測(cè)試在提高蛻變測(cè)試的有效性方面優(yōu)于隨機(jī)測(cè)試; Batra等[9]提出了一種使選取原始測(cè)試用例對(duì)應(yīng)路徑最大差異化的遺傳算法; Chen等[10]提出了一種將程序的輸入域劃分為等價(jià)類的思想, 減少了原始測(cè)試用例數(shù)目, 但錯(cuò)誤探測(cè)率仍較高; Murphy等[11]為蛻變測(cè)試的自動(dòng)化應(yīng)用提出了啟發(fā)式測(cè)試預(yù)言和Amsterdam框架; Bluemke等[12]開發(fā)了一種蛻變測(cè)試的工具, 使蛻變測(cè)試的研究更簡(jiǎn)便. 對(duì)于有效蛻變關(guān)系的獲取, Just等[13]研究表明, 根據(jù)系統(tǒng)組件推出的蛻變關(guān)系在錯(cuò)誤探測(cè)方面通常優(yōu)于從整個(gè)系統(tǒng)得到的蛻變關(guān)系; Liu等[14]提出了一種通過組合現(xiàn)有的蛻變關(guān)系構(gòu)建新蛻變關(guān)系的方法, 驗(yàn)證了組合蛻變關(guān)系具有更高的錯(cuò)誤探測(cè)效率和成本效益; Segura等[15]為探測(cè)可變性分析工具中的錯(cuò)誤, 提出了一種基于蛻變關(guān)系集合的迭代蛻變測(cè)試方法; Zhang等[16]為解決面向?qū)ο筌浖y(cè)試中方法序列的Oracle問題, 提出了一種基于代數(shù)規(guī)范的面向?qū)ο筌浖y(cè)試構(gòu)建蛻變關(guān)系的方法, 顯著降低了蛻變關(guān)系的冗余; Lü等[17]提出了一種基于蛻變關(guān)系和粒子群優(yōu)化算法相結(jié)合的測(cè)試用例生成方法, 顯著提高了時(shí)間消耗和實(shí)用性評(píng)估方面的效率.

        蛻變測(cè)試的本質(zhì)是驗(yàn)證程序多組輸入和輸出之間是否滿足蛻變關(guān)系, 因此蛻變關(guān)系是蛻變測(cè)試的核心, 決定了蛻變測(cè)試的能力和效果. 由上述分析可見, 目前關(guān)于蛻變關(guān)系的研究多數(shù)都集中于如何在已知的蛻變關(guān)系集合中選取、 生成更有效的蛻變關(guān)系或蛻變關(guān)系組合方案, 但都有一個(gè)前提條件, 即需預(yù)先構(gòu)造一個(gè)蛻變關(guān)系集合, 而目前該蛻變關(guān)系集合均依賴測(cè)試人員的領(lǐng)域知識(shí)構(gòu)建, 從而限制了蛻變測(cè)試的進(jìn)一步發(fā)展, 增加了蛻變測(cè)試的使用成本. 科學(xué)計(jì)算的蛻變關(guān)系存在多種形式, 但50%以上的蛻變關(guān)系可使用多項(xiàng)式的形式表示[18]. 因此本文研究蛻變關(guān)系的多項(xiàng)式形式, 先用基于機(jī)器學(xué)習(xí)基本原理的梯度下降法對(duì)多項(xiàng)式系數(shù)進(jìn)行求解, 再通過所得多項(xiàng)式自動(dòng)提取所測(cè)程序的蛻變關(guān)系.

        1 蛻變測(cè)試基本原理

        在軟件測(cè)試中, Oracle表示當(dāng)程序正確運(yùn)行時(shí)輸入的測(cè)試用例應(yīng)該對(duì)應(yīng)的輸出結(jié)果. 通常情況下, 獲取合適的Oracle將花費(fèi)較大的代價(jià), 且多數(shù)情形下, 由于待測(cè)程序復(fù)雜度等原因, 所以很難或完全不能得到每個(gè)測(cè)試用例對(duì)應(yīng)的Oracle. 此時(shí), 由于測(cè)試用例作為輸入所得結(jié)果無法判斷其是否正確, 因此無法測(cè)試程序是否存在問題.

        蛻變測(cè)試基本原理是通過檢測(cè)兩個(gè)或兩個(gè)以上輸出結(jié)果之間是否滿足程序中包含的某種關(guān)系(蛻變關(guān)系)檢測(cè)程序中的錯(cuò)誤. 蛻變測(cè)試不同于傳統(tǒng)軟件測(cè)試之處是傳統(tǒng)軟件測(cè)試將關(guān)注點(diǎn)聚焦于出現(xiàn)錯(cuò)誤的測(cè)試用例中, 而蛻變測(cè)試則認(rèn)為正確的測(cè)試用例也包含重要信息. 由于蛻變測(cè)試不依賴于測(cè)試用例產(chǎn)生輸出的正確性, 所以對(duì)于多個(gè)測(cè)試用例, 在未知Oracle的情況下仍可進(jìn)行程序測(cè)試. 蛻變測(cè)試一般由以下4步構(gòu)成:

        1) 根據(jù)合適的測(cè)試用例生成策略生成一個(gè)或多個(gè)測(cè)試用例;

        2) 分析待測(cè)程序的性質(zhì), 生成蛻變關(guān)系;

        3) 根據(jù)原始測(cè)試用例和蛻變關(guān)系生成衍生的蛻變測(cè)試用例集;

        4) 依次檢查每個(gè)原始測(cè)試用例和對(duì)應(yīng)衍生測(cè)試用例的輸出是否滿足蛻變關(guān)系.

        在蛻變測(cè)試中, 蛻變關(guān)系的生成是關(guān)鍵. 蛻變關(guān)系表示待測(cè)函數(shù)或軟件的一些特殊性質(zhì), 這些性質(zhì)對(duì)程序的不同輸入產(chǎn)生影響, 從而檢測(cè)出一部分錯(cuò)誤. 例如, 對(duì)于最大值函數(shù)max{X}, 只要X中元素值不變, 則無論X值的順序如何變化, 最大值函數(shù)max{X}的最終輸出一定不變. 通過該性質(zhì)可檢測(cè)出函數(shù)的部分正確性. 又例如, 計(jì)算sin(x)的程序, 對(duì)于大部分x, sin(x)的具體數(shù)值無法確定, 但根據(jù)相關(guān)數(shù)學(xué)知識(shí)可知sin(x)與sin(x+2kπ)的值相同, sin(x)與-sin(-x)的值相同, 所以只要在相同的輸入下“sin(x)-sin(x+2kπ)=0”與“sin(x)+sin(-x)=0”都成立, 即可證明程序部分正確. 當(dāng)然, 對(duì)于蛻變關(guān)系, 不一定都與“=”相關(guān). 例如, 對(duì)于f(x)=x程序, “若x1>x2, 則f(x1)>f(x2)成立”可作為程序的一條蛻變關(guān)系. 但蛻變關(guān)系的提取依賴于測(cè)試人員的人工推算, 從而要求測(cè)試人員對(duì)測(cè)試程序所在的領(lǐng)域必須深入了解, 且對(duì)于一些復(fù)雜的問題很難推算出合適的蛻變關(guān)系. 為解決該問題, Kanewala等[19]提出了在缺少Oracle的情形下用機(jī)器學(xué)習(xí)的方法發(fā)掘是否一些程序含有某些形式的蛻變關(guān)系. 本文將科學(xué)計(jì)算蛻變關(guān)系的提取和機(jī)器學(xué)習(xí)相結(jié)合, 通過大量的數(shù)據(jù)尋找兩個(gè)或兩個(gè)以上不同參數(shù)的函數(shù)之間存在的數(shù)值關(guān)系.

        2 基于梯度下降法的蛻變關(guān)系獲取

        2.1 蛻變關(guān)系

        蛻變關(guān)系表示軟件輸入變化對(duì)輸出的影響, 即在一定取值范圍內(nèi), 程序的輸入變化和程序輸出變化存在關(guān)系. 在進(jìn)行蛻變測(cè)試時(shí), 如果原始用例和衍生用例之間的關(guān)系不滿足所選擇的蛻變關(guān)系, 則表明這一對(duì)測(cè)試用例發(fā)現(xiàn)了程序中的錯(cuò)誤. 蛻變關(guān)系可用下列公式表示:

        R1(x1,x2)→R2(P[x1],P[x2]),

        (1)

        其中:P[x]表示輸入x在執(zhí)行完程序P后的輸出;R1表示輸入x1與x2之間存在的關(guān)系;R2表示輸出P[x1]與P[x2]之間存在的關(guān)系. 即當(dāng)輸入x1與x2滿足關(guān)系表達(dá)式R1時(shí), 若輸出P[x1]與P[x2]滿足關(guān)系表達(dá)式R2, 則該程序在此蛻變關(guān)系下成立, 否則程序錯(cuò)誤. 在蛻變測(cè)試中, 如何找到合適的R1與R2是測(cè)試的關(guān)鍵.

        2.2 蛻變關(guān)系算法實(shí)現(xiàn)

        在蛻變關(guān)系生成過程中, 如何確定兩個(gè)或多個(gè)相關(guān)聯(lián)的輸入對(duì)相應(yīng)輸出的影響是確定蛻變關(guān)系的關(guān)鍵. 本文采用對(duì)于確定關(guān)系的兩個(gè)或多個(gè)輸入, 通過大量數(shù)據(jù)多次迭代的方式確定不同輸入對(duì)輸出的影響, 即使用機(jī)器學(xué)習(xí)方法進(jìn)行蛻變關(guān)系的獲取. 梯度下降算法作為機(jī)器學(xué)習(xí)中的基本算法之一, 具有大樣本下標(biāo)準(zhǔn)差低、 學(xué)習(xí)效率不會(huì)下降等優(yōu)點(diǎn). 梯度表示函數(shù)中上升最快的方向, 即f(x,y,z)=(?f/?x,?f/dy,?f/?z). 梯度下降算法的基本思想是按照函數(shù)梯度下降的方向求解函數(shù)的極小值, 本文使用梯度下降算法作為基本算法獲取科學(xué)計(jì)算程序中存在的蛻變關(guān)系.

        科學(xué)計(jì)算程序中50%以上的蛻變關(guān)系可用多項(xiàng)式形式表示, 為簡(jiǎn)便, 本文中對(duì)輸入x1與x2之間存在的關(guān)系r1和輸出P[x1]與P[x2]之間存在的關(guān)系r2都作為線性方程的情形. 當(dāng)r1為線性方程時(shí),x和r1(x)之間的關(guān)系可表示為r1(x)=ax+b, 其中a,b均為系數(shù). 當(dāng)r2為線性方程時(shí),P(x)和P(r1(x))之間的關(guān)系可表示為θ1P(x)+θ2P(r1(x))+θ3=0, 其中θ1,θ2,θ3均為系數(shù). 因此, 蛻變關(guān)系可表示為

        θ1P(x)+θ2P(ax+b)+θ3=0.

        (2)

        由于在系數(shù)θ1,θ2,θ3都確定的情形下, 自變量x在任何取值下蛻變關(guān)系(2)都成立, 所以蛻變關(guān)系的損失函數(shù)可表示為

        L(θ)=|θ1P(x)+θ2P(r1(x))+θ3|.

        (3)

        多項(xiàng)式蛻變關(guān)系作為最小化損失函數(shù), 可通過梯度下降法迭代, 使多項(xiàng)式蛻變關(guān)系最小化并得到模型參數(shù)值. 下面給出梯度下降法原理, 設(shè)目標(biāo)函數(shù)為L(zhǎng)(θ),L(θ)關(guān)于參數(shù)θ1的梯度是損失函數(shù)上升最快的方向. 對(duì)于最小化優(yōu)化問題, 只需將參數(shù)沿梯度相反方向前進(jìn)一個(gè)步長(zhǎng), 即可實(shí)現(xiàn)目標(biāo)函數(shù)的下降(步長(zhǎng)又稱為學(xué)習(xí)率). 則參數(shù)更新公式如下:

        θ=θ-αθL(θ),

        (4)

        算法1蛻變關(guān)系梯度下降算法.

        步驟1) 初始化θ(參數(shù)向量) ,α(步長(zhǎng)),r1(x)=ax+b,θ1P(x)+θ2P(r1(x))+θ3=0(蛻變關(guān)系);

        步驟2)L(θ)=|θ1P(x)+θ2P(r1(x))+θ3|(損失函數(shù)),hθ(x)=θ1P(x)+θ2P(r1(x))+θ3;

        步驟3) whileL(θ)收斂 do

        步驟5) end while

        步驟6) 返回θt.

        算法1中, 梯度下降算法根據(jù)函數(shù)下降最快的方向進(jìn)行損失函數(shù)的最小值求解, 通過多次迭代最終實(shí)現(xiàn)假設(shè)函數(shù)hθ(x)和樣本點(diǎn)的擬合. 在梯度下降算法中, 由于損失函數(shù)的復(fù)雜性, 使得到的極值點(diǎn)不一定是損失函數(shù)的最小值點(diǎn), 可能是函數(shù)局部的極值點(diǎn), 但由于科學(xué)計(jì)算中多數(shù)程序的蛻變關(guān)系可用多項(xiàng)式形式表示, 因此本文采用梯度下降法得到的一定是損失函數(shù)的最小值. 由于選取參數(shù)θ的初始值不同, 因此得到的極小值也可能不同. 對(duì)于下降步長(zhǎng)α也需選取合適的值, 若步長(zhǎng)α偏小, 則函數(shù)下降得較慢, 需消耗大量的資源; 若步長(zhǎng)α選取較大, 則可能會(huì)出現(xiàn)無法收斂的情形.

        3 算法優(yōu)化

        算法學(xué)習(xí)率(即步長(zhǎng)α)的取值大小對(duì)梯度下降算法的效率影響較大. 如果學(xué)習(xí)率過高則會(huì)增加損失函數(shù)的波動(dòng)性, 而學(xué)習(xí)率過低則會(huì)降低算法效率, 增加收斂所需時(shí)間. 隨機(jī)梯度下降算法使用固定的學(xué)習(xí)率進(jìn)行參數(shù)更新, 已成為限制算法性能的一個(gè)重要因素. 此外, 隨機(jī)梯度下降算法的固定步長(zhǎng)使算法在每次迭代后對(duì)參數(shù)的更新都有可能會(huì)引起損失函數(shù)數(shù)值的劇烈變化, 很難獲取理想的目標(biāo)參數(shù). 例如, 對(duì)于函數(shù)tanx, 由于該函數(shù)擁有無窮大和無窮小, 且參數(shù)的更新和損失函數(shù)的變化互相影響, 故函數(shù)tanx的損失函數(shù)值將劇烈波動(dòng), 很難選擇合適的參數(shù).

        理論上, 如果數(shù)據(jù)集不密集, 則使用自適應(yīng)學(xué)習(xí)速率的優(yōu)化方法(如Adagrad, RMSprop, Adam)可提高隨機(jī)梯度下降算法效率. 本文使用Adam算法解決該問題, 該算法通過計(jì)算一階矩估計(jì)和二階矩估計(jì)設(shè)計(jì)獨(dú)立的自適應(yīng)學(xué)習(xí)率, 算法描述如下.

        算法2隨機(jī)Adam算法.

        步驟1) 初始化α(步長(zhǎng)),β1,β2(超參數(shù)),θ0(參數(shù)向量),m0=0,v0=0,t=0(時(shí)間步);

        步驟2) whileθt不收斂 do

        步驟3)t=t+1;

        步驟4)gt=θft(θt-1);

        步驟5)mt=β1×vt-1+(1-β1)×gt;

        步驟10) end while

        步驟11) 返回θt.

        算法2計(jì)算了梯度的指數(shù)移動(dòng)均值, 而超參數(shù)β1和β2控制移動(dòng)均值的衰減率. 在給定學(xué)習(xí)率、 超參數(shù)和損失函數(shù)及初始化各參數(shù)后, 算法2對(duì)時(shí)間步+1, 并計(jì)算該時(shí)間步下的梯度, 更新偏差的一階估計(jì)和原始二階估計(jì), 然后再計(jì)算偏差修正的一階矩估計(jì)和偏差修正的二階矩估計(jì), 最后根據(jù)計(jì)算值更新參數(shù)θ直至收斂.

        由于Adam算法在進(jìn)行迭代時(shí)通過計(jì)算一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)的調(diào)節(jié)學(xué)習(xí)率, 所以可較好地解決由隨機(jī)梯度下降算法學(xué)習(xí)率固定導(dǎo)致的一系列問題.

        4 實(shí) 驗(yàn)

        4.1 有效性分析實(shí)驗(yàn)

        本文實(shí)驗(yàn)以sin函數(shù)作為研究對(duì)象, 隨機(jī)梯度下降算法中所有參數(shù)每次更新都使用相同的學(xué)習(xí)率. 由于sin函數(shù)的損失函數(shù)梯度較大, 若采用較大的學(xué)習(xí)率則會(huì)出現(xiàn)收斂緩慢甚至無法收斂的情形, 因此本文將學(xué)習(xí)率取較小值0.000 1. 此外, 由于式(2)在梯度下降求解中可能會(huì)出現(xiàn)θ1,θ2,θ3均為0的情形(特別地, 經(jīng)過實(shí)驗(yàn)證明若不采取措施參數(shù)將會(huì)直接下降到0), 因此可將參數(shù)θ1去除, 去除參數(shù)θ1能完全杜絕參數(shù)歸零的情形, 所以可將式(2)表示為

        (5)

        令m=θ2/θ1,n=θ3/θ1, 則損失函數(shù)可表示為

        L(m,n)=|P(x)+mP(ax+b)+n|.

        (6)

        該方法不僅能解決參數(shù)歸零問題, 且不會(huì)對(duì)蛻變關(guān)系的推斷有影響. 此外, 多數(shù)線性多項(xiàng)式的系數(shù)主要集中在1和2上, 并且若初始值和真實(shí)值較接近時(shí)可減少迭代次數(shù), 故本文實(shí)驗(yàn)中將m,a,n的初始化值局限在[-2,2]內(nèi),b值局限在[-10,10]內(nèi).

        圖1 一次隨機(jī)梯度下降算法的損失函數(shù)Fig.1 Loss function of a stochastic gradient descent algorithm

        將式(6)作為損失函數(shù), 通過Pytorch框架可實(shí)現(xiàn)隨機(jī)梯度下降算法. 實(shí)驗(yàn)成功的標(biāo)準(zhǔn): 在進(jìn)行足夠多次迭代后, 若損失函數(shù)能降為零, 且參數(shù)值也穩(wěn)定在某值, 驗(yàn)證參數(shù)值(代入式(3))符合所測(cè)科學(xué)計(jì)算函數(shù)的規(guī)律, 則可判斷成功推出了蛻變關(guān)系. 對(duì)于每個(gè)科學(xué)計(jì)算函數(shù), 重復(fù)執(zhí)行程序若干次, 并用Tensorboard記錄數(shù)據(jù), 觀察實(shí)驗(yàn)結(jié)果. 本文選取一個(gè)具有代表性的典型特征結(jié)果為例, 圖1為進(jìn)行某次實(shí)驗(yàn)損失函數(shù)每次迭代的數(shù)值結(jié)果. 由圖1可見, 損失函數(shù)在5萬次迭代內(nèi)呈現(xiàn)了高波動(dòng)性, 這是因?yàn)殡S機(jī)梯度下降每個(gè)樣本更新一次梯度, 損失函數(shù)值都會(huì)進(jìn)行頻繁地更新. 損失函數(shù)在前期迭代時(shí)波動(dòng)幅度較大并非完全無益, 其可能有益于挖掘新的及更優(yōu)的局部最小值. 后期波動(dòng)相對(duì)前期逐漸減小, 但也在波動(dòng)中收斂, 多次迭代后損失函數(shù)在波動(dòng)中降為零. 根據(jù)實(shí)驗(yàn)得到此次運(yùn)行梯度下降算法的參數(shù)值為:m=1,a=1,b=π,n=0, 代入到多項(xiàng)式蛻變關(guān)系式為sin(x)+sin(x+π)=0. 通過查閱三角函數(shù)的相關(guān)定理可知, 該多項(xiàng)式蛻變關(guān)系成立. 本文進(jìn)行了大量重復(fù)性實(shí)驗(yàn), 按同樣流程進(jìn)行數(shù)據(jù)記錄和驗(yàn)證, 結(jié)果表明, 隨機(jī)梯度下降算法可對(duì)有多項(xiàng)式蛻變關(guān)系的科學(xué)計(jì)算函數(shù)進(jìn)行蛻變關(guān)系推導(dǎo).

        4.2 三種自適應(yīng)學(xué)習(xí)速率的優(yōu)化方法對(duì)比

        理論上, RMSprop算法是Adagrad算法的一種優(yōu)化, 而Adam算法是在RMSprop算法的基礎(chǔ)上進(jìn)行優(yōu)化, 引入了動(dòng)量和偏差修正. 在類似情形下, RMSprop算法與Adam算法的性能相差較小, 但Adam算法收益于偏差修正, 因此略優(yōu)于RMSprop算法, 因?yàn)锳dam算法在其接近收斂時(shí)梯度變得更稀疏[20]. 本文進(jìn)行多次實(shí)驗(yàn)的結(jié)果表明, Adam算法在自動(dòng)推導(dǎo)蛻變關(guān)系程序的效率最高, 性能最好.

        圖2 三種算法的損失值對(duì)比Fig.2 Comparison of loss values of three algorithms

        圖2為在完全相同的數(shù)據(jù)訓(xùn)練集下, 同一程序中創(chuàng)建三種優(yōu)化器, 隨機(jī)梯度下降算法(A)、 RMSprop算法(B)和Adam算法(C)的損失值對(duì)比結(jié)果. 由圖2可見, 在相同數(shù)據(jù)及相同迭代次數(shù)的條件下, 隨機(jī)梯度下降算法和RMSprop算法無法將損失值降低到零, 即推導(dǎo)蛻變關(guān)系失敗. 而Adam算法卻能在約5 000次迭代時(shí)即擺脫高波動(dòng)的損失值, 將損失值逐漸減低到零, 求出蛻變關(guān)系. 表明Adam算法即使初始化參數(shù)時(shí), 參數(shù)距離最優(yōu)解較遠(yuǎn), 但能克服隨機(jī)梯度下降算法的缺陷, 用更精巧的算法將損失函數(shù)降低至零, 證明了在解決該問題中Adam算法比另外兩種算法性能更優(yōu). 多次運(yùn)行程序后結(jié)果表明, 在求解科學(xué)計(jì)算函數(shù)的多項(xiàng)式蛻變關(guān)系問題中, Adam算法的效果最好.

        4.3 隨機(jī)梯度下降法與Adam算法對(duì)比

        由上述實(shí)驗(yàn)可知, 使用隨機(jī)梯度下降算法的損失函數(shù)平均迭代次數(shù)約5萬次呈現(xiàn)高波動(dòng)性, 在10萬次迭代后開始收斂. 為與隨機(jī)梯度下降算法進(jìn)行對(duì)比, 本文在實(shí)現(xiàn)過程中將Adam算法的初始學(xué)習(xí)率設(shè)為0.001, 與隨機(jī)梯度下降算法相同使用式(3)作為損失函數(shù), 用Pytorch框架構(gòu)造Adam優(yōu)化器進(jìn)行實(shí)現(xiàn). 多次實(shí)驗(yàn)結(jié)果表明, 在多數(shù)情形下初始值為α=0.001,β1=0.9,β2=0.999,ε=1×10-8時(shí)算法性能優(yōu)異.

        圖3 Adam算法損失值示例Fig.3 Example of loss values of Adam algorithm

        圖3為Adam算法損失值示例. 由圖3可見, Adam算法優(yōu)化后程序推導(dǎo)出蛻變關(guān)系所需的迭代次數(shù)極大降低, 多次實(shí)驗(yàn)結(jié)果表明, 使用Adam算法損失值降為零的次數(shù)約為2 000(不排除存在少量迭代次數(shù)遠(yuǎn)大于2 000的情形), 相比于隨機(jī)梯度下降法的迭代次數(shù)性能明顯提升, 因此Adam算法比隨機(jī)梯度下降法收斂的更快且更穩(wěn)定.

        Adam算法比隨機(jī)梯度下降算法效率高的一個(gè)重要原因是其可以修正偏差. 對(duì)于tan函數(shù), 如嘗試用隨機(jī)梯度下降算法推導(dǎo)其蛻變關(guān)系式, 梯度計(jì)算將十分困難, 因?yàn)閠an函數(shù)具有無窮大和無窮小, 高梯度將會(huì)導(dǎo)致?lián)p失函數(shù)大幅度波動(dòng), 如圖4所示. 而Adam算法可很好地解決該問題, 圖5是用Adam算法計(jì)算tan函數(shù)蛻變關(guān)系式的一個(gè)示例, 損失函數(shù)在波動(dòng)中降為零, 此時(shí)對(duì)于優(yōu)化后的蛻變關(guān)系式(4), 對(duì)應(yīng)的參數(shù)為m=1,a=-1,b=π,n=0,代入到多項(xiàng)式蛻變關(guān)系式為tan(x)+tan(-x+π)=0. 經(jīng)過驗(yàn)證, 該組系數(shù)代入tan函數(shù)的蛻變關(guān)系式成立.

        圖4 tan損失函數(shù)波動(dòng)Fig.4 Fluctuations of tan loss function

        圖5 Adam算法對(duì)于tan函數(shù)的損失值Fig.5 Loss values of Adam algorithm for tan function

        盡管Adam算法可求出tan函數(shù)的蛻變關(guān)系式, 但tan函數(shù)易導(dǎo)致?lián)p失函數(shù)高波動(dòng)的特征, 使執(zhí)行Adam算法失敗率也較高. 但相比隨機(jī)梯度下降法無法求解tan函數(shù)的蛻變關(guān)系式, Adam算法已有很大優(yōu)勢(shì).

        綜上所述, 本文將科學(xué)計(jì)算程序的蛻變關(guān)系推導(dǎo)問題視為一個(gè)多項(xiàng)式系數(shù)搜索問題, 用經(jīng)典的機(jī)器學(xué)習(xí)算法----梯度下降法解決該問題, 并使用Adam算法對(duì)梯隊(duì)下降法進(jìn)行優(yōu)化, 取得了較好的效果.

        猜你喜歡
        程序
        給Windows添加程序快速切換欄
        電腦愛好者(2020年6期)2020-05-26 09:27:33
        試論我國(guó)未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        基于VMM的程序行為異常檢測(cè)
        偵查實(shí)驗(yàn)批準(zhǔn)程序初探
        我國(guó)刑事速裁程序的構(gòu)建
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        恐怖犯罪刑事訴訟程序的完善
        一道本久久综合久久鬼色| 无码国产精品色午夜| 一区二区三区国产偷拍| 精品一级一片内射播放| 亚洲色图第一页在线观看视频| 一区二区免费中文字幕| 精品粉嫩av一区二区三区| а天堂中文最新一区二区三区| 久久亚洲sm情趣捆绑调教| 亚洲天堂资源网| 日本成人三级视频网站| 亚洲午夜精品一区二区麻豆av| 无码丰满熟妇一区二区| 91麻豆精品激情在线观看最新| 日本国主产一区二区三区在线观看| 亚洲免费福利视频网站| 无码熟妇人妻av在线网站| 国产人妻人伦精品1国产盗摄| 欧美三级乱人伦电影| 欧美在线观看www| 天堂免费av在线播放| 18禁黄污吃奶免费看网站| 白嫩少妇激情无码| 亚洲国产av剧一区二区三区| 亚洲视频免费在线观看| 日本特黄特色特爽大片| 亚洲熟女乱色一区二区三区| 日本少妇按摩高潮玩弄| 日本国主产一区二区三区在线观看 | 欧美日韩一区二区三区色综合| 日本人妻少妇精品视频专区| 国产三级精品三级在线专区2| 大屁股人妻女教师撅着屁股| 东京热久久综合久久88| 性一交一乱一乱一视频亚洲熟妇| 久久99精品久久只有精品| 亚洲av永久无码精品漫画| 久久aⅴ人妻少妇嫩草影院| 国产免费播放一区二区| 黄片午夜免费观看视频国产| 色视频网站一区二区三区|