720 likes | 923 Views
Ứng dụng mạng neuron nhân tạo vào công tác dự báo chuỗi thời gian. Đoàn Ngọc Bảo Đinh Kim Ngân Trần Thế Sĩ Ngô Duy Khánh Vy. Nội Dung. Giới thiệu Cấu trúc , nguyên tắc hoạt động của mạng neuron nhân tạo Giải thuật Lan truyền ngược Giải thuật RPROP
E N D
Ứngdụngmạng neuron nhântạovàocôngtácdựbáochuỗithờigian ĐoànNgọcBảo Đinh Kim Ngân TrầnThếSĩ NgôDuyKhánhVy
Nội Dung • Giớithiệu • Cấutrúc, nguyêntắchoạtđộngcủamạng neuron nhântạo • GiảithuậtLantruyềnngược • Giảithuật RPROP • Ứngdụngmạng neuron nhântạovàocôngtácdựbáodữliệuchuỗithờigian • Chươngtrìnhthựcnghiệm • Kếtquảthựcnghiệm • Kếtluận
Giớithiệu • Ngày nay nhucầuvềdựbáongàycàngtăng. Đểđưaradựbáochínhxácvàcócơsở, người ta tiếnhànhthunhậpdữliệuvềcácvấnđềmìnhquantâm. Mộtloạidữliệuthườnggặplàdữliệuchuỗithờigian- dữliệuđượcthunhập, lưutrữvàquansáttheothờigian. • Việcdựbáodữliệuchuỗithờigianngàycàngchiếmvịtríquantrọngtronghoạtđộngcủacácđơnvịtổchức.Cơbảncóhaikỹthuậtchủyếutrongviệcdựbáochuỗithờigianlàcácphươngphápthốngkêvàphươngphápdùngmạng neuron nhântạo.
Cấutrúcmạng neuron nhântạo • Mạng neuron nhântạo (Artificial Neural Network) làmộtmôhìnhtoánhọcđịnhnghĩamộthàmsốtừmộttậpđầuvàođếnmộttậpđầura • Mạng neuron nhântạolàmộtmạnggồmmộttậpcácđơnvị (unit) đượckếtnốivớinhaubằngcáccạnhcótrọngsố. Mộtđơnvịthựchiệnmộtcôngviệcrấtđơngiản: nónhậntínhiệuvàotừcácđơnvịphíatrước hay mộtnguồnbênngoàivàsửdụngchúngđểtínhtínhiệura
Trongmộtmạng neuron cóbakiểuđơnvị: • Cácđơnvịđầuvào, nhậntínhiệutừbênngoài. • Cácđơnvịđầura, gửidữliệurabênngoài. • Cácđơnvịẩn, tínhiệuvàocủanóđượctruyềntừcácđơnvịtrướcnóvàtínhiệurađượctruyềnđếncácđơnvịsaunótrongmạng. Hình 2.1: Đơnvịmạng neuron
Khinhậnđượccáctínhiệuđầuvào, mộtđơnvịsẽnhânmỗitínhiệuvớitrọngsốtươngứngrồilấytổngcácgiátrịvừanhậnđược. Kếtquảsẽđượcđưavàomộthàmsốgọilàhàmkíchhoạt (Activation function) đểtínhratínhiệuđầura.Cácđơnvịkhácnhaucóthểcócáchàmkíchhoạtkhácnhau
Cóhailoạihìnhdạngmạngcơbản: Mạngtruyềnthẳngvàmạnghồiquy • Mạngtruyềnthẳng(Feed-forward neural network): Mộtđơnvị ở lớpđứngtrướcsẽkếtnốivớitấtcảcácđơnvị ở lớpđứngsau. Tínhiệuchỉđượctruyềntheomộthướngtừlớpđầuvào qua cáclớpẩn (nếucó) vàđếnlớpđầura • Mạnghồiquy(Recurrent neural network): Khácvớimạngtruyềnthẳng, mạnghồiquycóchứacácliênkếtngượctừmộtđơnvịđếncácđơnvị ở lớptrướcnó
Chứcnăngcủamộtmạngnơronđượcquyếtđịnhbởicácnhântốnhư: hìnhdạngmạng (sốlớp, sốđơnvịtrênmỗilớp, cáchmàcáclớpđượcliênkếtvớinhau) vàcáctrọngsốcủacácliênkếtbêntrongmạng. Hìnhdạngcủamạngthườnglàcốđịnh, vàcáctrọngsốđượcquyếtđịnhbởimộtthuậttoánhuấnluyện (training algorithm). Tiếntrìnhđiềuchỉnhcáctrọngsốđểmạng “nhậnbiết” đượcquanhệgiữađầuvàovàđầuramongmuốnđượcgọilàhọc (learning) hay huấnluyện (training)
Huấnluyệnmạng neuron • Ápdụngphươngphápgiảmđộdốc (gradient descent) tìmmột vector cáctrọngsốsauchomạngxấpxỉtốttậpdữliệuhuấnluyện • Ta sửdụngmộthàmđánhgiá • Mạngxấpxỉtốttậphuấnluyệnnếuhàmlỗinhỏ
Phươngphápgiảmđộdốcbắtđầutìmvớimột vector trọngsốngẫunhiênvàduyệt qua cácmẫucủatậphuấnluyện, mỗilầnduyệt qua cáctrọngsốsẽđượccậpnhậptheohướnglàmgiảmgiátrịhàmlỗi. Quátrìnhnàyđượclặpđilặplạichođếnkhiđạtđượcgiátrịcựctiểucủahàmlỗi. • Hướngcậpnhậpcáctrọngsốđểlàmgiảmgiátrịhàmlỗiđượcxácđịnhtheovector độdốc (gradient) củahàmlỗiE, kýhiệulà
Vềmặttoánhọc vector độdốcbiểudiễnhướnglàmtănggiátrịhàmEtrongkhônggiantrọngsố, do đósẽlàhướnglàmgiảmgiátrịhàmE
Thay (2.2) vào (2.1) ta đượcgiánhậpcậpnhậptrọngsố qua từngbước ta được
Phươngphápgiảmđộdốccóhaihạnchếchínhlàtốcđộhộitụđôikhikháchậmvànếucónhiềucựctiểucụcbộ (local minimum) trênbềmặtcủahàmlỗithìgiảithuậtdễrơivàocựctiểucụcbộmàkhôngđạtđượccựctiểutoàncục (global minimum). Đểgiảiquyếtcáckhókhănnàyngười ta đãpháttriểnphươngphápgiảmđộdốcthànhphươngphápgiảmđộdốctăngcường (incremental gradient descent) • Khácvớiphươngphápgiảmđộdốc ở trênphươngphápgiảmđộdốctăngcườngthựchiệnviệctínhtoánlỗivàcậpnhậpcáctrọngsốngaykhiduyệt qua mộtmẫucủatậpdữliệu. Giátrịcậpnhậpchocáctrọngsốcủaphươngphápgiảmđộdốctăngcườnglà
HàmlỗicủaphươngphápgiảmđộdốctăngcườngkhôngphảilàhàmlỗitoàncụcchotoànbộdữliệuhuấnluyệnnhưphươngphápgiảmđộdốcthườngmàlàhàmlỗichotừngmẫutrongtậpdữliệuHàmlỗicủaphươngphápgiảmđộdốctăngcườngkhôngphảilàhàmlỗitoàncụcchotoànbộdữliệuhuấnluyệnnhưphươngphápgiảmđộdốcthườngmàlàhàmlỗichotừngmẫutrongtậpdữliệu
Giảithuậtlantruyềnngược • Giảithuậtlantruyềnngượctìmtậpcáctrọngsốthíchhợpchomộtmạng neuron truyềnthẳngnhiềulớpbằngphươngphápgiảmđộdốc • Hàmlỗicủagiảithuậtlantruyềnngượcđượcđịnhnghĩatổngquátnhưsau
Ý tưởngchínhcủagiảithuậtlàgiátrịlỗisẽđượclantruyềnngượctừtầngxuấtvềtầngnhập. Vớimỗimẫutrongtậphuấnluyện, mạng neuron đượcápdụngđểtínhđầurasauđógiátrịđộdốccủahàmlỗiđượctínhchotừngđơncủamạng. Cuốicùnggiảithuậtápdụngphươngphápgiảmđộdốcđểcậpnhậpcácgiátrịtrọngsố
Đểápdụngphươngphápgiảmđộdốctrướchết ta cầnthông tin vềđạohàmriêngphầncủahàmlỗichotừngtrọngsố • Với
Giátrịđượctínhtheohaitrườnghợptùytheođơnvịi làđơnvị ở tầngxuất hay tầngẩn:
Thay (2.10) và (2.6) vào (2.5) ta đượccôngthứctínhđạohàmriêngphầncủahàmlỗitheotrọngsốwijcủađơnvịẩni
Mỗikhithông tin vềđạohàmriêngphầnđãbiết, bướctiếptheotronggiảithuậtlantruyềnngượclàcậpnhậpcáctrọngsốwij. Ở đâylàhệsốhọc
Cơbảncóhaiphươngphápcậpnhậpcáctrọngsốphânloạitheothờiđiểmcậpnhập: họctheomẫu (learning by pattern) vàhọctheo epoch (learning by epoch). Một epoch làmộtlầnhọcduyệt qua tấtcảcácmẫutrongtậpdữliệumẫudùngđểhọc. • Trongphươngpháphọctheomẫuápdụngphươngphápgiảmđộdốctăngcường, cứmỗilầnmộtmẫutrongtậpdữliệuđượcduyệt qua thìcáctrọngsốsẽđượccậpnhập • Phươngpháphọctheo epoch thựchiệnlấytổngtấtcảthông tin vềđộdốc (gradient) chotoànbộtậpmẫu (pattern set) sauđómớicậpnhậpcáctrọngsốtheophươngphápgiảmđộdốcthôngthường, nghĩalànóthựchiệnviệccậpnhậptrọngsốsaukhiđãduyệt qua hếtcácmẫutrongtậpdữliệu
Giảithuậtlantruyềnngượcbịảnhhưởngbởihệsốhọcvàđộlớncủađạohàmriêngphần.Giảithuậtlantruyềnngượcbịảnhhưởngbởihệsốhọcvàđộlớncủađạohàmriêngphần. • Đểquátrìnhhọcổnđịnhhơn, ta thêmvàohệsốquántính, cótácdụngđiềuchỉnhmứcđộảnhhưởngcủabướccậpnhậptrướclênbướccậpnhậphiệnthời
Giảithuật RPROP • Giảithuậtlantruyềnngượcgặpmộtvấnđề ở chỗgiátrịcậpnhậptrọngsốkhôngnhữngphụthuộcvàodấucủađạohàmriêngphầnmàcònbịảnhhưởngbởiđộlớncủanó, điềunàylàmchoquátrìnhhọckhôngđượcổnđịnh. Việcthêmvàohệsốquántínhkhônggiảiquyếttrọnvẹnvấnđềbởivì ta khôngbiếtgiátrịtốiưuchohệsốnàylàbaonhiêu.
RPROP làviếttắtcủatừ ‘resilient propagation’, nghĩalàlantruyềnđànhồilàmộtphươngphápthíchnghicụcbộ. RPROP thựchiệncậpnhậpcáctrọngsốwijdựavàothông tin vềdấucủacácđạohàmriêngphầnđiềunàygiúpnótránhđượcsựảnhhưởngcủađộlớncủacácđạohàmriêngphầnnày. Đểthựchiệnđiềunàycáctrọngsốsẽcómộtgiátrịcậpnhậpriêngchỉphụthuộcvàodấucủađạohàmriêngphần.
Tuynhiêncómộttrườnghợpđặcbiệtđólàkhiđạohàmriêngphầnđổidấu, nghĩalàbướccậpnhậptrướcquálớnlàmchođiểmtốiưubịnhảyvượt qua. Giátrịtrọngsốphảiđượctrảvềgiátrịtrướckhithayđổi, giátrịcậpnhậpsẽđượcgiảmxuốngvà ở bướckếsau ta sẽkhôngcậpnhậpgiátrịnày. Thựctế ta cóthểlàmviệcnàybằngcáchgán
Giảithuật RPROP ban đầucũngthựchiệncácbướcgiốngnhưgiảithuậtlantruyềnngược, cácthông tin vềđạohàmriêngphầncủahàmlỗitheocáctrọngsốsẽđượclantruyềnngượctừcáclớpsauđếncáclớptrước. Khicácthông tin vềcácđạohàmriêngphầnnàycóđủthìgiảithuậtsẽthựchiệnviệccậpnhậpcáctrọngsốtheocácquytắcnêu ở trên.
Chuỗithờigian • Dữliệuchuỗithờigianlàdữliệuđượcthunhập, lưutrữvàquansáttheosựtăngdầncủathờigian • Ta kýkiệuchuỗithờigianlà{Xt}vớitlàcácsốtựnhiên. Xtlàcácbiếnngẫunhiên (random variable) rútratừmộtphânbốxácsuất(probability distribution) nàođó. Cácchuỗithờigianthườngđượcbiểudiễnbằngmộtđồthịvớitrụchoànhlàbiếnthờigian
Trongthựctế, khi quansátchuỗithờigian ta nhậnthấybốnthànhphầnảnhhưởnglênmỗigiátrịcủachuỗithờigianđó là xuhướng(trend), chu kỳ (cyclical), mùa(seasonal), bấtquytắc(irregular). • Xuhướng: Là thànhphầnthểhiệnsựtănghaygiảmgiátrịcủachuỗithờigiantrongmộtgiaiđoạndàihạnnàođó • Chu kỳ: Là chuỗibiếnđổidạngsóngquanhxuhướng • Bấtquytắc: Là thànhphầnthểhiệnsựbiếnđổingẫunhiênkhôngthểđoánđượccủachuỗithờigian • Mùa: Là thànhphầnthểhiệnsựbiếnđổilặpđilặplạitạitừngthờiđiểmcốđịnhtheotừngnămcủachuỗithờigian
Ápdụngmạng neuron vàodựbáodữliệuchuỗithờigian
Mạng neuron họccấuhìnhmạngtừdữliệuchuỗithờigianbằngcáchánhxạtừmộtvectơdữliệuđầuvào sang dữliệuđầura.Mộtsốlượngdữliệuliêntiếpcủadữliệuchuỗithờigian (cửasổđầuvàoXt-s, Xt-s+1, …, Xt) đượcánhxạ sang khoảngthíchhợp (vídụ [0,1] hoặc [-1,1]) vàđượcsửdụngnhưdữliệuđầuvàocủatầngnhập. Giátrị s của “cửasổđầuvào” tươngứngvớisốđơnvị ở tầngnhập. Tronggiaiđoạntruyềntiến, nhữnggiátrịđóđượctruyền qua tầngẩnrồiđếncácđơnvịđầura.Khitruyềntớiđơnvịđầura, giátrịlỗiđượctínhtoándựavàosựkhácbiệtgiữagiátrịđầuravớigiátrịcủadữliệuchuỗithờigiantạithờiđiểm t+1. Sauđó, giátrịlỗinàyđượctruyềnngượclạitớicáckếtnốigiữatầngẩnvàtầngđầura, kếtnốigiữatầngđầuvàovàtầngẩnđểcậpnhậplạitrọngsốcủacáckếtnốinày.
Quátrìnhxâydựngmạng neuron chobàitoándựbáochuỗithờigiangồm 8 bước: • Lựachọncácbiến • Thu thậpdữliệu • Tiềnxửlýdữliệu • Phân chia tậpdữliệu • Xâydựngcấutrúcmạng • Xácđịnhtiêuchuẩnđánhgiá • Huấnluyệnmạng • Dựđoánvàcảitiến
Lựachọncácbiến • Xácđịnhnhữngbiếnnàocầnđượcxemxétlàđiểmmấuchốt. • Đốivớimộtbàitoáncụthểcầnthựchiệnxemxétcácvấnđềlýthuyếtmàtừđósẽxácđịnhđượccácnhântốảnhhưởngđếnbàitoán • Đểdựđoánchomộtbiếnnàođócóthểdùngcácgiátrịcũ, trongquákhứcủabiếnđó, cácchỉsốđượctínhtoántừcácgiátrịcũđóhaygiátrịcủacácbiếnkhácmàảnhhưởngđếnbiếnđangxemxét
Thu nhậpdữliệu • Ta cầnphảixemxét chi phívàkhảnăngcóthểthuthậpđượcdữliệucủacácbiếnđãchọnra ở bướctrước • Sau khi đượcthuthập, cácdữliệuphảiđượckiểmtrađểđảmtínhhợplệ, tínhnhấtquánvàtránhcácdữliệubịthiếusót • Cácdữliệubịthiếusótcóthểđượcbỏ qua hoặcchúngcóthểxemnhưkhôngthayđổisovớidữliệutrướcnó, vàđượctínhtoánbằngphươngphápnộisuyhoặctrungbìnhcácgiátrịlâncận
Tiềnxửlýdữliệu • Phântíchvàchuyểnđổigiátrịcácthamsốđầuvào, đầuramạngđểtốithiểuhóanhiễu, nhấnmạnhcácđặctrưngquantrọng, pháthiệncácxuhướngvàcânbằngphânbốcủadữliệu • Cácphươngphápthườngdùng: lấyhiệu, lấylogarittựnhiên, trungbình di động.
Phân chia tậpdữliệu • Trongthựctế, khihuấnluyện, người ta thường chia tậpdữliệuthànhcáctập: huấnluyện, kiểmtravàkiểmđịnh (ngoàicácmẫu). Tậphuấnluyệnthườnglàtậplớnnhấtđượcsửdụngđểhuấnluyệnchomạng. Tậpkiểmtrathườngchứakhoảng 10% đến 30% tậpdữliệuhuấnluyện, đượcsửdụngđểkiểmtramứcđộtổngquáthóacủamạngsaukhihuấnluyện. Kíchthướccủatậpkiểmđịnhcầnđượccânbằnggiữaviệccầncóđủsốmẫuđểcóthểkiểmtramạngđãđượchuấnluyệnvàviệccầncóđủcácmẫucònlạichocảphahuấnluyệnvàkiểmtra. Tậpkiểmđịnhnênbaogồmcácgiátrịliêntụcmớinhất • Mộtphươngphápchặtchẽdùngđểđánhgiámạng neuron là walk-forward. Phươngpháp walk-forward chia tậpdữliệuthànhmộtchuỗicáctậpdữliệunhỏhơnhuấnluyện-kiểmtra-kiểmđịnhgốichồnglênnhau
Xâydựngcấutrúcmạng • Phươngphápthựchiệnxâydựngcấutrúcmạng neuron baogồmviệcxácđịnhsựliênkếtgiữacác neuron, đồngthờixácđịnhcấutrúccủamạngbaogồmsốlớpẩn, số neuron trongtừnglớp • Nếuxâydựngmạngcóquánhiềutầngẩn, hoặcsốlượngđơnvị ở mỗitầngquánhiềusẽdẫnđếnvấnđềquákhớp. Tứclàkhiđó, cấuhìnhmạng neuron giảithíchtậpdữliệuhuấnluyệnrấttốt, nhưnglạikhôngcókhảnăngtổngquáthóa, vìthếkhôngthểdùngcấuhìnhnàyđểdựđoán. Tuynhiênsốtầnghoặcsốđơnvịtrênmỗitầngquáítthìmạng neuron khôngcókhảnănggiảithíchvàdựđoántốtcácchuỗithờigianphứctạp. • Thựctếđãchứng minh: mộtmạng neuron vớimộttầngđầuvào, mộttầngẩn, mộttầngđầuracùngvớisựthayđổisốđơnvịtạimỗitầnglàđủđểxấpxỉbấtkìmộthàmliêntụcnào. Cácmôhìnhthườngdùngtrongbàitoándựbáochuỗithờigianlà: 8-8-1, 6-6-1, 5-5-1.
Xácđịnhtiêuchuẩnđánhgiá • Đểđánhgiákhảnăngxấpxỉmộtchuỗithờigiancủamạng neuron người ta thườngdùnghàmtổngbìnhphươnglỗi(sum of squared errors) sau: • Ngoàirangười ta còndùngcáchàmkháclàhàmđộlệchtuyệtđốinhỏnhất (least absolute deviation), hiệuphầntrăm (percentage differences).
Huấnluyệnmạng • Huấnluyênmạngđểhọccácmẫutừdữliệubằngcáchlầnlượtđưacácmẫuvàocùngvớinhữnggiátrịmongmuốn. Mụctiêucủaviệchuấnluyệnmạngđó là tìm ra tậpcáctrọngsốcho ta giátrịnhỏnhấttoàncụccủachỉsốhiệunănghayhàmlỗi. • Cóbacáchthườngdùngđểdừngmộtquátrìnhhuấnluyện. Cáchthứnhấtnhàdựbáochỉdừngquátrìnhhọc khi khôngcómộtsựcảithiệnđángkểnàocủahàmlỗi. Điểmmàmạngneuron khôngcòncảithiệnđượcnữagọi là điểmhộitụ. Cáchthứhai là sửdụngmộtthôngsốcốđịnh là sốlầnlặptốiđa, quátrìnhhuấnluyệnsẽdừngnếusốsốlầnlặp (epoches) vượtquáthôngsốnày. Cáchthứba là ta sửdụngmộttậpdữliệungoàidữliệuhuấnluyệngọi là tậpdữliệuxácthực (validation set). Trongquátrìnhhuấnluyện, cứmỗilầnvectortrọngsốcủamạngneuronthayđổi, tậpdữliệuxácthựcnàysẽđượcđưavàomạngvàtính ra saisố. Giảithuậthuấnluyệnsẽdừng khi saisốnàynhỏhơnmộtngưỡngmànhàdựđoánmongmuốn.
Dựđoánvàcảitiến • Sau khi đãthựchiệncácbướctrên, ta cóđượcmộtmôhìnhmạngneurondùngđểdựđoán. Cácgiátrịdựđoáncủamạngđượclưulạivàsosánhvớicácgiátrịthựctế khi chúngxuấthiện. Saumộtthờigian, cóthểmôhìnhmạngkhôngcònđúngnữathểhiện qua việckếtquảdựđoánngàycàngxacácgiátrịthật, ta cầnphảitiếnhànhcảitiếnmạnghoặchọclạivàxâydựngmạngmớitheocácbướctrước.
Chươngtrìnhthựcnghiệm • Chươngtrìnhthựcnghiệmđượcnhómhiệnthựcbằngngônngữ C# trênnềntảng .NET framework với IDE hỗtrợlàMircrosoft Visual Studio 2010.