사인파를 예측하는 데 신경망을 개선하려면 어떻게해야합니까?


21

여기, 보라 : 생성 된 사인파 당신은 정확히 학습 데이터의 끝을 볼 수 있습니다. 훈련 데이터는 에서 로갑니다 .11

나는 tanh 활성화와 함께 Keras와 1-100-100-2 밀도 네트워크를 사용했습니다. p와 q의 두 값 p에서 q의 결과를 계산합니다. 이렇게하면 1 값보다 작은 값만 사용하여 모든 크기의 숫자를 얻을 수 있습니다.

나는 여전히이 분야의 초보자이므로 참고하십시오.


1
명확히하기 위해 훈련 데이터는 약 -1.5에서 +1.5 사이이므로 네트워크가 그것을 정확하게 배웠습니까? 따라서 귀하의 질문은 훈련 데이터 범위를 벗어난 보이지 않는 숫자로 결과를 추정하는 것입니다.
Neil Slater

11
푸리에가 모든 것을 변형시키고 주파수 영역에서 작업 해 볼 수 있습니다.
Nick Alger

4
미래의 검토 자들에게 : 왜 이것이 폐쇄로 플래그가 지정되는지 모르겠습니다. 신경망을 사용하여 주기적 데이터를 모델링하는 전략에 관한 것입니다.
Sycorax는 Reinstate Monica가

1
머신 러닝 분야의 초보자에게는 이것이 합리적인 질문이라고 생각합니다. 나는 그것을 닫지 않을 것이다
Aksakal

1
이것이 도움이 될지 모르겠지만 바닐라 NN은 다항식 함수 만 배울 수 있습니다. 실제로 다항식을 고정 된 간격으로 임의로 닫을 수 있으므로 괜찮습니다. 그러나 그것은 당신이 간격의 끝을지나 확장되는 사인파를 결코 배울 수 없다는 것을 의미합니다. 다른 답변이 아래에서 지적한 것처럼 트릭은 문제를 그런 식으로 해결할 수있는 것으로 변환하는 것입니다. 그것이 푸리에 변환이 제안한 것인데,이 경우 사인파를 배우는 것은 단지 상수를 배우는 것입니다.
Ukko

답변:


19

피드 포워드 네트워크를 사용하고 있습니다. 다른 대답은 FFNN이 훈련 데이터의 범위를 넘어 외삽에 적합하지 않다는 것입니다.

그러나 데이터는주기적인 품질을 갖기 때문에 LSTM을 사용하여 모델링 할 수 있습니다. LSTM은 시퀀스에서 작동하는 다양한 신경망 셀이며 이전에 "본 것"에 대한 "메모리"를 가지고 있습니다. 이 의 개요 는 LSTM 접근 방식이 주기적 문제에 대한 적격 한 성공을 제시합니다.

이 경우 훈련 데이터는 일련의 튜플 및 새로운 입력에 대한 정확한 예측을위한 작업 x i + 1x i + n입니다.(xi,sin(xi))xi+1xi+n 일부 I 인덱스 일부 시퀀스 증가. 각 입력 시퀀스의 길이, 포함되는 간격의 너비 및 간격은 사용자가 결정합니다. 직관적으로, 나는 1주기를 다루는 규칙적인 그리드가 시작하기에 좋은 장소가 될 것으로 기대합니다. 훈련 시퀀스는 일정한 간격으로 제한되지 않고 광범위한 값을 다루는 훈련 시퀀스입니다.ni

(네즈 - Guarneros, 막 디엘과 고메즈 - 길, 필라 및 폰세카 - 델가도, 리고베르토와 라미레즈 - 코르테스, 마누엘 및 알라르 콘 - 키노, 비센테 "고 LSTM 신경망을 사용하여 사인 함수의 장기 예측"에서 자연 - 하이브리드 지능형 시스템의 영감을받은 디자인 )


2
여기서 모델링되는 시퀀스는 무엇입니까? 시간 단계는 무엇입니까? 이것은 나에게 단순한 곡선 맞춤 응용 프로그램처럼 보입니다.
David J. Harris

@ DavidJ.Harris 내 답변을 업데이트했습니다.
Sycorax는 Reinstate Monica가

시리즈의 주파수는 무엇을하지 않다 ? 1/(2π)
Aksakal

예를 들어 이것이 시장 예측 방식입니까?
Markus Appel

3
아니요, 시장 예측 방식이 아닙니다. 적어도 돈을 벌기 위해 어떻게해야합니까?
Aksakal

13

당신이하고 싶은 것이 이와 같은 간단한 주기적 기능을 배우는 것이라면 가우시안 프로세스를 사용할 수 있습니다. GP를 사용하면 적절한 공분산 함수를 지정하여 도메인 지식을 어느 정도 적용 할 수 있습니다. 이 예제에서는 데이터가 주기적이라는 것을 알고 있으므로 주기적 커널을 선택한 다음 모델이이 구조를 추정합니다. 그림에서 예제를 볼 수 있습니다. 조수 높이 데이터를 맞추려고 노력하고 있기 때문에 주기적 구조를 가지고 있음을 알고 있습니다. 나는 주기적 구조를 사용하고 있기 때문에, 모델은이 주기성을 어느 정도 정확하게 추정합니다. 신경망에 대해 배우려는 경우 OFC는 실제로 관련이 없지만 수동 공학 기능보다 약간 더 좋은 접근법 일 수 있습니다. 또한 신경망과 GP는 이론적으로 밀접한 관련이 있습니다.여기에 이미지 설명을 입력하십시오

