Main Content

narxnet

외부 입력값이 있는 비선형 자기회귀 신경망

설명

예제

narxnet(inputDelays,feedbackDelays,hiddenSizes,feedbackMode,trainFcn)은 다음과 같은 인수를 받습니다.

  • 증가하는 0 또는 양의 입력 지연으로 구성된 행 벡터 inputDelays

  • 증가하는 0 또는 양의 피드백 지연으로 구성된 행 벡터 feedbackDelays

  • 하나 이상의 은닉 계층 크기로 구성된 행 벡터 hiddenSizes

  • 피드백 유형 feedbackMode

  • 역전파 훈련 함수 trainFcn

그런 다음 NARX 신경망을 반환합니다.

NARX(Nonlinear AutoRegressive with eXternal input) 신경망은 한 시계열의 이전 값, 피드백 입력값, 그리고 외부(또는 외생) 시계열이라 불리는 두 번째 시계열을 사용하여 원래 시계열을 예측하도록 학습할 수 있습니다.

예제

모두 축소

NARX(Nonlinear AutoRegressive with eXternal input) 신경망을 훈련시키고 새 시계열 데이터에 대해 예측을 수행합니다. 시계열의 값 시퀀스를 예측하는 것을 다중 스텝 예측이라고도 합니다. 폐루프 신경망은 다중 스텝 예측을 수행할 수 있습니다. 폐루프 신경망은 외부 피드백이 없을 때 내부 피드백을 사용하여 계속해서 예측을 수행할 수 있습니다. NARX 예측에서 미래의 시계열 값은 그 시계열의 과거 값과 피드백 입력값 및 외부 시계열을 사용해 예측됩니다.

간단한 시계열 예측 데이터를 불러옵니다.

[X,T] = simpleseries_dataset;

데이터를 훈련 데이터 XTrainTTrain 및 예측 데이터 XPredict로 분할합니다. 폐루프 신경망을 만든 후 XPredict를 사용하여 예측을 수행합니다.

XTrain = X(1:80);
TTrain = T(1:80);
XPredict = X(81:100);

NARX 신경망을 만듭니다. 입력 지연, 피드백 지연 및 은닉 계층의 크기를 정의합니다.

net = narxnet(1:2,1:2,10);

preparets를 사용하여 시계열 데이터를 준비합니다. 이 함수는 입력 시계열 및 목표 시계열을 필요한 스텝 개수만큼 자동으로 이동하여 초기 입력 및 계층 지연 상태를 채웁니다.

[Xs,Xi,Ai,Ts] = preparets(net,XTrain,{},TTrain);

개루프에서 신경망을 완전히 생성한 다음, 향후 다중 스텝 사전 예측을 위한 폐루프로 변환하는 것이 좋습니다. 그러면 폐루프 신경망에서 원하는 만큼의 많은 미래 값을 예측할 수 있습니다. 폐루프 모드에서만 신경망을 시뮬레이션하면 신경망은 입력 시계열의 시간 스텝 수만큼 예측을 수행할 수 있습니다.

NARX 신경망을 훈련시킵니다. train 함수는 검증 및 테스트 단계를 포함해 개루프(직렬-병렬 아키텍처)에서 신경망을 훈련시킵니다.

net = train(net,Xs,Ts,Xi,Ai);

Figure Neural Network Training (25-Jan-2024 15:31:43) contains an object of type uigridlayout.

훈련된 신경망을 표시합니다.

view(net)

신경망 입력값 Xs, 초기 입력 상태 Xi 및 초기 계층 상태 Ai를 사용해 개루프 신경망의 신경망 출력값 Y, 최종 입력 상태 Xf 및 최종 계층 상태 Af를 계산합니다.

[Y,Xf,Af] = net(Xs,Xi,Ai);

신경망 성능을 계산합니다.

perf = perform(net,Ts,Y)
perf = 0.0153

이후의 20개의 시간 스텝에 대한 출력값을 예측하려면 먼저 폐루프 모드에서 신경망을 시뮬레이션합니다. 개루프 신경망 net의 마지막 입력 상태 Xf와 계층 상태 Af는 폐루프 신경망 netc의 초기 입력 상태 Xic와 계층 상태 Aic가 됩니다.

[netc,Xic,Aic] = closeloop(net,Xf,Af);

폐루프 신경망을 표시합니다.

view(netc)

폐루프 모드에서 향후 20개의 시간 스텝에 대해 예측을 실행합니다.

Yc = netc(XPredict,Xic,Aic)
Yc=1×20 cell array
    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

입력 인수

모두 축소

0 또는 양의 입력 지연으로, 증가하는 행 벡터로 지정됩니다.

0 또는 양의 피드백 지연으로, 증가하는 행 벡터로 지정됩니다.

은닉 계층의 크기로, 하나 이상의 요소로 구성된 행 벡터로 지정됩니다.

피드백 유형으로, 'open', 'closed' 또는 'none'으로 지정됩니다.

훈련 함수 이름으로, 다음 중 하나로 지정됩니다.

훈련 함수알고리즘
'trainlm'

Levenberg-Marquardt

'trainbr'

베이즈 정규화

'trainbfg'

BFGS 준뉴턴

'trainrp'

탄력적 역전파

'trainscg'

스케일링된 켤레 기울기

'traincgb'

Powell/Beale 재시작 알고리즘을 사용한 켤레 기울기

'traincgf'

Fletcher-Powell 켤레 기울기

'traincgp'

Polak-Ribiére 켤레 기울기

'trainoss'

1스텝 할선법

'traingdx'

가변 학습률 경사하강법

'traingdm'

모멘텀을 사용한 경사하강법

'traingd'

경사하강법

예: 예를 들어, 'traingdx'와 같이 훈련 알고리즘으로 가변 학습률 경사하강법 알고리즘을 지정할 수 있습니다.

훈련 함수에 대한 자세한 내용은 얕은 다층 신경망 훈련시키고 적용하기다층 신경망 훈련 함수 선택하기 항목을 참조하십시오.

데이터형: char

버전 내역

R2010b에 개발됨