스크립트 형태의 신경망 - 페이지 9

 
Andy_Kon писал (а) >>

시그모이드에서 정밀도가 얼마나 중요합니까?

소수점 이하 9자리의 20 정밀도 후...


학습이 영향을 미칠 때. 때로는 비학습에 이르기까지 수렴에 심각한 영향을 미칠 수 있습니다.

훈련에 GA를 사용할 때 이러한 문제가 없어야 합니다.

 
YuraZ писал (а) >> 를 썼습니다.

3-입력에 무엇을 줄 것인가(여기서 입력의 수는 분명함)

4-재훈련 시기

5-선택할 학습 알고리즘

GA - 유전

BP-


3. 정말 문제, 그것은 모두 상상력에 달려 있습니다 :).

4. 여기에서 속일 수 있습니다. 잊는 능력으로 네트워크를 만드십시오. 그렇게 어렵지 않습니다.

다음과 같이 할 수 있다고 가정해 보겠습니다(BP로 학습할 때 잘 작동함).

패턴의 수를 제한하십시오 -- 1000개라고 가정해 봅시다.

다음 패턴이 나타날 때(예: 새로운 TF)

- 가장 오래된 것을 제거

- 학습 주기를 만드십시오

- 새롭게 등장한 패턴에 대해 트레이닝을 5회 진행합니다.



무슨 일이야?

+ 훈련 주기가 길지 않습니다.

+ 오래된 패턴은 즉시 잊혀지지 않습니다

- 새로운 패턴도 바로 학습되는 것은 아니지만,

+ 공격적인 학습으로 기존 것보다 빠르게 잊혀짐(연속 5회)

- BP 훈련에만 적합



5. 딜레마

GA - 로컬 최소값으로부터 보호하는 특성으로 인해 최적으로 꾸준히 내려갑니다. 하지만 메모리를 많이 먹고 엄청나게 느립니다.

BP -- 확률이 매우 높지만(즉, GA가 훈련할 수 있는 경우 BP도 훈련할 확률이 95%) 빠르지만 결과를 보장하지 않습니다. 국소 최소값 제거) 및 적응 단계(최소값도 건너뛰고 학습률도 몇 배 증가)



저는 BP를 지지합니다.

 
TheXpert писал (а) >>

3. 정말 문제, 그것은 모두 상상력에 달려 있습니다 :).

4. 여기에서 속일 수 있습니다. 잊는 능력으로 네트워크를 만드십시오. 그렇게 어렵지 않습니다.

다음과 같이 할 수 있다고 가정해 보겠습니다(BP로 학습할 때 잘 작동함).

패턴의 수를 제한하십시오 -- 1000개라고 가정해 봅시다.

다음 패턴이 나타날 때(예: 새로운 TF)

- 가장 오래된 것을 제거

- 학습 주기를 만드십시오

- 새롭게 등장한 패턴에 대해 트레이닝을 5회 진행합니다.



무슨 일이야?

+ 훈련 주기가 길지 않습니다.

+ 오래된 패턴은 즉시 잊혀지지 않습니다

- 새로운 패턴도 바로 학습되는 것은 아니지만,

+ 공격적인 학습으로 기존 것보다 빠르게 잊혀짐(연속 5회)

- BP 훈련에만 적합



5. 딜레마

GA - 로컬 최소값으로부터 보호하는 특성으로 인해 최적으로 꾸준히 내려갑니다. 하지만 메모리를 많이 먹고 엄청나게 느립니다.

BP -- 확률이 매우 높지만(즉, GA가 훈련할 수 있는 경우 BP도 훈련할 확률이 95%) 빠르지만 결과를 보장하지 않습니다. 국소 최소값 제거) 및 적응 단계(최소값도 건너뛰고 학습률도 몇 배 증가)



저는 BP를 지지합니다.


이것은 GA의 예입니다

소스 SI...


속도 면에서는 GA가 빠르다는 평가를 받는다.

MGA도 있습니다. 그 중 하나는 훨씬 더 쾌활합니다.


---

