Showing preview only (487K chars total). Download the full file or copy to clipboard to get everything.
Repository: XinzeZhang/HUST-PhD-Thesis-Latex
Branch: main
Commit: be7d559349bd
Files: 39
Total size: 356.3 KB
Directory structure:
gitextract_qebl3297/
├── .gitignore
├── .vscode/
│ └── settings.json
├── HUSTThesis.bst
├── HUSTthesis.cls
├── HUSTtils.sty
├── README.md
├── _ThesisBeamer/
│ ├── .vscode/
│ │ └── settings.json
│ ├── beamerthemeBFH.sty
│ ├── body/
│ │ ├── cnn.tex
│ │ ├── code.tex
│ │ ├── intro.tex
│ │ ├── last.tex
│ │ └── related.tex
│ ├── float/
│ │ └── ch.cnn/
│ │ ├── data.tex
│ │ ├── mape.tex
│ │ └── time.tex
│ └── slide.tex
├── body/
│ ├── appendix/
│ │ └── app.tex
│ ├── chapter/
│ │ ├── ack.tex
│ │ ├── cnn.tex
│ │ ├── intro.tex
│ │ ├── overview.tex
│ │ └── univ.tex
│ └── cover.tex
├── float/
│ ├── ch.cnn/
│ │ ├── data.tex
│ │ ├── mape.tex
│ │ ├── rmse.tex
│ │ ├── smape.tex
│ │ ├── std.tex
│ │ └── time.tex
│ └── ch.univ/
│ ├── loader.tex
│ ├── method.tex
│ ├── model.tex
│ ├── tune.tex
│ └── wrapper.tex
├── main.tex
└── ref/
├── finddupls.pl
├── sorted_titles.txt
└── thesis.bib
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,latex
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,macos,latex
### LaTeX ###
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
main.pdf
_ThesisBeamer/slide.pdf
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices and outlines
*.xyc
*.xyd
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# gummi
.*.swp
# KBibTeX
*~[0-9]*
# TeXnicCenter
*.tps
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
# Makeindex log files
*.lpz
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib
### LaTeX Patch ###
# LIPIcs / OASIcs
*.vtc
# glossaries
*.glstex
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,latex
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
================================================
FILE: .vscode/settings.json
================================================
{
"latex-workshop.latex.autoBuild.run": "onSave",
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
],
"env": {}
},
],
"latex-workshop.latex.recipes": [
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
}
],
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.fls",
// "*.log",
"*.fdb_latexmk",
"*.snm",
"*.synctex(busy)",
"*.synctex.gz(busy)",
"*.nav",
"*.vrb",
"*.thm",
"*.xdv"
],
"latex-workshop.latex.autoClean.run": "onSucceeded",
"latex-workshop.latex.autoBuild.cleanAndRetry.enabled": true,
"cSpell.enabled": false,
"latex-workshop.intellisense.atSuggestion.user": {
"@seq": "如\\autoref{eq:}所示"
}
}
================================================
FILE: HUSTThesis.bst
================================================
%%
%% HUSTThesis.bst
%% BibTeX Bibliography Style file for HUST Thesis (unsorted)
%% Version 1.0 (2006/06/14)
%%
%% Copyright (c) 2006 Liu Huikan
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% PREDEFINED STRING MACROS %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
MACRO {IEEE_J_MTT} {"{IEEE} Trans. Microwave Theory Tech."}
%%%%%%%%%%%%%%%%%%
%% ENTRY FIELDS %%
%%%%%%%%%%%%%%%%%%
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
langid
language
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
url
}
{}
{ label }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% INTEGER VARIABLES, STRING VARIABLES and FUNCTIONS %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
STRINGS {z}
FUNCTION {remove.dots}
{ 'z :=
""
{ z empty$ not}
{ z #1 #1 substring$
z #2 global.max$ substring$ 'z :=
duplicate$ "." = 'pop$
{ * }
if$
}
while$
%z
}
FUNCTION {bibinfo.check}
{ swap$
duplicate$ missing$
{
pop$ pop$
""
}
{ duplicate$ empty$
{
swap$ pop$
}
{ swap$
pop$
}
if$
}
if$
}
FUNCTION {format.note}
{
note empty$
{ "" }
{ note #1 #1 substring$
duplicate$ "{" =
'skip$
{ output.state mid.sentence =
{ "l" }
{ "u" }
if$
change.case$
}
if$
note #2 global.max$ substring$ * "note" bibinfo.check
}
if$
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{
%add.period$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {new.sentence.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {bbl.etal}
{ "et~al." }
FUNCTION {format.langid}
{ langid empty$
'skip$
'skip$
if$
}
STRINGS {entry.langid}
FUNCTION {check.entry.lang}
{
language empty$ not
{ language 'entry.langid := }
'skip$
if$
langid empty$ not
{ langid 'entry.langid := }
'skip$
if$
}
FUNCTION {bbl.cn.etal}
{ "等." }
FUNCTION {format.names}
{
's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{f.~}{ll}"
format.name$
%bibinfo bibinfo.check
't :=
nameptr #1 >
{
nameptr #3
#1 + =
numnames #3
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "" * }
'skip$
if$
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{
"" 'entry.langid := check.entry.lang
entry.langid empty$
{ ", " * bbl.etal * }
{ entry.langid "chinese" =
{ ", " * bbl.cn.etal * }
'skip$
if$
}
if$
}
{
langid empty$
{ ", " * t * }
{ langid "chinese" =
{ ", " * t * }
'skip$
if$
}
if$
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
%FUNCTION {format.editors}
%{ editor empty$
% { "" }
% { editor format.names
% editor num.names$ #1 >
% { ", editors" * }
% { ", editor" * }
% if$
% }
% if$
%}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ langid empty$
{ editor format.names
editor num.names$ #1 >
{ ", editors" * }
{ ", editor" * }
if$
}
{ editor format.names * ", " }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "-" = not
{ "-" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
'year
{ month ", " * year * }
if$
}
if$
}
FUNCTION {format.btitle}
{ edition empty$
{ title }
{ title empty$
{ title }
{
"" 'entry.langid := check.entry.lang
entry.langid empty$
{ " " title * ", " * edition * " ed." * }
{ entry.langid "chinese" =
{ " " title * ", 第" * edition * " 版" * }
'skip$
if$
}
if$
}
if$
}
if$
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "volume" volume tie.or.space.connect
series empty$
'skip$
{ " of " * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "number" }
{ "Number" }
if$
number tie.or.space.connect
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.url}
{ url empty$
{ "" }
{ new.block " {\url{" url * "}}" * }
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ langid empty$
{": " pages n.dashify tie.or.space.connect }
{ langid "chinese" =
{ ": " pages n.dashify tie.or.space.connect }
'skip$
if$
}
if$
}
{ "" pages tie.or.space.connect }
if$
}
if$
}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
number empty$
'skip$
{ "(" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ": " * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.year.chapter.pages}
{ year field.or.null
chapter empty$
'skip$
{ "(" chapter * ")" * *
year empty$
{ "there's a chapter but no year in " cite$ * warning$ }
'skip$
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ": " * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "chapter" }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ "" 'entry.langid := check.entry.lang
booktitle empty$
{ "" }
{ editor empty$
{ entry.langid empty$
{ "in: " booktitle * }
{ entry.langid "chinese" =
{"见:" booktitle * }
'skip$
if$
}
if$
}
{ entry.langid empty$
{ "in: " format.editors * ", " * booktitle * }
{ entry.langid "chinese" =
{"见:" * format.editors * booktitle *}
'skip$
if$
}
if$
}
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type "t" change.case$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Technical Report" }
'type
if$
number empty$
{ "t" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "In {\em " journal * "\/}" * }
if$
}
{ "In " key * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{ll }{f{~}}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$ " et~al." * }
{ #2 <
'skip$
{ editor #2 "{ll }{f{~}}" format.name$ "others" =
{ " et~al." * }
{ " and " * editor #2 "{ll }{f{~}}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Volume" volume tie.or.space.connect
" of " *
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ "{\em " * series * "\/}" * }
if$
}
{ key * }
if$
}
{ format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ "In {\em " booktitle * "\/}" * }
if$
}
{ "In " key * }
if$
}
{ "In " format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.address.publisher}
{ address empty$
{ publisher empty$
{ "" }
{ "there's a publisher but no address in " cite$ * warning$
publisher
}
if$
}
{ publisher empty$
'address
{ address ": " * publisher * }
if$
}
if$
}
FUNCTION {format.address.school}
{ address empty$
{ school empty$
{ "" }
{ "there's a school but no address in " cite$ * warning$
school
}
if$
}
{ school empty$
'address
{ address ": " * school * }
if$
}
if$
}
FUNCTION {format.year.pages}
{ year field.or.null
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ": " * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.title.type}
{ title empty$
{ type empty$
{ "" }
{ "there's a type but no title in " cite$ * warning$
type
}
if$
}
{ type empty$
'title
{ title ": " * type * }
if$
}
if$
}
FUNCTION {book} { output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.btitle
"title" output.check
crossref missing$
{ %format.bvolume output
new.block
%format.number.series output
%new.sentence
}
{ new.block
format.book.crossref output.nonnull
}
if$
%format.edition output
format.address.publisher output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ %journal emphasize "journal" output.check
journal "journal" output.check
%format.date "year" output.check
%new.block
year output
format.vol.num.pages output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
address output
publisher "publisher" output.check
%format.date output.check
%year output
format.year.chapter.pages output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
new.block
%format.bvolume output
%format.number.series output
%format.pages output
address empty$
{ organization publisher new.sentence.checkb
organization output
publisher output
%new.block
format.year.chapter.pages output
%year output
}
{ %address output.nonnull
format.address.publisher output
format.year.pages output
%year output
%new.sentence
%organization output
}
if$
%new.block
%pages output
%remove.dots
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
% format.tr.number output.nonnull
institution "institution" output.check
address output
format.year.pages output
format.url output
new.block
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
new.block
format.title "title" output.check
howpublished address new.block.checkb
howpublished output
address output
format.date output
new.block
note output
fin.entry
}
FUNCTION {inbook} { output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
new.block
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
new.block
format.number.series output
new.sentence
}
{ new.block
format.book.crossref output.nonnull
}
if$
%format.edition output
format.address.publisher output
format.date "year" output.check
format.chapter.pages "chapter and pages" output.check
new.block
note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
new.block
format.btitle "title" output.check
author empty$
{ organization empty$
{ address new.block.checka
address output
}
'skip$
if$
}
{ organization address new.block.checkb
organization output
address output
}
if$
%format.edition output
format.date output
new.block
note output
fin.entry
}
% FUNCTION {masterthesis.type}
% { langid empty$
% { "[硕士学位论文]" }
% { "[Master Thesis]" }
% if$
% }
FUNCTION {masterthesis.type}
{ "" 'entry.langid := check.entry.lang
entry.langid empty$
{ "[Master Thesis]" }
{ entry.langid "chinese" =
{ "[硕士学位论文]" }
'skip$
if$}
if$
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" add.period$ output.check
new.block
format.title remove.dots ": " * masterthesis.type * output
new.block
format.address.school output
%format.madd "address" output.check
%school "school" output.check
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
title howpublished new.block.checkb
format.title output
howpublished new.block.checka
howpublished output
format.date output
format.url output
new.block
note output
fin.entry
empty.misc.check
}
FUNCTION {phdthesis.type}
{ "" 'entry.langid := check.entry.lang
entry.langid empty$
{ "[PhD Dissertation]" }
{ entry.langid "chinese" =
{ "[博士学位论文]" }
'skip$
if$}
if$
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" add.period$ output.check
new.block
format.title remove.dots ": " * phdthesis.type * output
new.block
format.address.school output
%address output
%school "school" output.check
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization output }
{ format.editors output.nonnull }
if$
new.block
format.btitle "title" output.check
format.bvolume output
format.number.series output
address empty$
{ editor empty$
{ publisher new.sentence.checka }
{ organization publisher new.sentence.checkb
organization output
}
if$
publisher output
format.date "year" output.check
}
{ address output.nonnull
format.date "year" output.check
new.sentence
editor empty$
'skip$
{ organization output }
if$
publisher output
}
if$
new.block
note output
fin.entry
}
FUNCTION {patent} { output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
format.date "year" output.check
format.pages output
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
new.block
format.title "title" output.check
new.block
note "note" output.check
format.date output
fin.entry
}
FUNCTION {default.type} { misc }
%%%%%%%%%%%%%%%%%%
%% MAIN PROGRAM %%
%%%%%%%%%%%%%%%%%%
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
================================================
FILE: HUSTthesis.cls
================================================
%%
%% HUSTThesis.cls 2022/03/28 version V3.2
%%
%% This is the unofficial LaTeX class for Master Thesis Template of
%% Huazhong University of Science and Technology
%%
%%
%% Contributors:
%% Feng Jiang (2005 V1.0), Huikan Liu (2006 V2.0), Xinze Zhang (2020 V3.0),
%% Lianghao Li & Jianqing Lin & lxysl & Xinze Zhang (2021 V3.1)
%%
%% Copyright (C) 2006-2007 by Huikan Liu <hkliu@mail.edu.cn>
%% Copyright (C) 2020-2021 by Xinze Zhang <xinze@hust.edu.cn>
%% Copyright (C) 2021-2022 by Lianghao Li <lianghao93@vip.qq.com>
% & JianQing Lin <linjqcn@gmail.com>
%% This code is distributed under the Perl Artistic License
%% ( http://language.perl.com/misc/Artistic.html )
%% and may be freely used, distributed and modified.
%% Retain the contribution notices and credits.
%%
%% Current maintainer: lianghao93@vip.qq.com
%% linjqcn@gmail.com
%% xinze@hust.edu.cn
%%
%% QQ Group:782574845
%%**********************************************************************
%
% Available class options
% (e.g., \documentclass[draftformat,dvips]{HUSTThesis}
%
% *** choose only one from each category ***
%
% draftformat, finalformat
%
% 提交草稿打开 draftformat 选项,提交最终版打开 finalformat 选项。
% 草稿正文页包括页眉(“华中科技大学博士学位论文”),页眉修饰线(双线)。
% 页脚(页码),页脚修饰线(单线)。
% 最终版正文页不包括页眉、页眉修饰线和页脚修饰线,仅包含页脚。
%
%
% arial
% 打开选项启用 arial 字体,若无字体宏包,则默认采用 helvet 字体。
%
%*******
% 04/2025
%
% 03/2022 V3.1 changes:
% modify class file (HUSTthesis.cls):
% 1. Update the defence committee page between Chinese and English cover
% 2. Update the indentation and spacing of the itemize, enumerate and description
% 3. Update the reference list according to the latest standard
% 4. Update the appendixs according to the latest standard
% 5. Change the line spacing to match the Word template
% 6. Added bold fonts to some fonts (Heiti & Kaiti)
% 7. Changed the font, font size, line spacing and indentation of the table of contents page to match the Word template
% 8. Updated header and footer
%
% by Li Lianghao (lianghao93@vip.qq.com)
% & Lin Jianqing (linjqcn@gmail.com)
%
% 11/2020 V3.0 changes:
% 1. Modify class file (HUSTthesis.cls):
% 1.1 Update the location of xuehao of covering page
% 1.2 Update the table length of the emajor
% 1.3 Udpate the font specification with adding and using the font locally, making it be able to compile this project on overleaf
% 1.4 Remove the font command of lishu and youyuan
% 2. Change the folder name of ./data/* to ./body/* and update the information of xinze zhang
%
% by Zhang Xinze (xinze@hust.edu.cn)
%
%
% 06/2006 V2.0 changes:
%
% 1. wrote class file (HUSTthesis.cls) based on ThuThesis.cls written by
% Xue Ruini, the class file is designed for Doctoral Thesis of HUST.
%
% 2. define new Itemize, Enumerate and Description environments with compact spacing
%
% by Liu Huikan (hkliu@mail.edu.cn)
%
%*******
% 04/2004 V1.0 released (Feng Jiang)
%
%
% by Feng Jiang (fjiang@people.com.cn)
%
%*******
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
%% \paragraph{引用方式}
%% \paragraph{致谢声明}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{HUSTthesis}
[2022/03/26 3.2 Huazhong University of Science and Technology Thesis Template]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义选项
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 启用 dvips
\newif\ifHUST@dvips
\DeclareOption{dvips}{\HUST@dvipstrue}
\DeclareOption{dvipdfm}{\HUST@dvipsfalse}
% 启用真正的 arial 字体
\newif\ifHUST@arial
\DeclareOption{arial}{\HUST@arialtrue}
% 公式是否使用 Times Roman 字体
\newif\ifHUST@blackhead
\DeclareOption{blackhead}{\HUST@blackheadtrue}
\DeclareOption{redhead}{\HUST@blackheadfalse}
% draftformat 包含全部的页眉页脚,最终版本的页眉为空,页脚仅有页码
\newif\ifHUST@finalformat
\DeclareOption{draftformat}{\HUST@finalformatfalse}
\DeclareOption{finalformat}{\HUST@finalformattrue}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{book}}
\ProcessOptions
\LoadClass[12pt, a4paper, openany]{book}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 加载宏包
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{ifthen}
\RequirePackage{calc}
\RequirePackage{ifpdf,pifont}
\RequirePackage{ifxetex}
\ifHUST@arial
\IfFileExists{arial.sty}{\RequirePackage{arial}}%
{\RequirePackage[scaled=.92]{helvet}}
\else
\RequirePackage[scaled=0.92]{helvet}
\fi
% 默认使用 Times Roman 字体
% 加载 AMSLaTeX 宏包,增加对数学环境的支持
\RequirePackage{amsmath,amssymb,bm}
% \ifHUST@mathtimes
% \RequirePackage{mathptmx}
% \RequirePackage{courier}
% \RequirePackage{bm}
% \else
% \renewcommand{\sfdefault}{phv}
% \renewcommand{\rmdefault}{ptm}
% \renewcommand{\ttdefault}{pcr}
% \def\fontsubfuzz{2.0pt}
% \fi
% 加载图形宏包
\RequirePackage{graphicx}
% 首行缩进宏包
\RequirePackage{indentfirst}
\setlength{\parindent}{2em}
% 中文支持和中文数字支持
% \RequirePackage{xeCJK,CJKnumb}
\RequirePackage[SlantFont]{xeCJK}
% 中文标点符号支持
%\RequirePackage{CJKpunct}
% 让导言区支持中文
%\begin{CJK*}{GBK}{song}\end{CJK*}
% \setCJKmainfont[AutoFakeBold = {2.25},ItalicFont={KaiTi}]{SimSun}
% \setCJKsansfont{SimHei}
% \setCJKmonofont{FangSong}
% \setCJKfamilyfont{song}[AutoFakeBold = {2.25}]{SimSun}
% \setCJKfamilyfont{hei}{SimHei}
% \setCJKfamilyfont{kai}{KaiTi}
% \setCJKfamilyfont{fs}{FangSong}
%改动1
\setCJKmainfont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{SimSun.ttf}
\setCJKsansfont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{SimHei.ttf}
\setCJKmonofont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{simfang.ttf}
\setCJKmonofont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{STZhongsong.ttf}
\setCJKfamilyfont{zhongsong}[Path=supply/font/,AutoFakeBold = {2.25}]{STZhongsong.ttf}
\setCJKfamilyfont{song}[Path=supply/font/,AutoFakeBold = {2.25}]{SimSun.ttf}
\setCJKfamilyfont{hei}[Path=supply/font/,AutoFakeBold = {2.25}]{SimHei.ttf}
\setCJKfamilyfont{kai}[Path=supply/font/,AutoFakeBold = {2.25}]{simkai.ttf}
\setCJKfamilyfont{fs}[Path=supply/font/,AutoFakeBold = {2.25}]{simfang.ttf}
\setmainfont{Times New Roman}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 重定义字体命令
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\song}{\CJKfamily{song}} % 宋体
\let\songti\song
\newcommand{\fs}{\CJKfamily{fs}} % 仿宋体
\let\fangsong\fs
\newcommand{\kai}{\CJKfamily{kai}} % 楷体
\let\kaishu\kai
\newcommand{\hei}{\CJKfamily{hei}} % 黑体
\let\heiti\hei
\newcommand{\zhongsong}{\CJKfamily{zhongsong}} % 华文中宋
\let\STzhongsong\zhongsong
% \newcommand{\you}{\CJKfamily{you}} % 幼圆
% \let\youyuan\you
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 重定义字号命令,采用薛瑞尼版本中关于字号命令的定义,
% 消除了字体大小和行距的紧耦合
% 命令中的可选参数用于指定行距,默认为单倍行距。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength\thu@linespace
\newcommand{\thu@choosefont}[2]{%
\setlength{\thu@linespace}{#2*\real{#1}}%
\fontsize{#2}{\thu@linespace}\selectfont}
\def\thu@define@fontsize#1#2{%
\expandafter\newcommand\csname #1\endcsname[1][\baselinestretch]{%
\thu@choosefont{##1}{#2}}}
\thu@define@fontsize{dachu}{45pt} %used for the cover 博士学位论文
\thu@define@fontsize{chuhao}{42pt}
\thu@define@fontsize{xiaochu}{36pt}
\thu@define@fontsize{yihao}{26pt}
\thu@define@fontsize{xiaoyi}{24pt}
\thu@define@fontsize{erhao}{22pt}
\thu@define@fontsize{xiaoer}{18pt}
\thu@define@fontsize{sanhao}{16pt}
\thu@define@fontsize{xiaosan}{15pt}
\thu@define@fontsize{sihao}{14pt}
\thu@define@fontsize{banxiaosi}{13pt}
\thu@define@fontsize{xiaosi}{12pt}
\thu@define@fontsize{dawu}{11pt}
\thu@define@fontsize{wuhao}{10.5pt}
\thu@define@fontsize{xiaowu}{9pt}
\thu@define@fontsize{liuhao}{7.5pt}
\thu@define@fontsize{xiaoliu}{6.5pt}
\thu@define@fontsize{qihao}{5.5pt}
\thu@define@fontsize{bahao}{5pt}
%% 正文小四号(12pt)字,行距为固定值18 pt,22/12=1.67倍行距 行间距不小于三分之二字高度
%\renewcommand\normalsize{\fontsize{12pt}{18pt}\selectfont}
% \renewcommand\normalsize{\fontsize{12pt}{20pt}\selectfont}
\renewcommand\normalsize{\fontsize{12pt}{23.1pt}\selectfont}
\renewcommand\small{\fontsize{10.5pt}{17.5pt}\selectfont}
%% 设置页面颜色值
\RequirePackage{xcolor}
\definecolor{headr}{RGB}{212,14,14}
\definecolor{headb}{RGB}{0,0,0}
% 加载此宏包以支持并排图形,打开 config 选项以兼容过时宏包
% subfigure
\RequirePackage{caption}
\RequirePackage{subcaption}
\captionsetup[sub]{font = small}
% 加强定理环境的宏包
\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
% 表格宏包
\RequirePackage{array}
% 支持三线表表的宏包,方便水平表格线的粗细控制
\RequirePackage{booktabs}
% 控制目录风格的宏包
\RequirePackage{titletoc}
% 支持引用缩写的宏包
\RequirePackage[numbers,super,sort&compress]{natbib}
% 生成有书签的 pdf 及其开关,结合 gbk2uni 避免生成乱码
\ifpdf
\RequirePackage[pdftex,pdfpagelabels]{hyperref}
\else
\ifxetex
\RequirePackage[xetex]{hyperref}
\DeclareGraphicsExtensions{.pdf,.eps,.png,.jpg,}
\else
\ifHUST@dvips
\RequirePackage[dvips,pdfpagelabels]{hyperref}
\else
\RequirePackage[dvipdfmx,CJKbookmarks,pdfpagelabels]{hyperref}
\fi
\fi
\fi
% 加载 hypernat 宏包使 hyperref 和 natbib 可以配合正常工作
\hypersetup{%
CJKbookmarks=true,
bookmarksnumbered=true,
bookmarksopen=true,
breaklinks=true,
colorlinks=true, % avoid boxes
citecolor=blue,
linkcolor=black,
anchorcolor=black,
filecolor=black,
menucolor=black,
urlcolor=black,
plainpages=false,
pdfstartview=FitH}
\RequirePackage{hypernat}
\def\figureautorefname{图}%
\def\tableautorefname{表}%
\def\equationautorefname{公式}
\def\sectionautorefname{节}
\def\subsectionautorefname{节}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义版面尺寸,这一部分根据情况可能需要作部分调整。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setlength{\textwidth}{\paperwidth}
\setlength{\textheight}{\paperheight}
\setlength\marginparwidth{0cm}
\setlength\marginparsep{0cm}
\addtolength{\textwidth}{-5.6cm}
\setlength{\oddsidemargin}{2.8cm-1in}
\setlength{\evensidemargin}{\oddsidemargin}
\setlength{\headheight}{0.9cm}
\setlength{\topskip}{0pt}
\setlength{\skip\footins}{15pt}
% \setlength{\footskip}{1.3cm}
\setlength{\footskip}{1.6cm}
\setlength{\topmargin}{3.0cm-1in}
\setlength{\headsep}{0.5cm}
% \addtolength{\textheight}{-7.0cm}
\addtolength{\textheight}{-7.3cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定制公式样式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 允许长公式断行、分页
\allowdisplaybreaks[4]
% 设置公式与上下文的间距
% \abovedisplayskip=10bp plus 2bp minus 2bp
% \abovedisplayshortskip=10bp plus 2bp minus 2bp
% \belowdisplayskip=\abovedisplayskip
% \belowdisplayshortskip=\abovedisplayshortskip
\abovedisplayskip=10pt plus 3pt minus 9pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayskip=\abovedisplayskip
\belowdisplayshortskip=7pt plus 3pt minus 4pt
% 设置公式的编号形式,形式为 (式1.1),\tagform@ 参考 amsmath 中的命令
\renewcommand{\theequation}{\arabic{chapter}.\arabic{equation}}
\let\reftagform@\tagform@
\def\tagform@#1{\maketag@@@{(\hspace{0.1em}\ignorespaces#1\unskip\@@italiccorr)}}
\renewcommand{\eqref}[1]{\textup{\reftagform@{\ref{#1}}}}
% 设置子公式的编号形式,形式为(式1.1a)/(式1.1b)
\@ifundefined{ignorespacesafterend}{%
\def\ignorespacesafterend{\global\@ignoretrue}%
}{}
\renewenvironment{subequations}{%
\refstepcounter{equation}%
\protected@edef\theparentequation{\theequation}%
\setcounter{parentequation}{\value{equation}}%
\setcounter{equation}{0}%
\def\theequation{\theparentequation\alph{equation}}%
\ignorespaces
}{%
\setcounter{equation}{\value{parentequation}}%
\ignorespacesafterend
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 设定浮动对象
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 对于 h 参数,浮动对象与前后正文间的距离
\setlength{\intextsep}{0.7\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip}
% 顶部或底部的浮动对象与正文间的距离
\setlength{\textfloatsep}{0.8\baselineskip plus 0.1\baselineskip minus 0.2\baselineskip}
% 设定浮动对象的比例
% 下面这组命令使浮动对象的缺省值稍微宽松一点,从而防止幅度
% 对象占据过多的文本页面,也可以防止在很大空白的浮动页上放置
% 很小的图形。
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.65}
\renewcommand{\floatpagefraction}{0.60}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定制浮动图形和表格的样式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 表格中的字体比正文小半号,为大五号,11pt,同时表格中的行距为 1.4 倍行距
% 重定义 tabular 环境
\let\HUST@tabular\tabular
\renewcommand\tabular{\dawu[1.4]\HUST@tabular}
\let\endHUST@tabular\endtabular
% 重定义 tabular* 环境
\@namedef{tabular*}#1{\dawu[1.4]%
\setlength\dimen@{#1}%
\edef\@halignto{to\the\dimen@}\@tabular}
% 设置标题样式
\long\def\@makecaption#1#2{%
% 图表标题字体比正文小半号,为大五号,11pt
% \setstretch{.9} %在图表标题长度超过一行时,调整行间距使之与正文行间距一致
\dawu
\rmfamily
\song
\vskip\abovecaptionskip
% 去掉图表号后面的":"
\setbox\@tempboxa\hbox{#1~~#2}%
\ifdim \wd\@tempboxa >\hsize
% 如果图表标题的长度超过一行,则采用悬挂缩进的方式
\@hangfrom{#1~~}#2
\else
% 如果图表标题的长度不超过一行,则采用居中方式
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
% 设置标题标签的样式
\def\thefigure{\@arabic\c@figure}
\def\fnum@figure{\figurename~\thefigure}
\def\thetable{\@arabic\c@table}
\def\fnum@table{\tablename~\thetable}
% 设置标题前后间距
\setlength\abovecaptionskip{12bp}
\setlength\belowcaptionskip{12bp}
% 下面两条命令可以使标题编号随着每开始新的一章而重新开始,即按章的顺序编号
\renewcommand{\thetable}{\arabic{chapter}.\arabic{table}}
\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}
% \renewcommand{\thesubfigure}{\thefigure--(\arabic{subfigure})}
% % 定制引用子图的标记形式
% \renewcommand{\p@subfigure}{:}
% 定义新命令\hlinewd 来改变水平线的粗细
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
\reserved@a\@xhline}
% 表格行间距增大10%
\renewcommand{\arraystretch}{1.1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 重定义 itemize, enumerate 和 description 环境,
% 使列表项的间距更紧凑。
% 这个定义和 paralist 宏包不兼容,所以不能加载 paralist 宏包
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% save original itemize, enumerate and description
\let\LaTeXitemize\itemize
\let\endLaTeXitemize\enditemize
\let\LaTeXenumerate\enumerate
\let\endLaTeXenumerate\endenumerate
\let\LaTeXdescription\description
\let\endLaTeXdescription\enddescription
% Space between first item and preceding paragraph
\newskip\HUSTtopsep
\HUSTtopsep 0pt
% the space between the end of the label box
% and the text of the first item.
% Its default value is 0.5em.
\newdimen\HUSTnormlabelsep
\HUSTnormlabelsep 0.3em
% new dimension the list labels are indented to the right.
% Normally, this is the same as the paragraph indention
\newdimen\labelindent
\labelindent \parindent
% the default amount of \labelindent.
% Normally, this is the same as the paragraph indention
\newdimen\HUSTlabelindent
\HUSTlabelindent \parindent
% This command provides an easy way to set \leftmargin based
% on the \labelwidth, \labelsep and the argument \labelindent
% Usage: \calcleftmargin{width-to-indent-the-label}
% output is in the \leftmargin variable, i.e., effectively:
% \leftmargin = argument + \labelwidth + \labelsep
\def\calcleftmargin#1{\setlength{\leftmargin}{#1}%
\addtolength{\leftmargin}{\labelwidth}%
\addtolength{\leftmargin}{\labelsep}}
% The actual amount labels will be indented is
% \labelindent multiplied by the factors below
% corresponding to the level of nesting depth
% This provides a means by which the user can
% alter the effective \labelindent for deeper
% levels
% The first list level almost always has full indention.
% The second levels I've seen have only 75% of the normal indentation
% Three level or greater nestings are very rare. I am guessing
% that they don't use any indentation.
% excerpted from IEEEtrantools.sty
\def\HUSTlabelindentfactori{0.8} %
\def\HUSTlabelindentfactorii{-0.3} % 0.0 or 1.0 may be used in some cases
\def\HUSTlabelindentfactoriii{-0.3} % 0.75? 0.5? 0.0?
\def\HUSTlabelindentfactoriv{-0.3}
\def\HUSTlabelindentfactorv{-0.3}
\def\HUSTlabelindentfactorvi{-0.3}
% factor value actually used within lists, it is auto
% set to one of the 6 values above
% global changes here have no effect
\def\labelindentfactor{1.0}
% provide original LaTeX itemize, enumerate and description
% environment from article.cls
\def\itemize{\@ifnextchar[{\@HUSTitemize}{\@HUSTitemize[\relax]}}
\def\enumerate{\@ifnextchar[{\@HUSTenumerate}{\@HUSTenumerate[\relax]}}
\def\description{\@ifnextchar[{\@HUSTdescription}{\@HUSTdescription[\relax]}}
\def\enditemize{\endlist}
\def\endenumerate{\endlist}
\def\enddescription{\endlist}
\def\@HUSTitemize[#1]{%
\ifnum\@itemdepth>3\relax\@toodeep\else%
\ifnum\@listdepth>5\relax\@toodeep\else%
\advance\@itemdepth\@ne%
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
\advance\@listdepth\@ne%
\edef\labelindentfactor{\csname HUSTlabelindentfactor\romannumeral\the\@listdepth\endcsname}%
\advance\@listdepth-\@ne%
\list{\csname\@itemitem\endcsname}{%
\topsep\HUSTtopsep%
\labelindent\HUSTlabelindent%
\labelsep\HUSTnormlabelsep%
\partopsep\z@%
\parsep\z@%
\itemsep\z@%
\rightmargin\z@%
\listparindent\z@%
\itemindent\z@%
\settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}%
\def\makelabel##1{\makebox[\labelwidth][r]{\normalfont ##1}}%
#1\relax%
\labelindent=\labelindentfactor\labelindent%
\calcleftmargin{\labelindent}%
}
\fi\fi}
% commands generating enumerate labels
\def\labelenumi{\theenumi)}\def\theenumi{\arabic{enumi}}
\def\labelenumii{(\theenumii)}\def\theenumii{\arabic{enumii}}
\def\labelenumiii{\theenumiii.}\def\theenumiii{\alph{enumiii}}
\def\labelenumiv{(\theenumiv)}\def\theenumiv{\alph{enumiv}}
\def\@HUSTenumerate[#1]{%
\ifnum\@enumdepth>3\relax\@toodeep\else%
\ifnum\@listdepth>5\relax\@toodeep\else%
\advance\@enumdepth\@ne%
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\advance\@listdepth\@ne%
\edef\labelindentfactor{\csname HUSTlabelindentfactor\romannumeral\the\@listdepth\endcsname}%
\advance\@listdepth-\@ne%
\list{\csname label\@enumctr\endcsname}{
\usecounter{\@enumctr}%
\topsep\HUSTtopsep%
\labelindent\HUSTlabelindent%
\labelsep\HUSTnormlabelsep%
\partopsep\z@%
\parsep\z@%
\itemsep\z@%
\rightmargin\z@%
\listparindent\z@%
\itemindent\z@%
\settowidth{\labelwidth}{(9)}%
\def\makelabel##1{\makebox[\labelwidth][r]{\normalfont ##1}}%
#1\relax%
\labelindent=\labelindentfactor\labelindent%
\calcleftmargin{\labelindent}%
}\fi\fi}%
\def\@HUSTdescription[#1]{%
\ifnum\@listdepth>5\relax\@toodeep\else%
\advance\@listdepth\@ne%
\edef\labelindentfactor{\csname HUSTlabelindentfactor\romannumeral\the\@listdepth\endcsname}%
\advance\@listdepth-\@ne%
\list{}{
\topsep\HUSTtopsep%
\labelindent\HUSTlabelindent%
\labelsep\HUSTnormlabelsep%
\partopsep\z@%
\parsep\z@%
\itemsep\z@%
\rightmargin\z@%
\listparindent\z@%
\itemindent\z@%
\settowidth{\labelwidth}{Hellohello}%
\def\makelabel##1{\makebox[\labelwidth][r]{\normalfont ##1}}%
#1\relax%
\labelindent=\labelindentfactor\labelindent%
\calcleftmargin{\labelindent}}\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 用于中文段落缩进和正文版式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength\CJKtwospaces
\def\CJKindent{\parindent2em}
% 段落之间的竖直距离
\setlength{\parskip}{0pt plus2pt minus1pt}
% 定理环境
\gdef\@endtrivlist#1{% % from \endtrivlist
\if@inlabel \indent\fi
\if@newlist \@noitemerr\fi
\ifhmode
\ifdim\lastskip >\z@ #1\unskip \par %<<<<<<<<<<<<<<<<<<<<<<
\else #1\unskip \par \fi
\fi
\if@noparlist \else
\ifdim\lastskip >\z@
\@tempskipa\lastskip \vskip -\lastskip
\advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
\vskip\@tempskipa
\fi
\@endparenv
\fi #1}
\theoremstyle{plain}
\theorembodyfont{\song\rmfamily}
\theoremheaderfont{\hei\rmfamily}
%\theoremsymbol{\ensuremath{\blacksquare}}
\theoremsymbol{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义正文中段落章节标题的格式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 正文涉及 4 层,即: x.x.x.x
% chapter(0), section(1), subsection(2), subsubsection(3)
\setcounter{secnumdepth}{3}
% 章序号与章名之间空一个汉字符,黑体三号字,居中书写,单倍行距,
% 段前空20磅,段后空20磅。
\renewcommand \thechapter {\@arabic\c@chapter}
\def\@makechapterhead#1{%
\vspace*{20bp}%
\begingroup
\hei \bfseries \sanhao[1]\centering
\ifnum \c@secnumdepth >\m@ne
\thechapter\hskip1em
\fi
\interlinepenalty\@M
#1\par\endgroup
\nobreak
\vskip 20bp
}
\def\@makeschapterhead#1{%
\vspace*{20bp}%
\begingroup
\hei \bfseries \sanhao[1]\centering
\interlinepenalty\@M
#1\par\endgroup
\nobreak
\vskip 20bp
}
% 一级节标题,例如:“2.1 理论分析”。
% 节标题序号与标题名之间空一个汉字符。
% 采用黑体四号(14pt)字居左书写,1.5倍行距(21pt),
% 段前空14磅,段后空7磅。
\def\@seccntformat#1{\csname the#1\endcsname\hskip 1em\relax}
\renewcommand\section{\@startsection {section}{1}{\z@}%
{14bp}%
{7bp}%
{\hei \bfseries \sihao[1.5]}}
% 二级节标题,例如:“2.1.1 理论分析”。
% 节标题序号与标题名之间空一个汉字符。
% 采用黑体半小四号(13.5pt)字居左书写,1.5倍行距(19.5pt),
% 段前空16磅,段后空6磅。
\renewcommand\subsection{\@startsection {subsection}{2}{\z@}%
{14bp}%
{7bp}%
{\hei \bfseries \banxiaosi[1.5]}}
% 三级节标题,例如:“2.1.1.1 理论分析”。
% 节标题序号与标题名之间空一个汉字符。
% 采用黑体小四号(12pt)字居左书写,1.5倍行距(18pt),
% 段前空16磅,段后空6磅。
\renewcommand\subsubsection{\@startsection {subsubsection}{3}{\z@}%
{14bp}%
{7bp}%
{\hei \bfseries \xiaosi[1.5]}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 应用 titletoc 宏包定义标题的目录项格式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%改动3
% 目录涉及 2 层,即: x.x
% chapter(0), section(1), subsection(2), subsubsection(3)
\setcounter{tocdepth}{1}
%适当增加目录项的右边距
\contentsmargin{2.0em}
% 分别正文一级标题的两种目录项格式
\newcommand{\enabledottedtoc}{%显示标题、指引线和页码
\titlecontents{chapter}
[0.0em]
{\vspace{0.3em}\bfseries\hei\sihao\addvspace{6bp minus6bp}}
{\thecontentslabel\hspace{1em}}
{}
{\normalfont\dotfill\textrm{\contentspage[(\thecontentspage)]}}
}
\newcommand{\disabledottedtoc}{%仅显示标题,不显示指引线和页码
\titlecontents{chapter}
[2.1em]
{\vspace{0.3em}\bfseries\hei\sihao\addvspace{6bp minus6bp}}
{\contentslabel{1.76em}}
{}
{}
}
% 定义其它各级子标题的目录项格式
\titlecontents{section}
[3.24em]
{\vspace{0.3em}\sihao\addvspace{6bp minus6bp}}
{\contentslabel{2.76em}}
{}
{\dotfill\textrm{\contentspage[(\thecontentspage)]}
}
\titlecontents{subsection}
[3.0em]
{}
{\contentslabel{3.0em}}
{}
{\dotfill\textrm{\contentspage[(\thecontentspage)]}}
\titlecontents{subsubsection}
[0.0em]
{}
{\thecontentslabel\hspace{1.0em}}
{}
{\dotfill\textrm{\contentspage[(\thecontentspage)]}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义页眉页脚,参考 fancyhdr 宏包的代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%改动4
\newcommand{\headrulewidth}{1pt}
\newcommand{\footrulewidth}{0.5pt}
\def\ps@plain{%
\ifHUST@finalformat
\def\@oddhead{}
\else
\def\@oddhead{%
\vbox{%
\parbox[b]{\textwidth}{\centering\sihao%
\ziju{0.81em} \kai \bfseries \sanhao[1]
\ifHUST@blackhead
\textcolor{headb} {\HUST@schoolename\HUST@apply}
\else
\textcolor{headr} {\HUST@schoolename\HUST@apply} \fi
}
\vskip6pt
\hspace{-4mm} \vbox{\hspace{-3mm}
\ifHUST@blackhead
\textcolor{headb}{\hrule width 1.04\textwidth height\headrulewidth depth0pt\vskip1pt \hrule width 1.04\textwidth height\headrulewidth}
\else
\textcolor{headr}{\hrule width 1.04\textwidth height\headrulewidth depth0pt\vskip1pt \hrule width 1.04\textwidth height\headrulewidth} \fi
}}}\fi%
\let\@evenhead=\@oddhead
\ifHUST@finalformat
\def\@oddfoot{%
\hbox to\textwidth{%
\vbox{%
\hfill \parbox[t]{\textwidth}{\centering\wuhao\thepage\strut}\hfill
}}}
\else
\def\footrule{{\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
\hrule\@width 1.04\textwidth\@height\footrulewidth\vskip0.45\normalbaselineskip}}
\def\@oddfoot{%
\hbox to \textwidth{%
\hspace{-4mm}\vbox{%
\ifHUST@blackhead
\textcolor{headb}
\footrule
\hfill \hspace{-4mm} \parbox[t]{\textwidth}{\hspace{10mm}\centering\wuhao\thepage\strut} \vspace{3mm}\hfill
\else
\textcolor{headr}
\footrule
\hfill \hspace{-4mm} \parbox[t]{\textwidth}{\hspace{10mm}\centering\wuhao\thepage\strut} \vspace{3mm}\hfill \fi
}}}
\fi
\let\@evenfoot=\@oddfoot}
\pagestyle{plain}
\renewcommand{\chaptermark}[1]{\markboth{\@chapapp \ ~~#1}{}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义脚注
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义按页编号的脚注,用了 perpage 的代码
% 定义脚注修饰线
\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
% 定义脚注大小
\let\HUST@footnotesize\footnotesize
\renewcommand\footnotesize{\HUST@footnotesize\xiaowu[1.3]} % 单倍行距太丑了,还是用1.3吧
% 重新定义生成脚注的命令
\let\HUST@fnsymbol\@fnsymbol
\renewcommand{\thefootnote}{\HUST@fnsymbol\c@footnote}
\renewcommand{\thempfootnote}{\HUST@fnsymbol\c@mpfootnote}
\def\@makefnmark{\textsuperscript{\hbox{\normalfont\@thefnmark}}}
\long\def\@makefntext#1{
\bgroup
\setbox\@tempboxa\hbox{%
\hb@xt@ 2em{\@thefnmark\hss}}
\leftmargin\wd\@tempboxa
\rightmargin\z@
\linewidth \columnwidth
\advance \linewidth -\leftmargin
\parshape \@ne \leftmargin \linewidth
\footnotesize
\@setpar{{\@@par}}%
\leavevmode
\llap{\box\@tempboxa}%
#1
\par\egroup}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义封面和封底
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\xuehao#1{\def\HUST@xuehao{#1}}\def\HUST@xuehao{}
\def\miji#1{\def\HUST@miji{#1}}\def\HUST@miji{}
\def\schoolcode#1{\def\HUST@schoolcode{#1}}\def\HUST@schoolcode{}
\def\ctitle#1{\def\HUST@ctitle{#1}}\def\HUST@ctitle{}
\def\cdegree#1{\def\HUST@cdegree{#1}}\def\HUST@cdegree{}
\def\csubjectname#1{\def\HUST@csubjectname{#1}}\def\HUST@csubjectname{}
\def\cauthorname#1{\def\HUST@cauthorname{#1}}\def\HUST@cauthorname{}
\def\csupervisoronename#1{\def\HUST@csupervisoronename{#1}}\def\HUST@csupervisoronename{}
\def\csupervisortwoname#1{\def\HUST@csupervisortwoname{#1}}\def\HUST@csupervisortwoname{}
\def\csupervisoronetitle#1{\def\HUST@csupervisoronetitle{#1}}\def\HUST@csupervisoronetitle{}
\def\csupervisortwotitle#1{\def\HUST@csupervisortwotitle{#1}}\def\HUST@csupervisortwotitle{}
\def\csupervisortitle#1{\def\HUST@csupervisortitle{#1}}\def\HUST@csupervisortitle{}
\def\defencedate#1{\def\HUST@defencedate{#1}}\def\HUST@defencedate{}
\def\grantdate#1{\def\HUST@grantdate{#1}}\def\HUST@grantdate{}
\def\chair#1{\def\HUST@chair{#1}}\def\HUST@chair{}
\def\firstreviewer#1{\def\HUST@firstreviewer{#1}}\def\HUST@firstreviewer{}
\def\secondreviewer#1{\def\HUST@secondreviewer{#1}}\def\HUST@secondreviewer{}
\def\thirdreviewer#1{\def\HUST@thirdreviewer{#1}}\def\HUST@thirdreviewer{}
\long\def\cabstract#1{\long\def\HUST@cabstract{#1}}\long\def\HUST@cabstract{}
\def\ckeywords#1{\def\HUST@ckeywords{#1}}\def\HUST@ckeywords{}
\def\etitle#1{\def\HUST@etitle{#1}}\def\HUST@etitle{}
\def\edegree#1{\def\HUST@edegree{#1}}\def\HUST@edegree{}
\def\eaffil#1{\def\HUST@eaffil{#1}}\def\HUST@eaffil{}
\def\esubject#1{\def\HUST@esubject{#1}}\def\HUST@esubject{}
\def\eauthor#1{\def\HUST@eauthor{#1}}\def\HUST@eauthor{}
\def\esupervisorone#1{\def\HUST@esupervisorone{#1}}\def\HUST@esupervisorone{}
\def\esupervisortwo#1{\def\HUST@esupervisortwo{#1}}\def\HUST@esupervisortwo{}
% \def\eassosupervisor#1{\def\HUST@eassosupervisor{#1}}\def\HUST@eassosupervisor{}
% \def\ecosupervisor#1{\def\HUST@ecosupervisor{~ & #1\\}}\def\HUST@ecosupervisor{}
\def\edate#1{\def\HUST@edate{#1}}\def\HUST@edate{}
\newcommand{\tabincell}[2]{\begin{HUST@tabular}{@{}#1@{}}#2\end{HUST@tabular}}
\long\def\eabstract#1{\long\def\HUST@eabstract{#1}}\long\def\HUST@eabstract{}
\def\ekeywords#1{\def\HUST@ekeywords{#1}}\def\HUST@ekeywords{}
\def\dctab#1{\def\HUST@dctab{#1}}\def\HUST@dctab{}
% 中文封面
\newcommand{\HUST@ctitlepage}{
\begin{center}
\vspace*{-3.3cm}
\parbox[t][2.2cm][t]{\textwidth}{\xiaosi \bfseries
\begin{center}\song
\setlength{\tabcolsep}{0pt}
\setlength{\extrarowheight}{3pt}
\begin{HUST@tabular}{p{4em}p{5em}p{\textwidth-18em}p{2em}p{12em}}
\HUST@classno & \makebox[0pt][l]{\rule[-2.0pt]{5em}{1pt}} & \hfill & \HUST@studentno & \makebox[0pt][l]{\rule[-2.0pt]{7em}{1pt}}{\hspace{1em}\HUST@xuehao} \tabularnewline
\HUST@UDC & \makebox[0pt][l]{\rule[-2.0pt]{5em}{1pt}}{\hfill\HUST@schoolcode\hfill\hfill} & \hfill & \HUST@secrettitle & \makebox[0pt][l]{\rule[-2.0pt]{7em}{1pt}}{\hspace{2.5em}\HUST@miji} \tabularnewline
\end{HUST@tabular}
\end{center}
}
\parbox[t][7cm][t]{\textwidth}{
%\renewcommand{\baselinestretch}{1.5}
\vspace{2.0cm}
\begin{center}
\includegraphics[scale=0.9]{supply/figures/hust_label.png}\\[1.3cm]
\vspace{-0.8cm}
\ziju{5bp}\dachu[1]{\bfseries \zhongsong \HUST@apply} \\%\CJKfamily{fzcs}
\vspace{-0.4cm}
\ziju{1bp}\bf{\xiaosan[1]{( 学术型$\mbox{\ooalign{$\checkmark$\cr\hidewidth$\square$\hidewidth\cr}}$ $\quad \quad$ 专业型$\square$ )}}
\end{center}}\\
\parbox[t][4cm][t]{\paperwidth-7cm}{
\vspace{3.0cm}
\begin{center}
\yihao[1.3] {\bf \song \HUST@ctitle}%\CJKfamily{fzcs}
\end{center}}
\parbox[t][7.4cm][t]{\textwidth}{\vspace{5cm}\xiaosan[1.5] \bf
\begin{center}\song
\setlength{\extrarowheight}{2.5pt}
\begin{HUST@tabular}{p{5em}ll}
\HUST@cauthor & \HUST@title@sep & {\HUST@cauthorname} \vspace{0.4em}\\
\HUST@csubject & \HUST@title@sep & {\HUST@csubjectname} \vspace{0.4em}\\
\HUST@csupervisor & \HUST@title@sep & {\HUST@csupervisoronename\hspace{1em}\HUST@csupervisoronetitle} \vspace{0.4em}\\
\ifx\HUST@csupervisortwoname\@empty
\ifx\HUST@csupervisortwotitle\@empty
\else
& & {\HUST@csupervisortwoname\hspace{1em}\HUST@csupervisortwotitle} \vspace{0.4em}\\ % 头衔存在时显示
\fi
\else
& & {\HUST@csupervisortwoname\hspace{1em}\HUST@csupervisortwotitle} \vspace{0.4em}\\ % 名字存在时显示
\fi
\HUST@cdefencedate & \HUST@title@sep & {\ziju{3bp}\HUST@defencedate}
\end{HUST@tabular}
\end{center}}
% 下面是原来封面的命令设置
\iffalse
\parbox[t][2cm][t]{\paperwidth-5.6cm}{{\sihao[1.5]
\begin{center}\song
\begin{HUST@tabular}{p{7.6cm}p{7.6cm}}
\HUST@cdefencedate\makebox[0pt][l]{\rule[-2.5pt]{9em}{1pt}}{\hspace{1em}{\ziju{3bp}\HUST@defencedate}\hfill } & {\HUST@cgrantdate}\makebox[0pt][l]{\rule[-2.5pt]{9em}{1pt}}{\hspace{1em}{\ziju{3bp}\HUST@grantdate}\hspace{3em}}\\
\HUST@cchair\makebox[0pt][l]{\rule[-2.5pt]{8em}{1pt}}{\hfill {\HUST@chair}\hfill \hfill } & {\HUST@creviewers}\makebox[0pt][l]{\rule[-2.5pt]{3.5em}{1pt}}{\hfill \HUST@firstreviewer\hfill \hfill }\makebox[0pt][l]{\rule[-2.5pt]{3.5em}{1pt}}{\hfill \HUST@secondreviewer\hfill \hfill }\makebox[0pt][l]{\rule[-2.5pt]{3.5em}{1pt}}{\hfill \HUST@thirdreviewer\hfill }\hfill \hfill
\end{HUST@tabular}
\end{center}}}
\fi
\end{center}}
% 答辩委员会
\newcommand{\HUST@defencecommittee}{
\begin{center}\song\sanhao
{\hei\bfseries 答辩委员会}\\
\vspace{2.0cm} \sihao
\renewcommand{\arraystretch}{2}
\HUST@dctab
\end{center}
}
% 英文封面
\newcommand{\HUST@etitlepage}{%
\begin{center}
\vspace*{-1.2cm}
\parbox[t][5.2cm][t]{\textwidth}{
\renewcommand{\baselinestretch}{1.5}
\begin{center}
\xiaosan[1.1] \textbf{A Dissertation Submitted in Partial Fulfillment of the Requirements
for the Degree of \HUST@edegree}
\end{center}}
\parbox[t][5.5cm][t]{\textwidth}{
\vspace{1.8cm}
\renewcommand{\baselinestretch}{1.3}
\begin{center}
\erhao \textbf{\HUST@etitle}
\end{center}}
\vspace*{2cm}
\parbox[t][2.1cm][t]{\textwidth-4cm}{
\vspace{1cm}
\xiaosan[1.2]\bfseries\centering%
\begin{HUST@tabular}{lrp{20em}}
Ph.D. Candidate & : & \HUST@eauthor\\ \vspace{-0.3pt}\\
Major & : & \HUST@esubject\\ \vspace{-0.3pt}\\
Supervisor & : & \HUST@esupervisorone\\ \vspace{-0.3pt}\\
\ifx\HUST@esupervisortwo\@empty
% \fi
\else
& & \HUST@esupervisortwo
\fi
\end{HUST@tabular}
}
\vspace*{1.6cm}
\parbox[t][6cm][b]{\paperwidth-7.2cm}{
\begin{center}
\sihao[2.0] {\bf{Huazhong University of Science and Technology\\
Wuhan~430074, P.~R.~China\\
\HUST@edate}}
\end{center}}
\end{center}}
% 版权页
\newcommand{\HUST@authorization@mk}{%
%\vspace*{1cm}
\begin{center}
\parbox[t]{\textwidth}{\sanhao \hei \centerline{\HUST@declare}}
\vspace{1cm}
\parbox[t]{\textwidth}{\xiaosi[2]\HUST@declaretext}
\vspace{1cm}
\parbox[t]{\textwidth}{\xiaosi[1.5]
\hfill \begin{HUST@tabular}{ll}
\HUST@authorsig & \hspace{-2em} \vspace{0.5cm}\\
\HUST@frontdate & \hspace{-2em} \\
\end{HUST@tabular}}\\
\vspace{2cm}
\begin{center}
\parbox[t][3cm][c]{\textwidth}{\sanhao \hei \centerline{ \HUST@authtitle}}
\parbox[t][3cm][c]{\textwidth}{\xiaosi[2]\HUST@authorization}\\
\hspace*{2em}\parbox[t][2cm][c]{\textwidth}{\xiaosi[2]\HUST@authorizationaddon}\\ \vspace{-1em}
\hspace*{2em}\parbox[t][2cm][c]{\textwidth}{\xiaosi[2]\HUST@authorizationcheck}\\
\vspace{-2cm}
\hspace*{2em}\parbox[t][3cm][b]{\textwidth-2em}{\xiaosi[1.5]
\begin{HUST@tabular}{ll}
\hspace{-1.5em} \HUST@authorsig & \hspace{-2em} \vspace{0.5cm}\\
\hspace{-1.5em} \HUST@frontdate & \hspace{-2em} \\
\end{HUST@tabular}
\hfill
\begin{HUST@tabular}{ll}
\HUST@teachersig & \hspace{-2.4em} \vspace{0.5cm}\\
\HUST@frontdate & \hspace{-2.4em} \\
\end{HUST@tabular}}
\end{center}
\end{center}}
% 定义封面 \makecover
\newcommand{\makecover}{
\pagenumbering{Roman}
\begin{titlepage}
\HUST@ctitlepage
\clearpage\thispagestyle{empty}\HUST@defencecommittee
\clearpage\thispagestyle{empty}\HUST@etitlepage
\end{titlepage}
\clearpage\thispagestyle{empty}\HUST@authorization@mk
\HUST@makeabstract}
% 为了符合学校单面打印的要求,重定义 \mainmatter
\renewcommand\mainmatter{%
\clearpage
\@mainmattertrue
\pagenumbering{arabic}}
% 定义中英文摘要
\newcommand{\HUST@makeabstract}{%
%改动5
% 定义中文摘要
\clearpage
\setcounter{page}{1}
\phantomsection
\titlecontents{chapter}%重定义摘要的目录项格式
%有指引线,有页码,页码无括号
[0.0em]
{\bfseries\hei\addvspace{6bp minus6bp}}
{\thecontentslabel\hspace{1em}}
{}
{\normalfont\dotfill\textrm{\bfseries\contentspage}}
\addcontentsline{toc}{chapter}{\sihao 摘~~~~要}
\chapter*{\bfseries\hei\abstractname}
\markboth{\abstractshortname}{\abstractshortname}
\HUST@cabstract
\\[1em]
\noindent\begin{HUST@tabular}{@{}p{4em}@{}p{\textwidth-4em}} \\
{\hei\HUST@keywords} & \HUST@ckeywords \\
\end{HUST@tabular}
% 定义英文摘要
\clearpage
\phantomsection
\addcontentsline{toc}{chapter}{\sihao Abstract}
\normalsize
\chapter*{{\bfseries Abstract}}
\markboth{Abstract}{Abstract}
\HUST@eabstract
\\[1em]
\noindent\begin{HUST@tabular}{@{}p{5em}@{}p{\textwidth-5em}}
{\textbf{Keywords:}} & \hspace{0.4em} \HUST@ekeywords\\
\end{HUST@tabular}
\disabledottedtoc%
}
% 定义“符号对照表”环境,可选
%改动6
% 定义封底的“致谢”
%改动7
\newenvironment{ack}{
\clearpage
\phantomsection
\enabledottedtoc
\addcontentsline{toc}{chapter}{\sihao \HUST@ackname}
\normalsize
\chapter*{\HUST@ackname}}
{}
% 定义附录及其目录项格式
%改动8
\let\HUST@appendix\appendix
\renewenvironment{appendix}{%
\HUST@appendix
%\gdef\@chapapp{\appendixname}~\thechapter
\def\@makechapterhead##1{%重定义附录章节标题格式
\vspace*{24bp}%
\begingroup
\centering
\ifnum \c@secnumdepth >\m@ne
\hei\sanhao[1]\appendixname~\thechapter\hskip1em
\fi
\interlinepenalty\@M
##1\par\endgroup
\nobreak
\vskip 20bp
}
\gdef\thechapter{\@arabic\c@chapter}
\renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi \@arabic\c@equation}
\titlecontents{chapter}
[0.0em]
{\vspace{0.45em}\bfseries\hei\sihao\addvspace{6bp minus6bp}}
{\appendixname~\thecontentslabel\hspace{1em}}
{}
{\normalfont\dotfill\textrm{\contentspage[(\thecontentspage)]}}
}{}
% 定义封底的“答辩委员会决议”
\newenvironment{decision}{
\phantomsection
\chapter{\HUST@decision@title}
\markboth{\HUST@decision@title}{\HUST@decision@title}
}
% 定义封底的“攻读博士学位期间取得的研究成果”
\newenvironment{publications}{
% \clearpage
\phantomsection
\chapter{\HUST@publication@title}
\markboth{\HUST@publication@title}{\HUST@publication@title}
}
% 定义封底的“已发表论文与博士学位论文的关系”
\newenvironment{paperRelation}{
\phantomsection
\chapter{\HUST@paperRelation@title}
\markboth{\HUST@paperRelation@title}{\HUST@paperRelation@title}
% 在此处添加已发表论文与博士学位论文的关系的内容
}
% 定义封底的“攻读博士学位期间参与的科研项目”
\newenvironment{project}{
% \clearpage
\phantomsection
\chapter{\HUST@project@title}
}
\newenvironment{denotation}{
%\cleardoublepage
\phantomsection
% \titlecontents{chapter}
% [0.0em]
% {\bfseries\hei\addvspace{6bp minus6bp}}
% {\thecontentslabel\hspace{1em}}
% {}
% {\normalfont\dotfill\textrm{\bfseries\contentspage}}
% \addcontentsline{toc}{chapter}{\sihao \HUST@denotation@name}
\chapter{\HUST@denotation@name}
\markboth{\HUST@denotation@name}{\HUST@denotation@name}
\xiaosi[1.6]
\noindent\begin{list}{}%
{\renewcommand\makelabel[1]{##1\hfil}
\setlength{\labelwidth}{2.5cm} %标签盒子宽度
\setlength{\labelsep}{0.5cm} %标签与列表文本距离
\setlength{\itemindent}{0cm} %标签缩进量
\setlength{\leftmargin}{\labelwidth+\labelsep} %左边界
\setlength{\rightmargin}{0cm}
\setlength{\parsep}{0cm} %段落间距
\setlength{\itemsep}{0cm} %标签间距
\setlength{\listparindent}{0cm} %段落缩进量
\setlength{\topsep}{0pt} %标签与上文的间距
}
\disabledottedtoc}
{\end{list}}%%%%%
% 定义封底的“已发表论文与博士学位论文的关系”
\newenvironment{otherDatas}{
\phantomsection
\chapter{\HUST@otherDatas@title}
\markboth{\HUST@otherDatas@title}{\HUST@otherDatas@title}
% 在此处添加已发表论文与博士学位论文的关系的内容
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义参考文献样式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 结合 natbib 宏包定义参考文献样式
\bibpunct{[}{]}{,}{s}{}{,}
\renewcommand\NAT@citesuper[3]{\ifNAT@swa
\unskip\kern\p@\textsuperscript{\NAT@@open #1\NAT@@close}%
\if*#3*\else\ (#3)\fi\else #1\fi\endgroup}
\DeclareRobustCommand\inlinecite{\@inlinecite}
\def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup}
\renewenvironment{thebibliography}[1]{
\clearpage
\phantomsection % make sure the hyperlink is correct
\enabledottedtoc%
\addcontentsline{toc}{chapter}{\sihao \bibname}%
\chapter*{\bibname}%
\markboth{\bibname}{\bibname}%
\xiaosi[1.5]
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\addtolength{\itemsep}{-0.6em}
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\interlinepenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\urlstyle{same}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义生成索引的命令,暂时用不到
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\iffalse \newcommand{\bs}{\symbol{'134}}%Print backslash
% \newcommand{\bs}{\ensuremath{\mathtt{\backslash}}}%Print backslash
% Index entry for a command (\cih for hidden command index
\newcommand{\cih}[1]{%
\index{commands!#1@\texttt{\bs#1}}%
\index{#1@\texttt{\hspace*{-1.2ex}\bs #1}}
}
\newcommand{\ci}[1]{\cih{#1}\texttt{\bs#1}}
% Package
\newcommand{\pai}[1]{%
\index{packages!#1@\textsf{#1}}%
\index{#1@\textsf{#1}}%
\textsf{#1}}
% Index entry for an environment
\newcommand{\ei}[1]{%
\index{environments!\texttt{#1}}%
\index{#1@\texttt{#1}}%
\texttt{#1}}
% Indexentry for a word (Word inserted into the text)
\newcommand{\wi}[1]{\index{#1}#1}
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 自定义命令
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 定义字距
\newcommand*{\ziju}[1]{\renewcommand{\CJKglue}{\hskip #1}} %
% 定义破折号
\newcommand{\pozhehao}{\kern0.3ex\rule[0.8ex]{2em}{0.1ex}\kern0.3ex}
% 定义关键字的间距
\newcommand{\keyspace}{\hspace{2em}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 开启 CJK 环境,加载 HUSTthesis.cpx 中文配置文件
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\theoremseparator{:}
\newtheorem{definition}{定义}[chapter]
\newtheorem{proposition}{命题}[chapter]
\newtheorem{lemma}{引理}[chapter]
\newtheorem{theorem}{定理}[chapter]
\newtheorem{axiom}{公理}[chapter]
\newtheorem{corollary}{推论}[chapter]
\newtheorem{exercise}{练习}[chapter]
\newtheorem{example}{例}[chapter]
\theoremsymbol{\ensuremath{\square}}
\theoremstyle{nonumberplain}
\newtheorem{proof}{\bfseries \hei{证明}}
\renewcommand\contentsname{\hei \bfseries 目\hspace{2em}录}
\renewcommand\listfigurename{插图}
\renewcommand\listtablename{表格}
\@ifundefined{chapter}
{\renewcommand\refname{参考文献}}
{\renewcommand\bibname{参考文献}}
\renewcommand\indexname{索引}
\renewcommand\figurename{图}
\renewcommand\tablename{表}
\newcommand\CJKprepartname{第}
\newcommand\CJKpartname{部分}
\newcommand\CJKthepart{\CJKnumber{\@arabic\c@part}}
\newcommand\equname{式}
\renewcommand\appendixname{附录}
\newcommand{\abstractshortname}{摘\hspace{2em}要}
\newcommand{\abstractname}{摘\hspace{2em}要}
\let\CJK@todaysave=\today
\def\CJK@todaysmall{~\the\year~年~\the\month~月~\the\day~日}
\def\CJK@todaybig{\CJKdigits{\the\year}年\CJKnumber{\the\month}月\CJKnumber{\the\day}日}
\def\CJK@today{\CJK@todaysmall}
\renewcommand\today{\CJK@today}
\newcommand\CJKtoday[1][1]{%
\ifcase#1\def\CJK@today{\CJK@todaysave}
\or\def\CJK@today{\CJK@todaysmall}
\or\def\CJK@today{\CJK@todaybig}
\fi}
\def\HUST@i{①}
\def\HUST@ii{②}
\def\HUST@iii{③}
\def\HUST@iv{④}
\def\HUST@v{⑤}
\def\HUST@vi{⑥}
\def\HUST@vii{⑦}
\def\HUST@viii{⑧}
\def\HUST@ix{⑨}
\def\HUST@x{⑩}
\renewcommand\HUST@fnsymbol[1]{\ifcase#1 \or \ding{172}\or \ding{173}\or
\ding{174}\or \ding{175}\or \ding{176}\or \ding{177}%
\or \ding{178}\or \ding{179}\or \ding{180}\or \ding{181}\else *\fi\relax}
\def\HUST@title@sep{\hspace{-0.5em}:\hspace{2em}}
\def\HUST@schoolename{华中科技大学}
%\def\HUST@schoolename{} %盲审,删去页眉
\def\HUST@classno{分\hfill 类\hfill 号}
\def\HUST@studentno{学号}
\def\HUST@UDC{学校代码}
\def\HUST@secrettitle{密级}
\def\HUST@apply{博士学位论文}
\def\HUST@csubject{学\hfill 科\hfill 专\hfill 业}
\def\HUST@cauthor{学\hfill 位\hfill 申\hfill 请\hfill 人}
\def\HUST@csupervisor{指\hfill 导\hfill 教\hfill 师}
\def\HUST@cdefencedate{答\hfill 辩\hfill 日\hfill 期}
\def\HUST@cgrantdate{学位授予日期}
\def\HUST@cchair{答辩委员会主席}
\def\HUST@creviewers{评阅人}
\edate{\ifcase \month \or January\or February\or March\or April\or May\or June\or July
\or August\or September\or October\or November\or December\fi,\ \ \the\year}
\newcommand{\HUST@authtitle}{学位论文版权使用授权书}
\newcommand{\HUST@authorization}{%
\hspace*{2em}本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:
学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、
缩印或扫描等复制手段保存和汇编本学位论文。}
\newcommand{\HUST@authorizationaddon}{%
本论文属于 \tabincell{l}{保\hspace{1em}密$\square$,在~\makebox[2em]{\hrulefill} 年解密后适用本授权书。\\
不保密~$\square$。} }
\newcommand{\HUST@authorizationcheck}{%
(请在以上方框内打“$\surd$”)}
\newcommand{\HUST@authorsig}{学位论文作者签名:}
\newcommand{\HUST@teachersig}{指导教师签名:}
\newcommand{\HUST@frontdate}{日期:\hspace{2em}年\hspace{2em}月\hspace{2em}日}
\newcommand{\HUST@keywords}{关键词:}
\newcommand{\HUST@ackshortname}{致谢}
\newcommand{\HUST@ackname}{致\hspace{1em}谢}
\newcommand{\HUST@acklongname}{致谢与声明}
\newcommand{\HUST@declare}{独创性声明}
\newcommand{\HUST@declaretext}{\hspace{2em}本人声明所呈交的学位论文是我个人在导师的指导下进行的研究工作及取得的研究成果。
尽我所知,除文中已标明引用的内容外,本论文不包含任何其他人或集体已经发表或撰写过的研究成果。对本文的研究
做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。}
\newcommand{\HUST@signature}{签\hspace{1em}名:}
\newcommand{\HUST@backdate}{日\hspace{1em}期:}
\newcommand{\HUST@decision@title}{答辩委员会决议}
\newcommand{\HUST@publication@title}{攻读博士学位期间取得的研究成果}
\newcommand{\HUST@paperRelation@title}{公开发表的学术成果与博士学位论文的关系}
\newcommand{\HUST@patent@title}{攻读博士学位期间申请的发明专利和其他成果}
\newcommand{\HUST@project@title}{攻读学位期间参加的科研项目}
% \newcommand{\HUST@honor@title}{攻读博士学位期间所获奖励}
\newcommand{\HUST@denotation@name}{中英文缩写对照表}
\newcommand{\HUST@otherDatas@title}{其他数据图表或程序}
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of HUSTthesis.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
% That's all folks!
================================================
FILE: HUSTtils.sty
================================================
\ProvidesPackage{HUSTtils}[2024/01/23 3.0.1x any packages you would
like to use]
%%%%% Setting for python env.
\usepackage[utf8]{inputenc}
\usepackage{setspace}
% Default fixed font does not support bold face
\DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{9} % for bold
\DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{9} % for normal
% Custom colors
\usepackage{color}
\definecolor{deepblue}{rgb}{0,0,0.5}
\definecolor{deepred}{rgb}{0.6,0,0}
\definecolor{deepgreen}{rgb}{0,0.5,0}
\usepackage[final]{listings}
\usepackage{lstautogobble}
\usepackage[ruled,linesnumbered,algo2e]{algorithm2e}
\usepackage[export]{adjustbox}
% Python style for highlighting
\newcommand\pythonstyle{\lstset{
language=Python,
breaklines=true,
numbers=left,
numberstyle=\tiny,
basicstyle=\setstretch{0.7}\ttm, %
otherkeywords={self}, % Add keywords here
keywordstyle=\ttb\color{deepblue}, % \ttb
%emph={MyClass,__init__}, % Custom highlighting
emphstyle=\ttb\color{deepred}, % Custom highlighting style \ttb
stringstyle=\color{deepred},
commentstyle=\color{deepgreen},
frame=tb, % Any extra options here
showstringspaces=false, %
xleftmargin=2em,
framexleftmargin=2.5em,
autogobble=true,
literate={-}{-}1
}}
\newcommand\knote[1]{\textcolor{blue}{#1}}
%\newcommand\knote[1]{\textcolor{black}{#1}}
\newcommand\snote[1]{\textcolor{red}{#1}}
% Python environment
\lstnewenvironment{python}[1][]
{
\pythonstyle
\lstset{#1}
}
{}
% Python for external files
\newcommand\pythonexternal[2][]{{
\pythonstyle
\lstinputlisting[#1]{#2}}}
% Bash
%\def\backtick{\char768}
\def\backtick{\`{}}
\newcommand\bashstyle{\lstset{
language=bash,
breaklines=true,
numbers=left,
numberstyle=\tiny,
basicstyle=\setstretch{0.7}\ttm, %
otherkeywords={self}, % Add keywords here
keywordstyle=\ttb\color{deepblue}, % \ttb
%emph={MyClass,__init__}, % Custom highlighting
emphstyle=\ttb\color{deepred}, % Custom highlighting style \ttb
stringstyle=\color{deepred},
commentstyle=\color{deepgreen},
frame=tb, % Any extra options here
showstringspaces=false, %
xleftmargin=2em,
framexleftmargin=2.5em,
upquote=true,
autogobble=true,
%literate={`}{{$^{\backprime}$}}1
% literate={`}{\backtick}1
literate={-}{-}1
}}
% Python environment
\lstnewenvironment{bash}[1][]
{
\bashstyle
\lstset{#1}
}
{}
% Bash for external files
\newcommand\bashexternal[2][]{{
\bashstyle
\lstinputlisting[#1]{#2}}}
%%%%% Setting for python env.
\endinput
================================================
FILE: README.md
================================================
# HUST-PhD-Thesis-Latex
HUSTThesis.cls 2025/07/24 version V3.1.4x; _ThesisBeamer/beamerthemeBFH.sty 2024/01/31 version V1.1.1x
This is the unofficial LaTeX class for Ph.D. Thesis Template of Huazhong University of Science and Technology. 'x' denotes the branch modified by Xinze Zhang.
---
目前学校对于博士、硕士学位论文的撰写规定文件主要有3个:
1. [华中科技大学博士、硕士学位论文撰写规定, 校研〔2009〕39号](https://gs.hust.edu.cn/info/1022/1027.htm)。该文件规定了论文撰写的基本格式,包括题目、摘要和关键词、引言、正文、参考文献等的格式规定。
2. [学位申请相关文档下载](https://gs.hust.edu.cn/info/1135/6335.htm)。该文档提供了学位申请的相关文档格式规范,其中包括了博士与硕士论文封面及独创性声明页的word模板。
3. [2024研究生手册](https://gs.hust.edu.cn/info/1137/6338.htm)。该文档是研究生管理的规范性文件,p239~245页具体展示了[华中科技大学博士、硕士学位论文撰写规定, 校研〔2009〕39号](https://gs.hust.edu.cn/info/1022/1027.htm)的详细内容。
---
建议在本地安装texlive的最新版,华科校内可使用校内镜像站https://mirrors.hust.edu.cn/CTAN/systems/texlive/Images/
建议使用vscode编辑器+LaTex Workshop插件。模板已提供插件的配置文件`.vscode/settings.json`。
---
Available class options
(e.g., \documentclass[draftformat,blackhead]{HUSTthesis}
*** choose only one from each category ***
draftformat, finalformat
提交草稿打开 draftformat 选项,提交盲审版打开 finalformat 选项。
草稿正文页包括页眉(“华中科技大学博士学位论文”),页眉修饰线(双线)。
页脚(页码),页脚修饰线(单线)。
盲审版正文页不包括页眉、页眉修饰线和页脚修饰线,仅包含页脚。
blackhead, redhead
页眉颜色选项,blackhead选项让页眉为黑色,redhead为红色。
---
注意:遇到问题,如参考文献作者数量,建议先在closed issues中检索,可能已有回答。本模板仅供参考。不同学院,乃至同一学院的不同年份,对于学位论文的形式要求也可能不同。所以,对于一些学院的特定形式要求,还请自行调整。
另外,本人理解,模板在一定程度上是为了方便大家达到学术(形式)规范要求。对于学校提供的word模板,所有要求不见得必须严格遵守。例如附录章节的设置,不一定每篇学位论文都需要或存在这些章节。因此,在满足规范的前提下,建议大家灵活调整。
---
07/2025
V3.1.4x changes:
附录参考学校模板进行了修改调整。
---
04/2025
Thesis V3.1.3x changes:
1. 支持双导师. 默认支持单导师,双导师设置见`body/cover.tex`. 感谢[lxysl](https://github.com/lxysl)的PR.
2. 红色或黑色抬头可在导言区进行设置,例如`\documentclass[draftformat,blackhead]{HUSTthesis}`
---
01/2024
Thesis V3.1.2x changes:
In this version, a mini example of the HUST thesis is provided. Compared with the older version, there are many improvements. Main modifications are summarized as follows:
1. Reorganized the file structure.
2. Extract the table of the defence committee members from`HUSTthesis.cls` to `body/cover.tex`
3. Many updates to`HUSTthesis.cls`, `HUSTtils.sty`, and `HUSTThesis.bst`
4. A template of workspace settings with`LaTex Workshop` extension in VSCode is provided in `.vscode/settings.json`. Under this configuration, the thesis pdf file will be automatically compiled with each saving action, and the aux. files will also be automatically cleaned.
Beamer V1.1.1x changes:
1. Update _ThesisBeamer/beamerthemeBFH.sty. A default font setting, almost same with the setting in thesis templete, is provided in this version.
Beamer V1.1.0x changes:
1. A beamer template is provided in '_ThesisBeamer/'. To use the template, configuring the folder of '_ThesisBeamer/' as the project folder, and the main file is 'slice.tex'. Besides, the corresponding workspace settings with`LaTex Workshop` extension in VSCode is provided in `_ThesisBeamer/.vscode/settings.json`.
In the future, the version with a postfix 'x' denotes the branch modified by Xinze, which may be different with the version published by Dr. Li Lianghao. Users can compare different versions for reference.
Over the next three years (2024~2027), as the post-doctoral period of Xinze in HUST, this branch will be updated irregularly.
Best wishes to all Ph.D candidates.
by Zhang Xinze (xinze@hust.edu.cn)
---
09/2021 V3.1 changes:
modify class file (HUSTthesis.cls):
1. update the defence committee page between Chinese and English cover
2. update the indentation and spacing of the itemize, enumerate and description
3. update the reference list according to the latest standard
4. update the appendixs according to the latest standard
by Li Lianghao (lianghao1993@hust.edu.cn)
---
11/2020 V3.0 changes:
1. modify class file (HUSTthesis.cls):
1.1 update the location of 学号(xuehao) of covering page
1.2 update the table length of the emajor
1.3 update the font specification with using the font locally, enabling this project be compiled on overleaf
1.4 remove the font command of lishu and youyuan
2. change the folder name of ./data/* to ./body/* and update the information of xinze zhang
by Zhang Xinze (xinze@hust.edu.cn)
---
06/2006 V2.0 changes:
1. wrote class file (HUSTthesis.cls) based on ThuThesis.cls written by
Xue Ruini, the class file is designed for Doctoral Thesis of HUST.
2. define new Itemize, Enumerate and Description environments with compact spacing
by Liu Huikan (hkliu@mail.edu.cn)
---
04/2004 V1.0 released (Feng Jiang)
by Feng Jiang (fjiang@people.com.cn)
----
HUSTThesis.cls contributors: Xinze Zhang, lxysl(2025 V3.1.3x), Lianghao Li, Jianqing Lin (2021 V3.1), Xinze Zhang (2020 V3.0), Huikan Liu (2006 V2.0), and Feng Jiang (2005 V1.0).
Copyright (C) 2020-2021 by Xinze Zhang <xinze@hust.edu.cn>
Copyright (C) 2006-2007 by Huikan Liu <hkliu@mail.edu.cn>
_ThesisBeamer contributors: Xinze Zhang (2024 V1.1x)
This code is distributed under the Perl Artistic License
( http://language.perl.com/misc/Artistic.html )
and may be freely used, distributed and modified.
Retain the contribution notices and credits.
Current maintainer:
xinze@hust.edu.cn
================================================
FILE: _ThesisBeamer/.vscode/settings.json
================================================
{
"latex-workshop.latex.autoBuild.run": "onSave",
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
],
"env": {}
},
],
"latex-workshop.latex.recipes": [
{
"name": "xelatex*2",
"tools": [
"xelatex",
"xelatex",
]
}
],
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.fls",
// "*.log",
"*.fdb_latexmk",
"*.snm",
"*.synctex(busy)",
"*.synctex.gz(busy)",
"*.nav",
"*.vrb",
"*.thm",
"*.xdv"
],
"latex-workshop.latex.autoClean.run": "onBuilt",
"cSpell.enabled": false
}
================================================
FILE: _ThesisBeamer/beamerthemeBFH.sty
================================================
\mode<presentation>
\RequirePackage{caption}
\RequirePackage{subcaption}
\RequirePackage{hyperref}
\captionsetup{figurename = 图}
\renewcommand\indexname{索引}
\renewcommand\figurename{图}
\renewcommand\tablename{表}
\newcommand\equname{式}
\def\figureautorefname{图}%
\def\tableautorefname{表}%
\def\equationautorefname{公式}
\def\thefigure{\@arabic\c@figure}
\def\fnum@figure{\figurename~\thefigure}
\def\thetable{\@arabic\c@table}
\def\fnum@table{\tablename~\thetable}
% Requirement
\RequirePackage{tikz}
% Settings
\defbeamertemplate*{title page}{BFH}{
% % \vspace*{5mm}
% \begin{flushright}
% \includegraphics[height=15mm]{./images/hust-logo.png}\par
% \end{flushright}
% % \vspace*{5mm}
\vspace{4em}
% \begin{beamercolorbox}[wd=\paperwidth,ht=.4ex]{upper separation line head}
% \end{beamercolorbox}%
\nointerlineskip
\begin{beamercolorbox}[wd=\paperwidth,ht=5em,dp=0em,center]{title}
\vbox to 5em{
\vfil
\vspace{1ex}
\usebeamerfont{title}\strut\inserttitle\strut\par
% \usebeamerfont{subtitle}\insertsubtitle\par
\vfil
}
\end{beamercolorbox}
% \begin{beamercolorbox}[wd=\paperwidth,center]{title}
% \usebeamerfont{subtitle}\insertsubtitle\par
% \end{beamercolorbox}
\nointerlineskip
% \begin{beamercolorbox}[wd=\paperwidth,ht=.4ex]{lower separation line head}
% \end{beamercolorbox}%
\begin{center}
\usebeamerfont{author}\insertauthor\par
\vspace{1ex}
\usebeamerfont{institute}\insertinstitute\par
\vspace{2ex}
% \usebeamerfont{institute}\insertemail\par
\vspace{1ex}
\usebeamerfont{institute}\insertdate\par
% \vspace{2ex}
% \vspace{1ex}
\inserttitlegraphic\par
\end{center}
}
\setbeamertemplate{section in toc}[square]
% \useoutertheme{BFH}
\addtobeamertemplate{frametitle}{}{
\nointerlineskip%
\begin{beamercolorbox}[wd=\paperwidth,colsep=1pt]{upper separation line head}%
\end{beamercolorbox}
}
\defbeamertemplate*{footline}{BFH}
{
\leavevmode%
\hbox{%
\begin{beamercolorbox}[wd=.33333333\paperwidth,ht=2.25ex,dp=1ex,leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}%
\usebeamerfont{author in head/foot}\insertshortauthor
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.3333333\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}%
\usebeamerfont{title in head/foot}\insertshortinstitute
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.3333333\paperwidth,ht=2.25ex,dp=1ex,right]{date in head/foot}%
\usebeamerfont{date in head/foot}\insertshortdate{}\hspace*{2em}
\insertframenumber{}
/ \inserttotalframenumber
\hspace*{2ex}
\end{beamercolorbox}}%
\vskip0pt%
}
\RequirePackage{xeCJK}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\newcommand\ziju[2]{\vbox{\ltjsetparameter{kanjiskip=#1} #2}}
%% ----------
%% You can change the font with any font you like if the font is installed in your system
%% Else, use the font in the supply folder as the main font.
%% ----------------------------------------
%% The following provided a font settings with installed fonts.
% \setCJKmainfont[AutoFakeBold = {2.25},ItalicFont={AdobeKaitiStd-Regular}]{AdobeKaitiStd-Regular}
% \setCJKsansfont{AdobeKaitiStd-Regular}
% \setCJKmonofont{AdobeFangsongStd-Regular}
% \setsansfont{Source Sans Pro}
% \setmainfont{Source Code Pro for Powerline}
% \newfontfamily\HEI{AdobeHeitiStd-Regular}
% \newfontfamily\KAI{AdobeKaitiStd-Regular}
% \newfontfamily\FANGSONG{AdobeFangsongStd-Regular}
% \newcommand{\hei}[1]{{\fontspec{AdobeHeitiStd-Regular} #1}}
% \newcommand{\kai}[1]{{\fontspec{AdobeKaitiStd-Regular} #1}}
% \newcommand{\fangsong}[1]{{\fontspec{AdobeFangsongStd-Regular} #1}}
% ----------------------------------------
% The following provided a font settings with uninstalled fonts.
\setCJKmainfont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{SimSun.ttf}
\setCJKsansfont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{SimHei.ttf}
\setCJKmonofont[Path=supply/font/,AutoFakeBold = {2.25},ItalicFont={simkai.ttf}]{STZhongsong.ttf}
\setmainfont{Times New Roman}
% \RequirePackage{mathptmx}
% \RequirePackage{courier}
% \RequirePackage{bm}
\setCJKfamilyfont{hei}[Path=supply/font/,AutoFakeBold = {2.25}]{SimHei.ttf}
\setCJKfamilyfont{kai}[Path=supply/font/,AutoFakeBold = {2.25}]{simkai.ttf}
\setCJKfamilyfont{fs}[Path=supply/font/,AutoFakeBold = {2.25}]{simfang.ttf}
\newcommand{\fangsong}{\CJKfamily{fs}} % 仿宋体
\let\FANGSONG\fs
\newcommand{\kai}{\CJKfamily{kai}} % 楷体
\let\KAI\kai
\newcommand{\hei}{\CJKfamily{hei}} % 黑体
\let\HEI\hei
\usepackage[T1]{fontenc}
\usefonttheme{serif}
% \usecolortheme{BFH}
%%
% COLOR DEFINITION
%%
\definecolor{BFHd}{RGB}{110,124,143} % BFH dark
% \definecolor{BFHd}{RGB}{8,84,155} % BFH dark
\definecolor{BFHl}{RGB}{192,189,190} % Hust - light grey
% \definecolor{BFHl}{RGB}{50,113,172} % Hust - light blue
% \definecolor{BFHl}{RGB}{8,84,155} % Hust - blue
% \definecolor{black}{RGB}{0,0,0} % Text Color
\definecolor{black}{HTML}{222222} % Text Color
\definecolor{white}{RGB}{255,255,255} % Background Color
\setbeamercolor{titlelike}{bg=BFHd,fg=white}
\setbeamercolor{structure}{fg=BFHd}
\setbeamercolor{separation line}{bg=BFHl}
\setbeamercolor{subsection in toc}{fg=BFHd}
\setbeamercolor{footline}{bg=BFHd,fg=white}
\setbeamercolor{author in head/foot}{bg=BFHd,fg=white}
\setbeamercolor{title in head/foot}{bg=BFHd,fg=white}
\setbeamercolor{date in head/foot}{bg=BFHd,fg=white}
\setbeamertemplate{frametitle}[BFH]
\setbeamertemplate{part page}[BFH]
\setbeamertemplate{title page}[BFH]
\setbeamertemplate{navigation symbols}{}
% \setbeamertemplate{itemize item}{\usebeamerfont*{itemize item}\raise1.25pt\hbox{\donotcoloroutermaths$\bullet$}}
\setlength{\parskip}{0.5em}
% \setbeamercolor{itemize item}{fg=BFHl}
% \setbeamercolor{itemize subitem}{fg=BFHl}
% \setbeamercolor{itemize subsubitem}{fg=BFHl}
\usepackage{enumitem}
\setlistdepth{9}
\setlist[itemize,1]{label=\color{BFHl}{$\bullet$}}
\setlist[itemize,2]{label=\color{BFHl}{$\circ$}}
\setlist[itemize,3]{label=\color{BFHl}{$\diamond $}}
\setlist[itemize,4]{label=\color{BFHl}{$\bullet$}}
\setlist[itemize,5]{label=$\bullet$}
\setlist[itemize,6]{label=$\bullet$}
\setlist[itemize,7]{label=$\bullet$}
\setlist[itemize,8]{label=$\bullet$}
\setlist[itemize,9]{label=$\bullet$}
%-------------------------------------------------------------------------------
% Configuration for colors
%-------------------------------------------------------------------------------
% Gray-scale colors
% \definecolor{white}{HTML}{FFFFFF}
% \definecolor{black}{HTML}{000000}
\definecolor{darkgray}{HTML}{333333}
\definecolor{gray}{HTML}{5D5D5D}
\definecolor{lightgray}{HTML}{999999}
% Basic colors
\definecolor{green}{HTML}{C2E15F}
\definecolor{orange}{HTML}{FDA333}
\definecolor{purple}{HTML}{D3A4F9}
\definecolor{red}{HTML}{FB4485}
\definecolor{blue}{HTML}{6CE0F1}
% Text colors
\definecolor{darktext}{HTML}{414141}
\colorlet{text}{darkgray}
\definecolor{graytext}{HTML}{5D5D5D}
\colorlet{lighttext}{lightgray}
% Awesome colors
\definecolor{awesome-emerald}{HTML}{00A388}
\definecolor{awesome-skyblue}{HTML}{0395DE}
\definecolor{awesome-red}{HTML}{DC3522}
\definecolor{awesome-pink}{HTML}{EF4089}
\definecolor{awesome-orange}{HTML}{FF6138}
\definecolor{awesome-nephritis}{HTML}{27AE60}
\definecolor{awesome-concrete}{HTML}{95A5A6}
\definecolor{awesome-darknight}{HTML}{131A28}
\colorlet{awesome}{awesome-red}
% For elements of entry
\newcommand*{\entrytitlestyle}[1]{{\fontsize{12pt}{1em}\KAI\color{darktext} #1}}
\newcommand*{\entrypositionstyle}[1]{{\fontsize{12pt}{1em}\KAI\color{darktext} #1}}
\newcommand*{\entrydatestyle}[1]{{\fontsize{12pt}{1em}\KAI\color{darktext} #1}}
\newcommand*{\entrylocationstyle}[1]{{\fontsize{12pt}{1em}\KAI\color{awesome} #1}}
\newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\KAI\color{text} #1}}
\newcommand*{\des}[1]{{\fontsize{9pt}{1em}\KAI\color{text} #1}}
% For elements of subentry
\newcommand*{\subentrytitlestyle}[1]{{\fontsize{10pt}{1em}\KAI\slshape\color{darktext} #1}}
% \newcommand*{\subentrytitlestyle}[1]{{\fontsize{9pt}{1em}\KAI\normalfont\color{darktext} #1}}
\newcommand*{\subentrypositionstyle}[1]{{\fontsize{12pt}{1em}\KAI\scshape\color{graytext} #1}}
\newcommand*{\subentrydatestyle}[1]{{\fontsize{10pt}{1em}\color{graytext} #1}}
\newcommand*{\subentrylocationstyle}[1]{{\fontsize{12pt}{1em}\KAI\upshape\color{awesome} #1}}
\newcommand*{\subdescriptionstyle}[1]{{\fontsize{10pt}{1em}\KAI\itshape\color{text} #1}}
% For elements of honor
\newcommand*{\honortitlestyle}[1]{{\fontsize{10pt}{1em}\KAI\itshape\color{graytext} #1}}
\newcommand*{\honorpositionstyle}[1]{{\fontsize{10pt}{1em}\HEI\bfseries\color{darktext} #1}}
\newcommand*{\honordatestyle}[1]{{\fontsize{10pt}{1em}\KAI\color{graytext} #1}}
\newcommand*{\honorlocationstyle}[1]{{\fontsize{10pt}{1em}\KAI\upshape\color{darktext} #1}}
% For elements of skill
\newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bfseries\color{darktext} #1}}
\newcommand*{\skillsetstyle}[1]{{\fontsize{10pt}{1em}\color{text} #1}}
% Define an entry of cv Education
% Usage: \cveducation{<title>}{<location>}
\newcommand*{\cveducation}[2]{%
\vspace{-2.0mm}
% \setlength\tabcolsep{0pt}
% \setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lr}
\entrytitlestyle{#1} & \entrylocationstyle{#2} \\
\end{tabular*}%
}
\newcommand*{\cvsubeducation}[2]{%
\vspace{-2.0mm}
% \setlength\tabcolsep{0pt}
% \setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lr}
\subentrytitlestyle{#1} & \subentrydatestyle{#2} \\
\end{tabular*}%
}
% Define an entry of cv experience
% Usage: \cvexperience{<title>}{<date>}{<description>}
\newcommand*{\cvexperience}[2]{%
\vspace{-2.0mm}
% \setlength\tabcolsep{0pt}
% \setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lr}
\entrytitlestyle{#1} & \subentrydatestyle{#2} \\
\end{tabular*}%
}
% Define an environment for cvhonor
\newenvironment{cvhonors}{%
\begin{center}
% \setlength\tabcolsep{0pt}
% \setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{cl@{\extracolsep{\fill}}r}
}{%
\end{tabular*}
\end{center}
}
% Define a line of cv information(honor, award or something else)
% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
\newcommand*{\cvhonor}[4]{%
\vspace{1.0mm}
\honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\
}
% Define an environment for cvskill
\newenvironment{cvskills}{%
\begin{center}
% \setlength\tabcolsep{1ex}
% \setlength{\extrarowheight}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}rl}
}{%
\end{tabular*}
\end{center}
}
% Define a line of cv information(skill)
% Usage: \cvskill{<type>}{<skillset>}
\newcommand*{\cvskill}[2]{%
\skilltypestyle{#1} & \skillsetstyle{#2} \\
}
% Define an environment for cventry
\newenvironment{cventries}{%
\begin{center}
}{%
\end{center}
}
\newcommand*{\cvpapers}[1]{%
\vspace{-3.0mm}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lr}
\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#1}}
\end{tabular*}%
}
% Define an environment for cvitems(for cventry)
\newenvironment{cvitems}{%
\vspace{-3.0mm}
\begin{justify}
\begin{itemize}[leftmargin=2ex,topsep=1ex,itemsep=0.5ex]
\begin{normalsize}
% \setlength{\topsep}{2pt}
\renewcommand{\labelitemi}{\bullet}
\end{normalsize}
}{%
\end{itemize}
\end{justify}
\vspace{-4.0mm}
}
% \newcommand*{\cvfunding}[1]{%
% \vspace{2.5mm}
% \setlength\tabcolsep{0pt}
% \setlength{\extrarowheight}{0pt}
% \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
% \entrytitlestyle{#1} & \\
% % \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#2}}
% \end{tabular*}%
% }
% \newcommand*{\cvsubfunding}[2]{%
% \vspace{-3.0mm}
% \setlength\tabcolsep{0pt}
% \setlength{\extrarowheight}{0pt}
% \begin{tabular*}{\textwidth - 5.5ex}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm - 1em} R{4.5cm}}
% \descriptionstyle{#1} & \descriptionstyle{#2}
% \end{tabular*}%
% }
\mode<all>
================================================
FILE: _ThesisBeamer/body/cnn.tex
================================================
\section{cnn}
\begin{frame}{Conv-SDNN预测模型——引言}
基于卷积结构的SDNN预测模型:随机映射CNN模型
\begin{itemize}
\item 随机映射CNN在图像生成任务(纹理生成、风格迁移)上具有不亚于梯度下降训练CNN的表现
\end{itemize}
\vspace*{-0.5em}
\begin{figure}
\centering
\includegraphics[width=0.9\linewidth]{float/ch.cnn/ranVGG.png}
\end{figure}
\end{frame}
\begin{frame}{Conv-SDNN预测模型——引言}
随机映射CNN模型研究:
\begin{itemize}
\item 一维随机映射CNN在一些人工时间序列预测数据集上展现出比MLP模型更好的拟合性能(Yu et al. 2019)
\end{itemize}
\vspace*{-0.5em}
\begin{figure}
\centering
\includegraphics[width=0.9\linewidth]{float/ch.cnn/yu.png}
\end{figure}
\end{frame}
\begin{frame}{Conv-SDNN预测模型——引言}
随机映射CNN模型研究归纳:
\begin{itemize}
\item 既有研究较少,已有随机映射CNN模型性能有限,亟待新的随机映射CNN预测模型及其构造技术
\end{itemize}
\vspace*{0.5em}
本章贡献:
\begin{itemize}
\item 基于误差反馈随机映射的随机映射CNN预测模型构造方法
\begin{itemize}
\item 通过递归生成随机映射卷积核的方式提高了模型构造效率
\item 借助基于误差反馈策略保证了所构造模型的理论收敛性
\end{itemize}
\item 引入贪心算法解决模型构造中随机映射卷积核的选择问题
\begin{itemize}
\item 自适应的在单卷积层内具备不同卷积宽度的卷积核
\end{itemize}
\item 与梯度下降深度学习模型和传统随机映射模型相比,ESM-CNN具有优秀的预测性能与建模效率
\end{itemize}
\end{frame}
\begin{frame}{Conv-SDNN预测模型——CNN预测模型}
\begin{figure}[!t]
% \newlength{\twosubht}
% \newsavebox{\twosubbox}
\centering
% \begin{minipage}{0.8\textwidth}
% \includegraphics[width = \textwidth]{float/ch.eto/esc.png}
% \caption*{回声状态卷积(ESC)结构}
% \end{minipage}
\begin{minipage}{0.8\textwidth}
\includegraphics[width = \textwidth]{float/ch.cnn/esm-cnn.png}
\caption*{CNN结构}
\end{minipage}
% \caption{\label{fig:archMix} 基于循环神经网络与卷积神经网络的混合神经网络结构示例.}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——误差反馈随机映射构造方法}
\begin{itemize}
\item 过在单卷积层内递归增长添加固定随机初始化权重卷积核的方式构造CNN隐藏结构
\item 利用误差反馈闭式计算新增卷积核所对应的输出权重参数
\end{itemize}
对于一个已具有$C$个卷积核的单卷积层ESM-CNN
\begin{equation*}
f_C= \sum^C_{j=1}\sum^{T-K+2}_{i=0} \beta_j^i p_j^i
\end{equation*}
当前预测误差为:
\begin{equation*}
e_C = y - f_C = [e_C^1,\ldots, e_C^H].
\end{equation*}
新增卷积核所对应的全连接输出层权重将基于当前模型的预测误差$e_C$反馈,通过OLM加以求解:
\vspace{-1.5em}
\begin{equation*}
\left[\beta_{{C+1}}^0, \ldots, \beta_{{C+1}}^{T-K+2} \right]=\argmin _{\beta}\|e_C -\sum_{i=0}^{T-K+2} \beta_{C+1}^i p_{C+1}^i \|.
\end{equation*}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——拟合收敛性}
定义ESM-CNN的预测误差中间项为:$\tilde{e}_{C+1}^{\, 0}, \ldots, \tilde{e}_{C+1}^{\, T-K+2} $,新增卷积核所对应的全连接输出层权重中间项为:$\tilde{\beta}_{C+1}^{\, 0}, \ldots, \tilde{\beta}_{C+1}^{\, T-K+2}$,中间项之间的计算关系为:
\begin{alignat*}{2}
& \tilde{e}_{C+1}^{\, i+1} & = & \mspace{18mu} \tilde{e}_{C+1}^{\, i}-\tilde{\beta}_{C+1}^{\, i+1} p_{C+1}^{i+1}, \quad i = 0,\ldots,T-K+1, \\
\shortintertext{其中,}
& \tilde{\beta}_{C+1}^{\, i+1} & = & \mspace{18mu} [\tilde{\beta}_{C+1}^{\, i+1,1}, \ldots,\tilde{\beta}_{C+1}^{\, i+1,h},\ldots, \tilde{\beta}_{C+1}^{\, i+1,H}], \\
& \tilde{\beta}_{C+1}^{\, i+1,h} & = & \mspace{18mu} \left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle /\left\|p_{C+1}^{\, i+1}\right\|^{2} , \quad h= 1, \ldots, H .
\end{alignat*}
可证:
\vspace{-1em}
\begin{align*}
& \|\tilde{e}_{C+1}^{\, i+1}\|^2-\|\tilde{e}_{C+1}^{\, i}\|^2 \\
={} & \sum_{h=1}^{H}
\left(
\langle \tilde{e}_{C+1}^{\, i,h}-\tilde{\beta}_{C+1}^{\, i+1,h} p_{C+1}^{i+1}
,
\tilde{e}_{C+1}^{\, i,h}-\tilde{\beta}_{C+1}^{\, i+1,h} p_{C+1}^{i+1} \rangle
-
\langle \tilde{e}_{C+1}^{\, i,h}, \tilde{e}_{C+1}^{\, i,h} \rangle
\right) \\
={} & \sum_{h=1}^{H}
\left(
- {\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1} \rangle}^2 / \left\|p_{C+1}^{\, i+1}\right\|^{2}
\right) \leq 0
\end{align*}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——拟合收敛性}
该性质在$\left\|\tilde{e}_{C+1}^{\, 0}\right\|^{2}$与$\left\|e_{C}\right\|^{2}$间仍然保持,
因此,ESM-CNN的预测误差收敛性如下:
$$
\|e_{C+1}\|^2 \; \leq \|\tilde{e}_{C+1}^{\, T-K+2}\|^2 \; \leq \|\tilde{e}_{C+1}^{\,0}\|^2 \; \leq \|{e}_{C}\|^2 .
$$
方法优势:
\begin{itemize}
\item 迭代局部更新输出层权重的方式具有更小的计算开销,这种低开销优势会随隐藏层结构的增大同时扩大
\item 随着卷积层中递归新增卷积核的不断加入,链接至输出层的池化特征图向量维度会同时倍数增大,与预测目标维度相比过大的特征维度会导致闭式求解算法的病态问题(Ill-posed problem)
\item 基于误差反馈递归更新输出权重构造的预测模型能在神经网络隐藏构造的过程中不断弥补上步预测误差,同时,这种历史输出权重保持固定的方式在一定程度上承担了正则化的作用,从而增强了所构造模型的性能稳定性
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——卷积核选择方法}
针对ESM-CNN预测模型构造中的卷积核选择问题,本章节提出了一种基于贪心算法的卷积核选择方法,使得ESM-CNN具有在单卷积层中同时具备不同宽度的卷积核结构,以此增强模型对于不同尺度时间序列特征的学习建模能力。
本节提出了一种卷积核评分$\Delta_{{C+1, s}}$,计算如下:
\begin{align*}
\Delta_{{C+1},s} & = \| e_{C+1,s} \|^2 - \| e_{C} \|^2 \notag \\
{} & = \|\ e_C -\sum_{i=0}^{T-K^{\prime}+2} \beta_{C+1, s}^i p_{C+1, s}^i \|^2 - \| e_{C} \|^2 \label{eq:filterScore}
\end{align*}
基于所提的卷积核评分,实现最好预测效果提升的备选卷积核$p_{C+1}^{*}$将被选出作为新增卷积核正式加入当前神经网络结构,该过程可被表述为:
\begin{equation*}\label{eq:scselection}
p_{C+1}^{*} = \argmax\limits_{p_{{C+1},s}} \{ \Delta_{{C+1},s}, s = 1,\ldots,S \}.
\end{equation*}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——实验设计}
\input{float/ch.cnn/data.tex}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——实验设计}
\begin{figure}
\begin{minipage}[t]{0.5\textwidth}
对比模型:
\begin{itemize}
\item 统计预测模型
\begin{itemize}
\item Naive、ARIMA、Holt’s Winters
\end{itemize}
\item 随机映射模型
\begin{itemize}
\item RVFL、IELM、SCN
\end{itemize}
\item 深度学习模型
\begin{itemize}
\item GS-CNN、DeepAR、CLSTM
\end{itemize}
\item 消融实验模型
\begin{itemize}
\item 移除卷积核选择 \\ \(\rightarrow\) ES-CNN
\item 移除误差反馈与卷积核选择 \\ \(\rightarrow\) Stoc-CNN
\end{itemize}
\end{itemize}
\end{minipage}
\hfill
\begin{minipage}[t]{0.45\textwidth}
评价指标:
\begin{itemize}
\item 百分比误差
\begin{itemize}
\item MAPE、SMAPE
\end{itemize}
\item 绝对值误差
\begin{itemize}
\item RMSE
\end{itemize}
\end{itemize}
\begin{equation*}
MAPE = \frac1N \sideset{}{_{i=1}^N} \sum \abs{\frac{y_{i} - \hat y_{i}}{y_i}}.
\end{equation*}
\begin{equation*}
SMAPE = \frac1N \sideset{}{_{i=1}^N} \sum \abs{\frac{y_{i} - \hat y_{i}}{y_i + \hat y_{i}}}.
\end{equation*}
\begin{equation*}
RMSE = \sqrt{\frac1N \sideset{}{_{i=1}^N} \sum ({y_{i} - \hat y_{i}})^2 }.
\end{equation*}
\end{minipage}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——实验步骤}
\begin{itemize}
\item 数据集预处理:基于Z-score方法\footnote{https://scikit-learn.org/stable/modules/preprocessing.html\#preprocessing-scaler.}归一化至标准正太分布
\item 数据集切分:按照0.64,0.16和0.2的比例切分为训练集、验证集和测试集
\item 测试集评价:预测生成结果均先被还原至原有数值范围,再进行预测准确度计算
\end{itemize}
均对每一预测模型建模20次,对20次预测建模结果结合MAPE、SMAPE和RMSE指标计算预测准确度平均值,以综合表现预测模型预测准确性与稳定性
本章节所有实验均基于CUDA 10.1版本的GPU加速Pytorch框架、Ubuntu 20.04系统环境、Intel 8700K CPU和Nvidia GTX 1070 GPU环境进行,以保证计算环境的一致性
本章节的实验设置与算法代码已开源在Github平台\footnote{https://github.com/XinzeZhang/TimeSeriesForecasting-torch}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——实验结果}
\input{float/ch.cnn/mape.tex}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——预测准确度分析}
\begin{enumerate}
\item[1)] 作为随机映射神经网络,ESM-CNN在本章节选取的人工合成时间序列数据集与真实时间序列数据集上都保持了优秀的预测准确度,展现出ESM-CNN预测模型的良好应用性。
\item[2)] 与Naive、ARIMA和Holt所代表的统计模型相比,ESM-CNN在本章节设置的所有预测任务和所有评价指标上都表现出更优的预测准确度,展现出ESM-CNN预测模型的良好预测性能。
\item[3)] 与GS-CNN、DeepAR和CLSTM所代表的梯度下降训练深度学习预测模型相比,ESM-CNN在本章节设置的绝大部分预测任务和评价指标上取得了更优的预测准确度;在梯度下降训练模型取得最优结果的预测任务中,ESM-CNN预测模型也取得了差距很小的次优预测结果,展示出ESM-CNN预测模型与梯度下降训练深度学习预测模型匹敌的预测能力。
\item[4)] 与RVFL、IELM和SCN所代表的随机映射MLP预测模型相比,ESM-CNN同样在本章节设置的所有预测任务和所有评价指标上都表现出更优的预测准确度,展示出ESM-CNN预测模型在随机映射预测模型中的预测优势。
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——消融实验分析}
\begin{enumerate}
\item[1)] 仅单纯引入随机映射方法的Stoc-CNN预测模型在本章节选取的所有预测任务和所有评价指标上都表现出显著弱于ES-CNN与ESM-CNN的预测性能,并在多项预测任务中表现出最差的预测准确度,验证了病态问题在全局更新输出权重方式下所导致的预测性能问题。
\item[2)] 引入误差反馈随机映射构造策略的ES-CNN预测模型与Stoc-CNN相比,取得了显著的准确度提升,并在大部分预测任务和评价指标中表现出次优的水平,展现出基于误差反馈随机映射策略构造CNN预测模型的有效性与必要性。
\item[3)] 与ES-CNN和Stoc-CNN预测模型相比,ESM-CNN在本章节设置的所有预测任务和所有评价指标上都表现出更优的预测准确度,证明了所提卷积核选择方法在ESM-CNN预测模型构造过程中的有效性与必要性。
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——收敛性分析}
\begin{figure}[!t]
\centering
\begin{minipage}[b]{0.32\textwidth}
\includegraphics[width = 0.95\textwidth]{float/ch.cnn/sili_H1_revise.png}
\subcaption{ ILI, $H = 1$ }
\end{minipage}
\begin{minipage}[b]{0.32\textwidth}
\includegraphics[width = 0.95\textwidth]{float/ch.cnn/sili_H4_revise.png}
\subcaption{ ILI, $H = 4$ }
\end{minipage}
\begin{minipage}[b]{0.32\textwidth}
\includegraphics[width = 0.95\textwidth]{float/ch.cnn/sili_H8_revise.png}
\subcaption{ ILI, $H = 8$ }
\end{minipage}
\caption*{ILI数据集上递归增长随机映射神经网络的RMSE曲线}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——收敛性分析}
\begin{enumerate}
\item[1)] 同一预测模型在不同预测时长任务上的收敛情况是一致的。
\item[2)] 尽管SCN模型在不同预测任务的训练集RMSE上都能做出最快收敛,但SCN模型在进行真实预测建模中出现了明显的过拟合现象,而采用误差反馈策略的IELM模型并没有出现过拟合,但表现出最慢的收敛速度。这一对比结果证明了误差反馈策略解决过拟合问题的有效性,同时也指出了误差反馈策略下MLP结构的性能局限性。
\item[3)] 基于卷积结构的ESM-CNN和ES-CNN在所有的验证集RMSE中都表现出比IELM和SCN更快且更低的收敛效果,证明了基于误差反馈随机映射构造CNN预测模型的收敛性与鲁棒性。
\item[4)] 与ES-CNN相比,ESM-CNN具备更低的训练集RMSE曲线和测试集RMSE曲线,从收敛性角度再次验证了所提卷积核选择方法的有效性与必要性。
\item[5)] 在ESM-CNN与ES-CNN的收敛过程中,预测性能的最大增益明显来自于构造过程的前10步,表现出ESM-CNN具备通过牺牲微小性能换来巨大效率提升的平衡策略,从而使得ESM-CNN具有更加广泛和高效的现实应用性。
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——建模效率分析}
\input{float/ch.cnn/time.tex}
\end{frame}
\begin{frame}
\frametitle{Conv-SDNN预测模型——小结}
\textbf{(1)基于卷积结构的SDNN预测模型构造与优化方法}
\begin{itemize}
\item 通过代数推导证明了基于该方法所构造的预测模型具有随着卷积核的增加而单调下降的预测误差,以此保证了所提方法的收敛性,且其确定的输出权重与既有方法相比具有更小的$L_2$范数,以此提升了模型的预测稳定性;
\item 区别于既有方法仅能用相同宽度的卷积核构造单卷积层,通过贪心选择由不同卷积核宽度组成的备选集,使得模型能够在迭代构造模型的过程中自适应确定卷积参数,其构造的单卷积层具备不同宽度的卷积核,使模型借助单卷积层具备不同尺度局部特征的学习能力;
\item 在人工合成数据、流感阳率数据、原油价格数据和金融指数数据上的实验表明,与梯度下降训练的深度神经网络预测模型相比,基于本方法所构造的模型在具备相近甚至更优的预测准确度同时具备极高的建模效率,验证了所提方法的有效性。
\end{itemize}
\end{frame}
================================================
FILE: _ThesisBeamer/body/code.tex
================================================
\section{code}
\begin{frame}
\frametitle{预测建模框架——OpenForecasting}
\begin{figure}
\begin{minipage}[t]{0.58\textwidth}
OpenForecasting:
\begin{itemize}
\item 整合既有优秀神经网络建模框架与参数优化框架,提供预测建模通用框架平台
\item 完备包含时间序列预测建模的数据初始化、数据预处理、模型构造、模型优化和模型评价等构造与评价流程,集成多类别、多结构的现有对比预测方法
\end{itemize}
\vspace{1em}
已开源:
https://github.com/Analytics-for-Forecasting/
OpenForecasting.
\end{minipage}
\hfill
\begin{minipage}[t]{0.4\textwidth}
框架需求:
\begin{itemize}
\item 数据管理功能:
\begin{itemize}
\item 异构数据结构化方法
\item 输入数据预处理方法
\item 输出数据评价方法
\end{itemize}
\end{itemize}
\begin{itemize}
\item 模型构造功能:
\begin{itemize}
\item 单元化、模块化、标准化
\item 多类别、多结构
\end{itemize}
\end{itemize}
\begin{itemize}
\item 模型优化功能:
\begin{itemize}
\item 多种超参数优化方法
\item 多种权重参数优化方法
\end{itemize}
\end{itemize}
\end{minipage}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{预测建模框架——OpenForecasting}
\centering
\includegraphics[width = 0.83\linewidth]{float/ch.univ/code2.png}
\end{frame}
================================================
FILE: _ThesisBeamer/body/intro.tex
================================================
\section{intro}
\begin{frame}
\frametitle{绪论 — 研究背景}
\textbf{基于随机映射的时间序列深度学习预测建模技术研究}
\vspace*{1em}
\textbf{预测建模问题}是气象水文、公共卫生、电力系统等众多领域进行管理决策时的重要问题。
例如电力系统:
\begin{figure}
\begin{minipage}[b]{0.32\textwidth}
运行决策:
\begin{itemize}
\item 电力生产与配送计划
\item 燃料购买与存用计划
\item 电力价格定价策略
\end{itemize}
\end{minipage}
\hspace{1em}
\begin{minipage}[b]{0.32\textwidth}
预测需求:
\begin{itemize}
\item 区域电力负荷
\item 火电燃煤价格
\item 风能光伏出力
\end{itemize}
\end{minipage}
\hfill
\begin{minipage}[b]{0.3\textwidth}
影响因素:
\begin{itemize}
\item 经济的发展
\item 天气的变化
\item 疫情的波动
\end{itemize}
\end{minipage}
\end{figure}
受很多未知因素的存在影响,难以建立完备的因果关系来给出现象发生的定律,不可能建立出一个确定性的模型来精确计算现象的未来表现
\end{frame}
================================================
FILE: _ThesisBeamer/body/last.tex
================================================
\section{last}
\begin{frame}
\frametitle{总结与展望}
% 主要工作:
% \begin{itemize}
% \item 特定结构构造与优化方法研究
% \begin{itemize}
% \item 基于卷积结构的SDNN预测模型构造与优化方法
% \item 基于循环结构的SDNN预测模型构造与优化方法
% \end{itemize}
% \item 一般结构优化方法研究
% \begin{itemize}
% \item SDNN预测模型的二重特征结构选择方法
% \end{itemize}
% \item 混合结构优化方法研究
% \begin{itemize}
% \item SDNN预测模型的混合结构生长与优化方法
% \end{itemize}
% \end{itemize}
\begin{figure}[!t]
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=0.825\linewidth]{float/ch.intro/thesis_arch.png}
\caption*{本研究技术路线}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=0.9\linewidth]{float/ch.intro/thesis_content.png}
\caption*{本论文主要结构}
\end{minipage}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{研究展望}
卷积结构的SDNN预测模型构造与优化方法:
\begin{itemize}
\item 可以通过计算不同方法的时间复杂度与空间复杂度,从而精确比较各方法的建模效率优劣
\item 基于历史数据训练和构造的模型不一定适应于时变的时间序列数据,因此可以通过考虑剪枝策略,设计模型结构对时变时间序列数据的自适应方法
\end{itemize}
循环结构的SDNN预测模型构造与优化方法研究
\begin{itemize}
\item 未有考虑状态遮掩机制对于不同随机循环隐藏结构的影响,因此可以进行状态遮掩输出结构在其他随机循环隐藏结构(如GESN或DESN结构)上的迁移实验
\item 在梯度下降的RNN预测模型训练中同样存在类似的问题,因此可以通过设计基于状态遮掩的新颖梯度下降损失函数,提升RNN预测模型的预测效果。
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{研究展望}
SDNN预测模型的二重特征结构选择方法研究:
\begin{itemize}
\item 二维的时间序列输入特征结构同样适用于梯度下降训练的CNN与RNN模型,因此可以考虑进行二重特征结构选择方法在训练的深度神经网络模型上的迁移实验
\item 可以考虑联立循环结构SDNN预测模型的输入特征时步掩码和隐藏特征时步掩码,构建多阶段整体优化的循环结构SDNN预测模型,进一步提升其预测效果
\end{itemize}
SDNN预测模型的混合结构生长与优化方法研究
\begin{itemize}
\item 限定于SDNN预测模型的输入与隐藏结构,未有考虑输出结构的生长与优化问题,因此可以构造混合多种不同输出结构的自适应端到端预测模型
\item 随机映射方法下的误差反馈生长策略并不适用于梯度下降方法,因此可以设计基于误差反馈的子网络新颖权重训练方法,构造具有收敛保证的混合结构DNN预测模型
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{总结与展望}
围绕上述不足之处与改进方法,未来的研究工作将持续探索时间序列预测建模技术的更多可能与思路。
希望借助随机映射方法,通过进一步的学习与交流,完善深度学习预测模型的解释性研究,探寻预测模型与其优化方法在构造选择效率与预测性能提升间的更佳平衡,使其在更为广泛的应用领域发挥可信且有效的支撑作用。
\vspace*{1em}
\(\circ\)衷心感谢博士生导师鲍玉昆教授、计算机科技与技术学院的何琨教授、硕士研究生导师蔡淑琴教授对我的指导。
\(\circ\)感谢预答辩委员会的胡斌教授、王林教授、杨彦武教授和吴庆华教授。
\(\circ\)感谢我的爱人、父母、朋友、师弟师妹,以及所有的支持者!
\end{frame}
================================================
FILE: _ThesisBeamer/body/related.tex
================================================
\section{overview}
\begin{frame}
\frametitle{时间序列预测定义}
尽管有诸多因素干扰,依然有可能基于对现实现象的历史观测推导出一个模型,用来计算一定提前期的未来值。
时间序列预测正是通过对时间序列观测值之间相互依赖性的分析,发展出动态模型,进而对时间序列的未来状态进行预测。
\vspace*{1em}
\textbf{时间序列预测的过程本质上是一个以历史时间序列为自变量,以未来时间序列为因变量的函数逼近过程。}
即,给定一个历史T步的时间序列$\bm{x} = (x_1, \ldots, x_T)$,\(\x \in \mathr^{T}\),以及未来提前H步的时间序列$\bm{y} = (x_{T+1},\ldots,x_{T+H})$, \(\y \in \mathr^{H}\),时间序列预测问题可被公式化定义为:
\begin{equation*}
\mathcal{F} : f(\bm x) + \bm e = \bm y, \label{eq:sec.intro.def}
\end{equation*}
$\mathcal{F}$是指时间序列预测模型所逼近的函数。\(f\)是指时间序列预测模型所学习出的预测函数。
\end{frame}
\begin{frame}
\frametitle{传统时间序列预测建模技术}
以统计学为基础的回归预测模型,通过构造历史观测值与相关因素的经验方程,对时间序列进行拟合和预测。
\begin{itemize}
\item 自回归(Auto-regressive,AR)模型
\item 移动平均(Moving average,MA)模型
\item 自回归移动平均混合(Auto-regressive moving average,ARMA)模型
\item 整合移动平均自回归(Auto-regressive integrated moving average,ARIMA)模型
\item 指数平滑(Exponential smoothing,ES)模型
\end{itemize}
归纳:
\begin{itemize}
\item 将时间序列数据的输入输出映射视为预定义的函数
\item 仅适用于某一特定类型的平稳过程或非平稳过程
\item 不能有效处理复杂非线性非平稳的时间序列预测问题
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{机器学习预测建模技术}
将预测问题考虑为一种以历史T步的时间序列$\bm{x} = (x_1, \ldots, x_T)$为输入,以未来提前H步的时间序列$\bm{y} = (x_{T+1},\ldots,x_{T+H})$为输出的回归问题,构造监督机制下的回归模型予以求解。
\begin{equation*}
f(\bm x) + \bm e = \bm y, \quad f \in \{\vartheta, \theta\}\label{eq:sec.intro.ml}.
\end{equation*}
\(\theta\)表示机器学习预测模型的权重参数集合,\(\vartheta\)表示定义机器学习预测模型
与权重学习机制的超参数集合。
\begin{itemize}
\item \(\vartheta\)定义了机器学习预测模型的结构与权重参数的训练机制
\item \(\theta\)表示机器学习模型中从输入变换到输出间的权重参数集合
\item \(f \in \{\vartheta, \theta\}\)
\end{itemize}
\vspace{1em}
\centering
如何选择合适的\(\vartheta\)与\(\theta\)从而建立一个精准的预测模型\(f\)
\end{frame}
\begin{frame}
\frametitle{ML代表模型}
\begin{figure}
\begin{minipage}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{float/ch.intro/svm.png}
\caption*{支持向量机(SVM)结构示例\label{fig:ch.intro.svm}}
\end{minipage}
\hfill
\begin{minipage}[b]{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{float/ch.intro/mlp.png}
\caption*{多层感知机(MLP)结构示例\label{fig:ch.intro.mlp}}
\end{minipage}
\end{figure}
以一组给定包含\(N\)个样本的时间序列数据集\(\mathbb{D} = \left\{\left(\x_{n}, \y_{n}\right) \in\left(\mathbb{R}^{T} \times \mathbb{R}^{H}\right)\right\}_{n=1}^{N}\)为例,对基于SVM与NN的预测建模技术与应用展开概述。
\end{frame}
\begin{frame}
\frametitle{梯度下降}
常有学者将基于梯度下降方法的神经网络模型称为反向传播神经网络(Back propagation neural network,BPNN)模型。
\begin{itemize}
\item 梯度下降:梯度下降训练方法中各层权重参数的优化方法
\item 反向传播:梯度下降训练方法中计算各层权重参数梯度时所使用的链式法则梯度传导过程
\end{itemize}
以MLP为例:
\begin{align*}
\ell(\w) &= \frac{1}{N \times H} \sum^N_{n=1} \|\e_{n}\| ,\label{eq:ch.intro.mse}\\
\e_{n} & = \y_n - f(\x_n).
\end{align*}
\centering
\(\ell(\w)\)为神经网络预测模型在训练集\(\mathd\)上的MSE损失
\end{frame}
\begin{frame}
\frametitle{梯度下降}
核心思想:
\begin{itemize}
\item 基于神经网络模型中激活函数的连续性与可微性
\item 向\(\w\)添加一个很小的动量\(\Delta_{\w}\),即\(\norm{\Delta_{\w}}\)很小,亦等价于\(\w + \Delta_{\w}\)近似\(\w\)
\item 利用泰勒近似将复杂非凸的\(\ell(\w)\)函数优化问题当作一个简单的函数极小值问题
\end{itemize}
\begin{equation*}
\ell({\w + \Delta_{\w}} ) \approx \ell({\w}) + \nabla_{\w}^{\mathrm{T}}\Delta_{\w}.
\end{equation*}
\(\nabla_{\w}\)表示\(\w\)在误差函数\(\w\)中的梯度。在最陡下降中,定义学习速率(Learning rate)为\(\eta \),且\(\eta > 0\),因此:
\begin{equation*}
\Delta_{\w} = -\eta \nabla_{\w}. \label{eq:ch.intro.gd2}
\end{equation*}
当\(\eta \)足够小,可证:
\begin{equation*}
\ell({\w -\eta \nabla_{\w}} ) \approx \ell({\w}) -\eta \nabla_{\w}^\trans \nabla_{\w} < \ell({\w}). \label{eq:ch.intro.lr}
\end{equation*}
\end{frame}
\begin{frame}
\frametitle{梯度下降的范式}
\begin{algorithm}[H]
\caption{神经网络模型梯度下降方法训练过程}
% \renewcommand{\algorithmcfname}{算法}
% \renewcommand{\algorithmicrequire}{\textbf{输入:}}
% \renewcommand{\algorithmicensure}{\textbf{输出:}}
\label{alg:ch.intro.gd}
\begin{algorithmic}[1]
\WHILE{未满足\(\vartheta\)界定的收敛条件}
\STATE \(i\leftarrow i+1\)
\STATE 基于\(\theta^i\),确定模型\(f \leftarrow f \in \{\vartheta, \theta^i\}\)
\STATE 基于数据集\(\mathd\)和模型\(f\),完成前馈过程\(f(\x)\),计算模型损失函数值\(\ell({\w}) \)
\FOR{\(\w\) in \(\theta^i\) }
\STATE 选取计算梯度所需的样本
\STATE 根据反向传播链式法则计算梯度信息\(\nabla_{\w}\)
\STATE 根据梯度下降更新公式更新权重参数\(\w\)
\ENDFOR
\ENDWHILE
\RETURN {
已完成更新过程的权重参数集合\(\theta \leftarrow \theta^i\)
}
\end{algorithmic}
\end{algorithm}
\end{frame}
\begin{frame}
\frametitle{深度学习建模方法}
深度学习建模技术是机器学习建模技术中一类基于深度神经网络的建模方法。
\begin{itemize}
\item 海量数据的积累:CIFAR10,CIFAR100,ImageNet,WMT
\item 计算能力的提升:GPU加速,分布式计算,并行计算
\item 梯度下降的改进:SGD,Moment,Adam
\item 通用框架的提出:TensorFlow,Pytorch
\end{itemize}
\begin{figure}
\begin{minipage}[t]{0.55\textwidth}
\begin{itemize}
\item {
传统机器学习:人工经验建立特定的特征提取方法\begin{itemize}
\item 基于图像像素数值高斯分布描述图像特征的Fisher Vector方法
\item 基于语言文档内词频信息描述语句特征的词频-逆文档(TF-IDF)方法
\end{itemize}
}
\end{itemize}
\end{minipage}
\hfill
\begin{minipage}[t]{0.44\textwidth}
\begin{itemize}
\item {
深度学习:依靠神经网络结构学习数据的抽象特征表示\begin{itemize}
\item CNN中的卷积结构
\item RNN中的循环结构
\end{itemize}
}
\end{itemize}
\end{minipage}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{深度学习示例}
\begin{figure}[t!]
\centering
\includegraphics[width = \linewidth]{float/ch.intro/lecun.png}
\caption*{卷积神经网络图像分类模型示例(引用于Lecun et al. “Deep Learning.” Nature, 2015, 521.7553: 436-444)}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{模型选择问题}
对于由超参数\(\vartheta\)和权重参数\(\theta\)所定义的深度学习预测模型\(f\),其模型选择问题便是如何选择合适的\(\vartheta\)与\(\theta\)从而提升模型\(f\)预测性能的问题。
\begin{itemize}
\item 权重参数\(\theta\)的优化研究 \(\rightarrow\) 梯度下降方法的改进
\item 超参数\(\vartheta\)的优化研究 \(\rightarrow\) 神经网络结构的优化
\end{itemize}
\vspace{0.5em}
神经网络结构的分解:
\begin{itemize}
\item 表征结构
\begin{itemize}
\item 隐藏结构 \(\rightarrow\) 神经网络结构搜索 (NAS)
\begin{itemize}
\item 启发式优化、强化学习 \(\rightarrow\) 计算开销大,选择耗时长
\end{itemize}
\item 输入结构 \(\rightarrow\) 预测领域的多输入特征选择
\begin{itemize}
\item 封装法更优 \(\rightarrow\) 多时步维度的输入特征结构
\end{itemize}
\end{itemize}
\item 输出结构 \(\rightarrow\) 预测领域的多输出策略优化
\begin{itemize}
\item MIMO策略,Direct策略,Iterative策略
\begin{itemize}
\item MIMO更优 \(\rightarrow\) MIMO策略下依然存在多种输出结构
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{模型选择研究}
\(\theta\)依赖于超参数\(\vartheta\):
\begin{itemize}
\item 模型神经网络结构参数(如CNN模型中卷积层层数、卷积核宽度和卷积核数量等等)
\item 梯度下降方法参数(如SGD方法中的学习速率、批次样本选取数量和动量惯性系数等等)
\end{itemize}
\begin{center}
不同的\(\vartheta\)必然会导致\(\theta\)的差异
\end{center}
\end{frame}
\begin{frame}
\frametitle{模型选择过程}
\begin{algorithm}[H]
\caption{基于梯度下降方法的神经网络预测建模技术模型选择过程}
\begin{algorithmic}[1]
\WHILE{未满足模型选择方法界定的收敛条件}
\STATE \(j\leftarrow j+1\)
\STATE 从超参数集合\(\vartheta\)的搜索空间\(\Omega\)中选择或更新出当前的超参数集合\(\vartheta^j\)
\STATE 基于\(\vartheta^j\):\\
\hspace{2em}执行梯度下降算法所示步骤\\
\hspace{2em}得到当前\(\vartheta^j\)试验下的权重参数集合\(\theta|\vartheta^j\)\\
\hspace{2em}确定模型\(f \leftarrow f \in \{\vartheta^j, \theta|\vartheta^j\}\)
\STATE 基于数据集\(\mathd\)和模型\(f\),计算模型误差
\STATE 基于模型误差与超参数更新方法:\\
\hspace{2em}更新最优的神经网络超参数集合\(\vartheta^*\)\\
\hspace{2em}更新最优的神经网络超参数集合\(\theta^* \leftarrow \theta|\vartheta^*\)
\ENDWHILE
\RETURN {
已完成更新过程的超参数集合\(\vartheta \leftarrow \vartheta^*\)与权重参数集合\(\theta \leftarrow \theta^*\)
}
\end{algorithmic}
\end{algorithm}
\end{frame}
\begin{frame}{模型选择挑战}
\begin{figure}
\begin{minipage}[b]{0.45\textwidth}
深度学习预测建模技术所面临的模型选择挑战尤为突出。
\vspace{2em}
\begin{itemize}
\item 更多的权重参数以及更加复杂的梯度计算方式,导致模型选择效率低
\item 复杂的神经网络结构加深了超参数搜索空间的复杂程度,导致模型选择效果弱
\end{itemize}
\end{minipage}
\quad
\begin{minipage}[b]{0.45\textwidth}
\includegraphics[width=\textwidth]{float/ch.intro/circle.png}
\end{minipage}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{随机映射方法研究概况}
随机映射是一种采用非迭代学习机制的MLP建模方法。
\begin{figure}[H]
\begin{subfigure}[b]{0.25\textwidth}
\includegraphics[height=\linewidth]{float/ch.cnn/layer.pdf}
\caption*{}
\end{subfigure}
\hspace*{-0.15\textwidth}
\begin{subfigure}[b]{0.25\textwidth}
\includegraphics[height=\linewidth]{float/ch.cnn/schmidt.pdf}
\caption{Schimidt网络}
\end{subfigure}
\hspace*{0.03\textwidth}
\begin{subfigure}[b]{0.25\textwidth}
\includegraphics[height=\linewidth]{float/ch.cnn/rvfl.pdf}
\caption{RVFL网络}
\end{subfigure}
\hspace*{\fill}
\begin{subfigure}[b]{0.25\textwidth}
\includegraphics[height=\linewidth]{float/ch.cnn/elm.pdf}
\caption{ELM网络}
\end{subfigure}
\caption*{\label{fig:randomnet}蓝色线表示固定的随机初始化权重,黄色线表示闭式求解得输出权重。}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{随机映射建模过程}
以MLP为例:随机映射多层感知机(Stochastic multiple percentage, SMLP)模型的预测过程为:
\begin{align*}
f_{smlp}(\x) &= \w_{out}\h_{smlp}, \\
\h_{smlp} &= \sigma (\w_{hid}\x). \notag
\end{align*}
其模型损失函数依然保持MSE损失形式
\begin{align*}
\w_{out} &= \argmin_{\w_{out}} \norm{\y - \w_{out}\h_{smlp}} \\
& = \y \h_{smlp}^{\trans} (\h_{smlp}\h_{smlp}^\trans)^{-1}. \notag
\end{align*}
支持向量机模型是一种SMLP模型的特例
\end{frame}
\begin{frame}
\frametitle{SMLP的收敛性质}
传统的SMLP模型避免了梯度下降训练计算开销高的问题,但这种权重随机机制使其模型性能的收敛性与稳定性受到质疑。
针对于此:
\begin{itemize}
\item Huang等\footnote{Huang et al. "Universal approximation using incremental constructive feedforward networks with random hidden nodes." IEEE Trans. Neural Networks 17.4 (2006): 879-892.}基于递归添加神经元的方式构造了一种增长极限感知机(Incremental extreme learning machine,IELM),并证明了IELM对于任意连续有界目标函数的学习收敛能力。
\item Wang等\footnote{Wang et al. "Stochastic configuration networks: Fundamentals and algorithms." IEEE transactions on cybernetics 47.10 (2017): 3466-3479.}通过迭代增加隐藏层神经元,基于监督机制闭式挑选神经元隐藏层权重,全局更新输出层权重的方式,构造出增长的SMLP模型,并证明了SCN的普适逼近性质(Universal approximation property)。
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{随机映射深度学习建模技术}
随机映射RNN的研究:
\begin{itemize}
\item Jaeger等\footnote{Jaeger et al. "Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication." science 304.5667 (2004): 78-80.}在2001年提出随机映射RNN,称其为状态回声网络(Echo state network,ESN)。
\item 技术:Leaky ESN,Growing ESN,Deep ESN,Regularize ESN
\item 应用:电力负荷预测,原油价格预测
\end{itemize}
随机映射CNN的研究:
\begin{itemize}
\item He等\footnote{He et al. "A powerful generative model using random weights for the deep image representation." Advances in Neural Information Processing Systems 29 (2016).}发现随机映射CNN在纹理生成和风格迁移等任务上具有不亚于梯度下降训练CNN的表现。
\item 预测研究较少
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{随机映射深度学习预测建模技术}
由此,针对时间序列深度学习预测技术模型选择挑战中的低效问题,构造基于随机映射的深度学习预测建模技术是一种有效的解决途径
\begin{itemize}
\item 深度学习建模技术优异的预测潜能
\item 随机映射建模技术高效的建模效率
\end{itemize}
\vspace{1em}
随机映射深度学习预测建模技术的挑战:
\begin{itemize}
\item 建模效率的提高建立在预测性能的牺牲上
\item 更高的模型选择要求
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{技术研究体系}
\vspace{-0.5em}
\centering
\begin{figure}[!th]
\centering
\includegraphics[width=0.88\linewidth]{float/ch.intro/thesis.png}
\end{figure}
\end{frame}
\begin{frame}
\frametitle{研究意义}
\textbullet ~~~ 在理论层面,本论文将深入研究不同神经网络结构下的SDNN预测模型和新的理论分析框架,如构建基于卷积结构和混合结构的SDNN预测模型的预测误差收敛性分析框架,直观理解SDNN预测模型的构造与决策逻辑
\textbullet ~~~在方法层面,本论文将构造多套预测模型构造与优化方法,包括适用于卷积结构、循环结构、一般结构至混合结构SDNN模型的优化技术,形成从特定到一般再到混合的综合技术体系与框架,为SDNN预测建模技术的复杂模型选择问题提供新颖的方法与思路
\textbullet ~~~在现实层面,本论文将立足于现实时间序列预测任务的多个场景,包括公共卫生领域中的流感阳性样本率预测任务、能源市场中的原油价格预测任务、金融市场中的股票指数预测任务、大气污染中的PM2.5预测任务、电力系统中的电力负荷与电力价格预测任务等
\end{frame}
================================================
FILE: _ThesisBeamer/float/ch.cnn/data.tex
================================================
\begin{table}[!t]
\centering
\caption*{数据集信息}
\vspace{-1em}
\begin{tabularx}{\textwidth}{lccccY}
\toprule
数据集名称 & 平稳性 & 趋势性 & 季节性 & 起始截止日期 & 数据集大小 \\ \midrule
AR1 & \xmark & 0.97 & 0.09 & - & 500 \\
BTC & \xmark & 0.99 & 0.66 & 05/25/2020 $\sim$ 03/20/2021 & 2181 \\
ILI & \cmark & 0.51 & 0.61 & 01/15/2010 $\sim$ 04/15/2020 & 535 \\
BRENT-weekly & \xmark & 0.97 & 0.07 & 05/15/1987 $\sim$ 04/30/2021 & 1773 \\
BRENT-daily & \xmark & 0.97 & 0.06 & 05/20/1987 $\sim$ 05/03/2021 & 8620 \\
WTI-weekly & \xmark & 0.96 & 0.08 & 01/03/1986 $\sim$ 04/30/2021 & 1844 \\
WTI-daily & \xmark & 0.96 & 0.07 & 01/02/1986 $\sim$ 05/03/2021 & 8904 \\
S\&P 500 & \xmark & 0.99 & 0.40 & 12/31/2009 $\sim$ 11/15/2017 & 1984 \\
NASDAQ & \xmark & 0.99 & 0.27 & 12/31/2009 $\sim$ 11/15/2017 & 1984 \\
DJI & \xmark & 0.99 & 0.40 & 12/31/2009 $\sim$ 11/15/2017 & 1984 \\
NYSE & \xmark & 0.98 & 0.45 & 12/31/2009 $\sim$ 11/15/2017 & 1984 \\ \bottomrule
\end{tabularx}
\end{table}
================================================
FILE: _ThesisBeamer/float/ch.cnn/mape.tex
================================================
\begin{table}[h]
\centering
\footnotesize
\caption*{ESM-CNN及对照组模型的MAPE结果对比}
\resizebox{\textwidth}{!}{
\begin{tabular}{cccccccccccccc}
\toprule
\multirow{2}{*}{数据集} & \multirow{2}{*}{H} & \multicolumn{3}{c}{统计模型} & \multicolumn{3}{c}{梯度下降模型} & \multicolumn{3}{c}{随机映射模型} & \multicolumn{2}{c}{消融模型} & 所提模型 \\ \cmidrule(l){3-5} \cmidrule(lr){6-8} \cmidrule(lr){9-11} \cmidrule(lr){12-13} \cmidrule(lr){14-14}
& & Naive & ARIMA & Holt & GS-CNN & DeepAR & CLSTM & RVFL & IELM & SCN & Stoc-CNN & ES-CNN & ESM-CNN \\ \cmidrule(l){1-14}
\multirow{3}{*}{{AR1}} & 1 & 2.54e-01 & 5.95e-01 & 5.94e-01 & 1.06e-01 & 1.08e-01 & 8.88e-02 & 7.61e-01 & 9.84e-02 & 6.50e-02 & 6.10e+01 & \bf{4.53e-02} & \bf{3.49e-02}\s \\\cmidrule(l){3-14}
& 3 & 2.62e-01 & 6.00e-01 & 5.98e-01 & 1.23e-01 & 1.64e-01 & 1.20e-01 & 1.17e+00 & 1.07e-01 & 9.53e-02 & 6.34e+01 & \bf{6.41e-02} & \bf{5.28e-02}\s \\\cmidrule(l){3-14}
& 6 & 2.68e-01 & 6.08e-01 & 6.05e-01 & 1.48e-01 & 2.17e-01 & 1.24e-01 & 1.23e+00 & 1.26e-01 & 1.16e-01 & 1.54e+02 & \bf{8.92e-02} & \bf{7.70e-02}\s \\\cmidrule(l){2-14}
\multirow{3}{*}{BTC} & 1 & 2.55e-01 & 3.17e-01 & 3.17e-01 & 6.27e-02 & 2.26e-01 & 4.09e-01 & 1.20e+00 & 1.85e-01 & 1.11e-01 & 2.14e+02 & \bf{4.62e-02} & \bf{2.70e-02}\s \\\cmidrule(l){3-14}
& 3 & 2.54e-01 & 3.18e-01 & 3.18e-01 & 6.43e-02 & 1.98e-01 & 4.41e-01 & 1.13e+00 & 1.84e-01 & 1.29e-01 & 2.86e+02 & \bf{4.73e-02} & \bf{2.96e-02}\s \\\cmidrule(l){3-14}
& 6 & 2.53e-01 & 3.21e-01 & 3.20e-01 & 6.49e-02 & 2.35e-01 & 4.61e-01 & 1.38e+00 & 1.84e-01 & 1.40e-01 & 3.32e+02 & \bf{4.84e-02} & \bf{3.26e-02}\s \\\cmidrule(l){2-14}
\multirow{3}{*}{ILI} & 1 & 1.94e-01 & 5.70e-01 & 5.94e-01 & 1.28e-01 & 1.14e-01 & \bf{9.50e-02} & 3.03e-01 & 1.38e-01 & 1.15e-01 & 2.48e+00 & 1.00e-01 & \bf{8.93e-02}\s \\\cmidrule(l){3-14}
& 4 & 2.51e-01 & 5.39e-01 & 5.90e-01 & 1.52e-01 & 1.59e-01 & \bf{1.26e-01} & 3.53e-01 & 1.58e-01 & 1.53e-01 & 2.33e+00 & 1.33e-01 & \bf{1.25e-01}\s \\\cmidrule(l){3-14}
& 8 & 3.07e-01 & 5.34e-01 & 5.98e-01 & 1.70e-01 & 1.82e-01 & \bf{1.45e-01}\s & 3.67e-01 & 1.74e-01 & 1.86e-01 & 2.38e+00 & 1.62e-01 & \bf{1.53e-01} \\
\bottomrule
\end{tabular}}
\end{table}
================================================
FILE: _ThesisBeamer/float/ch.cnn/time.tex
================================================
\begin{table}[h]
\centering
\footnotesize
\caption*{神经网络模型在AR1、BTC和ILI数据集上的单次平均建模时间(s) }
\resizebox{\textwidth}{!}{\begin{tabular}{ccrrrrrrrrr}
\toprule
\multirow{2}{*}{建模方法} & \multirow{2}{*}{模型} & \multicolumn{3}{c}{AR1} & \multicolumn{3}{c}{BTC} & \multicolumn{3}{c}{ILI} \\\cmidrule(lr){3-5} \cmidrule(lr){6-8}\cmidrule(lr){9-11}
& & \multicolumn{1}{c}{1} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{6} & \multicolumn{1}{c}{1} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{6} & \multicolumn{1}{c}{1} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{8} \\ \midrule
\multirow{3}{*}{梯度下降} & GS-CNN & 74.65 & 76.95 & 78.55 & 93.70 & 96.45 & 99.40 & 67.05 & 70.25 & 73.00 \\
& DeepAR & 225.25 & 238.95 & 257.70 & 223.75 & 251.10 & 268.65 & 256.80 & 279.10 & 275.30 \\
& CLSTM & 150.45 & 154.80 & 160.25 & 143.00 & 141.50 & 142.25 & 167.40 & 170.80 & 175.30 \\
\specialrule{0em}{1.5pt}{1.5pt}
\multirow{3}{*}{随机映射} & RVFL & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} \\
& IELM & 2.65 & 2.85 & 2.80 & 3.40 & 3.30 & 3.20 & 2.55 & 2.55 & 2.40 \\
& SCN & 22.85 & 57.40 & 107.75 & 21.10 & 58.00 & 111.40 & 16.10 & 49.60 & 90.95 \\
\specialrule{0em}{1.5pt}{1.5pt}
\multirow{2}{*}{消融方法} & Stoc-CNN & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} & \multicolumn{1}{c}{-} \\
& ES-CNN & 6.50 & 6.40 & 6.50 & 6.35 & 6.50 & 6.45 & 6.45 & 6.50 & 6.50 \\
\specialrule{0em}{1.5pt}{1.5pt}
所提方法 & ESM-CNN & 9.65 & 9.65 & 9.70 & 7.10 & 7.25 & 7.25 & 7.15 & 7.15 & 7.20 \\ \bottomrule
\end{tabular}}
\end{table}
================================================
FILE: _ThesisBeamer/slide.tex
================================================
% \documentclass[aspectratio=169,draft]{beamer}
\documentclass[aspectratio=169]{beamer}
\usepackage{pifont}
\newcommand{\cmark}{\ding{51}}
\newcommand{\xmark}{\ding{55}}
\usepackage[T1]{fontenc}
% \usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{±}{$\pm$}
% \usepackage[frenchb]{babel}
% \usepackage[ngerman]{babel}
\newcommand\Mark[1]{\textsuperscript{#1}}
% DOCUMENT INFORMATIONS: TITLE, AUTHOR, DATE, INSTITUTE
% \email{xinze@hust.edu.cn}
\titlegraphic{\includegraphics[scale=0.1]{./float/hust-logo.png}} % logo on titlepage only
% PACKAGES
\usetheme{BFH} % use BFH theme
\usepackage{color}
\usepackage{listings}
\usepackage{hyperref} % links
\usepackage{ragged2e} % justify format
\usepackage{mathrsfs} % math font
\usepackage{graphicx}
\usepackage{tablefootnote}
\usepackage{scalerel} % added for scale font in math
\DeclareMathOperator*{\random}{random\llap{\phantom{arg}}}
% \newtheorem{definition}{Definition}
% \newcommand*{\definitionautorefname}{Definition}
\usepackage{xspace} % added for declare robust command
\usepackage{tabularx}
\usepackage{CJKutf8}
\usepackage{ragged2e}
\usepackage{amssymb}
\usepackage{multirow}
\usepackage{makecell}
\usepackage{enumitem}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcommand\cn[1]{\fontsize{9}{9} \begin{CJK*}{UTF8}{gbsn}{ #1}\end{CJK*}}
% \newcommand\comment[1]{\fontsize{10}{10} \textit{\color{red!75!black} #1}}
\newcommand\comment[1]{\fontsize{10}{10} \textit{#1}}
\newcommand\reftag[1]{\fontsize{10}{10} {#1}}
\usepackage{csquotes}
% \usepackage[style=verbose-ibid,backend=bibtex,citestyle=authoryear]{biblatex}
% \bibliography{anthology.bib}
\DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{9} % for bold
\DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{9} % for normal
\usepackage{amsmath,bm,mathtools,times}
\DeclareMathOperator*{\argmax}{argmax}
\DeclareMathOperator*{\argmin}{argmin}
% \DeclareMathOperator{\trans}{\mathrm{T}}
\DeclareMathOperator*{\avg}{Avg}
\newcommand*\abs[1]{\left \lvert#1 \right \rvert}
\newcommand*\norm[1]{\left \lVert #1 \right \rVert}
\newcommand\trans{\mathrm{T}}
\newcommand\x{\bm{x}}
\newcommand\y{\bm{y}}
\newcommand\e{\bm{e}}
\newcommand\h{\bm{h}}
\newcommand\w{\bm{w}}
\newcommand\g{\bm{g}}
\newcommand\m{\bm{m}}
\newcommand\bs{\bm{s}}
\newcommand\bp{\bm{p}}
\newcommand\brho{\bm{\rho}}
\newcommand\bv{\bm{v}}
\newcommand\bu{\bm{u}}
\newcommand\mathr{\mathbb{R}}
\newcommand\mathd{\mathbb{D}}
% \usepackage{breqn}
\newcommand\ph{$\phantom{1}$}
\newcommand\s{$^\star$}
\newcommand\blfootnote[1]{%
\begingroup
\renewcommand\thefootnote{}\footnote{#1}%
\addtocounter{footnote}{-1}%
\endgroup
}
\usepackage{algorithm, algorithmic}
\newlength{\twosubht}
\newsavebox{\twosubbox}
\usepackage{pgfpages}
% \setbeameroption{show notes on second screen}
\title{基于随机映射的时间序列深度学习预测建模技术研究}
% \subtitle{Biography \& Research Interests}
% \subtitle{ }
\author[Xinze]{张心泽}
\date{April 26, 2023}
\institute[HUST]{
{\fontsize{9pt}{12pt}\selectfont School of Management,\\}
\vspace{0.75em}
{\fontsize{10pt}{12pt}\selectfont Huazhong University of Science and Technology}\\}
\begin{document}
\maketitle
\input{body/intro.tex}
\input{body/related.tex}
\input{body/cnn.tex}
% \input{body/esn.tex}
% \input{body/dfs.tex}
% \input{body/eto.tex}
% \input{body/code.tex}
\input{body/last.tex}
% \input{1.inro.tex}
% \input{2.cnn.tex}
% \input{3.esn.tex}
% \input{5.dfs.tex}
% \input{4.eto.tex}
% % \input{6.univ.tex}
% \input{7.last.tex}
% \begin{frame}
% \frametitle{谢谢各位评委老师!}
% \centering
% \includegraphics[width=1\textwidth]{fig/aboutme.png}
% \end{frame}
\end{document}
================================================
FILE: body/appendix/app.tex
================================================
\begin{decision}
一般情况下,答辩委员会决议的内容不宜过少,亦不宜超过一页。不同学院对此页的要求(是否需要包含此页在最终存档模板内,是否需要单独提交,包含在模板内的改页是否需要答辩主席签字等)可能有所不同,具体内容请参照学院的相关规定。
若不需要此页,请将其从模板中删除。删除方式为注释或去掉本环境。
\end{decision}
\begin{publications}
已发表论文:
\renewcommand{\labelenumi}{[\arabic{enumi}]}
\begin{enumerate}
\item {
\textbf{Xinze Zhang}, Kun He, and Yukun Bao. Error-feedback Stochastic Modeling Strategy for Time Series Forecasting with Convolutional Neural Networks. Neurocomputing, 2021, 459:234-248.(SCI 源刊,IF 5.719,署名单位:华中科技大学)
}
\item {Jianhua Yang, \textbf{Xinze Zhang}, and Yukun Bao. Short-term Load Forecasting of Central China based on DPSO-LSTM. In Proceedings of IEEE 4th International Electrical and Energy Conference, IEEC 2021. (EI 会议,署名单位:华中科技大学)
}
\item {\textbf{Xinze Zhang}, Junzhe Zhang, Zhenhua Chen, and Kun He. Crafting Adversarial Examples for Neural Machine Translation. In Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics, ACL 2021. (CCF A类国际会议,署名单位:华中科技大学)}
\end{enumerate}
\vspace{1em}
工作论文:
\begin{enumerate}
\item {
\textbf{Xinze Zhang}, Kun He, Yukun Bao, and Qi Sima. Error-feedback Triple-phase Optimization to Configurable Convolutional Echo State Network for Time Series Forecasting.
}
\item {
\textbf{Xinze Zhang}, Qi Sima, Kun He, Yukun Bao, and Shuhan Chen. Enhancing Echo State Network with Particle Swarm Bayesian Optimization Enabled Echo State Selection for Time Series Forecasting.
}
\item {
Qi Sima, \textbf{Xinze Zhang}, and Yukun Bao. Reinforced Decoder: Towards Training Sequence-to-Sequence Model for Time Series Forecasting.
}
\end{enumerate}
\end{publications}
\begin{paperRelation}
\renewcommand\tabularxcolumn[1]{m{#1}}
% 已发表论文与博士学位论文的关系:
\begin{table}[!htbp]
\centering
\renewcommand\arraystretch{2}
\begin{tabularx}{\textwidth}{|c|Y|Y|Y|Y|}
\hline
\makecell*[c]{序号} & \makecell*[c]{成果名称} & \makecell*[c]{成果形式} & \makecell*[c]{成果主要内容} & \makecell[c]{与学位论文 \\对应关系} \\ \hline
1 & {Error-feedback Stochastic Modeling Strategy for Time Series Forecasting with Convolutional Neural Networks} & \makecell[c]{SCI 期刊 \\(已发表)} & \multicolumn{1}{X|}{提出了误差反馈随机建模的迭代构造策略,结合贪心搜索自适应确定卷积结构,构造出一种新颖、高效且准确的随机卷积神经网络预测模型} & \multicolumn{1}{X|}{该成果为论文第3章主要内容} \\ \hline
2 & {Short-term Load Forecasting of Central China based on DPSO-LSTM} & \makecell[c]{EI会议 \\(已发表) } & \multicolumn{1}{X|}{提出了时步多维度的时序输入特征二维结构,结合粒子群优化算法选择时步维度与模型参数,提升了LSTM模型的短期电力负荷预测效果} & \multicolumn{1}{X|}{基于对该成果的改进,构成论文第5章主要内容} \\ \hline
\end{tabularx}
\end{table}
\end{paperRelation}
\begin{project}
\renewcommand{\labelenumi}{\arabic{enumi}.}
\begin{enumerate}
\item {国家自然科学基金面上项目:大数据环境下基于计算智能的预测建模技术及其在电力负荷预测中的应用,批准年限:{2019/01 - 2022/12}。}
\item {国家自然科学基金面上项目:{自然语言处理深度模型的对抗攻防关键算法研究,批准年限:{2021/01 - 2024/12}}。}
\item {湖北省国际科技合作项目:{深度学习模型对抗攻防基础理论与算法研究,批准年限:{2021/09 - 2023/09}}}。
\item {国家电网公司科技项目:{华中区域共享型电力交易与服务平台关键技术研究,批准年限:2020/06 - 2021/11}}。
\item {国家电网公司科技项目:{渝鄂直流运行条件下华中消纳西南水电交易电量库模型建立与效益分析,批准年限:2019/05 - 2020/11}}。
\end{enumerate}
\end{project}
\begin{denotation}
\item[CNN] Convolutional Neural Network(卷积神经网络)
\end{denotation}
\begin{otherDatas}
% 其他数据图表或程序
本处放置其他数据图表或程序的相关内容。当仅包含某一类别时,建议将本节名进行修改。例如,本节将仅包含本论文中所使用的数据集图示,因此在本人所提交的学位论文中,基于答辩委员会的意见,本节名称被修改为“本文数据集展示”。 若无其他数据图表或程序,建议将本节删除。删除方式为注释或去掉本环境。
以下是本节内容节选:
\cref{fig:app.ar1}展示了本文中的经典人工合成时间序列数据,包括一阶自回归(AR1)合成数据.....各数据集的简要说明如下:
\autoref{fig:app.ar1}展示了AR1合成数据,该数据参考相关研究\cite{qi2008trend,crone2016feature}的参数设定,通过\autoref{sec:esm.exp}中的\autoref{eq:ar}予以合成。
\begin{figure}[h]
\centering
\includegraphics[width = 0.9\textwidth]{float/ch.app/ar1.png}
\captionsetup{skip=2pt}
\setlength{\belowcaptionskip}{-8pt}
\caption{AR1合成数据\label{fig:app.ar1}}
\end{figure}
\end{otherDatas}
% \phantomsection
% \input{body/chapter/univ.tex}
================================================
FILE: body/chapter/ack.tex
================================================
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../../main"
%%% End:
\begin{ack}
在博士研究生经历中,有过许多挑战和成长。回想一路走来,有过研究时的迷惘,有过发表时的兴奋,也有过展望时的徘徊,感慨万千。在此,向所有的支持者表示感谢。
......
\end{ack}
================================================
FILE: body/chapter/cnn.tex
================================================
% \chapter[误差反馈随机映射卷积神经网络预测模型构造方法]{误差反馈随机映射卷积神经网络预测模型构造方法
% \footnote[11]{本章主要内容已发表在:Zhang, Xinze, Kun He, and Yukun Bao. "Error-feedback stochastic modeling strategy for time series forecasting wi th convolutional neural networks." Neurocomputing 459 (2021): 234-248.}
% }
\chapter{基于卷积结构的SDNN预测模型构造与优化方法 \label{sec:chapter.cnn}
% \footnote[11]{本章主要内容已发表在:Zhang, Xinze, Kun He, and Yukun Bao. "Error-feedback stochastic modeling strategy for time series forecasting wi th convolutional neural networks." Neurocomputing 459 (2021): 234-248.}
}
\section{引言}
% 基于深度学习的时间序列预测建模技术在众多现实决策问题中发挥了重要作用。
% 发明准确高效的时间序列预测建模技术具有重要的理论意义和现实应用价值。
近年来,作为深度神经网络(DNN)的代表结构之一,基于卷积结构的卷积神经网络(CNN)因其优异的特征提取能力与学习能力已被广泛地应用于时间序列预测建模问题中~\cite{sezer2018algorithmic,cavalliCNNbased2021,sadaei2019short}。
然而,如何基于时间序列数据自适应地选择模型结构与参数是应用CNN预测建模技术中的关键挑战。
对于模型选择问题,已有众多研究者展开了相关研究。
Elsken et al.~\cite{elskenNeural2019a}对神经网络模型的既有模型选择方法进行了研究综述,总结出定义神经网络参数搜索空间、针对参数训练模型和基于训练模型结构对所搜索参数加以优化的模型选择范式。
但是,这种传统的模型选择范式需要消耗大量的计算资源与训练时间,使得卷积神经网络时间序列预测建模技术的现实应用面临参数构造难、计算开销大等阻碍~\cite{zela2018towards}。
相较于有训练权重参数的CNN模型,采用随机映射方法构造的CNN模型在图像风格迁移、语音合成、函数拟合等问题中展现出充分潜力~\cite{hePowerful2016,antogniniAudio2019,yuImpact2019}。
这种基于随机映射的CNN模型具有计算开销低、收敛速度快、学习性能好等特点,但也存在网络结构设计难、随机权重输出结果不稳定等问题。
针对时间序列预测问题,Yu et al.~\cite{yuImpact2019}通过将CNN模型中的卷积权重随机初始化并固定,利用最小二乘法闭式求解输出权重,建立了随机卷积神经网络预测模型,并结合合成时间序列数据和煤气供应数据,验证了其方法的可行性。
但此预测建模方法存在若干问题。首先,其卷积结构的选择依赖于人工经验,使得模型无法根据不同预测情景自适应选择合适参数;其次,输出权重全局更新的求解方式,随着卷积核数量的增加,将使卷积层的隐藏特征维度倍数增加,导致求解输出权重的最小二乘法出现病态矩阵问题,削弱了模型的稳定性,甚至使模型出现欠拟合的问题。
因此,如何建立基于卷积结构的随机深度神经网络(SDNN)预测模型的新颖构造及自适应优化方法,解决已有卷积结构SDNN预测建模技术中参数选择时的人工依赖、输出权重求解时的病态矩阵和预测过程的不稳定性,以有效利用随机映射方法的效率优势与卷积结构的学习能力,是本章的研究重点。
为此,本章在已有研究的基础上,针对基于卷积结构的SDNN预测模型构造与自适应优化问题,创新地提出了一种基于误差反馈随机建模(Error-feedback stochastic modeling, ESM)和贪心搜索选择的CNN构造与优化方法(ESM-CNN)。在ESM-CNN这一卷积结构的SDNN预测模型构造与优化方法中,ESM策略通过递归生成随机映射卷积核的方式提高了模型构造效率,并借助误差反馈策略,单独求解各卷积核输出权重,保证了所构造模型的理论收敛性,以此高效构造出具有理论收敛性的预测模型;同时,通过贪心算法解决模型构造中随机映射卷积核的选择问题,使得ESM-CNN能够自适应的在单卷积层内具备不同卷积宽度的卷积核,以此增强了ESM-CNN学习不同尺度时间序列特征的能力,进一步地提高了模型预测性能;最后,采用合成数据和多个真实数据集充分验证了ESM-CNN的有效性以及卷积核选择方法的必要性,与传统随机多层感知机(SMLP)模型和梯度下降训练DNN模型相比,ESM-CNN具有优秀的预测性能与建模效率,是解决时间序列预测问题的有效方法。
本章的主要内容包括:\secref{sec:esm.cnn}简要介绍了传统CNN预测模型的构造过程,并对本章节所提出的ESM-CNN模型构造与优化方法进行了详细阐述;\secref{sec:esm.exp}从数据集选取、对比模型选取、评价指标选取、实验流程和实验环境等方面介绍了本章的实验方案;\secref{sec:esm.ana}比较、分析和总结了各模型在所选数据集上的实验结果;最后,\secref{sec:esm.conc}对本章予以小结。
\section{ESM-CNN预测模型 \label{sec:esm.cnn}}
\subsection{CNN预测模型}
卷积神经网络(CNN)是将输入连接卷积核做局部非线性变换,并池化展开特征图所构成的神经网络~\cite{lecun1995convolutional}。
卷积是指输入的滑动局部非线性变换。
通过对时间序列输入特征的卷积操作,卷积核(Convolutional filter)能够基于完整输入学习出有用的非线性特征,并建立起所学习特征与对应卷积核宽度(Filter size)输入的关系,由此组成了卷积层(Convolutional layer)的输出特征图(Feature map)。这些特征图往往被送入池化层(Pooling layer)进行下采样(Subsample)以降低卷积层的输出带宽(Output band),同时增强神经网络对异常特征图值的鲁棒性~\cite{yang2015deep,zhao2017convolutional,koprinskaConvolutional2018}。
池化操作后的特征图会继续送入神经网络的下一层结构中,以学习更抽象的表示或生成输出结果。
这里,本节对一种典型结构CNN预测模型进行具体介绍,该模型由生成特征图的单卷积层、进行下采样的平均池化层(Pooling layer)和生成预测结果的全连接层(Fully connected layer)组成。
对于由$N$个样本组成的时间序列数据$D=\left\{\left(X_{i}, Y_{i}\right) \in\left(\mathbb{R}^{T} \times \mathbb{R}^{H}\right)\right\}_{i=1}^{N}$,其中$X_i$表示历史T步内的时间序列观测值$X_i = [x_1,\dots, x_T]^{\trans}$,$Y_i$表示预测时长H步内的时间序列观测值$Y_i = [x_{T+1},\dots, x_{T+H}]^{\trans}$。一个具有$C$个卷积核的CNN预测模型可表示为如\autoref{eq:conv},\autoref{eq:pool}和\autoref{eq:sec.cnn.fc}所示过程:
\begin{align}
m_j^t &= \sigma \left(\sum^{K_m}_{k_m=1} w^{k_m}_j x_{t+k_m-1} +b_j\right), \quad &t &= 1,\dots, T-K_m +1, \label{eq:conv} \\
p_j^i &= \frac{\sum^{K_p}_{k_p=1} m_j^{i+k_p-1}}{K_p}, \quad &i &= 1,..., T-K_p - K_m+2, \label{eq:pool} \\
f_C &= \sum^C_{j=1} \left( \sum^{T-K+2}_{i=1}\beta_{j}^i p_j^i\right) + \beta_0.& & \label{eq:sec.cnn.fc}
\end{align}
\autoref{eq:sec.cnn.fc}中,$K = K_p + K_m$,$K_p$和$K_m$分别为池化操作与卷积操作的宽度大小。
\autoref{eq:pool}中,${m}_j$为特征图向量$[m_j^1, \ldots, m^{T-{K_m}+1}_j]^{\mathrm{T}}$,基于第$j$个卷积在输入时间序列做如\autoref{eq:conv}所示的卷积操作后得到。
$\sigma(\cdot)$表示卷积核所使用的激活函数。在本章节中,$\sigma(\cdot)$为sigmoid激活函数。
${w_j} = [w_j^1,\ldots, w_j^{K_m}]$和$b_j$分别为第$j$个卷积核的权重与偏置项。
$p_j$表示对${m}_j$做如\autoref{eq:pool}所示平均池化操作后的池化特征图向量$[p_j^1, \ldots, p^{T-{K}+2}_j]^{\mathrm{T}}$。
$[\beta_1^1, \beta_1^2,\ldots,\beta_C^{T-K+2}]$和$\beta_0$为第$j$个卷积核与输出层间的全连接层权重与偏置项,$\beta_j^i = [\beta_{j}^{i,1},\ldots,\beta_{j}^{i,H}]^{\mathrm{T}}$。
\begin{figure*}[!t]
\centering
\includegraphics[width = \textwidth]{float/ch.cnn/esm-cnn.png}
\caption{\label{fig:esm_arch} ESM-CNN预测模型神经网络结构}
\end{figure*}
在传统的CNN预测模型构造方法中,通过以减小预测误差$\| e \|$为目标,梯度下降训练包含所有权重项与偏置项在内的权重参数,CNN能够有效学习出历史输入时间序列与预测目标时间序列间的函数关系,生成良好的预测结果。
但这种构造方法需要预先定义包含卷积核宽度、卷积核数量、梯度下降学习速率等众多超参数(Hyper-parameters),进过反复迭代训练评价后,才能选择出合适的超参与权重参数组合。此过程往往会消耗大量的计算资源和时间,存在显著的改进空间。
为解决现有CNN预测建模技术模型选择困难、计算开销高等问题,本章提出了一种误差反馈随机建模(ESM)构造策略,结合基于贪心算法的卷积核选择算法,建立ESM-CNN预测模型。该模型神经网络结构如\autoref{fig:esm_arch}所示,其中绿色线、黄色线和蓝色线分别表示不同结构随机卷积核的卷积与池化操作,深浅不同的红色线表示迭代局部更新的输出权重,同一深度的红色线表示链接同一卷积核的输出权重。
\subsection{误差反馈随机建模策略\label{sec:esm.esm}}
为高效构造具备可靠预测性能的卷积结构SDNN预测模型,利用随机映射方法的优异建模效率,同时解决随机映射算法对预测性能稳定性的干扰,本节提出了一种ESM策略,建立CNN构型下的SDNN预测模型。
该方法通过在单卷积层内递归增长添加固定随机初始化权重卷积核的方式构造CNN隐藏结构,同时利用误差反馈闭式计算新增卷积核所对应的输出权重参数,以此完成整个预测模型的构造过程,同时为模型的预测函数拟合能力提供理论收敛保证。
具体地,对于一个已具有$C$个卷积核的单卷积层ESM-CNN,其模型可被公式表述为:
\begin{equation}
\label{eq:sccnn}
f_C = \sum^C_{j=1} \left( \sum^{T-K+2}_{i=1}\beta_{j}^i p_j^i + \beta^0_j \right),
\end{equation}
并进一步简写为:$f_C= \sum^C_{j=1}\sum^{T-K+2}_{i=0} \beta_j^i p_j^i$。
\autoref{eq:sccnn}中,$\beta_j = [\beta_j^0, \beta_j^1, \ldots, \beta_j^{T-K+2}]$ 表示全连接输出层中连接第$j$个卷积核池化特征图向量与输出单元的权重参数,$p_j^0 = I$。
ESM-CNN的预测误差如\autoref{eq:sec.cnn.error}所示:
\begin{equation}
e_C = Y- f_C = [e_C^1,\ldots, e_C^H]. \label{eq:sec.cnn.error}
\end{equation}
若预测模型的均方误差(Mean square error,MSE)未降低至容忍水平$\varrho$,ESM策略将继续新增一个随机映射卷积核$m_{C+1}$生成对应的池化特征图向量$p_{C+1}$,并将$p_{C+1}$全连接至输出层中以加宽模型隐藏结构。
其中,新增卷积核所对应的全连接输出层权重将基于当前模型的预测误差$e_C$反馈,通过如\autoref{eq:scupdate}最小二乘法加以求解:
\begin{equation}\label{eq:scupdate}
\left[\beta_{{C+1}}^0, \ldots, \beta_{{C+1}}^{T-K+2} \right]=\argmin _{\beta}\|e_C -\sum_{i=0}^{T-K+2} \beta_{C+1}^i p_{C+1}^i \|.
\end{equation}
通过此策略,所构造的ESM-CNN预测模型能够具备随着卷积核数量增加而单调下降并收敛的预测误差,从而完成对预测目标函数的逼近。该性质通过如下代数推导予以证明:
\begin{proof}
定义ESM-CNN的预测误差中间项为:$\tilde{e}_{C+1}^{\, 0}, \ldots, \tilde{e}_{C+1}^{\, T-K+2} $,新增卷积核所对应的全连接输出层权重中间项为:$\tilde{\beta}_{C+1}^{\, 0}, \ldots, \tilde{\beta}_{C+1}^{\, T-K+2}$,中间项之间的计算关系为:
\begin{alignat*}{2}
& \tilde{e}_{C+1}^{\, i+1} & = & \mspace{18mu} \tilde{e}_{C+1}^{\, i}-\tilde{\beta}_{C+1}^{\, i+1} p_{C+1}^{i+1}, \quad i = 0,\ldots,T-K+1, \\
\shortintertext{其中,}
& \tilde{\beta}_{C+1}^{\, i+1} & = & \mspace{18mu} [\tilde{\beta}_{C+1}^{\, i+1,1}, \ldots,\tilde{\beta}_{C+1}^{\, i+1,h},\ldots, \tilde{\beta}_{C+1}^{\, i+1,H}], \\
& \tilde{\beta}_{C+1}^{\, i+1,h} & = & \mspace{18mu} \left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle /\left\|p_{C+1}^{\, i+1}\right\|^{2} , \quad h= 1, \ldots, H , \\
\shortintertext{同时,}
& \tilde{e}_{C+1}^{\, 0} & = & \mspace{18mu} e_{C}- \tilde{\beta}_{C+1}^{\, 0} p_{C+1}^{\, 0}, \\
& \tilde{\beta}_{C+1}^{\, 0} & = & \mspace{18mu} [\tilde{\beta}_{C+1}^{\, 0,1}, \ldots,\tilde{\beta}_{C+1}^{\, 0,h},\ldots, \tilde{\beta}_{C+1}^{\, 0,H}], \\
& \tilde{\beta}_{C+1}^{\, 0,h} & = & \mspace{18mu} \left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle /\left\|p_{C+1}^{\, 0}\right\|^{2} , \quad h= 1, \ldots, H , \\
% \shortintertext{可得:}
& \tilde{e}_{C+1}^{\, T-K+2} \, & = & \mspace{18mu} {e}_{C} - \sum^{T-K+2}_{i=0} \tilde{\beta}_{C+1}^{\, i} p_{C+1}^{\, i}.
\end{alignat*}
因新增卷积核所对应的全连接输出层权重基于最小二乘法予以求解:
$$
\left[\beta_{{C+1}}^0, \ldots, \beta_{{C+1}}^{T-K+2} \right]=\argmin _{\beta} \,\|e_C -\sum_{i=0}^{T-K+2} \beta_{C+1}^i p_{C+1}^i \|,
$$
则$\left\|e_{C+1}\right\|^{2}$与$\left\|\tilde{e}_{C+1}^{\, T-K+2}\right\|^{2}$存有不等式关系:
$$
\|e_{C+1}\|^{2} \,= \min _{\beta} \,\| e_C -\sum_{i=0}^{T-K+2} {\beta}_{{C+1}}^i p_{C+1}^i \|^{2} \, \leq \| {e}_{C} - \sum^{T-K+2}_{i=0} \tilde{\beta}_{C+1}^{\, i} p_{C+1}^{\, i} \|^{2} \, = \|\tilde{e}_{C+1}^{\, T-K+2}\|^{2}.
$$
同时,预测误差中间项之前存在着单调下降性质:
\begin{align*}
& \|\tilde{e}_{C+1}^{\, i+1}\|^2-\|\tilde{e}_{C+1}^{\, i}\|^2 \\
={} & \sum_{h=1}^{H}
\left(
\langle \tilde{e}_{C+1}^{\, i,h}-\tilde{\beta}_{C+1}^{\, i+1,h} p_{C+1}^{i+1}
,
\tilde{e}_{C+1}^{\, i,h}-\tilde{\beta}_{C+1}^{\, i+1,h} p_{C+1}^{i+1} \rangle
-
\langle \tilde{e}_{C+1}^{\, i,h}, \tilde{e}_{C+1}^{\, i,h} \rangle
\right) \\
={} & \sum_{h=1}^{H}
\left(
\langle \tilde{\beta}_{C+1}^{\, i+1} p_{C+1}^{i+1}
,
\tilde{\beta}_{C+1}^{\, i+1} p_{C+1}^{i+1} \rangle
-
2 \langle \tilde{e}_{C+1}^{\, i,h} , \tilde{\beta}_{C+1}^{\, i+1} p_{C+1}^{i+1} \rangle
\right)
\\
={} & \sum_{h=1}^{H}
\left(
\langle
\frac{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}{\left\|p_{C+1}^{\, i+1}\right\|^{2}}
p_{C+1}^{i+1}
,
\frac{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}{\left\|p_{C+1}^{\, i+1}\right\|^{2}}
p_{C+1}^{i+1}
\rangle
-
2
\langle
\tilde{e}_{C+1}^{\, i,h}
,
\frac{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}{\left\|p_{C+1}^{\, i+1}\right\|^{2}}
p_{C+1}^{i+1}
\rangle
\right)
\\
={} & \sum_{h=1}^{H}
\left(
\frac{{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}^2}{\left\|p_{C+1}^{\, i+1}\right\|^{4}}
\langle
p_{C+1}^{i+1}
,
p_{C+1}^{i+1}
\rangle
-
2 \frac{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}{\left\|p_{C+1}^{\, i+1}\right\|^{2}}
\langle \tilde{e}_{C+1}^{\, i,h}
,
p_{C+1}^{i+1}
\rangle
\right)
\\
={} & \sum_{h=1}^{H}
\left(
\frac{{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}^2}{\left\|p_{C+1}^{\, i+1}\right\|^{4}}
{\left\|p_{C+1}^{\, i+1}\right\|^{2}}
-
2 \frac{{\left\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1}\right\rangle}^2}{\left\|p_{C+1}^{\, i+1}\right\|^{2}}
\right)
\\
={} & \sum_{h=1}^{H}
\left(
- {\langle \tilde{e}_{C+1}^{\, i,h}, p_{C+1}^{\, i+1} \rangle}^2 / \left\|p_{C+1}^{\, i+1}\right\|^{2}
\right) \\
\leq{} & 0 .
\end{align*}
该性质在$\left\|\tilde{e}_{C+1}^{\, 0}\right\|^{2}$与$\left\|e_{C}\right\|^{2}$间仍然保持:
\begin{align*}
& \|\tilde{e}_{C+1}^{\,0}\|^2-\|{e}_{C}\|^2 \\
={} & \sum_{h=1}^{H}
\left(
\langle {e}_{C}^{\, h}-\tilde{\beta}_{C+1}^{\, 0,h} p_{C+1}^{0}
,
{e}_{C}^{\, h}-\tilde{\beta}_{C+1}^{\, 0,h} p_{C+1}^{0} \rangle
-
\langle {e}_{C}^{\, h}, {e}_{C}^{\, h} \rangle
\right) \\
={} & \sum_{h=1}^{H}
\left(
\langle \tilde{\beta}_{C+1}^{\, 0,h} p_{C+1}^{0}
,
\tilde{\beta}_{C+1}^{\, 0,h} p_{C+1}^{0} \rangle
-
2 \langle {e}_{C}^{\, h} , \tilde{\beta}_{C+1}^{\, 0,h} p_{C+1}^{0} \rangle
\right)
\\
={} & \sum_{h=1}^{H}
\left(
\langle
\frac{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}{\left\|p_{C+1}^{\, 0}\right\|^{2}}
p_{C+1}^{0}
,
\frac{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}{\left\|p_{C+1}^{\, 0}\right\|^{2}}
p_{C+1}^{0}
\rangle
-
2
\langle
{e}_{C}^{\, h}
,
\frac{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}{\left\|p_{C+1}^{\, 0}\right\|^{2}}
p_{C+1}^{0}
\rangle
\right)
\\
={} & \sum_{h=1}^{H}
\left(
\frac{{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}^2}{\left\|p_{C+1}^{\, 0}\right\|^{4}}
\langle
p_{C+1}^{0}
,
p_{C+1}^{0}
\rangle
-
2 \frac{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}{\left\|p_{C+1}^{\, 0}\right\|^{2}}
\langle {e}_{C}^{\, h}
,
p_{C+1}^{0}
\rangle
\right)
\\
={} & \sum_{h=1}^{H}
\left(
\frac{{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}^2}{\left\|p_{C+1}^{\, 0}\right\|^{4}}
{\left\|p_{C+1}^{\, 0}\right\|^{2}}
-
2 \frac{{\left\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0}\right\rangle}^2}{\left\|p_{C+1}^{\, 0}\right\|^{2}}
\right)
\\
={} & \sum_{h=1}^{H}
\left(
- {\langle {e}_{C}^{\, h}, p_{C+1}^{\, 0} \rangle}^2 / \left\|p_{C+1}^{\, 0}\right\|^{2}
\right) \\
\leq{} & 0 .
\end{align*}
因此,ESM-CNN的预测误差收敛性可证:
$$
\|e_{C+1}\|^2 \; \leq \|\tilde{e}_{C+1}^{\, T-K+2}\|^2 \; \leq \|\tilde{e}_{C+1}^{\,0}\|^2 \; \leq \|{e}_{C}\|^2 .
$$
\NoEndMark
\end{proof}
与全局更新输出层权重的构造方式不同,本章所提出的ESM构造策略通过误差反馈迭代局部更新输出层权重的方式完成输出层权重的计算。具体地,ESM构造策略具备以下三种优势:1)与全局更新输出层权重相比,迭代局部更新输出层权重的方式具有更小的计算开销,这种低开销优势会随隐藏层结构的增大同时扩大;2)随着卷积层中递归新增卷积核的不断加入,链接至输出层的池化特征图向量维度会同时倍数增大,与预测目标维度相比过大的特征维度会导致闭式求解算法的病态问题(Ill-posed problem)\cite{vogel2002computational},进而破坏预测性能的稳定性和鲁棒性;3)基于误差反馈递归更新输出权重构造的预测模型能在神经网络隐藏构造的过程中不断弥补上步预测误差,同时,这种历史输出权重保持固定的方式在一定程度上承担了正则化的作用,从而增强了所构造模型的性能稳定性。
\subsection{卷积参数贪心选择方法
\label{sec:chapCNN.greedy}}
针对ESM-CNN预测模型构造过程中的卷积核选择问题,本章节提出了一种基于贪心算法的卷积核选择方法,使得ESM-CNN具有在单卷积层中同时具备不同宽度的卷积核结构,以此增强模型对于不同尺度时间序列特征的学习建模能力。
对于如\autoref{eq:sccnn}所示具有$C$个卷积核的单卷积层ESM-CNN,在新增卷积核结构时,基于均匀分布(Uniform distribution)$[-\lambda, \lambda]$、卷积与池化宽度$\{(K_{m,s}, K_{p,s})\}^S_{s=1}$生成一批对应的池化特征图向量 $\{p_{{C+1},s} \}^S_{s=1}$表示对应的备选卷积核结构。
为评价这些备选卷积核结构,利用将备选卷积核加入当前网络中所能下降的预测误差,本节提出了一种卷积核评分$\Delta_{{C+1, s}}$,其计算方式如\autoref{eq:filterScore}所示:
\begin{align}
\Delta_{{C+1},s} & = \| e_{C+1,s} \|^2 - \| e_{C} \|^2 \label{eq:filterScore} \\
{} & = \|\ e_C -\sum_{i=0}^{T-K^{\prime}+2} \beta_{C+1, s}^i p_{C+1, s}^i \|^2 - \| e_{C} \|^2, \notag
\end{align}
\autoref{eq:filterScore}中,$K^{\prime} = K_{m,s} + K_{p,s}$,$p^i_{C+1, s}$和$\beta^i_{C+1, s}$分别由\autoref{eq:pool}和\autoref{eq:scupdate}计算得出。
基于所提出的卷积核评分$\Delta_{{C+1, s}}$,将实现最好预测效果提升的备选卷积核$p_{C+1}^{*}$选出,作为新增卷积核正式加入当前神经网络结构,该过程如\autoref{eq:scselection}所示:
\begin{equation}\label{eq:scselection}
p_{C+1}^{*} = \argmax\limits_{p_{{C+1},s}} \{ \Delta_{{C+1},s}, s = 1,\ldots,S \}.
\end{equation}
在此之后,新增卷积核所对应的全连接输出层权重通过\ref{eq:scupdate}求解得出。结合本章节所提出的ESM构造策略与卷积核选择方法,高效构造出一种具备多尺度时间序列特征学习能力、预测函数拟合收敛性和稳定预测性能的ESM-CNN预测模型。
% \autoref{fig:esm_arch}详细描绘了ESM-CMM预测模型的神经网络结构。
\begin{figure*}[!t]
\centering
\includegraphics[width = 0.8\textwidth]{float/ch.cnn/flow.png}
\caption{\label{fig:flowchart} ESM-CNN预测模型构造过程}
\end{figure*}
\subsection{ESM-CNN构造过程}
如\autoref{fig:flowchart}所示,ESM-CNN预测模型的构造过程主要包含:预处理、初始化、评价和更新四个环节。
具体地,所述模型及构造过程为:
(1)对于时间序列数据,构造训练数据集$D=\left\{\left(X_{i}, Y_{i}\right) \in\left(\mathbb{R}^{T} \times \mathbb{R}^{H}\right)\right\}_{i=1}^{N}$,并将数据集$D$归一化至标准正态分布。其中,$N$为数据集$D$中的总样本数,数据集中样本$(X_i,Y_i )$由包含历史T时刻内的时间序列数据$[x_1,\ldots,x_T ]^{\trans}$和未来H步时刻内的时间序列预测目标$[x_{T+1},\ldots,x_{T+H}]^{\trans}$组成。
(2) 设定ESM-CNN预测模型的初始化参数,包括容忍水平$\varrho $,最大特征图通道数$C_{\max}$,初始预测误差$e_0 = [x_{T+1},\ldots,x_{T+H}]^{\trans}$,卷积核宽度$K_m$选择范围$M=\{ K_{m,s}\}^S_{s=1}$与池化操作宽度挑选范围$P=\{K_{p,s}\}^S_{s=1}$,以及卷积核权重的随机初始化分布$[-\lambda,\lambda]$。
(3)在终止条件为特征图通道数$C\leq C_{\max}$或当前模型预测结果的MSE小于$\varrho $的构造过程中,基于卷积核宽度选择范围$M$与池化操作宽度选择范围$P$,依次从参数组合$(K_{m,s}, K_{p,s})$和均匀分布$[-\lambda,\lambda]$中生成$S$个备选卷积核,以此构成卷积核备选集,并根据得到的备选集,计算各备选卷积核下的池化特征图向量$\{ p_{C+1,s}\}^S_{s=1}$。
(4)基于\autoref{eq:filterScore}计算各备选卷积核的评分,从中贪心选出最优的卷积核结构及对应卷积核权重,将其加入当前神经网络结构中,更新卷积层卷积核数量和模型预测误差。迭代此过程,直至满足终止条件。
\section{实验设计与流程\label{sec:esm.exp}}
\subsection{数据集描述}
为充分评估所提ESM-CNN预测模型的预测性能和验证其收敛能力,本章节在经典人工合成时间序列数据集和多项真实时间序列数据集上进行实验验证研究。实验数据集名称及简写如\autoref{tab:cnn.dataName}所示。
\autoref{tab:app_data}展示了本章节所用数据集的统计信息。其中,第一列、第五列和第六列说明了所用数据集的名称,起始截止日期和大小。
第二列展示所用数据集的平稳性(Stationarity)状态,“\cmark”表示该数据集为平稳的,“\xmark'表示该数据集为非平稳的,该状态通过扩张的迪基-福勒检验(Augmented Dickey Fuller,ADF)\footnote{https://www.statsmodels.org/stable/generated/statsmodels.tsa.stattools.adfuller.html}判断得出。第三列与第四列则分别表示了数据集的趋势性(Trend)与季节性(Seasonality)强度分数\footnote{https://otexts.com/fpp2/seasonal-strength.html},分数越高表明该数据具备越强的趋势性或季节性。各数据集的说明如下:
\begin{table}[!t]
\centering
\caption{实验数据集名称及英文缩写对照 \label{tab:cnn.dataName}}
\begin{tabularx}{\textwidth}{lXl}
\toprule
{数据集中文名称} & {数据集英文名称} & 英文缩写 \\ \midrule
一阶自回归 & First order autoregression & AR1 \\
比特币两小时美元价格 & Two-hourly bitcoin to U.S. dollar price & BTC \\
流感阳性样本率 & Influenza-like illness rate & ILI \\
欧洲布伦特原油周价格 & Weekly Europe Brent crude oil price & BRENT-weekly \\
欧洲布伦特原油周价格 & Daily Europe Brent crude oil price & BRENT-daily \\
美国WTI原油周间价格 & Weekly WTI crude oil price & WTI-weekly \\
标普500每日收盘指数 & Daily close value of S\&P 500 index & S\&P 500 \\
纳斯达克每日收盘指数 & Daily close value of NASDAQ Composite & NASDAQ \\
道琼斯每日收盘指数 & Daily close value of Dow Jones Average & DJI \\
纽约证交所每日收盘指数 & Daily close value of NYSE Composite & NYSE \\
\bottomrule
\end{tabularx}
\end{table}
\input{float/ch.cnn/data.tex}
针对合成数据上的预测实验研究,AR1数据集作为评价时间序列预测模型的常用基准数据集之一,参照相关研究\cite{qi2008trend,crone2016feature}的参数设定通过\autoref{eq:ar}予以合成:
\begin{equation}
\label{eq:ar}
x_t = \alpha + x_{t-1} + \varepsilon_t,
%\vspace{-0.1em}
\end{equation}
其中,$\alpha = 0.01$, $\varepsilon_t \sim i.i.d.~\mathrm{U}(-0.25,0.25)$,共合成出500个观测点。
针对比特币价格预测应用研究,本章节所用BTC数据集通过Tradeviw平台\footnote{https://www.tradingview.com/symbols/BTCUSD}采集2020年5月25日至2021年3月20日间的两小时级美元收盘价得到,共有2181个观测点。
针对流感阳性样本率预测应用研究,本章节所用ILI数据集通过中国国家流感中心平台\footnote{https://ivdc.chinacdc.cn/cnic/en/Surveillance/WeeklyReport/} 采集2010年1月15日至2020年4月15日间的中国南方地区每周流感阳性样本率得到,共有535个观测点。
针对原油价格预测应用研究,本章节分别通过采集欧洲BRENT市场\footnote{https://www.eia.gov/dnav/pet/hist/RBRTEd.htm}和美国WTI市场\footnote{ https://www.eia.gov/dnav/pet/hist/rwtcW.htm}公开至2021年5月3日间的每周美元收盘价格及每日美元收盘价格,得到BRENT-weekly(1773个观测点)、BRENT-daily(8620个观测点)、WTI-weekly(1844个观测点)和WTI-daily(8904个观测点)数据。
针对股票指数预测应用研究,本章节通过UCI机器学习数据集\footnote{https://archive.ics.uci.edu/ml/machine-learning-databases/00554/}得到2009年12月31日至2017年11月15日间的S\&P 500、NASDAQ、DJI和NYSE每日收盘指数,各股票指数数据均有1984个观测点。
在本章节进行的实验中,所选数据集对于训练集、验证集和测试集切分遵循机器学习预测建模研究中常用的0.64、0.16和0.2的比例。为进一步分析和比较所提预测模型在提前单步(One-step-ahead)预测与提前多步( Multi-step-ahead)预测上的性能表现,本章节在各数据集上均进行了不同提前时步的预测建模实验。具体地,AR1数据集上的预测时长H分别为1、3、6,输入步长T为15;BTC数据集上的预测时长H分别为1、3(六小时)、6(半日),输入步长T为24(两日);ILI、BRENT-weekly和WTI-weekly数据集上的预测时长H分别为1、4(一个月)、8(两个月),输入步长T为26(半年); BRENT-daily、WTI-daily、S\&P 500、NASDAQ、DJI和NYSE数据集上的预测时长H分别为1、5(一周)、10(两周),输入步长T为30(六周)。
\subsection{对比模型选择}
% \subsubsection{RVFL, IELM和SCN}
为比较ESM-CNN预测模型与传统统计预测模型的性能差异,将输入时间序列最后时刻观测值作为预测值的Naive预测方法、自回归移动平均(Autoregressive Integrated Moving Average,ARIMA)方法\cite{floresEvolutive2012}和Holt’s Winters季节指数平滑(Holt’s Winters Seasonal Exponential Smoothing,HWSES)方法\cite{chatfieldHoltwinters1978}被选为对照组模型以验证所提模型的性能优势。
为比较ESM-CNN预测模型与经典随机映射预测模型的性能差异,RVFL\cite{igelnik1995stochastic}、ILEM\cite{huang2006universal}和SCN\cite{wang2017stochastic}这三种典型随机多层感知机(SMLP)被选为对照组模型。
RVFL、IELM和SCN的随机映射参数(如随机初始化隐藏层权重的分布参数、容忍水平等)与所提ESM-CNN模型参数保持一致,同时RVFL、IELM和SCN中的隐藏层神经元数量与ESM-CNN中卷积核数量保持一致以更好地控制实验变量。
此外,为比较ESM-CNN预测模型与梯度下降训练方法下DNN预测模型的性能差异,CNN、循环神经网络(Recurrent neural network,RNN)以及结合CNN与RNN优势的卷积循环神经网络(Convolutional recurrent neural network,CRNN)这三种代表性神经网络被加入对照组模型中。具体地,本章节提供了基于一种网格搜索(Grid-search)确定隐藏层卷积核数量的单卷积层CNN(GS-CNN)作为CNN的实现模型。针对RNN结构,本章节复现了Salinas等\cite{salinasDeepAR2020}提出的一种基于自回归长短时记忆(Long short term memory,LSTM)网络结构的RNN预测模型DeepAR,该模型在多项现实预测任务中表现出优异性能。此外,本章节复现了Livieris等\cite{livieris2020cnn}基于CNN与RNN结构提出的卷积长短时记忆(Convolutional long short term memory,CLSTM)网络,作为CRNN结构的有力实现。
GS-CNN,DeepAR,和CLSTM预测模型的超参数(如梯度下降优化算法、学习速率和训练迭代次数等)基于通行的试错(Trial and error)策略予以确定。
进一步地,为验证所提ESM-CNN预测模型中误差反馈构造策略与卷积核结构选择方法的必要性,本章节针对这两个要素进行了消融实验研究。
通过移除卷积核选择方法保留误差反馈随机建模策略,建立一种消融的误差反馈随机卷积神经网络(Error-feedback stochastic convolutional neural network,ES-CNN)。通过完全移除误差反馈策略与卷积核选择方法,构造出Yu et al.\cite{yuImpact2019}所提出的单纯随机卷积神经网络(Stochastic convolutional neural network,Stoc-CNN)。
在本章节所设置的所有预测任务中,ESM-CNN的最大卷积核数量$C_{\max}$设为100以保证模型收敛。基于实验经验,卷积核权重的随机初始化分布$[-\lambda,\lambda]$设为$[-0.5,0.5]$,备选卷积核的宽度选择范围设为$ \{K_{m,s}\} ^S_{s=1} = \{T/3, T/4, T/5, T/6\}$,为简化卷积核结构搜索问题,参考相关研究\cite{zhao2017convolutional},池化操作宽度固定为$K_p=3$。同一宽度的备选卷积核数量为30。
为保证消融实验的公平性,Stoc-CNN、ES-CNN和ESM-CNN的随机设置参数与卷积核数量均保持一致。
\subsection{评价指标设置}
为多角度评价所提模型与进行对照实验研究,本章节选取了包含百分比误差与绝对值误差在内的三种常用预测准确度评价指标\cite{baoPSOMISMO2014,guo2016robust,zhaoDeep2017},分别为:平均绝对百分比误差(Mean absolute percentage error,MAPE),对称平均绝对百分比误差(Symmetric mean absolute percentage error,SMAPE)和根方平均平方误差(Root mean square error,RMSE)。其计算过程分别如\autoref{eq:mape}、\autoref{eq:smape}和\autoref{eq:rmse}所示:
\begin{equation}
\label{eq:mape}
MAPE = \frac1N \sideset{}{_{i=1}^N} \sum \abs{\frac{y_{i} - \hat y_{i}}{y_i}}.
\end{equation}
\begin{equation}
\label{eq:smape}
SMAPE = \frac1N \sideset{}{_{i=1}^N} \sum \abs{\frac{y_{i} - \hat y_{i}}{y_i + \hat y_{i}}}.
\end{equation}
\begin{equation}
\label{eq:rmse}
RMSE = \sqrt{\frac1N \sideset{}{_{i=1}^N} \sum ({y_{i} - \hat y_{i}})^2 }.
\end{equation}
其中,$y_i$和$\hat y_i$分别表示真实值与预测值。
\subsection{实验步骤}
在本章节的实验验证研究中,所选数据集均首先基于Z-score方法\footnote{https://scikit-learn.org/stable/modules/preprocessing.html\#preprocessing-scaler}归一化至标准正太分布,而后按照0.64,0.16和0.2的比例切分为训练集、验证集和测试集。
所提ESM-CNN及所有对照组和消融模型均通过训练集和验证集进行训练与交叉验证。
在生成预测结果计算评价指标时,预测生成结果均先被还原至原有数值范围,再进行预测准确度计算。
最终,在所有预测任务中,本章节均对每一预测模型建模20次,对20次预测建模结果结合MAPE、SMAPE和RMSE指标计算预测准确度平均值,以综合表现预测模型预测准确性与稳定性。
本章节所有实验均基于CUDA 10.1版本的GPU加速Pytorch框架\cite{paszkePytorch2019}、Ubuntu 20.04系统环境、Intel 8700K CPU和Nvidia GTX 1070 GPU环境进行,以保证计算环境的一致性。本章节的实验设置与算法代码已开源在Github平台\footnote{https://github.com/XinzeZhang/TimeSeriesForecasting-torch},以方便研究者复现和开展相关工作。
\section{实验结果与分析\label{sec:esm.ana}}
\subsection{预测准确度对比与分析}
\cref{tab:app_mape.std,tab:app_smape.std,tab:app_rmse.std}分别展示了ESM-CNN及对照组模型在AR1、BTC和ILI数据集上的MAPE、SMAPE和RMSE平均结果及标准差,以评价不同模型的准确度与稳定性。
在\cref{tab:app_mape.std,tab:app_smape.std,tab:app_rmse.std}中,括号内为模型结果的标准差,越低的标准差表示模型具有越强的预测稳定性。其中,统计模型的0标准差以“-”表示。
每一预测任务中的最优结果通过粗体加星“\(\star\)”的形式进行展示,次优结果通过粗体加以表示。
另外,\cref{tab:app_mape,tab:app_smape,tab:app_rmse}分别展示了ESM-CNN及对照组模型在原油价格与股票指数数据集上的MAPE、SMAPE和RMSE结果,以补充说明所选模型的对比效果。
% \cref{tab:app_mape,tab:app_smape,tab:app_rmse}分别展示了ESM-CNN及对照组模型在原油价格与股票指数数据集上的MAPE、SMAPE和RMSE结果,以补充说明所选模型的对比效果。
\input{float/ch.cnn/std.tex}
\input{float/ch.cnn/mape.tex}
\input{float/ch.cnn/smape.tex}
\input{float/ch.cnn/rmse.tex}
% 在\cref{tab:app_mape.std,tab:app_smape.std,tab:app_rmse.std,tab:app_mape,tab:app_smape,tab:app_rmse}中,
% 第一列为数据集名称,第二列展示了该数据集上不同预测时长H下的预测任务。第三列至最后一列归类展示了统计模型、梯度下降训练模型以及随机映射模型类别下对照模型与所提模型在各预测任务上的平均结果。
% 平均分值结果越低表示模型具有越准确的预测性能。
基于\cref{tab:app_mape.std,tab:app_smape.std,tab:app_rmse.std,tab:app_mape,tab:app_smape,tab:app_rmse}所示的对照组模型结果,可归纳出以下结论:
(1)作为一种新颖的卷积结构SDNN模型,ESM-CNN在本章节选取的人工合成时间序列数据集与真实时间序列数据集上都保持了优秀的预测准确度,展现出ESM-CNN预测模型的良好应用性。
(2)与Naive、ARIMA和HWSES所代表的统计模型相比,ESM-CNN在本章节设置的所有预测任务和所有评价指标上都表现出更优的预测准确度,展现出ESM-CNN预测模型的良好预测性能。
(3)与GS-CNN、DeepAR和CLSTM所代表的先进梯度下降训练DNN预测模型相比,ESM-CNN在本章节设置的绝大部分预测任务和评价指标上取得了更优的预测准确度;在梯度下降训练模型取得最优结果的预测任务中,如ILI H8、BRENT-weekly H1、BRENT-daily H1、WTI-weekly H1和WTI-daily H5, ESM-CNN预测模型也取得了差距很小的次优预测结果,展示出ESM-CNN预测模型与梯度下降训练深度学习预测模型匹敌的预测能力。
(4)与RVFL、IELM和SCN所代表的先进SMLP预测模型相比,ESM-CNN同样在本章节设置的所有预测任务和所有评价指标上都表现出更优的预测准确度,展示出ESM-CNN预测模型在随机映射预测模型中的预测优势。
基于\cref{tab:app_mape.std,tab:app_smape.std,tab:app_rmse.std,tab:app_mape,tab:app_smape,tab:app_rmse}所示的消融模型结果,可归纳出以下结论:
(1)仅单纯引入随机映射方法的Stoc-CNN预测模型在本章节选取的所有预测任务和所有评价指标上都表现出显著弱于ES-CNN与ESM-CNN的预测性能,并在多项预测任务中表现出最差的预测准确度,验证了病态问题在全局更新输出权重方式下所导致的预测性能问题。
(2)引入误差反馈随机映射构造策略的ES-CNN预测模型与Stoc-CNN相比,取得了显著的准确度提升,并在大部分预测任务和评价指标中表现出次优的水平,展现出基于误差反馈随机映射策略构造CNN预测模型的有效性与必要性。
(3)与ES-CNN和Stoc-CNN预测模型相比,ESM-CNN在本章节设置的所有预测任务和所有评价指标上都表现出更优的预测准确度,证明了所提贪心选择方法在ESM-CNN预测模型构造过程中的有效性与必要性。
\begin{figure*}[!t]
\centering
\begin{minipage}[b]{0.43\textwidth}
\includegraphics[width = \textwidth]{float/ch.cnn/sili_H1_revise.png}
\subcaption{\label{fig:silih1} ILI, $H = 1$ }
\end{minipage}
\hspace{4em}
\begin{minipage}[b]{0.43\textwidth}
\includegraphics[width = \textwidth]{float/ch.cnn/sili_H4_revise.png}
\subcaption{\label{fig:silih4} ILI, $H = 4$ }
\end{minipage}
\begin{minipage}[b]{0.43\textwidth}
\includegraphics[width = \textwidth]{float/ch.cnn/sili_H8_revise.png}
\subcaption{\label{fig:silih8} ILI, $H = 8$ }
\end{minipage}
\caption{\label{fig:converge} ILI数据集上递归增长随机映射神经网络的RMSE曲线}
\end{figure*}
\subsection{收敛效果对比与分析}
本章节对比了基于递归增长随机映射构造策略模型(即IELM、SCN、ES-CNN和ESM-CNN模型)的收敛性,以更好评价所提模型的收敛效果。
\autoref{fig:converge}绘制出了ILI数据集上随递归增长随机映射模型随隐藏层神经元或卷积核数量变化所达到的训练集与验证集RMSE曲线。基于该收敛性结果,可归纳出以下结论:
(1)同一预测模型在不同预测时长任务上的收敛情况是一致的。
(2)尽管SCN模型在不同预测任务的训练集RMSE上都能做出最快收敛,但通过验证集RMSE曲线可知,SCN模型在进行真实预测建模中出现了明显的过拟合现象,而采用误差反馈策略的IELM模型并没有出现过拟合,但表现出最慢的收敛速度。这一对比结果证明了误差反馈策略解决过拟合问题的有效性,同时也指出了误差反馈策略下MLP结构的性能局限性。
(3)基于卷积结构的ESM-CNN和ES-CNN在所有的验证集RMSE中都表现出比IELM和SCN更快且更低的收敛效果,证明了基于误差反馈随机映射构造CNN预测模型的收敛性与鲁棒性。
(4)与ES-CNN相比,ESM-CNN具备更低的训练集RMSE曲线和测试集RMSE曲线,从收敛性角度再次验证了所提卷积核选择方法的有效性与必要性。
(5)在ESM-CNN与ES-CNN的收敛过程中,预测性能的最大增益明显来自于构造过程的前10步,表现出ESM-CNN具备通过牺牲微小性能换来巨大效率提升的平衡策略,从而使得ESM-CNN具有更加广泛和高效的现实应用性。
进一步地,对于本章实验中\autoref{fig:converge}所显示的SCN与Stoc-CNN过拟合现象以及ESM-CNN与ES-CNN模型的鲁棒性特点,其解释如下:由于SCN与Stoc-CNN均采用最小二乘法全局更新输出权重的方式,使其难以克服现实复杂时间序列中的噪声数据,因此出现了过拟合的现象;与全局更新输出层权重的构造方式相反,ESM-CNN与其消融模型ES-CNN采用基于构造过程预测误差反馈局部更新输出权重的方式,随着卷积核的不断增加,一方面,既有预测误差被不断弥补,使得噪声数据的影响被不断削弱,另一方面历史加入的卷积核权重及其链接的输出权重被固定住,这些固定的权重在一定程度上充当了正则化的作用,使得新加入卷积核的输出权重$L_2$范数越来越小,并在整体上小于SCN与Stoc-CNN,从而使模型具有更高的稳定性与鲁棒性。
\subsection{建模效率对比与分析}
\input{float/ch.cnn/time.tex}
此外,本章节对比了所选模型中神经网络预测模型的单次平均建模时间,以更好评价所提模型的实际建模效率。
\autoref{tab:time}展示了所选神经网络预测模型在AR1、BTC和ILI数据集上以秒为单位的单次平均建模时间。其中,因RVFL与Stoc-CNN的构造过程仅由随机初始化隐藏层权重与闭式求解输出权重两部分组成,在当前实验环境下,模型构造时间可被省略,因此用“-”进行标记。
通过对比卷积结构的训练DNN模型(即GS-CNN)与循环结构的训练DNN模型(即DeepAR和CLSTM),GS-CNN模型具有更高的建模效率,其用时约是纯循环结构模型DeepAR的三分之一,约是堆叠卷积与循环结构模型CLSTM的二分之一,验证了卷积结构的效率优势。
进一步地,结合前文的预测结果可知,ESM-CNN与ES-CNN仅需相对极少的建模时间即可达到与梯度下降训练深度学习预测模型媲美甚至更好的预测性能,同时参考\autoref{fig:converge}所示的收敛性结果可知,该建模时间仍有相当压缩空间以进一步提高建模效率,证明了误差反馈随机映射方法构造CNN模型的建模高效性。
同时,ESM-CNN与ES-CNN相比,增加的卷积核选择过程在未明显增加建模时间的情况下显著提高了预测性能,证明了ESM-CNN的建模优势。
\section{小结\label{sec:esm.conc}}
面对预测建模技术研究中卷积结构SDNN预测模型的构造与自适应优化问题,针对已有方法的诸多不足,本章提出了一种新颖的ESM-CNN预测模型,基于误差反馈随机映射建模策略和卷积参数贪心选择方法,构造出一种兼具优异建模效率与预测性能的卷积结构SDNN预测模型,并证明了其收敛性。
本章节以经典人工时间序列数据、比特币价格、流感阳性样本率、国际原油价格、股票指数等多项真实时间序列数据为预测对象,进行多个预测时长下的预测任务,基于不同预测准确度评价指标,通过预测准确度、收敛性和建模效率等多个视角的对比分析验证了所提ESM-CNN模型的性能与效率,结果表明该模型是一种兼具优秀预测性能与建模效率的卷积结构SDNN预测模型。有望基于该模型为比特币价格预测、流感阳性样本率预测、国际原油价格预测和股票指数预测等管理应用提供相比传统统计方法和传统随机映射方法更为精准的预测结果,同时可利用其远优于训练深度学习预测方法的建模效率优势,为时变或在线环境下的复杂预测管理应用问题提供可能的解决方案。
================================================
FILE: body/chapter/intro.tex
================================================
%%% mode: latex
%%% TeX-master: t
%%% End:
\chapter{绪论}
\section{研究背景与意义}
预测问题是经济生活、工业生产、公共卫生和能源系统等众多应用领域的重要问题。若能基于观测的现实预测出未来将要发生的现象,则能为控制或决策提供参考。自然,科学准确的预测是正确决策的重要依据。
然而,现实数据往往是复杂且动态的,难以通过某一确定性的物理定律或因果关系精确推算出未来的状态。因此需要考虑依赖于时间的现象,基于数据自身的历史观测值,建立预测模型从而估计和推测出未来状态,这样处理预测问题的方式被称为时间序列预测。其中,根据数据发生的历史时间顺序所得到的序列观测值即是时间序列数据。
在现实背景下,时间序列数据常常呈现出规模庞大、模态多样和关联复杂等性质,表现出感知度量难、特征融合难和模式挖掘难等问题。
对于这种动态机制不确定的数据,如何建立一种建模技术来解决大规模时间序列数据非平稳状态下的动态性预测问题,对学界和业界都具有重要的理论价值和实际意义。
% \section{研究意义}
在预测科学的发展进程中,各种预测技术和方法推陈出新。
其中,以卷积神经网络(Convolutional neural network,CNN)和循环神经网络(Recurrent neural network,RNN)为代表的深度学习(Deep learning,DL)预测建模技术成为该领域近年来的研究热点。深度学习是一种大数据背景下基于深度神经网络(Deep neural network,DNN)的机器学习(Machine learning,ML)建模思想,着重研究样本数据的内在规律与表示层次~\cite{hintonReducing2006}。相较于传统的统计机器学习方法,即基于统计模型依赖经验选取特征的浅层学习方法,如支持向量机(Support vector machine,SVM)和多层感知机(Multilayer perceptron,MLP)等,DNN采用卷积池化或循环记忆的网络结构,在成功解决了复杂网络结构下训练初始化~\cite{heDelving2015,glorotUnderstanding2010}与梯度不稳定问题~\cite{mikolovContext2012,pascanuDifficulty2013}后,构造的模型具有优异的特征学习能力和预测性能,并根据网络结构的不同,在面对海量时间序列数据时表现出不同的效率与性能侧重优势。
例如,基于卷积结构的DNN(即CNN)预测模型通过卷积与池化,在降低网络参数的同时进行局部特征的抽象表征,使得模型具备良好的学习能力与效率优势;而基于循环结构的DNN(即RNN)预测模型考虑输入数据的时序关系,通过历史的隐藏特征表示与当前的输入数据特征,迭代完成样本的时序特征抽象学习,使得模型具备优异的预测性能。因此,近年来涌现出大量基于深度学习建模技术的预测应用研究,这些技术方法在多项应用领域,如金融市场~\cite{wuImproved2019,zhaoDeep2017,sezerFinancial2020},能源市场~\cite{caiDayahead2019,lindbergLongterm2019,shiDeep2018}和交通管理~\cite{laptevTimeseries2017,wangTraffic2016,xiaoShortterm2019}等,取得了显著的预测效果,表现出良好的应用前景。
尽管深度学习预测建模技术在管理领域中得到不断推广与应用,但研究表明,深度学习模型与浅层学习模型一样受到多种技术因素的影响(如神经网络结构,输入选择和输出策略等)~\cite{sezerFinancial2020,lindbergLongterm2019}。在现实的时间序列预测任务中,这些在其他领域(如图像识别、目标检测、文本分类和机器翻译等)展现出优异性能的深度学习算法会因不恰当的模型参数设置而无法表现出预期性能。此外,深度学习模型普遍依赖梯度下降(Gradient decent,GD)方法~\cite{sutskeverImportance2013,kingmaAdam2015,reddiConvergence2018,allen-zhuConvergence2019,loshchilovDecoupled2019}多次迭代训练其权重参数以优化其预测性能。同时,现有的深度学习预测建模技术普遍依赖人工经验来解决模型神经网络结构设计、参数设置和特征选择等模型选择问题,使得研究人员与从业人员不得不付出高昂的计算开销来摸索与尝试合适的模型参数与输入特征,降低了深度学习建模技术在时间序列预测问题中的应用效率与实际性能。因此,高效解决深度学习预测建模技术中的模型选择问题,以探索和提高其在现实典型时间序列情景中的预测性能和学习效率,是发展时间序列深度学习预测模型及其应用研究中的重要内容。
与梯度下降方法的迭代学习机制不同,随机映射是一种采用非迭代学习机制的神经网络建模方法~\cite{scardapaneRandomness2017,liInsights2017,wang2015jiyu,shen2018jiyu}。随机映射方法通过随机初始化并固定神经网络输入层权重与隐藏层权重,结合闭式求解算法确定输出层权重,构造出随机(Stochastic)神经网络模型。与梯度下降方法构造的训练(Trained)神经网络模型相比,随机神经网络模型具有极低的计算开销、优异的学习效率与良好的非线性表达能力。基于随机映射方法,已发展出极限学习机(Extreme learning machine,ELM)~\cite{shen2017jiyu}、随机向量函数链接网络(Random vector version of the functional-link,RVFL)~\cite{fu2021jiyu}等神经网络学习技术,并在时间序列预测任务中得到了广泛应用~\cite{scardapaneRandomness2017,caoReview2018,tanakaRecent2019}。
然而,基于随机映射的深度神经网络,即随机深度神经网络(Stochastic deep neural network,SDNN),其预测建模技术研究却较未深入。一方面,既有方法多聚焦于随机映射方法的直接应用~\cite{yuImpact2019,huForecasting2020,sunReview2020,hu2021jiyu}或是对现有SDNN模型的组合集成~\cite{wang2018effective,lv2018stacked,lv2019jiyu};另一方面,随机映射方法在大幅提升建模效率的同时,使得所构造的SDNN模型的预测性能对网络结构与参数设置更加敏感,且由于与梯度下降方法在神经网络模型权重参数确定机制上的本质差异,使得传统神经网络建模技术下的模型选择方法对于SDNN预测模型而言适用有限。
此外,SDNN预测模型的模型选择对象及问题,在以卷积和循环为代表的不同特定神经网络结构实现方法下,呈现出个性且复杂的特点。
例如,基于卷积结构的SDNN预测模型在进行模型选择时,区别于传统的训练CNN模型,在卷积结构SDNN模型由多个卷积核组成的随机卷积层中,每个随机卷积核的结构及权重分布都可以是不同的~\cite{zhangErrorfeedback2021};再如,基于循环结构的SDNN预测模型在进行学习建模时,每个循环节点都可生成当前输入的对应目标输出值,区别于传统的训练RNN模型,随机映射方法下其输出权重的闭式求解需考量这些节点的选取与否。
这些特性问题使得基于SDNN的预测建模技术需要考虑不同神经网络结构实现下的方式特点,建立针对且有效的模型选择方法,以更好提升SDNN模型预测效能。
同时,SDNN建模技术在不同结构实现下的特定优化问题外,亦存在区别于传统机器学习方法与随机浅层神经网络模型的共性优化问题。例如,卷积层的单卷积核多通道输入能力\cite{wangTraffic2016}和循环层的单循环节点多时步输入能力\cite{bandaraForecasting2020}均可将单变量时间序列预测建模中的传统一维输入结构提升为二维输入结构,使得时间序列数据在SDNN预测模型中的特征选择这一关键问题更为复杂。
通过对以上背景的分析可知,有必要进行系统、全面、针对且深入的SDNN预测建模技术研究。基于此,本研究在充分利用DNN拓扑结构优异的特征学习能力和随机映射方法低开销与高效率的建模优势基础上,关注SDNN预测建模技术模型选择的问题与挑战,研究SDNN预测模型构造与优化的创新方法与提升策略。
首先,针对SDNN预测模型在不同典型代表结构下实现下的特定问题,例如SDNN预测模型在基于卷积结构实现时的隐藏结构构造与优化问题以及基于循环结构实现时的输出结构构造与优化问题,分别进行深入且细致地探索,创新提出高效且自适应的随机映射卷积隐藏结构构造方法和循环输出结构优化方法;而后,归纳SDNN预测模型在不同结构实现时的共性优化问题,例如特征选择问题,提出一般结构下的SDNN新型时间序列输入特征选择方法;最后,结合不同深度神经网络结构的特有能力优势,例如卷积结构的局部特征学习能力和循环结构的长期特征学习能力,以及考虑SDNN预测建模的整体优化问题,提出混合结构的SDNN预测模型生长与优化方法,构造出强健、鲁棒且准确的SDNN预测建模技术框架。
本研究旨在建立基于随机映射的深度学习预测建模方法,通过结合随机映射方法的建模效率优势与DNN模型的预测性能优势,聚焦既有SDNN预测模型方法的关键问题与挑战,创新提出一系列SDNN预测模型构造与优化方法,并用于解决管理应用中多种复杂现实时间序列预测问题,以期为决策提供更为高效且智能的支持。
在理论层面,本论文将深入研究不同神经网络结构下的SDNN预测模型和新的理论分析框架,如构建基于卷积结构和混合结构的SDNN预测模型的预测误差收敛性分析框架,直观理解SDNN预测模型的构造与决策逻辑。这些新颖的模型与理论分析框架的提出有助于丰富既有SDNN预测建模技术研究的理论体系,具有一定的理论意义。
% ,为完善DNN预测模型的解释性研究提供一定支撑。
在方法层面,本论文将构造多套预测模型构造与优化方法,包括适用于卷积结构、循环结构、一般结构至混合结构SDNN模型的优化技术,形成从特定到一般再到混合的综合技术体系与框架,为SDNN预测建模技术的复杂模型选择问题提供新颖的方法与思路。这些新方法的提出将拓展既有SDNN预测建模技术研究的方法体系,为完善SDNN预测模型的模型选择问题研究提供一定支撑。
在现实层面,本论文将立足于现实时间序列预测任务的多个场景,包括公共卫生领域中的流感阳性样本率预测任务、能源市场中的原油价格预测任务、金融市场中的股票指数预测任务、大气污染中的PM2.5预测任务、电力系统中的电力负荷与电力价格预测任务等。基于模型在不同场景下的预测结果和优势特点,如基于卷积结构SDNN模型的效率优势和基于混合结构SDNN模型的性能优势,可为管理部门制定决策提供效能层面的不同支撑,对SDNN预测建模技术的应用具有良好的现实意义。
\section{研究面临的关键问题}
针对时间序列预测建模这一重要问题,基于SDNN的预测建模技术因其高效的构造效率和良好的预测潜能受到了广泛关注和应用,但既有方法面临着如下关键问题:
(1)如何构建基于卷积结构SDNN预测模型的新颖构造及自适应优化方法,以解决已有卷积结构SDNN预测建模技术中参数选择时的人工依赖、输出权重求解时的病态矩阵和预测过程的不稳定性,是本研究的关键问题。
SDNN模型预测性能对于隐藏结构的设计与参数设置以及输出权重的闭式求解方式非常敏感,这一现象在卷积结构的实现中尤为明显。原因在于,SDNN建模方法下接隐藏层的输入权重与隐藏权重是随机且固定的,输出层权重是基于隐藏特征表征和预测目标的映射通过闭式求解予以确定。更具体的,一方面在卷积结构的SDNN模型实现中,输入层与隐藏层权重统一地被卷积层权重所取代,同时卷积核权重的随机设置与其结构参数息息相关,使得卷积结构SDNN预测模型性能敏感于卷积层结构参数及随机权重,然而既有SDNN的卷积实现方法在进行隐藏卷积结构构造时依赖于人工试错,缺少自适应确定隐藏结构及参数设置的构造与选择方法;另一方面,同时,随着卷积核数量的增加会导致输出层读取的隐藏特征维度呈倍数增大,使得既有的输出层权重求解方法出现病态矩阵问题(Ill-posed problem),从而降低了输出层权重的求解质量,严重影响了模型的拟合能力和预测稳定性。因此,有必要设计一种能够自适应确定隐藏卷积结构及参数,兼具良好预测性能和高效建模效率的SDNN卷积结构实现方法,以更好发挥卷积结构的建模效率优势。
% 通常而言,SDNN模型对时间序列数据的表征通过隐藏层结构的随机映射和输出层的特征学习共同完成。随机映射方法下链接隐藏层的输入权重与隐藏权重是随机且固定的,输出层权重是基于隐藏特征表征和预测目标的映射通过闭式求解予以确定,因此。既有SDNN的卷积实现方法在进行隐藏卷积结构构造时依赖于人工试错,缺少自适应确定隐藏结构及参数设置的构造与选择方法;同时,随着卷积核数量的增加会导致输出层读取的隐藏特征维度呈倍数增大,使得既有的输出层权重求解方法出现病态矩阵问题,从而降低了输出层权重的求解质量,严重影响了模型的拟合能力和预测稳定性。因此,有必要设计一种能够自适应确定隐藏卷积结构及参数,兼具良好预测性能和高效建模效率的SDNN卷积结构实现方法,以更好发挥卷积结构的建模效率优势。
(2)如何构建基于循环结构SDNN预测模型的新颖构造及自适应优化方法,以解决已有循环结构SDNN预测建模技术所忽视的循环隐藏特征表示与预测目标的复杂对应问题,是本研究的关键问题。
区别于直接对局部特征进行高效前馈表征的卷积结构,SDNN循环结构实现方法则更侧重于捕捉与学习时序性特征,利用循环构造当前时间序列观测值与目标值间的映射完成预测建模。在此过程中,每个循环节点都将生成当前读取输入值的对应隐藏特征表示,建立出隐藏特征表示与拟合目标的时间序列对应队列,基于队列内的隐藏特征表示与拟合目标的对应关系闭式求解输出权重。然而,由于时间序列数据的复杂性,队列内的匹配关系并不一定都有助于得到良好的输出权重解。在进行匹配选取时,既有方法采用直接丢弃初始区间的做法,忽视了时间序列隐藏特征表示与拟合目标匹配队列的复杂性,从而降低了输出层权重的求解质量,限制了SDNN循环结构实现方法的时序特征学习能力。因此,有必要设计一种能够自适应确定循环输出结构及参数,兼具良好预测性能和高效建模效率的SDNN循环结构实现方法,以更好发挥循环结构的预测性能潜力。
(3)如何将特征选择与深度神经网络结构相结合,以利用已有SDNN预测模型特征选择方法所忽视的时步多维度输入能力,提出适用于以卷积和循环结构为代表的一般结构SDNN预测模型的自适应特征选择方法,是本研究的关键问题。
与传统机器学习方法或浅层神经网络方法不同,以卷积结构和循环结构为代表的DNN因其隐藏结构的特殊性,如卷积层中的单卷积核多通道结构和循环层中的单循环节点多神经元输入结构,使得DNN预测模型能够将传统的单变量输入的一维特征结构表示在每个输入时步节点囊括入邻近的时域特征,从而将传统一维输入特征作为特例,呈现出复杂的二维输入特征结构表示。此外,相较梯度下降方法训练的DNN预测模型,随机映射方法内在随机机制在提升建模效率的同时,一定程度上降低了模型直接对时间序列原始输入特征进行抽象学习的能力,因此更需要从复杂的输入中挖掘与选择出合适的特征以提升模型预测性能。然而,既有的SDNN预测模型特征选择方法未考虑时间序列输入数据的二维结构性质,仍在一维输入结构表示上进行特征取舍,削弱了特征选择对于SDNN预测模型性能的提升能力。因此,有必要设计一种种能够自适应确定输入特征结构及取舍的SDNN预测模型特征选择方法,以进一步提高模型的预测精度。
(4)如何将不同深度神经网络相结合,以消除已有SDNN预测建模方法固守于某一特定结构的局限,提出可包纳卷积结构、循环结构及其他DNN结构的混合结构SDNN预测模型构造与自适应优化方法,是本研究的关键问题。
面对复杂不同的时间序列预测任务,基于单一结构主体的SDNN预测模型可能难以完全胜任。事实上,SDNN预测模型在不同的神经网络结构实现下侧重不同的特征学习能力,如卷积结构对局部特征的学习能力和循环结构对时序特征的学习能力。故需要混合不同深度神经网络结构,以融合不同结构的性能优势,使SDNN预测模型具备综合的学习能力。然而,既有的SDNN预测建模方法局限于单一结构实现。同时,混合结构的SDNN预测模型对模型参数的选择与建模稳定性提出了更高要求。因此,有必要设计一种可兼容不同种类深度神经网络结构,能够自适应确定隐藏结构组成类别及对应参数,稳健且鲁棒的混合结构SDNN预测模型构造与选择方法,以更好解决时间序列预测问题。
\section{研究内容与创新点}
本文研究目标如下:以精准和高效的时间序列预测为目标,基于随机映射方法与深度神经网络预测模型,构造自适应确定模型参数与特征,准确、高效且稳健的SDNN预测建模技术,以适应复杂不同的时间序列预测场景需要,为管理决策提供更为快捷、智能、安全和稳定的支持。为此,本研究探索SDNN预测建模技术既有方法的关键问题,创新提出对应解决方法和改进策略,利用主流人工时间序列数据和多种现实时间序列数据验证所提方法策略的有效性,以期具备一定的理论意义和良好的现实意义。
\subsection{研究内容}
本研究以高效准确时间序列预测为研究目的,以SDNN预测建模技术为主要研究方法,其主要研究内容如下:
(1)基于卷积结构的SDNN预测模型构造与优化方法
既有SDNN预测模型的卷积结构实现方法依赖于人工设计隐藏结构,其全局更新输出权重的方式易产生不稳定的预测结果,使得随机映射卷积结构的效率优势意义有限。基于此,提出一种基于误差反馈的SDNN预测模型卷积结构构造与优化方法,采用递归添加随机卷积核的方式,逐步构造隐藏结构,通过误差反馈机制局部更新输出权重以此稳步降低模型预测误差,使得所构造模型具有理论保证的收敛误差;同时,利用贪心算法解决卷积结构参数与随机权重选择问题以增强模型感知不同尺度局部特征的能力;最后,结合人工合成时间序列数据、比特币价格、流感阳性样本率、国际原油价格和股票指数时间序列数据,验证所提方法的准确性、收敛性和建模效率。
(2)基于循环结构的SDNN预测模型构造与优化方法
既有SDNN预测模型的循环结构实现方法在采用闭式求解算法计算输出权重时,一般采用直接丢弃循环队列初始区间内隐藏状态与目标间映射关系的方式,这种做法未考虑参与求解的隐藏特征表示与目标队列的复杂关系,限制了随机映射循环结构的预测建模潜能。基于此,考虑堆栈结构、线性解码器结构和循环解码器等不同循环输出结构的实现形式,提出一种基于状态遮掩的SDNN预测模型循环结构构造与优化方法,利用粒子群优化算法对隐藏特征表示与目标队列进行选择以增强模型感知复杂时序特征的能力。同时,结合人工合成时间序列数据、电力负荷和室外温度时间序列数据,从预测准确度和结果稳定性等方面验证所提方法的有效性。
(3)SDNN预测模型的二重特征结构选择方法
既有SDNN预测模型特征选择方法局限于一维的时步单输入结构,其直接对各时步输入特征进行选择的方式未考虑深度神经网络结构对输入时间序列数据的时步多维度结构表示能力,限制了SDNN预测模型的特征学习能力。基于此,提出一种基于输入特征结构变换的二重特征结构优化方法,对输入时间序列的输入步长、时步维度和输入时步加以优化,利用树状帕尔森估计算法优化“时步维度-时步掩码”的输入特征结构元组,完成模型的特征结构选择,进一步提升SDNN模型的时间序列数据学习能力与预测精度。同时,结合人工合成时间序列数据、电力负荷和电力价格时间序列数据,以及不同深度神经网络结构验证所提方法的有效性。
(4)SDNN预测模型的混合结构生长与优化方法
既有SDNN预测模型的构造与选择方法局限于单一的深度神经网络结构,而不同类别的神经网络结构侧重不同的时间序列特征学习能力,现有方法难以主动适应复杂不同的时间序列预测场景。基于此,提出一种基于混合结构的SDNN预测模型生长与优化方法,通过迭代添加不同种类随机深度子网络构造隐藏结构,引入正则项改进误差反馈生长策略以此确定子网络输出权重,建立预优化、子训练和调正则的三阶段优化策略对子网络参数及权重进行优化,以此提升模型的学习能力、预测精度和稳定性。同时,结合人工合成时间序列数据、空气污染和电力负荷时间序列数据,验证所提方法的有效性、必要性、稳定性和收敛性。
\subsection{研究创新点}
基于对面向时间序列预测问题的SDNN预测建模技术理论与应用研究,本文主要创新点如下:
1)针对卷积结构SDNN预测模型中卷积层参数选择及输出权重病态矩阵难题,通过构造误差反馈随机建模构造策略和建立贪心搜索选择方法,提出基于卷积结构的SDNN预测模型构造与优化方法。其创新之处包括以下方面:
(1)通过代数推导证明了基于该方法所构造的预测模型具有随着卷积核的增加而单调下降的预测误差,以此保证了所提方法的收敛性,且其确定的输出权重与既有方法相比具有更小的$L_2$范数,以此提升了模型的预测稳定性;
(2)区别于既有方法仅能用相同宽度的卷积核构造单卷积层,通过贪心选择由不同卷积核宽度组成的备选集,使得模型能够在迭代构造模型的过程中自适应确定卷积参数,其构造的单卷积层具备不同宽度的卷积核,使模型借助单卷积层具备不同尺度局部特征的学习能力;
(3)在人工合成数据、流感阳率数据、国际原油价格数据和股票指数数据上的实验表明,与梯度下降训练的深度神经网络预测模型相比,基于本方法所构造的模型在具备相近甚至更优的预测准确度同时具备极高的建模效率,验证了所提方法的有效性。
2)针对循环结构SDNN预测模型中循环隐藏特征表示与预测目标间的复杂关系处理难题,通过考虑多种SDNN循环输出结构实现方法和利用粒子群优化算法,提出基于循环结构的SDNN预测模型构造与优化方法。其创新之处包括以下方面:
(1)在既有随机映射循环输出结构实现方法外,借鉴梯度下降训练循环神经网络输出结构提出多种随机映射循环输出结构实现方法,并实验分析不同输出结构间的异同优劣,为随机映射循环输出结构的实现应用提供更多支撑;
(2)区别于既有现方法强制丢弃一定初始区间内所有的隐藏状态表示,通过对循环结构每个循环节点生成的隐藏状态表示及目标施加状态掩码,借助粒子群优化方法进行循环队列完整区间内的隐藏状态表示取舍,使得模型能够更好学习输入时间序列数据的时序性特征,降低模型输出权重的学习难度,提升模型的预测性能;
(3)在人工合成数据、电力负荷数据和室外温度数据上的实验表明,与已有的SDNN循环输出结构优化方法相比,所提方法具备更好的多步预测准确度和稳定性,验证了所提方法的有效性。
3)针对以卷积和循环结构为代表的一般SDNN预测模型多输入时步多时步维度特征选择难题,通过构造二维输入特征结构和利用树状帕尔森估计算法,提出了SDNN预测模型的二重特征结构选择方法。其创新之处包括以下方面:
(1)区别于既有SDNN特征选择方法局限于一维输入结构,且仅利用时步掩码对输入特征进行选择的方式,基于以卷积结构和循环结构为代表的深度神经网络时步多维度特征读取能力,利用滑动窗口构造出时步多维度的新颖输入特征结构,丰富模型输入信息;
(2)将既有的多输入特征选择方法作为被囊括的特例,通过树状帕尔森估计算法对输入的二维特征结构时步维度和时步掩码参数同时进行优化,使得模型能够根据不同的时间序列任务在每个时步输入节点丰富邻近特征信息的同时,去除冗余和嘈杂的输入时步节点,降低模型抽象特征的学习难度,提升模型的预测性能;
(3)在人工合成数据、电力负荷数据和电力价格数据上的实验表明,与已有的SDNN特征选择方法相比,基于所提方法构造的模型具有更优的预测性能,验证了所提方法的有效性。
4)针对混合卷积、循环和其他深度神经网络结构的SDNN预测模型构造与自适应优化难题,通过改进误差反馈生长策略和建立三阶段优化算法,提出了SDNN预测模型的混合结构生长与优化方法。其创新之处包括以下方面:
(1)区别于既有SDNN预测模型传统的单一隐藏神经网络结构,构造混合结构的生长策略,通过矩阵分析证明了基于该策略所构造的预测模型随着不同结构子网络的加入具有单调下降的预测误差,以此保证了所提方法的收敛性,且通过向输出权重的计算过程引入正则项,避免了既有随机映射方法更新输出权重时可能遇到的病态矩阵问题和过拟合问题,提升了模型的鲁棒性;
(2)区别于既有SDNN参数优化方法仅对部分参数进行选择的做法,提出预优化、子训练和调正则的三阶段优化方法对定义子网络的结构参数、输入与隐藏权重参数,以及输出权重进行完整优化,使得模型能够根据不同的时间序列任务自适应地生长神经网络结构与选择参数,进一步提升模型预测性能;
(3)在人工合成数据、空气污染数据和电力负荷数据上的实验表明,与已有的先进SDNN预测模型相比,基于所提方法构造的模型具有更优的预测性能,验证了所提方法的有效性。
% \clearpage
\begin{figure}[!t]
\centering
\includegraphics[width=0.8\linewidth]{float/ch.intro/thesis_arch.png}
\caption{\label{fig:body}本研究技术路线}
\end{figure}
\section{技术路线与论文结构}
\subsection{技术路线\label{sec:thesisRoad}}
本研究以时间序列预测问题为背景,结合随机映射方法的建模效率与深度神经网络的学习潜能,基于SDNN预测建模技术进行方法研究和现实应用。
本研究的技术路线如\autoref{fig:body}所示,通过文献研究法分析SDNN预测建模技术的背景、现状与不足,归纳以卷积神经网络和循环神经网络结构为代表的既有SDNN建模方法,从参数优化与特征选择两方面,系统分析其在时间序列预测建模时的模型选择关键优化问题。
首先,针对不同特定代表结构下的SDNN模型参数优化个性问题展开研究,分别构造基于卷积结构的SDNN预测模型构造与优化方法,以及基于循环结构的SDNN预测模型构造与优化方法;而后,将典型且个性的特定结构研究在神经网络结构层面予以推广,关注以卷积结构与循环结构为代表的一般结构下SDNN预测模型的特征选择问题,提出兼容不同深度神经网络结构的二重特征结构选择方法,并进一步考虑混合不同神经网络结构的SDNN模型参数优化问题,提出SDNN模型的混合结构生长与优化方法。
在此技术路线中,结合主流人工合成时间序列数据与多种复杂的现实时间序列数据,通过准确性比较实验、收敛性验证实验和消融实验,结合定量对比与机器学习理论分析,验证所提方法的有效性。
\begin{figure}[!t]
\centering
\includegraphics[width=0.95\linewidth]{float/ch.intro/thesis_content.png}
\caption{\label{fig:body.arch}本论文主要结构}
\end{figure}
% \clearpage
\subsection{论文结构}
全文共七章,主要结构如\cref{fig:body.arch}所示,各章内容如下:
第1章~绪论:介绍了本研究的背景与意义、所面临的关键问题、主要的研究内容与创新点、研究内容间的技术路线及全文结构。
第2章~国内外相关研究综述:介绍了时间序列预测问题的定义、机器学习预测建模技术至深度学习预测建模技术的演进与现状、随机映射方法的动机及随机映射深度学习预测建模技术的现状及不足。
第3章~基于卷积结构的SDNN预测模型构造与优化方法:提出误差反馈随机建模构造方法及贪心搜索参数优化方法,建立出一种高效且收敛的卷积结构SDNN预测模型,结合人工合成数据、流感阳率数据、原油价格数据和金融指数数据的预测问题进行实验验证。
第4章~基于循环结构的SDNN预测模型构造与优化方法:考量多种随机映射循环输出结构及提出基于粒子群优化的状态遮掩优化方法,建立出一种改进的循环结构SDNN预测模型,结合人工合成数据、电力负荷数据和室外温度数据的预测问题进行实验验证。
第5章~SDNN预测模型的二重特征结构选择方法:构造兼容卷积结构与循环结构深度神经网络的时间序列数据二维输入特征结构及提出基于树状帕尔森估计的二重特征结构选择方法,建立出基于改进特征选择的SDNN预测模型,结合人工合成数据、电力负荷数据和电力价格数据的预测问题进行实验验证。
第6章~SDNN预测模型的混合结构生长与优化方法:改进误差反馈生长策略及提出子网络参数的三阶段优化方法,建立出一种准确、收敛且稳健的混合结构SDNN预测模型,结合人工合成数据、空气污染数据和电力负荷数据的预测问题进行实验验证。
第7章~总结与展望:总结本研究的主要内容、不足之处及改进方向。
其中,第3章至第6章为本文的主要研究内容章节,其逻辑关系在于以下方面:
(1)第3章与第4章为并列关系,该两章主要研究内容是第5章与第6章研究内容的基础。具体地,本研究聚焦基于随机映射的时间序列深度学习预测建模技术,卷积结构和循环结构作为既有深度神经网络的代表结构,本文第3章与第4章分别针对深度神经网络基于随机映射方法在特定于卷积结构和循环结构实现下的构造与优化问题展开研究,解决了既有卷积结构实现方法的性能瓶颈,改进了既有循环结构实现方法的输入输出映射,提升了在卷积结构和循环结构这类特定深度神经网络结构实现上的SDNN预测模型准确性。
(2)基于输入特征选择视角,第5章是对第3、4章内容的改进。具体地,凝练第3章与第4章所述SDNN卷积结构和循环结构对时步多维度输入能力的支持共性,设计了兼容卷积结构和循环结构的SDNN预测模型二重特征结构选择方法,突破了既有SDNN预测模型特征选择方法在一维输入结构上的局限,提升了基于卷积结构和循环结构的一般深度神经网络结构下的SDNN预测模型准确性。
(3)基于整体参数优化视角,第6章是对第3、4章内容的改进。具体地,将第3章与第4章所述SDNN卷积结构和循环结构作为超参数控制下的子网络结构状态,提出自适应混合多种不同特定类型子网络的SDNN预测生长策略,建立对子网络在生长过程中超参数、编码过程权重参数和生成过程权重参数的整体参数优化方法,进一步提升了自适应选择卷积结构和循环结构等混合深度神经子网络结构下的SDNN预测模型准确性。
% 第六章 总结与展望:本章对全文的研究工作进行总结,指出本文研究的不足和未来的展望。
% % \section{课题来源}
% % 本课题来源于:
% % 国家自然科学基金面上项目:基于多输出支持向量回归的预测技术研究(立项时间:2016-01,项目编号:71571080)。
% % 国家自然科学基金面上项目:大数据环境下基于计算智能的预测建模技术及其在电力负荷预测中的应用(立项时间:2019-01,项目编号:71871101)。
% % 国家电网公司华中分部科技项目:华中区域共享型电力交易与服务平台关键技术研究(立项时间:2020-03,项目编号:52140019000U)。
================================================
FILE: body/chapter/overview.tex
================================================
\chapter[国内外相关研究综述]{国内外相关研究综述}
\section{时间序列预测研究综述}
预测建模问题是气象水文~\cite{mudelseeTrend2019},公共卫生~\cite{chimmulaTime2020},电力系统~\cite{qiuEmpirical2017}和金融市场~\cite{niuDeveloping2020}等众多领域进行管理决策时的重要问题。例如,在电力系统的运行中,电力管理部门与发电企业需要预知未来时间的区域电力负荷、火电燃煤价格、风能光伏出力等信息,从而调整电力生产与配送电计划、燃料购买与存取用计划以及电力价格定价策略等决策,以确保电网安全、稳定、经济和高效的运行~\cite{hu2015jiyu};用电企业则需要预知未来的电力价格,从而调整工业生产计划,以降低企业用能成本,维持电力交易市场的稳定\cite{hongEnergy2020}。
如果能够建立一种模型以精准描述现实现象发生的规律,如构造区域电力负荷变化规律的确定性函数,则能够正确推算出未来的状态。然而,在复杂且动态的现实背景下,管理应用领域所关注的现象往往是不确定的,比如,经济的发展、天气的变化、甚至席卷世界的COVID19疫情波动等因素都会使得电力供需发生改变\cite{heHybrid2019,liuPower2022,obstAdaptive2021}。因此,种种未知因素的存在使得难以建立完备的因果关系来给出现象发生的定律,从而不可能建立出一个确定性的模型来精确计算现象的未来表现\cite{boxTime2011}。
尽管如此,依然有可能基于对现实现象的历史观测推导出一个模型,用来计算一定提前期的未来状态。这种基于现实现象自身的历史状态建立未来状态预测模型的方法被称为时间序列预测方法。其中,时间序列是指根据时间发生的历史先后顺序得到的序列形式数据观测值。众多管理领域的核心关注数据都是以时间序列的形式存在,例如气象水文领域中的温度时间序列、公共卫生领域中的流感阳性样本率时间序列、电力系统领域中的电力负荷时间序列和金融市场领域中的股票指数时间序列,等等。这类数据的典型特征便是相邻的观测值之间存在着相互依赖性。时间序列预测正是通过对时间序列观测值之间相互依赖性的分析,发展出动态模型,进而对时间序列的未来状态进行预测。
因此,时间序列预测的本质是一个以历史时间序列输入为自变量,以未来时间序列目标为因变量的函数逼近过程。
如Hewamalage et al.~\cite{hewamalageRecurrent2021}所定义的,时间序列预测问题可以被表示为如何基于过去时刻的时间序列观测值来生成未来时刻时间序列观测值的问题,具体如下:
给定一个历史T步的时间序列向量$\bm{x} = (x_1, \ldots, x_T)$,\(\x \in \mathr^{T}\),以及未来提前H步的时间序列向量$\bm{y} = (x_{T+1},\ldots,x_{T+H})$, \(\y \in \mathr^{H}\),时间序列预测问题可被公式化定义为:
\begin{equation}
\mathcal{F} : f(\bm x) + \bm e = \bm y. \label{eq:sec.intro.def}
\end{equation}
\autoref{eq:sec.intro.def}中,$\mathcal{F}$是指时间序列预测模型所逼近的函数。\(f\)是指时间序列预测模型所学习出的预测函数,预测函数\(f\)基于历史$T$步内的时间序列观测值,生成提前$H$步的时间序列观测值\(\hat{\y} = f(\x)\)。$T$是历史的输入步长,$H$是未来的预测时长。\(\e\)表示模型的预测误差向量:\( \e = \y - \hat{\y} \),\(\e \in \mathr^{H}\)。
时间序列预测问题作为普遍存在于不同领域中的重要问题,成为了学术界与工业界长久以来的关注焦点,受到了诸多研究者和从业者的广泛重视。针对时间序列预测问题,已发展出了众多的时间序列预测建模技术。
传统的预测建模技术主要包括以自回归(Auto-regressive,AR)模型~\cite{boxTime2011}、移动平均(Moving average,MA)模型\cite{gershenfeldFuture1993}、自回归移动平均混合(Auto-regressive moving average,ARMA)模型\cite{chuForecasting2009}、整合移动平均自回归(Auto-regressive integrated moving average,ARIMA)模型\cite{floresEvolutive2012}和指数平滑(Exponential smoothing,ES)模型~\cite{gardnerjrExponential1985,gardnerExponential2006}等以统计学为基础的时间序列预测模型。这些模型通过构造历史观测值与相关因素的经验方程,对时间序列进行拟合和预测。例如,ARMA模型通过构造当前时刻滞后一定阶数的自回归项和误差累计项的线性组合,得到提前单步的预测值。
这些传统的预测建模方法通过分析特定领域的时间序列数据特征,建立出合适的预测函数,在一些时间序列预测问题中得到了成功应用。比如,Ediger et al.~\cite{edigerARIMA2007}应用ARIMA模型对土耳其2005年至2020年间的初级能源需求量进行了预测,并在结果中展示了ARIMA模型相对人工预测方法更高的准确度。
Chu\cite{chuForecasting2009}应用ARMA模型对亚太地区的游客数量进行了预测。
Christiaanse\cite{christiaanseShortTerm1971}针对短期电力负荷预测问题建立了一种基于ES的电力负荷预测模型。
然而,这些传统的统计预测方法往往将时间序列数据的输入输出映射视为预定义的函数,因此仅适用于某一特定类型的非平稳过程,而不能有效处理复杂非线性非平稳的时间序列预测问题\cite{boxTime2011}。
基于此,非线性预测的方法和技术成为时间序列预测建模研究中的热点。
其中,基于数据驱动的机器学习方法在时间序列建模预测领域备受关注。
\section{机器学习预测建模研究综述\label{sec:ch.intro.ml}}
对于时间序列预测问题,基于机器学习(Machine learning,ML)的预测建模技术一般是将该预测问题考虑为一种以历史T步的时间序列$\bm{x} = (x_1, \ldots, x_T)$为输入,以未来提前H步的时间序列$\bm{y} = (x_{T+1},\ldots,x_{T+H})$为输出的回归问题,进而构造监督机制下的回归模型予以求解。因此,对于基于机器学习的预测建模技术而言,其拟合过程可表示为:
\begin{equation}
f(\bm x) + \bm e = \bm y, \quad f \in \{\vartheta, \theta\}\label{eq:sec.intro.ml}.
\end{equation}
\autoref{eq:sec.intro.ml}中,\(\theta\)表示机器学习预测模型的权重参数集合,\(\vartheta\)表示定义机器学习预测模型与权重学习机制的超参数集合。这里的超参数一般指代模型中权重参数以外的参数。针对不同的模型,\(\vartheta\)具有不同的内涵。例如,支持向量机(Support vector machine, SVM)模型中的\(\vartheta\)包含了核函数(Kernel function)的类型与参数、求解输出权重时的惩罚因子、误差松弛系数等参数,神经网络(Neural Network,NN)模型的\(\vartheta\)则包含了隐藏层的层数、每个隐藏层内神经元的数量以及激活函数的类型、权重训练方法的类型及其参数,等等。
概括而言,\(\vartheta\)定义了机器学习预测模型的结构以及权重参数的训练机制,\(\theta\)表示机器学习模型从输入变换到输出间的权重参数集合。在\(\vartheta\)与\(\theta\)的联合定义下,基于机器学习建模技术的时间序列预测模型\(f\)得以确定,即\(f \in \{\vartheta, \theta\}\)。
自然地,如何选择合适的\(\vartheta\)与\(\theta\)从而建立一个精准的预测模型\(f\)以降低模型预测误差,便是时间序列机器学习预测建模技术研究所关注的核心问题。
围绕此问题,涌现了大量的模型构造方法研究与模型优化机制研究。其中,以SVM和NN为代表的机器学习模型及其优化技术在时间序列建模问题中得到了广泛研究与应用。
在此,为更好介绍基于数据驱动的时间序列机器学习预测建模技术研究,以一组给定包含\(N\)个样本的时间序列数据\(\mathbb{D} = \left\{\left(\x_{n}, \y_{n}\right) \in\left(\mathbb{R}^{T} \times \mathbb{R}^{H}\right)\right\}_{n=1}^{N}\)为例,对基于SVM与NN的预测建模技术与应用展开概述。\(\left(\x_{n}, \y_{n}\right) \)表示第\(n\)个时间序列数据输入与输出的样本对。
\begin{figure}[t!]
\centering
\includegraphics[width=0.8\textwidth]{float/ch.intro/svm.png}
\caption{支持向量机结构示例\label{fig:ch.intro.svm}}
% \setlength{\belowcaptionskip}{-10pt}
\end{figure}
\subsection{基于SVM的预测建模方法}
SVM是Vpanik~\cite{vapnikNature2013}基于统计学习理论所提出的一种机器学习方法,通过使用结构风险最小化原则代替传统的经验风险最小化原则,使其能较好解决有限样本的学习问题与过拟合问题。针对非线性不平稳的时间序列建模问题,如\autoref{fig:ch.intro.svm}所示,SVM预测模型通过引入核函数对非线性非平稳的时间序列输入特征\(\x\)进行核化,从而建立时间序列输入特征的高维特征空间表达\(\h_{svm}\),在求解输出权重时采用结合$L_2$正则化的合页损失(Hinge loss)实现结构风险最小原则,以此实现建模预测:
% \vspace{-4pt}
\begin{align}
f_{svm}(\x) &= \w_{out}\h_{svm}, \label{eq:ch.intro.svmA} \\
\h_{svm} &= \phi (\x) \label{eq:ch.intro.svmC}.
\end{align}
\autoref{eq:ch.intro.svmA}中\(\w_{out}\)表示SVM预测模型的输出权重,\(\h_{svm}\)是SVM基于\autoref{eq:ch.intro.svmC}中核函数\(\phi(\cdot)\)所建立的特征空间状态表示。在经过以\(\mathd\)为训练集的核化后,\(\{\phi(\x_n)\}_{n=1}^N\)是一个维度为\(\mathr^{N\times N}\)的半正定(Positive semidefinite)矩阵,即有,\(\w_{out} \in \mathr^{H\times N}\)。
{\setlength{\abovedisplayskip}{12pt plus 3pt}
\setlength{\belowdisplayskip}{12pt plus 3pt}
\begin{equation}
\w_{out} = \argmin_{\w_{out} }\left(\frac{\vartheta_{c}}{N}\sum^{N}_{n=1}\max(0, \left\lvert \y_n - f_{svm}(\x_n)\right\rvert - \vartheta_{e}) + \frac{1}{2}\left\lVert \w_{out} \right\rVert^2\right) .\label{eq:ch.intro.svmB}
\end{equation}
}
\autoref{eq:ch.intro.svmB}具体展示了SVM预测模型中\(\w_{out}\)通过$L_2$正则的合页损失予以求解的过程。\(\vartheta_{c}\)是指SVM的惩罚因子,用以调节合页损失与正则强度的平衡。\(\vartheta_{e}\)是指SVM的误差松弛系数,用以控制支持向量机的支持向量边界距离,从而增强SVM模型的鲁棒性。
显而易见,SVM预测模型中\(\w_{out}\)的求解问题是以约束条件为线性不等式组,目标函数为凸函数的问题。该问题是一个易于求解的典型二次规划问题。此外,对于时间序列数据\(\mathd\),一般\(N\)远大于\(T\)与\(H\)。由此,对于\(\{\x_n\}_{n=1}^N\)张成维度为\(N \times T\)的低维空间\(\mathbb{X} = \{\x_n\}_{n=1}^N \in \mathr^{N \times T}\)向由\(\{\y_n\}_{n=1}^N\)张成维度为\(N \times H\)的目标空间\(\mathbb{Y} = \{\y_n\}_{n=1}^N \in \mathr^{N \times H}\)的复杂非线性映射\(\mathcal{F}\)求解问题,SVM预测模型通过非线性核函数将其转变为高维特征空间\(\mathbb{H} := \{\phi(\x_n)\}_{n=1}^N \in \mathr^{N \times N}\)向低维空间\(\mathbb{Y}\)做线性映射的简单问题,同时利用\autoref{eq:ch.intro.svmB}中所展示的平衡性,具备了良好的预测性能。
因此,SVM预测模型具有高效、鲁棒、直接与参数易调整等特点,在时间序列预测建模研究中取得了广泛的关注和发展。例如,Fu et al.~\cite{fuEvolutionary2019}提出了一种基于SVM的人民币汇率预测模型;Hu et al.~\cite{huHybrid2015}针对短期电力负荷预测问题提出了一种基于SVM和混合特征提取策略的电力负荷预测模型;Tang et al.~\cite{tangNew2019}基于加权SVM提出了一种股票市场拐点预测模型;Xiong et al.~\cite{xiongCombination2015}将SVM模型与误差修正模型进行结合,提出了一种农产品价格预测模型。针对传统支持向量机的单步输出特点,面向时间序列的多步预测建模问题,Bao et al.~\cite{baoMultistepahead2014}基于传统的SVM模型提出了面向多步预测的多输出支持向量回归(Multiple-ouput support vector regression, MSVR)模型,并实验比较了传统单输出SVM模型与MSVR模型在不同多步预测策略(如迭代预测策略、直接预测策略和多输入多输出预测策略)下的性能表现。
针对时间序列预测建模任务下SVM的参数选择与模型选择问题,基于SVM收敛快,参数调整成本低等特点,Bao and Liu~\cite{baoFast2006}针对时间序列预测问题提出了一种基于快速网格搜索算法的SVM模型选择算法。在此基础上,Bao et al.~\cite{baoPSO2013}提出了基于粒子群优化(Particle swarm optimization,PSO)与模式搜索(Pattern search,PS)相结合的文化基因进化算法(Memetic algorithm,MA),并将其应用在SVM模型选择优化中。Hu et al.~\cite{huShortterm2016}利用PSO搜索SVM参数提出了一种基于PSO-SVM的预测模型。Hu et al.~\cite{huElectricity2013}提出了基于萤火虫算法(Firefly algorithm,FA)与PS算法相结合的MA算法,以此解决SVM电力负荷预测模型的模型选择问题。
\subsection{基于NN的预测建模方法\label{sec:ch.intro.nn}}
相较于SVM预测模型采用核函数方法进行非线性变换,且其输出权重具有闭式解的特点,基于神经网络的预测模型使用从输入层(Input layer)到隐藏层(Hidden layer)的非线性映射,对输入的非线性时间序列特征进行非线性变换,再由输出层(Output layer)对隐藏层表征的特征空间做线性组合进行预测输出。同时,基于神经网络的预测模型一般通过以均方误差(Mean square error,MSE)为损失函数(Loss function)的反向传播(Back propagation,BP)方式,通过梯度下降算法训练和优化神经网络各连接层(如输入层到隐藏层,隐藏层到隐藏层,隐藏层到输出层)的权重参数\(\theta\),从而实现预测建模~\cite{zhangSimulation2001}。
基于神经网络自身的结构特性,神经网络预测模型通过不同的神经网络隐藏结构构造方式以及网络权重参数训练方式衍生发展出了众多的变体。其中,多层感知机(Multilayer perceptron,MLP)作为一种以直接前馈(Feedforward)多层结构且层间均以全连接方式构造的神经网络,成为了机器学习方法下神经网络预测模型的代表结构。\autoref{fig:ch.intro.mlp}展示了一种经典的单隐藏层结构MLP模型。
\begin{figure}[t!]
\centering
\includegraphics[width=0.8\textwidth]{float/ch.intro/mlp.png}
\caption{多层感知机结构示例\label{fig:ch.intro.mlp}}
\end{figure}
以\autoref{fig:ch.intro.mlp}所示结构为例,其预测建模过程为:
\begin{align}
f_{mlp}(\x) &= \w_{out}\h_{mlp}, \label{eq:ch.intro.mlpA} \\
\h_{mlp} &= \sigma (\w_{hid}\x). \label{eq:ch.intro.mlpB}
\end{align}
\autoref{eq:ch.intro.mlpA}中\(\w_{out}\)同样表示模型的输出权重,\(\h_{mlp}\)是MLP通过\autoref{eq:ch.intro.mlpB}中激活函数\(\sigma(\cdot)\)对输入特征\(\x\)做非线性变换得到的隐藏层中隐藏状态状态表示。设该MLP模型中隐藏层神经元数量为\(K\),一般\(K\)大于 \(T\),远大于\(H\)。在经过训练集\(\mathd\)上的非线性变换后,使得低维输入空间\(\mathbb{X} = \{\x_n\}_{n=1}^N \in \mathr^{N \times T}\)至目标空间\(\mathbb{Y} = \{\y_n\}_{n=1}^N \in \mathr^{N \times H}\)的复杂非线性映射\(\mathcal{F}\)求解问题,通过隐藏层的非线性变换转变为高维特征空间\(\mathbb{H} := \{\sigma (\w_{hid}\x_n)\}_{n=1}^N \in \mathr^{N \times K}\)向低维空间\(\mathbb{Y}\)线性映射的简单问题。
通过对比\autoref{fig:ch.intro.mlp}与\autoref{fig:ch.intro.svm},以及对比\autoref{eq:ch.intro.mlpA}与\autoref{eq:ch.intro.svmA},可见MLP模型与SVM模型处理时间序列预测这一复杂问题的思路是一致。区别在于,SVM模型低维输入空间向高维特征空间变换是基于其\(\vartheta\)所定义的核函数,\autoref{eq:ch.intro.svmB}中输出权重的求解是闭式的;而MLP模型的特征空间变换是基于其\(\vartheta\)所定义的隐藏层结构与\(\theta\)所包含的隐藏层权重,且权重参数\(\theta:=\{\w_{out},\w_{hid}\}\)的优化问题是非凸的。
事实上,以MLP为代表,神经网络模型权重参数\(\theta\)的优化问题是普遍非凸的,且随着神经网络模型隐藏结构复杂程度的加深,例如隐藏层数的增加,而更加难以求解。针对此问题,基于反向传播(Back propagation,BP)的梯度下降(Gradient descent,GD)方法是一种有效且通行的方案。也因此,常有学者将基于梯度下降训练的神经网络模型称为反向传播神经网络(Back propagation neural network,BPNN)模型\cite{wangBack2015,wongTime1991,wangForecasting2011,dongSmall2018}。
其中,反向传播是指梯度下降训练方法中计算各层权重参数梯度时所使用的链式法则梯度传导过程。具体地,\(\theta\)的优化问题可以被视为以权重参数为自变量,以损失函数值为因变量,寻找合适的权重参数以找寻最小损失函数值的问题。设,\(\w\)表示权重参数集合\(\theta\)中的某一权重项,例如\autoref{eq:ch.intro.mlpA}中的输出层权重\(\w_{out}\)或\autoref{eq:ch.intro.mlpB}中的隐藏层权重\(\w_{hid}\),神经网络模型的损失函数为\(\ell(\w)\)。在经过以\(\mathd\)为训练集的神经网络预测模型表征后,一般有:
\begin{align}
\ell(\w) &= \frac{1}{N \times H} \sum^N_{n=1} \|\e_{n}\| ,\label{eq:ch.intro.mse}\\
\e_{n} & = \y_n - f(\x_n) \label{eq:ch.intro.en}.
\end{align}
\autoref{eq:ch.intro.mse}展示了神经网络预测模型在训练集\(\mathd\)上的MSE损失,其中,如\autoref{eq:ch.intro.en}所示,\(\e_n\)表示模型在训练集\(\mathd\)中第\(n\)个样本对上的预测误差向量,\(\norm{\e_n}\)是预测误差向量\(\e_n\)的$L_2$范数。
梯度下降方法的核心思想在于,基于神经网络中激活函数的连续性与可微性,通过向\(\w\)添加一个很小的动量\(\Delta_{\w}\),即\(\norm{\Delta_{\w}}\)很小,等价于\(\w + \Delta_{\w}\)近似\(\w\),利用泰勒近似将复杂非凸的\(\ell(\w)\)函数优化问题当作一个简单的函数极小值求解问题。其中,\(\ell({\w + \Delta_{\w}})\)可用一阶泰勒展开予以近似:
\begin{equation}
\ell({\w + \Delta_{\w}} ) \approx \ell({\w}) + \nabla_{\w}^\trans \Delta_{\w}. \label{eq:ch.intro.gd}
\end{equation}
\autoref{eq:ch.intro.gd}中,\(\nabla_{\w}\)表示\(\w\)在误差函数\(\ell\)中的梯度。此时,梯度下降方法的目标便是找寻合适的动量\(\Delta_{\w}\)使得\autoref{eq:ch.intro.gd}中损失函数\(\ell\)最小。在最陡下降中,定义学习速率(Learning rate)为\(\eta \),且\(\eta > 0\),令:
\(\Delta_{\w} = -\eta \nabla_{\w}\)。
则有如\autoref{eq:ch.intro.eta}所示不等式性质:
\begin{equation}
\ell({\w}) > 0 \quad \text{且} \quad \eta \nabla_{\w}^\trans \nabla_{\w} > 0. \label{eq:ch.intro.eta}
\end{equation}
当\(\eta \)足够小时,\autoref{eq:ch.intro.gd}的条件得到满足,即可直接证明出如\autoref{eq:ch.intro.lr}所示收敛性质:
\begin{equation}
\ell({\w -\eta \nabla_{\w}} ) \approx \ell({\w}) -\eta \nabla_{\w}^\trans \nabla_{\w} < \ell({\w}). \label{eq:ch.intro.lr}
\end{equation}
\begin{algorithm}[t!]
\caption{神经网络模型梯度下降方法训练过程}
\renewcommand{\algorithmcfname}{算法}
\renewcommand{\algorithmicrequire}{\textbf{输入:}}
\renewcommand{\algorithmicensure}{\textbf{输出:}}
\label{alg:ch.intro.gd}
\begin{algorithmic}[1]
\REQUIRE {数据集\(\mathd= \left\{\left(\x_{n}, \y_{n}\right) \in\left(\mathbb{R}^{T} \times \mathbb{R}^{H}\right)\right\}_{n=1}^{N}\),神经网络模型超参数集合\(\vartheta\)
}
\REQUIRE {
基于设定的神经网络模型超参数集合\(\vartheta\),初始化如下参数:\\
梯度下降方法的当前迭代次数\(i\leftarrow 0\)\\
当前迭代次数下神经网络权重参数集合\(\theta^i\)\\
与模型训练相关的其他参数
}
\ENSURE{神经网络模型权重参数集合\(\theta\),神经网络模型超参数集合\(\vartheta\),确定神经网络模型\(f \in \{\vartheta, \theta\}\)
}
\WHILE{未满足\(\vartheta\)界定的收敛条件}
\STATE \(i\leftarrow i+1\)
\STATE 基于\(\theta^i\),确定模型\(f \leftarrow f \in \{\vartheta, \theta^i\}\)
\STATE 基于数据集\(\mathd\)和模型\(f\),完成前馈过程\(f(\x)\),计算模型损失函数值\(\ell({\w}) \)
\FOR{\(\w\) in \(\theta^i\) }
\STATE 选取计算梯度所需的样本
\STATE 根据反向传播链式法则计算梯度信息\(\nabla_{\w}\)
\STATE 根据梯度下降更新公式更新权重参数\(\w\)
\ENDFOR
\ENDWHILE
\RETURN {
已完成更新过程的权重参数集合\(\theta \leftarrow \theta^i\)
}
\end{algorithmic}
\medskip
\end{algorithm}
同时,借助从输出层向输入层的反向传播过程,通过链式法则可以依次计算出输出端至输入端所有权重参数的局部梯度,
从而完成模型权重参数集合\(\theta\)内所有权重参数的单次更新。完整的神经网络预测模型训练过程如算法\ref{alg:ch.intro.gd}所示。
显然,梯度下降方法的性能与效率直接决定了基于梯度下降方法训练权重参数的神经网络模型性能与建模效率~\cite{liuImproved2020}。因此,神经网络梯度下降方法的改良问题成为了神经网络建模技术研究中的重要问题。围绕此问题,已发展出了众多梯度下降改进方法。
例如,基于牛顿法的梯度下降方法~\cite{bennettNewton1916}将凸优化中的牛顿法(Newton method)引入非凸的神经网络权重参数优化问题中,通过将\autoref{eq:ch.intro.gd}中的一阶泰勒近似调整为二阶泰勒近似,加速了神经网络模型的收敛速度\cite{nesterovMethod1983a,nesterovCubic2006}。
随机梯度下降(Stochastic gradient descent,SGD)方法~\cite{bottouStochastic2012}则通过将\autoref{eq:ch.intro.mse}中基于完整训练集的损失函数计算方式修改为基于随机选取的单个样本来计算损失函数值,从而大大降低了梯度下降方法的计算复杂度。
为抑制SGD方法随机选取样本所带来的梯度震荡,Sutskever et al.~\cite{sutskeverImportance2013}引入了动量(Momentum)的概念,通过向\autoref{eq:ch.intro.gd}中的梯度向量添加动量,使得模型权重参数向相关方向加速变换,从而实现加速收敛。
针对\autoref{eq:ch.intro.lr}中学习速率的选择问题,Duchi et al.~\cite{duchiAdaptive2011}提出了自适应梯度法(Adaptive gradient algorithm,AdaGrad),通过对较为密集的特征设置较小的学习速率,对较为稀疏的特征设置较大的学习速率,从而实现了针对特征的学习速率自适应设置。
% \raggedbottom
概括而言,尽管这些梯度下降方法的细节各有不同,但基于梯度下降方法的神经网络模型总体遵循算法\ref{alg:ch.intro.gd}中所示的输入、输出与执行步骤完成模型的参数优化。由此,通过梯度下降方法的权重参数训练,机器学习方法下的神经网络预测模型具备了良好的预测性能。
其中,前文所举例的MLP预测模型凭借其神经网络结构相对简单,权重参数较易训练,可通过构造具有多个神经元的输入层与输出层自然实现多输入多输出(Multiple-input Multiple-output,MIMO)策略等特点,被广泛应用于时间序列预测建模任务,尤其是提前多步预测的预测建模任务中。例如,Hamzaçebi et al.~\cite{hamzacebiComparison2009}比较了MLP在多步时间序列预测任务中采用直接策略与迭代策略的性能差异。相对于以往采用单一MLP进行多步预测的方法,Adeodato and Monteiro~\cite{adeodatoMLP2011}提出了一种基于集成思想的多步预测方法,通过集成多个MLP进行多步时间序列预测,从而提升了预测精度。
Flores et al.~\cite{floresEvolutive2012}通过遗传算法(Genetic algorithm,GA)对MLP中的隐藏层单元数、激活函数的种类进行优化,提出了一种基于GA-MLP的预测方法。
Bao et al.~\cite{baoPSOMISMO2014}针对时间序列的多步预测问题,以MLP作为预测模型,提出了一种基于PSO的多输入子多输出时间序列预测建模策略,更进一步地提升了多层感知机在时间序列多步预测上的性能。针对流感预测问题,Yang and Bao~\cite{yangComprehensive2021}通过实验表明了在多输入多输出策略、直接策略和迭代策略以及MLP预测模型和MSVR模型的策略与模型两两组合中,基于MIMO策略的MLP模型和MSVR模型具备更高的预测精度。
% \clearpage
\section{深度学习预测建模研究综述}
\subsection{深度学习建模方法}
近年来,得益于海量数据的积累、计算设备浮点运算能力的大幅提升、梯度下降方法的改进、以及通用神经网络建模框架(如Google推出的Tensorflow~\cite{abadiTensorflow2016},Meta\footnote{曾用名Facebook。Facebook于2021年10月改名为Meta。}推出的Pytorch~\cite{paszkePytorch2019}和Microsoft推出的CNTK~\cite{seideCNTK2016}等)的出现与推广,以卷积神经网络(Convolution Neural Network,CNN)~\cite{li2016juanji}和循环神经网络(Recurrent Neural Network,RNN)~\cite{yang2018xunhuan}为代表结构的深度学习(Deep learning,DL)建模技术受到了学术界和工业界的广泛关注和研究。
深度学习建模技术是机器学习建模技术中一类基于深度神经网络(Deep neural network,DNN)的建模技术\cite{lecunDeep2015}。其中,DNN是对基于不同深度神经结构所构建的神经网络的统称。例如,基于卷积结构的CNN和基于循环结构的RNN均属于DNN,其是DNN在不同特定结构上的具体实现。
深度学习建模技术与传统机器学习建模技术之间的区别在于,针对一些复杂场景的建模问题,例如计算机视觉(Computer vision,CV)中的图像分类问题\cite{dengImageNet2009}和自然语言处理(Natural language processing,NLP)中的文本分类问题\cite{maasLearning2011},传统的机器学习建模技术受限于简单的模型结构,在原始输入特征的基础上难以直接取得较好的分类结果,因此往往需要人工经验建立特定的特征提取方法,如基于图像像素数值高斯分布(Gaussian distribution)描述图像特征的Fisher Vector方法\cite{sanchezHighdimensional2011,sanchezImage2013,perronninLargescale2010}和基于语言文档内词频信息描述语句特征的词频-逆文档(Term frequency - inverse document frequency,TF-IDF)方法\cite{aizawaInformationtheoretic2003,jonesStatistical1972,luhnStatistical1957},从原始数据输入特征中提取出新的特征以提升机器学习模型处理这些问题的能力。而深度学习建模技术则直接将原始数据特征作为输入,依靠DNN的神经网络结构,如CNN中的卷积结构和RNN中
gitextract_qebl3297/
├── .gitignore
├── .vscode/
│ └── settings.json
├── HUSTThesis.bst
├── HUSTthesis.cls
├── HUSTtils.sty
├── README.md
├── _ThesisBeamer/
│ ├── .vscode/
│ │ └── settings.json
│ ├── beamerthemeBFH.sty
│ ├── body/
│ │ ├── cnn.tex
│ │ ├── code.tex
│ │ ├── intro.tex
│ │ ├── last.tex
│ │ └── related.tex
│ ├── float/
│ │ └── ch.cnn/
│ │ ├── data.tex
│ │ ├── mape.tex
│ │ └── time.tex
│ └── slide.tex
├── body/
│ ├── appendix/
│ │ └── app.tex
│ ├── chapter/
│ │ ├── ack.tex
│ │ ├── cnn.tex
│ │ ├── intro.tex
│ │ ├── overview.tex
│ │ └── univ.tex
│ └── cover.tex
├── float/
│ ├── ch.cnn/
│ │ ├── data.tex
│ │ ├── mape.tex
│ │ ├── rmse.tex
│ │ ├── smape.tex
│ │ ├── std.tex
│ │ └── time.tex
│ └── ch.univ/
│ ├── loader.tex
│ ├── method.tex
│ ├── model.tex
│ ├── tune.tex
│ └── wrapper.tex
├── main.tex
└── ref/
├── finddupls.pl
├── sorted_titles.txt
└── thesis.bib
Condensed preview — 39 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (501K chars).
[
{
"path": ".gitignore",
"chars": 4028,
"preview": "# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig\n\n# Created by https://www."
},
{
"path": ".vscode/settings.json",
"chars": 1625,
"preview": "{\n \"latex-workshop.latex.autoBuild.run\": \"onSave\",\n \"latex-workshop.latex.recipe.default\": \"lastUsed\",\n \"latex-"
},
{
"path": "HUSTThesis.bst",
"chars": 21586,
"preview": "%%\n%% HUSTThesis.bst\n%% BibTeX Bibliography Style file for HUST Thesis (unsorted)\n%% Version 1.0 (2006/06/14)\n%% \n%% Cop"
},
{
"path": "HUSTthesis.cls",
"chars": 46203,
"preview": "%%\n%% HUSTThesis.cls 2022/03/28 version V3.2\n%%\n%% This is the unofficial LaTeX class for Master Thesis Template of\n%% H"
},
{
"path": "HUSTtils.sty",
"chars": 2496,
"preview": "\\ProvidesPackage{HUSTtils}[2024/01/23 3.0.1x any packages you would\nlike to use]\n\n\n\n%%%%% Setting for python env.\n\\usepa"
},
{
"path": "README.md",
"chars": 5223,
"preview": "# HUST-PhD-Thesis-Latex\n\nHUSTThesis.cls 2025/07/24 version V3.1.4x; _ThesisBeamer/beamerthemeBFH.sty 2024/01/31 version "
},
{
"path": "_ThesisBeamer/.vscode/settings.json",
"chars": 1384,
"preview": "{\n \"latex-workshop.latex.autoBuild.run\": \"onSave\",\n \"latex-workshop.latex.recipe.default\": \"lastUsed\",\n \"latex-"
},
{
"path": "_ThesisBeamer/beamerthemeBFH.sty",
"chars": 12079,
"preview": "\\mode<presentation>\n\n\\RequirePackage{caption}\n\\RequirePackage{subcaption}\n\n\\RequirePackage{hyperref}\n\\captionsetup{figur"
},
{
"path": "_ThesisBeamer/body/cnn.tex",
"chars": 11448,
"preview": "\\section{cnn}\n\\begin{frame}{Conv-SDNN预测模型——引言}\n 基于卷积结构的SDNN预测模型:随机映射CNN模型\n \\begin{itemize}\n \\item 随机映射CNN在图"
},
{
"path": "_ThesisBeamer/body/code.tex",
"chars": 1346,
"preview": "\\section{code}\n\n\\begin{frame}\n \\frametitle{预测建模框架——OpenForecasting}\n\n\n \\begin{figure}\n \\begin{minipage}[t]{"
},
{
"path": "_ThesisBeamer/body/intro.tex",
"chars": 1015,
"preview": "\\section{intro}\n\n\\begin{frame}\n \\frametitle{绪论 — 研究背景}\n\n \\textbf{基于随机映射的时间序列深度学习预测建模技术研究}\n\n \\vspace*{1em}\n \\"
},
{
"path": "_ThesisBeamer/body/last.tex",
"chars": 2388,
"preview": "\\section{last}\n\n\\begin{frame}\n \\frametitle{总结与展望}\n % 主要工作:\n\n % \\begin{itemize}\n % \\item 特定结构构造与优化方法研究\n "
},
{
"path": "_ThesisBeamer/body/related.tex",
"chars": 13289,
"preview": "\\section{overview}\n\n\\begin{frame}\n \\frametitle{时间序列预测定义}\n 尽管有诸多因素干扰,依然有可能基于对现实现象的历史观测推导出一个模型,用来计算一定提前期的未来值。\n 时间"
},
{
"path": "_ThesisBeamer/float/ch.cnn/data.tex",
"chars": 1396,
"preview": "\\begin{table}[!t]\n \\centering\n \\caption*{数据集信息}\n \\vspace{-1em}\n \\begin{tabularx}{\\textwidth}{lccccY}\n \\to"
},
{
"path": "_ThesisBeamer/float/ch.cnn/mape.tex",
"chars": 3945,
"preview": "\\begin{table}[h]\n \\centering\n \\footnotesize\n \\caption*{ESM-CNN及对照组模型的MAPE结果对比}\n \\resizebox{\\textwidth}{!}{\n "
},
{
"path": "_ThesisBeamer/float/ch.cnn/time.tex",
"chars": 3359,
"preview": "\\begin{table}[h]\n \\centering\n \\footnotesize\n \\caption*{神经网络模型在AR1、BTC和ILI数据集上的单次平均建模时间(s) }\n \\resizebox{\\tex"
},
{
"path": "_ThesisBeamer/slide.tex",
"chars": 3732,
"preview": "% \\documentclass[aspectratio=169,draft]{beamer}\n\\documentclass[aspectratio=169]{beamer}\n\n\\usepackage{pifont}\n\\newcommand"
},
{
"path": "body/appendix/app.tex",
"chars": 4456,
"preview": "\n\\begin{decision}\n一般情况下,答辩委员会决议的内容不宜过少,亦不宜超过一页。不同学院对此页的要求(是否需要包含此页在最终存档模板内,是否需要单独提交,包含在模板内的改页是否需要答辩主席签字等)可能有所不同,具体内容请参照学"
},
{
"path": "body/chapter/ack.tex",
"chars": 196,
"preview": "%%% Local Variables:\r\n%%% mode: latex\r\n%%% TeX-master: \"../../main\"\r\n%%% End:\r\n\r\n\\begin{ack}\r\n\r\n在博士研究生经历中,有过许多挑战和成长。回想一路"
},
{
"path": "body/chapter/cnn.tex",
"chars": 27574,
"preview": "% \\chapter[误差反馈随机映射卷积神经网络预测模型构造方法]{误差反馈随机映射卷积神经网络预测模型构造方法\n% \\footnote[11]{本章主要内容已发表在:Zhang, Xinze, Kun He, and Yukun Bao"
},
{
"path": "body/chapter/intro.tex",
"chars": 13214,
"preview": "%%% mode: latex\n%%% TeX-master: t\n%%% End:\n\n\\chapter{绪论}\n\\section{研究背景与意义}\n预测问题是经济生活、工业生产、公共卫生和能源系统等众多应用领域的重要问题。若能基于观测的现"
},
{
"path": "body/chapter/overview.tex",
"chars": 34761,
"preview": "\\chapter[国内外相关研究综述]{国内外相关研究综述}\n\n\\section{时间序列预测研究综述}\n预测建模问题是气象水文~\\cite{mudelseeTrend2019},公共卫生~\\cite{chimmulaTime2020},电"
},
{
"path": "body/chapter/univ.tex",
"chars": 10809,
"preview": "\\chapter{时间序列预测建模框架\n% \\footnote[11]{\n% 本章成果已开源在:https://github.com/Analytics-for-Forecasting/OpenForecasting.\n% }\n\\l"
},
{
"path": "body/cover.tex",
"chars": 9142,
"preview": "\r\n%%% Local Variables:\r\n%%% mode: latex\r\n%%% TeX-master: t\r\n%%% End:\r\n\r\n\\ctitle{基于随机映射的时间序列深度学习预测建模技术}\r\n\r\n\\xuehao{D20188"
},
{
"path": "float/ch.cnn/data.tex",
"chars": 1443,
"preview": "\\begin{table}[!t]\n \\centering\n \\caption{数据集信息 \\label{tab:app_data}}\n \\begin{tabularx}{\\textwidth}{lccccY}\n %"
},
{
"path": "float/ch.cnn/mape.tex",
"chars": 4755,
"preview": "\\begin{table}[!t]\n\\centering\n\\footnotesize\n\\caption{ESM-CNN及对照组模型在原油价格与股票指数数据集上的MAPE结果 \\label{tab:app_mape}}\n\\resizebox{"
},
{
"path": "float/ch.cnn/rmse.tex",
"chars": 4975,
"preview": "\\begin{table*}[!t]\n\\centering\n\\footnotesize\n\\caption{ESM-CNN及对照组模型在原油价格与股票指数数据集上的RMSE结果 \\label{tab:app_rmse}}\n\\resizebox"
},
{
"path": "float/ch.cnn/smape.tex",
"chars": 4972,
"preview": "\\begin{table*}[!t]\n\\centering\n\\footnotesize\n\\caption{ESM-CNN及对照组模型在原油价格与股票指数数据集上的SMAPE结果 \\label{tab:app_smape}}\n\\resizeb"
},
{
"path": "float/ch.cnn/std.tex",
"chars": 12147,
"preview": "\\begin{table}[!t]\n \\centering\n \\footnotesize\n \\caption{ESM-CNN及对照组模型在AR1、BTC和ILI数据集上的MAPE结果 \\label{tab:app_mape"
},
{
"path": "float/ch.cnn/time.tex",
"chars": 3377,
"preview": "\\begin{table*}[!t]\n \\centering\n \\footnotesize\n \\caption{神经网络模型在AR1、BTC和ILI数据集上的单次平均建模时间(s) \\label{tab:time}}\n "
},
{
"path": "float/ch.univ/loader.tex",
"chars": 1856,
"preview": "\n\\begin{figure}[t!]\n \\begin{python}\n class TaskDataset(Opt):\n def __init__(self, args):\n "
},
{
"path": "float/ch.univ/method.tex",
"chars": 4351,
"preview": "\\begin{table}[t!]\n \\centering\n \\footnotesize\n \\caption{“OpenForecasting”框架提供的预测模型\\label{tab:ch.univ.methods}}\n "
},
{
"path": "float/ch.univ/model.tex",
"chars": 7710,
"preview": "\n\n\\begin{figure}\n \\begin{python}\n import torch\n import torch.nn as nn\n \n class ESNCell(nn.Module):\n "
},
{
"path": "float/ch.univ/tune.tex",
"chars": 1837,
"preview": "\\begin{figure}[t!]\n \\begin{python}\nimport ray,importlib\nfrom ray import tune\nfrom ray.air import session\nfrom ray.tun"
},
{
"path": "float/ch.univ/wrapper.tex",
"chars": 4049,
"preview": "\n% \\begin{figure}\n% % \\centering\n% \\begin{minipage}[t]{0.45\\textwidth}\n% \\raggedleft\n% \\begin{su"
},
{
"path": "main.tex",
"chars": 3641,
"preview": "%% Local Variables:\r\n%%% mode: latex\r\n%%% TeX-master: t\r\n%%% End:\r\n\r\n% 通过使用draftformat或finalformat来控制是否有页眉,通过使用blackred或"
},
{
"path": "ref/finddupls.pl",
"chars": 777,
"preview": "#!perl\nmy %seen = ();\n\nmy $line = 0;\nopen my $B, 'thesis.bib';\nwhile (<$B>) {\n $line++;\n # remove all non-alphanum"
},
{
"path": "ref/sorted_titles.txt",
"chars": 13865,
"preview": "a cnntextendashlstm model for gold price time-series forecasting\na combination method for interval forecasting of agricu"
},
{
"path": "ref/thesis.bib",
"chars": 58355,
"preview": "@phdthesis{lv2019jiyu,\n title={基于集成回声状态网络的时间序列预测问题研究},\n author={吕盛祥},\n year={2019},\n school={华中科技大学},\n langid={chin"
}
]
About this extraction
This page contains the full source code of the XinzeZhang/HUST-PhD-Thesis-Latex GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 39 files (356.3 KB), approximately 148.5k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.