商婷婷 陳亞盛
【摘要】隨著中國(guó)對(duì)外開(kāi)放進(jìn)程的加快,高科技產(chǎn)業(yè)迎來(lái)了更加嚴(yán)峻的挑戰(zhàn),只注重新產(chǎn)品開(kāi)發(fā)或技術(shù)開(kāi)發(fā)已不足以滿(mǎn)足企業(yè)發(fā)展的需要。企業(yè)應(yīng)該關(guān)注其項(xiàng)目成本管理能力,尤其需要選擇合理的方法預(yù)測(cè)項(xiàng)目成本。本文通過(guò)探究作業(yè)成本法和機(jī)器學(xué)習(xí)各自的特點(diǎn),嘗試將兩者結(jié)合起來(lái),確定一種符合企業(yè)項(xiàng)目成本特點(diǎn)的預(yù)測(cè)方法。通過(guò)本文案例公司的數(shù)據(jù)測(cè)試,作業(yè)成本法和BP神經(jīng)網(wǎng)絡(luò)結(jié)合構(gòu)建的成本分析模型誤差控制在4%以?xún)?nèi),表明此法在成本預(yù)測(cè)方面有一定的適用性,可用于高科技企業(yè)項(xiàng)目成本預(yù)測(cè)。
關(guān)鍵詞 作業(yè)成本法 成本動(dòng)因 BP神經(jīng)網(wǎng)絡(luò) 項(xiàng)目成本預(yù)測(cè)
一、引言
過(guò)去三十多年,中國(guó)高科技產(chǎn)業(yè)飛速發(fā)展,不斷帶動(dòng)經(jīng)濟(jì)朝著更健康的方向發(fā)展,成為中國(guó)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整的中堅(jiān)力量。但是,高科技產(chǎn)業(yè)在成本管理方面面臨著更加嚴(yán)峻的挑戰(zhàn),以往傳統(tǒng)的項(xiàng)目成本管理模式單調(diào)滯后,通常只有事后成本的計(jì)算,不利于成本的預(yù)算和差異分析。
隨著高科技產(chǎn)業(yè)發(fā)展進(jìn)入新階段,上述成本管理方法已經(jīng)不符合高科技公司的需要。因此,必須更換成本管理方法,引入新的管理辦法——作業(yè)成本法(activity based costing)。作業(yè)成本法是根據(jù)事物的實(shí)質(zhì)特征,運(yùn)用數(shù)理統(tǒng)計(jì)方法,進(jìn)行統(tǒng)計(jì)、排列和分析,抓住主要矛盾,從而有區(qū)別地采取管理方式的一種定量管理方法。這種方法適用于不能依靠單一因素對(duì)復(fù)雜生產(chǎn)過(guò)程進(jìn)行成本分配的高科技產(chǎn)業(yè)。本文嘗試用此法作為成本分配的基礎(chǔ)進(jìn)行成本預(yù)測(cè)。
人工智能普遍應(yīng)用于各行各業(yè),會(huì)計(jì)行業(yè)也在不斷探索人工智能的潛力。本研究嘗試將監(jiān)督式學(xué)習(xí)運(yùn)用到企業(yè)的項(xiàng)目成本預(yù)測(cè)中,讓計(jì)算機(jī)根據(jù)公司全成本系統(tǒng)中記錄的以往成本和作業(yè)信息的標(biāo)準(zhǔn)答案進(jìn)行學(xué)習(xí),通過(guò)比較測(cè)試集的計(jì)算機(jī)預(yù)測(cè)結(jié)果與標(biāo)準(zhǔn)答案之間的差異,不斷調(diào)整算法模型的參數(shù),使得計(jì)算機(jī)的預(yù)測(cè)結(jié)果逐漸提高準(zhǔn)確率,從而靠近標(biāo)準(zhǔn)答案,以實(shí)現(xiàn)未來(lái)對(duì)新項(xiàng)目成本的預(yù)測(cè)。根據(jù)預(yù)測(cè)結(jié)果可以進(jìn)行后續(xù)的項(xiàng)目選擇和定價(jià),實(shí)現(xiàn)人工智能在公司管理會(huì)計(jì)運(yùn)用上的突破。
在實(shí)踐中,公司可以在考慮成本效益原則的基礎(chǔ)上,盡可能多地建立作業(yè)成本庫(kù),從而使模型的預(yù)測(cè)更加精準(zhǔn),節(jié)省公司人力財(cái)務(wù)成本,帶來(lái)預(yù)期收益。
二、案例描述
(一)案例企業(yè)背景
河北某科技有限公司2005年成立,注冊(cè)資本200萬(wàn)元,主要經(jīng)營(yíng)天線自動(dòng)測(cè)量設(shè)備、雷達(dá)遙控遙測(cè)設(shè)備、天線系列產(chǎn)品、軟件研發(fā)、射頻網(wǎng)絡(luò)應(yīng)用產(chǎn)品的設(shè)計(jì)、生產(chǎn)和服務(wù),被河北省科學(xué)技術(shù)廳認(rèn)定為河北省高新技術(shù)企業(yè)。對(duì)一個(gè)正在發(fā)展中的高科技公司來(lái)說(shuō),準(zhǔn)確預(yù)估項(xiàng)目成本從而選擇出正確的可帶來(lái)預(yù)期收益的項(xiàng)目,并進(jìn)行準(zhǔn)確定價(jià)是公司能否實(shí)現(xiàn)資金流通,從而得到良性發(fā)展的關(guān)鍵。本文嘗試運(yùn)用作業(yè)成本法先將所選公司的項(xiàng)目成本劃分成若干成本作業(yè)庫(kù),找出成本動(dòng)因,再利用BP神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)歷史數(shù)據(jù)的基礎(chǔ)上對(duì)未來(lái)項(xiàng)目成本進(jìn)行預(yù)測(cè),使得案例公司的項(xiàng)目成本預(yù)測(cè)更加準(zhǔn)確。
(二)原成本核算存在的問(wèn)題
案例公司所采用的傳統(tǒng)的成本核算方法將制造費(fèi)用按照每種產(chǎn)品所耗用的直接人工(或機(jī)器小時(shí))分配到產(chǎn)品中去。這種方法的隱含假設(shè)是制造費(fèi)用的消耗與生產(chǎn)的各產(chǎn)品的產(chǎn)量成正比,因而成本分配是否正確就取決于制造費(fèi)用是否真正與產(chǎn)量相關(guān)。如果各產(chǎn)品消耗的制造費(fèi)用恰好與其產(chǎn)量成正比,那么傳統(tǒng)的成本核算方法既正確又簡(jiǎn)便。但實(shí)際上,產(chǎn)品的差異性很大,導(dǎo)致其生產(chǎn)工藝的差異化,不同的產(chǎn)品型號(hào)、不同的采購(gòu)需求、不同的技術(shù)人員需求等都會(huì)導(dǎo)致產(chǎn)品以不同于產(chǎn)量的比例來(lái)消耗制造費(fèi)用。因此,生產(chǎn)工藝復(fù)雜而產(chǎn)量較小的產(chǎn)品可能分配到較少的成本,生產(chǎn)工藝簡(jiǎn)單卻有較大產(chǎn)量的產(chǎn)品可能分配到大部分的成本。這會(huì)導(dǎo)致成本的分配與實(shí)質(zhì)嚴(yán)重不符,不僅會(huì)影響產(chǎn)品定價(jià),還會(huì)影響管理者進(jìn)行正確的經(jīng)營(yíng)決策。
(三)作業(yè)成本法和BP神經(jīng)網(wǎng)絡(luò)結(jié)合的適用性
1.作業(yè)成本法在高科技企業(yè)的適用性
作業(yè)成本法在高科技企業(yè)計(jì)算成本時(shí)得到的結(jié)果更加準(zhǔn)確。作業(yè)成本法在核算成本時(shí)能夠關(guān)注成本產(chǎn)生的本質(zhì)原因,從根源入手,對(duì)高科技企業(yè)這種成本誘因繁雜的產(chǎn)業(yè)更為適用,計(jì)算出的成本更加符合實(shí)際。同時(shí),高科技企業(yè)的飛速發(fā)展伴隨著工藝流程的不斷更新變化,作業(yè)成本法可以更好地反映這種變化。而傳統(tǒng)成本法無(wú)法辨別。
作業(yè)成本法更適合高科技企業(yè)的要求。經(jīng)濟(jì)的發(fā)展對(duì)高科技企業(yè)提出了更嚴(yán)格的要求,僅僅依靠產(chǎn)品更新?lián)Q代來(lái)促進(jìn)企業(yè)發(fā)展是不夠的,企業(yè)還需關(guān)注成本管理。而對(duì)于高科技企業(yè)來(lái)說(shuō),工藝流程是十分重要的。與此對(duì)應(yīng)的是間接成本的控制,作業(yè)成本法在核算間接成本方面的優(yōu)勢(shì)較大,更適合其成本管理的需求。同時(shí),企業(yè)可以利用準(zhǔn)確的計(jì)算結(jié)果來(lái)進(jìn)行生產(chǎn)決策或制定定價(jià)戰(zhàn)略。
作業(yè)成本法可以有效利用企業(yè)搜集整理的大部分信息。隨著會(huì)計(jì)電算化和信息系統(tǒng)的不斷發(fā)展,高科技企業(yè)在信息系統(tǒng)的使用上更具優(yōu)勢(shì)。傳統(tǒng)成本計(jì)算方法只能簡(jiǎn)單利用產(chǎn)量等最基本的信息。相比而言,作業(yè)成本法因?yàn)槌杀緞?dòng)因的存在,可以利用更多的存儲(chǔ)于信息系統(tǒng)中的信息。
作業(yè)成本法拓寬了成本核算范圍。作業(yè)成本法以作業(yè)為基礎(chǔ)進(jìn)行成本核算,可以將傳統(tǒng)成本法中歸屬于固定成本的成本納入核算范圍,使項(xiàng)目的成本核算成為真正的全成本核算,對(duì)項(xiàng)目的盈利分析或是定價(jià)戰(zhàn)略更有利。
2.BP神經(jīng)網(wǎng)絡(luò)與作業(yè)成本法結(jié)合的可行性
BP(back propagation)神經(jīng)網(wǎng)絡(luò)適用于非線性關(guān)系,符合成本動(dòng)因與成本之間的關(guān)系。傳統(tǒng)的成本計(jì)算方法認(rèn)為,產(chǎn)量等分配標(biāo)準(zhǔn)與成本是呈線性變化的,普通的作業(yè)成本法在利用成本動(dòng)因分配成本時(shí)也隱含了一個(gè)假設(shè):成本動(dòng)因與相應(yīng)的作業(yè)成本之間是線性關(guān)系,但實(shí)際上引發(fā)成本發(fā)生的動(dòng)因不一定與成本呈線性變化。神經(jīng)網(wǎng)絡(luò)具有的非線性映射特點(diǎn)可以彌補(bǔ)這一不足,探索成本動(dòng)因與成本之間實(shí)際的關(guān)系,更加接近成本發(fā)生的本質(zhì)。
BP神經(jīng)網(wǎng)絡(luò)無(wú)須每個(gè)作業(yè)成本庫(kù)的成本數(shù)據(jù),可以簡(jiǎn)化計(jì)算并減少差錯(cuò)。在利用BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行預(yù)測(cè)時(shí),只需要輸入成本動(dòng)因數(shù)據(jù),并不需要相對(duì)應(yīng)的每個(gè)作業(yè)成本庫(kù)的成本數(shù)據(jù),輸出的成本直接是間接總成本。這種模式使得企業(yè)在運(yùn)用作業(yè)成本法時(shí),省略了將成本根據(jù)資源動(dòng)因歸集到作業(yè)成本庫(kù)的步驟,不僅簡(jiǎn)化了計(jì)算,而且減少了分配資源時(shí)可能產(chǎn)生的錯(cuò)誤分配。另一方面,如前文提到的管理/支持類(lèi)費(fèi)用,需要根據(jù)資源動(dòng)因歸集到各作業(yè)成本庫(kù),計(jì)算復(fù)雜,但是利用BP神經(jīng)網(wǎng)絡(luò)就可簡(jiǎn)化這一步驟。
BP神經(jīng)網(wǎng)絡(luò)不需要成本動(dòng)因和作業(yè)成本庫(kù)之間的一一對(duì)應(yīng)關(guān)系,更符合成本發(fā)生的本質(zhì)。在實(shí)際情況中,某一作業(yè)成本庫(kù)的成本動(dòng)因不僅對(duì)這一作業(yè)成本庫(kù)起作用,也可能與其他作業(yè)成本庫(kù)有關(guān)。BP神經(jīng)網(wǎng)絡(luò)考慮到這一點(diǎn),直接研究所有成本動(dòng)因和總成本的關(guān)系,可以將這一問(wèn)題的影響最小化。另外,利用BP神經(jīng)網(wǎng)絡(luò)可以選取盡可能多的成本動(dòng)因,甚至與成本有關(guān)的任何數(shù)據(jù)都可以作為輸入變量,使模型更加接近實(shí)際的成本發(fā)生規(guī)律。
BP神經(jīng)網(wǎng)絡(luò)可以大大簡(jiǎn)化作業(yè)成本法的計(jì)算。神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)標(biāo)準(zhǔn)數(shù)據(jù)后,可以記憶誤差最小的模型,之后進(jìn)行成本預(yù)測(cè)時(shí)此模型可以直接使用。只要未來(lái)成本發(fā)生規(guī)律與總結(jié)出的規(guī)律沒(méi)有差別,模型一直適用。預(yù)測(cè)過(guò)程不再需要人工的大量計(jì)算,這不僅減少了工作量,而且降低了差錯(cuò)率。
(四)新成本核算與預(yù)測(cè)模型的搭建
1.作業(yè)成本法的實(shí)施
公司進(jìn)行成本核算時(shí)以工程項(xiàng)目為核算對(duì)象,工程項(xiàng)目的全流程如圖1所示,圖中所示人工工時(shí)僅為假設(shè)。
在選擇作業(yè)成本庫(kù)時(shí)可以根據(jù)工程項(xiàng)目的流程來(lái)劃分,因此在進(jìn)行作業(yè)成本歸集時(shí)也按照每一流程進(jìn)行歸集。
成本動(dòng)因的選擇至關(guān)重要,關(guān)系到成本計(jì)算的準(zhǔn)確性。在選擇成本動(dòng)因時(shí),既要考慮所選誘因與該作業(yè)成本的相關(guān)性,又要考慮成本效益原則。如果選擇的一個(gè)最準(zhǔn)確的成本動(dòng)因需要耗費(fèi)大量的資源來(lái)進(jìn)行信息收集,則反而會(huì)增加成本核算所花費(fèi)的成本,并不利于企業(yè)的成本管理。因此,在選擇公司成本動(dòng)因時(shí),應(yīng)始終考慮四個(gè)原則:重要性原則、相關(guān)性原則、充分性原則和成本效益原則。
本文所選公司項(xiàng)目的主要生產(chǎn)流程可以作為作業(yè)成本庫(kù),各類(lèi)資源可以根據(jù)資源動(dòng)因歸集到作業(yè)成本庫(kù)中,再根據(jù)作業(yè)成本庫(kù)的特征選擇合適的成本動(dòng)因,如表1所示。
產(chǎn)品設(shè)計(jì)作業(yè)包括總體方案設(shè)計(jì)、機(jī)械結(jié)構(gòu)設(shè)計(jì)、伺服電器設(shè)計(jì)、通信信道設(shè)計(jì)及軟件設(shè)計(jì)等;在設(shè)計(jì)過(guò)程中,包括技術(shù)指標(biāo)和客戶(hù)溝通及設(shè)計(jì)方案評(píng)審等。這些設(shè)計(jì)工作都是由高級(jí)工程師完成的。所以,根據(jù)相關(guān)性原則,此過(guò)程的工程師人員工時(shí)是最相關(guān)的成本動(dòng)因。另外,工程師的工時(shí)有詳細(xì)的記錄。此信息收集較為簡(jiǎn)便,符合成本效益原則。
制造作業(yè)指產(chǎn)品主要生產(chǎn)作業(yè),主要包括機(jī)械加工和電器設(shè)備部件安裝等。本文案例公司生產(chǎn)高精度航空產(chǎn)品,制造過(guò)程主要由工人操控設(shè)備或直接由人工完成,成本的發(fā)生與工人人員工時(shí)直接相關(guān),并且人員工時(shí)是最重要的成本動(dòng)因,因此選擇制造過(guò)程中工人的人員工時(shí)作為此作業(yè)的成本動(dòng)因。
安裝作業(yè)是指系統(tǒng)設(shè)備總體安裝,如天線座架安裝、伺服驅(qū)動(dòng)控制單元上架等。與制造作業(yè)類(lèi)似,安裝作業(yè)由工人作業(yè)。該過(guò)程人員工時(shí)是最直接的成本動(dòng)因。
調(diào)試作業(yè)包括分機(jī)調(diào)試和系統(tǒng)總體調(diào)試。該作業(yè)需要工人利用儀器設(shè)備完成工作,主要工作仍由工人進(jìn)行,儀器設(shè)備是輔助。因此,該過(guò)程人員工時(shí)是最重要最相關(guān)的成本動(dòng)因。
檢驗(yàn)作業(yè)包括分機(jī)檢驗(yàn)和系統(tǒng)檢驗(yàn)。系統(tǒng)檢驗(yàn)分出廠檢驗(yàn)和用戶(hù)交驗(yàn),檢驗(yàn)主要是天線座架功能檢驗(yàn)、精度檢驗(yàn)及電器設(shè)備功能、技術(shù)指標(biāo)測(cè)試檢驗(yàn)。該作業(yè)自動(dòng)化程度高,主要依賴(lài)儀器設(shè)備進(jìn)行自動(dòng)的檢驗(yàn)工作。選擇儀器工時(shí)作為該作業(yè)的成本動(dòng)因更符合相關(guān)性原則。
現(xiàn)場(chǎng)安裝作業(yè)是指設(shè)備安裝測(cè)試檢驗(yàn),最終用戶(hù)驗(yàn)收。該作業(yè)由工人上門(mén)進(jìn)行安裝服務(wù),因此人員工時(shí)是該作業(yè)直接的成本動(dòng)因。
對(duì)于各項(xiàng)目所耗費(fèi)的直接材料不作為作業(yè)成本法核算的成本對(duì)象,將從總成本中扣除。
對(duì)于技術(shù)支持和管理所花費(fèi)的各類(lèi)費(fèi)用,因?yàn)闊o(wú)法準(zhǔn)確分?jǐn)偟礁黜?xiàng)目成本中,所以首先根據(jù)資源動(dòng)因先歸集到各作業(yè)中,再通過(guò)作業(yè)分?jǐn)偟巾?xiàng)目成本中。
2.BP神經(jīng)網(wǎng)絡(luò)的構(gòu)建
BP神經(jīng)網(wǎng)絡(luò)是一種具有誤差反向傳播特點(diǎn)的多層前饋神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)由輸入層、隱含層和輸出層構(gòu)成,其中輸入層和輸出層只有一層,隱含層的層數(shù)可以根據(jù)實(shí)際需要設(shè)置。此算法包括兩個(gè)基本過(guò)程:信息正向傳播和誤差反向傳播。算法通過(guò)輸入和參數(shù)(權(quán)值、閾值)計(jì)算輸出值,此過(guò)程是從輸入到輸出的方向,屬于正向傳播;而根據(jù)預(yù)算和實(shí)際的誤差反饋調(diào)整參數(shù)的過(guò)程是從輸出到輸入進(jìn)行,屬于反向傳播。前饋傳播時(shí),模型通過(guò)非線性關(guān)系產(chǎn)生預(yù)測(cè)值,若預(yù)測(cè)值與期望輸出誤差較大,則轉(zhuǎn)入反饋傳播過(guò)程。誤差反向傳播是把誤差反向傳到隱含層和輸入層,并分?jǐn)偟礁鲉卧?,作為調(diào)整各層各單元參數(shù)的依據(jù)。通過(guò)此過(guò)程的反復(fù)學(xué)習(xí)訓(xùn)練,可以確定一個(gè)包含最小誤差參數(shù)的模型,訓(xùn)練停止。利用此調(diào)整好的模型可以進(jìn)行未來(lái)數(shù)據(jù)預(yù)測(cè),輸入相應(yīng)的數(shù)值可以得到輸出的預(yù)算值。過(guò)程詳解如圖2所示。
本文擬通過(guò)河北某科技公司作為研究對(duì)象,需要的所有數(shù)據(jù)來(lái)源于案例公司財(cái)務(wù)系統(tǒng)和公司管理層。為了使得成本預(yù)算更加契合當(dāng)前情況,本文選取了河北某科技公司2018年全部項(xiàng)目的成本數(shù)據(jù)作為機(jī)器學(xué)習(xí)的基礎(chǔ),這些數(shù)據(jù)包括每一項(xiàng)目的實(shí)際總成本和直接材料成本,以及挑選出的成本動(dòng)因作業(yè)量:設(shè)計(jì)、制造、安裝、調(diào)試、現(xiàn)場(chǎng)安裝階段的人員工時(shí)和檢驗(yàn)階段的機(jī)器工時(shí)。具體數(shù)據(jù)見(jiàn)表2。
根據(jù)上文的BP神經(jīng)網(wǎng)絡(luò)原理,可以建立基于作業(yè)成本法的成本預(yù)測(cè)模型。在神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì)中,輸入層單元數(shù)為6。輸出層只設(shè)置一個(gè)單元,即除了直接材料成本外的其余成本,也是最終要預(yù)測(cè)的成本數(shù)值。通過(guò)上述設(shè)置,可以構(gòu)建一個(gè)6×N×1的神經(jīng)網(wǎng)絡(luò)模型。其中,N為隱含層單元數(shù),實(shí)際運(yùn)行時(shí)先設(shè)置一個(gè)經(jīng)驗(yàn)值,后續(xù)通過(guò)不斷修改來(lái)得到準(zhǔn)確率更高的數(shù)值。
3.模型的實(shí)際運(yùn)行①
第一步:讀取目標(biāo)文件。文件中包含17條訓(xùn)練集和測(cè)試集所有輸入層成本動(dòng)因數(shù)據(jù)和輸出層成本數(shù)據(jù)。其中前16條為訓(xùn)練集,最后一條為測(cè)試集。模型構(gòu)建所用到的Python程序代碼如圖3所示。
df1 = pd.read_excel('data.xlsx')
yyT=df1['輸出'].values
圖3 讀取目標(biāo)文件
第二步:將數(shù)據(jù)進(jìn)行歸一化處理。因?yàn)檩斎氲臉颖拘再|(zhì)、標(biāo)準(zhǔn)等各方面有些差別,可能會(huì)使神經(jīng)網(wǎng)絡(luò)進(jìn)行錯(cuò)誤判定。將數(shù)據(jù)歸一化處理目的是增加神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的準(zhǔn)確性,避免因數(shù)據(jù)單位、性質(zhì)不同而影響數(shù)據(jù)處理結(jié)果,同時(shí)可以提高數(shù)據(jù)讀取和處理的速度。歸一化處理公式為:
Y=(xi?xmin)/(xmax?xmin)
此步驟的代碼如圖4所示。
df = (df1-df1.min())/(df1.max()-df1.min())
data1=df.values
data=[]
for i in data1:
data.append(i[:-1])
yy=df['輸出'].values
圖4 數(shù)據(jù)歸一化處理
第三步:結(jié)構(gòu)選擇。輸入層6個(gè)變量,輸出層1個(gè)變量,隱含層設(shè)置為20個(gè)變量(隱含層單位數(shù)沒(méi)有統(tǒng)一要求,需要根據(jù)不斷測(cè)試得出,20是使訓(xùn)練誤差最小的單位數(shù))。學(xué)習(xí)率設(shè)為0.001。如圖5所示。
l1 = add_layer(xs,6,20,activation_function=tf.nn.relu)
pred = add_layer(l1,20,1)
tf.add_to_collection('pred_network', pred)
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys -pred),reduction_indices=[1]))
train_op = tf.train.AdamOptimizer(0.001).minimize(loss)
圖5 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置
第四步:防止過(guò)擬合數(shù)值設(shè)為1,即不用防止過(guò)擬合。因?yàn)楸纠龜?shù)據(jù)量較少,應(yīng)充分利用所有數(shù)據(jù),因此不用防止過(guò)擬合。理論上訓(xùn)練次數(shù)越多擬合效果越好,但是當(dāng)訓(xùn)練次數(shù)增加對(duì)準(zhǔn)確度不再有影響時(shí)應(yīng)停止迭代。訓(xùn)練次數(shù)首先設(shè)為10000,后經(jīng)過(guò)不斷修正,當(dāng)訓(xùn)練次數(shù)為12490時(shí)最終誤差較小,因此設(shè)為12490,如圖6所示。
keep_prob=1
ITER =12490
圖6 參數(shù)設(shè)置
第五步:將整個(gè)學(xué)習(xí)和測(cè)試過(guò)程進(jìn)行定義,并根據(jù)定義運(yùn)行算法。如圖7所示。
def fit(X, y, ax, n, keep_prob):
init = tf.global_variables_initializer()
feed_dict_train = {ys: y, xs: X, keep_prob_s: keep_prob}
with tf.Session() as sess:
saver = tf.train.Saver(max_to_keep=1)
sess.run(init)
for i in range(n):
_loss, _ = sess.run([loss, train_op], feed_dict=feed_dict_train)
if i % 50 == 0:
#print("epoch:%d\tloss:%.5f" % (i, _loss))
y_pred = sess.run(pred, feed_dict=feed_dict_train)
try:
ax.lines.remove(lines[0])
except:
pass
lines = ax.plot(range(16), y_pred, 'r--')
plt.pause(1)
pre = sess.run(pred, feed_dict={xs: X_train,keep_prob_s: keep_prob})
kk=1
for uu in pre:
mm=uu*(yyT.max()-yyT.min())+yyT.min()
print("epoch:%d\tprediction:%d\tloss:%.5f" % (kk,mm, _loss))
kk=kk+1
fit(X=X_train,y=y_train,n=ITER,keep_prob=keep_prob,ax=ax)
圖7 訓(xùn)練及測(cè)試過(guò)程
打開(kāi)Anaconda② 中的Spyder 應(yīng)用,輸入上述代碼并運(yùn)行??梢杂^察到模型根據(jù)訓(xùn)練數(shù)據(jù)開(kāi)始學(xué)習(xí),通過(guò)誤差反向傳播,模型擬合的誤差越來(lái)越小。
因?yàn)閿?shù)據(jù)量較少,對(duì)模型進(jìn)行測(cè)試時(shí)將所有數(shù)據(jù)都進(jìn)行測(cè)試。首先測(cè)試訓(xùn)練集的16條數(shù)據(jù),再利用測(cè)試集進(jìn)行測(cè)試。訓(xùn)練集和測(cè)試集的模型預(yù)計(jì)結(jié)果如圖8所示,與實(shí)際結(jié)果的誤差如表3所示。
模型對(duì)測(cè)試集16條數(shù)據(jù)的預(yù)測(cè)值準(zhǔn)確度都很高,誤差全部控制在0.3%以?xún)?nèi)。最終模型預(yù)測(cè)的測(cè)試集輸出值為29863,與實(shí)際的期望輸出值30600相比,誤差為2.4%??梢钥闯?,該模型對(duì)17條數(shù)據(jù)的預(yù)測(cè)誤差率都保持在低水平,可以終止訓(xùn)練過(guò)程。
保存好訓(xùn)練好的模型,可供未來(lái)成本預(yù)測(cè)時(shí)調(diào)用。
4.模型的優(yōu)化
以上是對(duì)2018年17條項(xiàng)目成本數(shù)據(jù)的模型試驗(yàn),下面考慮使用2019年已完成的三個(gè)項(xiàng)目的成本數(shù)據(jù)再進(jìn)行模型優(yōu)化。利用上述訓(xùn)練好的模型測(cè)試2019年的三條項(xiàng)目成本數(shù)據(jù)如表4所示。
可以看出,模型測(cè)試出的預(yù)計(jì)結(jié)果和實(shí)際成本之間誤差較大,說(shuō)明用2018年數(shù)據(jù)訓(xùn)練的模型并不適用于2019年的成本預(yù)測(cè)。因?yàn)楦鞣N人工成本、機(jī)械成本和加工成本也會(huì)隨時(shí)間變化而變化,較遠(yuǎn)的歷史數(shù)據(jù)不能直接用于未來(lái)的成本預(yù)測(cè)。
考慮將此模型進(jìn)行優(yōu)化,將2019年的前兩條項(xiàng)目成本數(shù)據(jù)也加入訓(xùn)練集,重新訓(xùn)練模型,其余參數(shù)設(shè)置同上文所述。再利用剩余的2019年最后一條成本數(shù)據(jù)對(duì)重新訓(xùn)練好的模型進(jìn)行測(cè)試,得到的結(jié)果如圖9所示。
epoch:1 prediction:63259
loss:0.00000
圖9 2019年成本數(shù)據(jù)測(cè)試結(jié)果
預(yù)測(cè)的成本和實(shí)際成本之間的誤差為3.19%,誤差在可接受范圍之內(nèi),說(shuō)明模型利用新成本數(shù)據(jù)進(jìn)行不斷訓(xùn)練可以增加模型的準(zhǔn)確度,離需要預(yù)測(cè)成本的時(shí)間越近的成本數(shù)據(jù)對(duì)模型的建立越重要。
5.運(yùn)用模型進(jìn)行成本預(yù)測(cè)
對(duì)未來(lái)項(xiàng)目成本進(jìn)行預(yù)測(cè),首先需要預(yù)測(cè)未來(lái)項(xiàng)目的成本動(dòng)因量。本文采用作業(yè)成本法和BP神經(jīng)網(wǎng)絡(luò)結(jié)合的模型進(jìn)行成本預(yù)測(cè),以2019年項(xiàng)目成本預(yù)測(cè)為例,將該項(xiàng)目之前相對(duì)較近的成本數(shù)據(jù)作為訓(xùn)練集對(duì)模型進(jìn)行訓(xùn)練,并測(cè)試誤差,得到誤差率最小的模型。利用該模型對(duì)未來(lái)的項(xiàng)目成本進(jìn)行預(yù)測(cè)。相關(guān)的代碼如圖10所示,在第103行中輸入成本動(dòng)因數(shù)據(jù),但需要將數(shù)據(jù)進(jìn)行歸一化處理后再輸入,得出的結(jié)果即為項(xiàng)目成本預(yù)測(cè)數(shù)。
with tf.Session() as sess:
new_saver = tf.train.import_meta_graph('mm/model.meta')
new_saver.restore(sess, tf.train.latest_checkpoint('./mm/'))
y = tf.get_collection('pred_network')[0]
graph = tf.get_default_graph()
input_x = graph.get_operation_by_name('xin').outputs[0]
keep_prob = graph.get_operation_by_name('kp').outputs[0]
xa=np.array([12,2,3,4,5,6],[1,2,3,4,5,6]).reshape(-1,1)
ap=sess.run(y, feed_dict={input_x:X_test, keep_prob:1})
ap = ap * (yyT.max() - yyT.min()) + yyT.min()
print(ap)
圖10 項(xiàng)目成本預(yù)測(cè)
三、結(jié)論與展望
隨著市場(chǎng)競(jìng)爭(zhēng)的日益加劇,企業(yè)不僅需要提升產(chǎn)品方面的優(yōu)勢(shì),而且加強(qiáng)成本管理的需求更加緊迫。本文嘗試將作業(yè)成本法與BP神經(jīng)網(wǎng)絡(luò)結(jié)合,首先利用作業(yè)成本法辨別作業(yè)成本庫(kù)和相對(duì)應(yīng)的成本動(dòng)因,再用神經(jīng)網(wǎng)絡(luò)根據(jù)已有的訓(xùn)練數(shù)據(jù)探究成本動(dòng)因與成本之間的非線性關(guān)系,根據(jù)測(cè)試數(shù)據(jù)對(duì)模型不斷進(jìn)行調(diào)整優(yōu)化,模型的誤差控制在4%以?xún)?nèi),最后可以利用訓(xùn)練好的模型并進(jìn)行后續(xù)的成本預(yù)測(cè)。
通過(guò)前述的理論分析和實(shí)證研究,利用BP神經(jīng)網(wǎng)絡(luò)和作業(yè)成本法對(duì)公司進(jìn)行成本預(yù)測(cè)是可行的,且預(yù)測(cè)結(jié)果與實(shí)際值誤差較小,本文所選方法可行。但是此法仍具有一定的局限性,例如:數(shù)據(jù)搜集要考慮成本問(wèn)題,必須符合成本效益原則;模型需要時(shí)時(shí)更新以維持低誤差率;標(biāo)準(zhǔn)數(shù)據(jù)是否準(zhǔn)確關(guān)系到模型最終的訓(xùn)練效果;模型在成本預(yù)測(cè)中的應(yīng)用還不夠成熟,導(dǎo)致模型建立需要更多的時(shí)間精力;等等。所以,構(gòu)造一個(gè)成熟的、準(zhǔn)確度高、可值得完全信賴(lài)的模型還需要很多努力,目前只是處于理論分析和個(gè)別實(shí)踐的探索階段。
在未來(lái)的實(shí)踐中,隨著企業(yè)信息系統(tǒng)的完善,可以以較低的成本搜集到更多的成本動(dòng)因信息。因此,可以設(shè)置更多的更準(zhǔn)確的成本動(dòng)因,增加模型精確度,使得運(yùn)用此法進(jìn)行成本預(yù)測(cè)可以成為主流的預(yù)測(cè)方法。企業(yè)也可以運(yùn)用預(yù)測(cè)出的更準(zhǔn)確的成本數(shù)據(jù)進(jìn)行有效的成本管理,促進(jìn)企業(yè)的良性健康發(fā)展。
責(zé)任編輯? 秦長(zhǎng)城
參考文獻(xiàn)
[1]任秀麗. 基于數(shù)據(jù)挖掘的銀行全成本分析系統(tǒng)的研究.北京:中國(guó)科學(xué)院研究生院(計(jì)算技術(shù)研究所),2006.
[2]石卓瑩. 基于作業(yè)成本法的A醫(yī)院成本管理研究.成都:西南交通大學(xué),2017.
[3]王小莉. 基于作業(yè)成本法的高科技企業(yè)技術(shù)開(kāi)發(fā)項(xiàng)目成本管理研究.南昌:南昌大學(xué),2009.
[4]王媛媛. 基于作業(yè)成本法的建筑施工企業(yè)項(xiàng)目成本核算研究.北京:北京交通大學(xué),2017.
[5]李鵬飛,劉明源.基于BP神經(jīng)網(wǎng)絡(luò)的軟件項(xiàng)目成本估測(cè)方法.航空計(jì)算技術(shù),2014,44(03):9-11+15.
[6]鄭俠.高科技企業(yè)作業(yè)成本法應(yīng)用研究.行政事業(yè)資產(chǎn)與財(cái)務(wù),2015(36):82-83.
[7]孫祖妮. 基于成本動(dòng)因BP神經(jīng)網(wǎng)絡(luò)的鐵路物流貨運(yùn)成本預(yù)測(cè).北京:北京交通大學(xué),2012.
[8]何斌,劉雯,吳育華,等.成本動(dòng)因法與神經(jīng)網(wǎng)絡(luò)在生產(chǎn)成本預(yù)測(cè)中的應(yīng)用.工業(yè)工程,2005(04):82-85.
[9]李希勝. 高速公路工程全風(fēng)險(xiǎn)造價(jià)確定與控制研究.南京:南京林業(yè)大學(xué),2009.
[10]翟坤. 基于數(shù)據(jù)挖掘的成本管理方法研究.大連:大連理工大學(xué),2012.
[11]楊君岐,鄒松慶.基于作業(yè)成本法與神經(jīng)網(wǎng)絡(luò)的企業(yè)成本分析——以煙草物流為例.財(cái)會(huì)通訊,2014(11):93-95.
[12]毛銳.BP神經(jīng)網(wǎng)絡(luò)在作業(yè)成本預(yù)算中的應(yīng)用.哈爾濱理工大學(xué)學(xué)報(bào),2008(03):107-110.
[13]何斌,劉雯,吳育華,劉子先.成本動(dòng)因法與神經(jīng)網(wǎng)絡(luò)在生產(chǎn)成本預(yù)測(cè)中的應(yīng)用.工業(yè)工程,2005(04):82-85.