사실, GA 또는 MGA는 최대 또는 최소

적어도 METAQUOTES 전문가는 테스터의 속도를 위해 GA를 사용했으며 다른 것은 없었습니다 ...

파일:
dio.zip  4 kb
 
YuraZ писал (а) >> 를 작성했습니다.


속도 면에서는 GA가 빠르다는 평가를 받는다.

MGA도 있습니다. 그 중 하나는 훨씬 더 쾌활합니다.


---

사실, GA 또는 MGA는 최대 또는 최소

적어도 METAQUOTES 전문가는 테스터의 속도를 위해 GA를 사용했으며 다른 것은 없었습니다 ...


GA는 확실히 BP보다 느립니다.

GA는 매우 다재다능하기 때문에 Metaquote가 맞습니다. 물론 단순한 열거보다 빠를 것입니다.

질문은 뉴런과 마찬가지로 다릅니다. 문자는 뉴런이 아닌 특수 알고리즘에 의해 인식되지만 FR 네트워크는 사용하지 않습니다.

유사하게, 학습을 위해서는 전문화된 알고리즘을 사용하는 것이 더 낫습니다. 그것들은 선험적으로 더 좋습니다.

 
TheXpert писал (а) >>

GA는 확실히 BP보다 느립니다.

GA는 매우 다재다능하기 때문에 Metaquote가 맞습니다. 물론 단순한 열거보다 빠를 것입니다.

질문은 뉴런과 마찬가지로 다릅니다. 문자는 뉴런이 아닌 특수 알고리즘에 의해 인식되지만 FR 네트워크는 사용하지 않습니다.

유사하게, 학습을 위해서는 전문화된 알고리즘을 사용하는 것이 더 낫습니다. 그것들은 선험적으로 더 좋습니다.

그리고 그러한 정보는 비밀이 아닌 경우 어디에서 왔습니까? 그러나 예를 들어 FR을 배우는 것은 어떻습니까?

그리고 (기본적으로) 특수화된 알고리즘은 훈련된(훈련된) 신경망과 어떻게 다릅니까?

 
Sergey_Murzinov писал (а) >>

그리고 그러한 정보는 비밀이 아닌 경우 어디에서 왔습니까? 그러나 예를 들어 FR을 배우는 것은 어떻습니까?

그리고 (기본적으로) 특수화된 알고리즘은 훈련된(훈련된) 신경망과 어떻게 다릅니까?

음, 첫째, 신경망은 문자를 인식하는 가장 좋은 방법이 아닙니다. 네오코그니트론은 사전으로 99.7%를 달성했지만, 상형문자에 회전이 있는 것은 진실이 아니다.

RSDN.ru로 이동하여 신경망과 관련된 스레드를 읽으십시오. 그건 그렇고, 어리석은 사람들이 거기에 앉아있는 것과는 거리가 멀고 여기에서 몇 가지를 찾을 수 있습니다 :) .


예를 들어 학습에 관해서는 다음과 같습니다.

- vectorize (스켈레톤 만들기)

- 우리는 교차점과 그들의 상호 위치를 고려합니다.

- 예를 들어 크기에 둔감하도록 이전에 정규화한 푸리에 변환의 첫 번째 계수 몇 개를 취합니다. 그건 그렇고, FT의 도움으로 회전에 둔감한 EMNIP도 얻을 수 있습니다.

- 예시의 평균

- 표준으로 데이터베이스에 입력


차이점은 무엇입니까?

스페셜을 사용할 때 알고리즘이 어떻게 작동하는지 알 수 있습니다.

그리고 신경망이 그것을 어떻게 하는지, 당신은 모릅니다. 신경망이 제공하는 이 특정 기능은 입력을 출력으로 높은 정확도로 보간할 수 있다는 것을 알고 있습니다.

 

야아아아아!!!!!

그건 그렇고, RSDN.RU는 신경망 알고리즘 및 응용 프로그램 개발자가 아니라 프로그래머를 위한 포럼입니다.