신경망과 달리 GP는 큰 데이터 세트 및 딥 네트워크로 확장하기가 어렵 기 때문에 항상 유용하지는 않지만, 이와 같은 저 차원 문제에 관심이있는 경우 더 빠르고 안정적 ​​일 수 있습니다.

(그림에서 검은 점은 훈련 데이터이고 빨간색은 목표입니다. 정확하게 맞지는 않더라도 모델은 주기성을 대략 학습합니다. 색상 밴드는 모델의 신뢰 구간입니다. 예측)


2
이 줄거리는 아름답습니다.
Sycorax는 Reinstate Monica가

11

신경망을 포함한 기계 학습 알고리즘은 임의의 기능을 근사화하는 방법을 학습 할 수 있지만 충분한 훈련 데이터 밀도가있는 구간 에서만 학습 할 수 있습니다 .

통계 기반 머신 러닝 알고리즘은 보간을 수행 할 때 가장 효과적입니다. 훈련 예제에 근접하거나 그 사이에있는 값을 예측합니다.

훈련 데이터 외에는 외삽을 기대하고 있습니다. 그러나 그것을 달성하는 쉬운 방법은 없습니다. 신경망은 대략 통계를 통해서만 분석적으로 함수를 학습하지 않습니다. 이는 거의 모든지도 학습 ML 기술에 해당됩니다. 고급 알고리즘은 충분한 예제 (및 모델의 자유 매개 변수)가 주어지면 선택한 함수에 임의로 접근 할 수 있지만 제공된 교육 데이터 범위에서만 가능합니다.

네트워크 (또는 다른 ML)가 교육 데이터 범위 밖에서 동작하는 방식은 사용 된 활성화 기능을 포함한 아키텍처에 따라 다릅니다.

sinsin(x),sin(2x+π/4)sin


"신경망은 통계적으로 만 분석적으로 함수를 학습하지 않습니다." -FFT가 분석적으로 배우지 않는 것과 같이 실제로 사용되는 모든 것에 대해 거의 동일하게 말할 수 있습니다. 샘플링 속도와주기를 무한대로 늘리고 실제 기능에 무한히 근접 할 수 있지만 NN도 마찬가지입니다.
Aksakal

@ Aksakal : 그렇습니다. 그러나 나는 "모든 ML 알고리즘이 분석적으로 기능을 배우지 않는다"고 말하고 싶지 않았다. 의심 할 여지없이 누군가 베이지안 분석 학습 자나 유전자 프로그래밍 등의 반례를 제시 할 것이기 때문입니다. 나는 그것을 좀 더 일반적으로 만들기 위해 편집하려고합니다
Neil Slater

9

경우에 따라 주기적 기능으로 기능을 변환하는 @Neil Slater의 제안 된 접근 방식이 매우 효과적이며 최상의 솔루션 일 수 있습니다. 여기서 어려움은 수동으로주기 / 파장을 선택해야한다는 것입니다 ( 이 질문 참조 ).

주기성을 네트워크에 더 깊게 포함 시키려면 가장 쉬운 방법은 sin / cos를 하나 이상의 계층에서 활성화 함수로 사용하는 것입니다. 이 백서 에서는 주기적 활성화 기능을 다루기위한 잠재적 인 어려움과 전략에 대해 설명합니다.

대안 적으로, 이 논문 은 네트워크의 가중치가 주기적 기능에 의존하는 다른 접근법을 취합니다. 이 논문은 또한 더 유연하기 때문에 sin / cos 대신 스플라인을 사용하도록 제안합니다. 이것은 작년에 내가 가장 좋아하는 논문 중 하나이므로 접근 방식을 사용하지 않더라도 읽을 가치가 있습니다.


9

잘못된 접근 방식을 취했지만이 접근 방식으로 문제를 해결하기 위해 수행 할 수있는 작업이 없습니다.

문제를 해결하는 방법에는 여러 가지가 있습니다. 기능 엔지니어링을 통해 가장 확실한 것을 제안하겠습니다. 시간을 선형 피쳐로 연결하는 대신 나머지 계수 T = 1로 설정하십시오. 예를 들어, t = 0.2, 1.2 및 2.2는 모두 t1 = 0.1 등의 특성이됩니다. 이 것을 인터넷에 연결하고 작동 방식을 확인하십시오.

기능 엔지니어링이 과소 평가되었습니다. AI / ML에는 판매 담당자가 모든 입력을 인터넷에 덤프한다고 주장하는 경향이 있으며, 어떻게 든 입력으로 처리해야하는지 파악할 수 있습니다. 물론, 당신의 예에서 보았 듯이, 그렇게 쉽게 분해됩니다. 이것은 가장 간단한 경우에도 좋은 기능을 구축하는 것이 얼마나 중요한지를 보여주는 훌륭한 예입니다.

또한 이것이 기능 엔지니어링의 가장 조잡한 예라는 것을 알고 싶습니다. 그것은 당신이 그것으로 무엇을 할 수 있는지에 대한 아이디어를 제공하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.