참고로 FineReader는 신경망 기술 블록(최신 버전)을 사용함을 알려드립니다. 그리고 신경망에 대한 아이디어를 얻으려면 특별한(인기 있는 과학이 아닌) 문헌을 읽고 전문 포럼의 지점을 읽는 것이 좋습니다.

그리고 훈련된 네트워크 는 특별한 알고리즘입니다. NeuroShell2 프로그램에서 C 코드를 생성하면 가장 간단한 예를 볼 수 있습니다. 네트워크 코드가 완벽하게 보입니다.

 
Sergey_Murzinov писал (а) >> 를 썼습니다.

참고로 FineReader는 신경망 기술 블록(최신 버전)을 사용함을 알려드립니다. 그리고 신경망에 대한 아이디어를 얻으려면 특별한(인기 있는 과학이 아닌) 문헌을 읽고 전문 포럼의 지점을 읽는 것이 좋습니다.

좋아, 주제에 대한 링크를 가질 수 있습니까? 저를 조금 계몽하십시오.
 

2 유라즈

신경망 코드를 게시해 주셔서 감사합니다.

자세한 분석 후 계산 속도를 높이기 위해 신경 변위 방법(_threshold 및 _t_change 배열)과 임펄스 방법(Momentum 매개변수)을 사용합니다.

구현에 대해 몇 가지 질문이 있습니다.
1) 가중치 조정 기능에서 _t_change를 변경했지만 새로운 가중치 _threshold 배열을 계산하기 위해 해당 조정을 어디에도 사용하지 않습니다.

2) 출력 신호를 시그모이드 함수에 전달할 때 문헌에 기록된 대로 -1이 아니라 +1이 이 임계값 가중치에 적용되지만 합계에서 _threshold 매개변수를 뺍니다. 이것은 우리가 빼지 말고 추가해야 함을 의미합니다. 또한 가중치를 조정할 때 -1이 아닌 정확히 +1을 제공합니다.
일반적으로 이 임계값과 모멘텀을 가지고 놀았고 실제로 속도 계산에 도움이 되는 것으로 나타났습니다. 시간이 몇 배로 단축됩니다.

3) 시그모이드 함수에도 관심이 있었습니다. 내가 이해하는 한 이러한 매개변수는 이 영역에서 실제 경험에 기인하지만 Usserman의 책에서 {0,1} 범위가 최적이 아니라고 쓴 것도 읽었다고 생각합니다. 중량 보정량은 출력 레벨에 비례하며, 출력 레벨이 0이면 중량이 변하지 않습니다. 그리고 이진 입력 벡터를 사용하면 평균적으로 값의 절반이 0이 되므로 연결된 가중치는 훈련되지 않습니다!
해결책은 입력을 {-0.5,0.5} 범위로 캐스팅하고 시그모이드에 0.5만큼 오프셋을 추가하는 것입니다. 범위가 {-0.5,0.5}인 이러한 시그모이드 [1/(1+Exp(-x))-0.5]는 수렴 시간을 30-50% 단축합니다.
이 경우의 유일한 문제는 입력 벡터를 {-0.5,0.5} 범위로 캐스팅하는 것입니다. 정상화해야 할 수도 있습니다. 이렇게 하려고 했지만 왠지 시그모이드의 결과는 항상 긍정적이었습니다. 이 문제에 대한 귀하의 의견을 듣고 싶습니다.

4) 이제 입력을 설정하는 방법에 대해 설명합니다. 이 프로세스를 자동화할 가치가 있습니다. 이 접근 방식에 대해 어떻게 생각하십니까? 평소와 같이 출력에서 100, 010, 001 값이 예상됩니다.
출력 배열을 자동으로 설정하려면 각 막대에 대해 다음 간격(예: 분당 5000개 막대)의 최고 가격과 최저 가격 비율을 결정하는 것이 좋습니다. 이 비율의 값은 가격이 이동한 위치를 나타내는 지표가 됩니다. 영역 1에 있으면 평평합니다. 1 이상이면 위로. 0에서 1이면 아래로. [0, +EЄ]가 아니라 [-EI, -A; - 에이, 에이; A, +EЄ], 그건 그렇고 우리의 출력 벡터에 해당합니다
N개의 이동 평균의 마지막 K 값(또는 MA와 막대의 평균 가격의 차이)을 네트워크 입력으로 제공합니다. 즉, 총 입력은 N*K가 됩니다.

조금 더 가볍고 이해하기 쉬운 기본 코드(함수 라이브러리)를 게시합니다. 일반적으로 이러한 개발 초기 단계에서 완성된 전문가 제품을 만드는 것은 가치가 없을 것입니다. 먼저 스크립트에서 명확한 계산 논리를 구현해 보겠습니다. 모든 것을 테스트한 다음 이를 기반으로 일반 지표를 작성해 보겠습니다. 그런 다음이 기반에서 피드백 및 네트워크 위원회, 그리고 일반적으로 흥미로운 것들이 많이 있을 것입니다.

추신
계속해서 발전사항을 공유해주셨으면 하는 바람에 작은 부탁이 있습니다. 문제가 되지 않으면 편집기 옵션에서 "공백 삽입"을 제거하십시오. 그렇지 않으면 코드를 읽기가 조금 어렵습니다. 새 버전을 기다리고 있습니다. 공동 테스트에 대한 제안이 가능합니다.

파일:
 
sergeev писал (а) >> 를 썼습니다.

2 유라즈


2) 출력 신호를 시그모이드 함수에 전달할 때 문헌에 기록된 대로 -1이 아니라 +1이 이 임계값 가중치에 적용되지만 합계에서 _threshold 매개변수를 뺍니다. 이것은 우리가 빼지 말고 추가해야 함을 의미합니다. 또한 가중치를 조정할 때 -1이 아닌 정확히 +1을 제공합니다.
일반적으로 이 임계값과 모멘텀을 가지고 놀았고 실제로 속도 계산에 도움이 되는 것으로 나타났습니다. 시간이 여러 번 단축됩니다.

3) 시그모이드 함수에도 관심이 있었습니다. 내가 이해하는 한 이러한 매개변수는 이 영역에서 실제 경험에 기인하지만 Usserman의 책에서 {0,1} 범위가 최적이 아니라고 쓴 것도 읽었다고 생각합니다. 중량 보정량은 출력 레벨에 비례하며, 출력 레벨이 0이면 중량이 변하지 않습니다. 그리고 이진 입력 벡터를 사용하면 평균적으로 값의 절반이 0이 되므로 연결된 가중치는 훈련되지 않습니다!
해결책은 입력을 {-0.5,0.5} 범위로 캐스팅하고 시그모이드에 0.5만큼 오프셋을 추가하는 것입니다. 범위가 {-0.5,0.5}인 이러한 시그모이드 [1/(1+Exp(-x))-0.5]는 수렴 시간을 30-50% 단축합니다.
이 경우의 유일한 문제는 입력 벡터를 {-0.5,0.5} 범위로 캐스팅하는 것입니다. 정상화해야 할 수도 있습니다. 이렇게 하려고 했지만 어떤 이유로 Sigmoid의 결과는 항상 긍정적이었습니다. 이 문제에 대한 귀하의 의견을 듣고 싶습니다.

2. 원래 공식은 다음과 같습니다 - S[j] = Sum(i)(y[i]*w[i,j] - t[j]). 저것들. 임계값이 제거되므로 임계값이라고 합니다. 그리고 재계산 공식에서 두 개의 마이너스는 결국 플러스를 제공합니다. 임계값을 사용하고 매개변수를 다시 계산하는 데 오류가 없습니다.

내가 틀렸다면 작가는 나를 고칠 것이다.

3. S자형이 아닙니다. 반이중형입니다. 이러한 기능의 수렴 시간은 네트워크 입력에 제공된 데이터에 따라 다릅니다. bisigmoid에서는 몇 배 더 빨리 수렴되지만 다른 데이터가 제공되면 완전히 다른 그림이 나타날 수 있습니다.