"New Neural"은 MetaTrader 5 플랫폼용 신경망 엔진의 오픈 소스 프로젝트입니다. - 페이지 40

 

다음은 시그모이드의 받음각 계수에 대한 함수입니다.

 //+------------------------------------------------------------------+
double ytrans0( double y= 0.5 ) // [0;0.5;1] --> [0;1;500.5] гипербола с перегибом в 0.5
  {
   double x=line0(y);
   return (x> 0.5005 ? 0.5005 /( 1.001 -x):x* 2 .);
  }
//+------------------------------------------------------------------+
double ytrans1( double y= 0 .) // [-1;0;1] --> [0;1;500.5] сдвинутая гипербола с перегибом в 0.0
  {
   double x=(line1(y)+ 1 .)/ 2 .;
   return (x> 0.5005 ? 0.5005 /( 1.001 -x):x* 2 .);
  }
//+------------------------------------------------------------------+

추신: 왜 쓰여졌는지 설명하겠습니다.

작업: 뉴런 자체의 출력에 의해 시그모이드의 받음각을 조절할 필요가 있습니다. 출력은 [0;1] 또는 [-1;1] 이내입니다.

[0;1]로 옵션을 분석해 봅시다. 0에서 0.5까지의 영역에서는 받음각을 줄여야 출구 온도가 떨어지고, 0.5에서 1까지의 영역에서는 반대로 각도가 증가해야하지만 가장 중요한 것은 부드러움과 전환 없음.

그것들은 주어진 중간점에서 변곡점이 있는 쌍곡선이 필요합니다. 사실, 받음각을 제어하려면 하나의 출력만 사용하거나 산술 평균으로 여러 개를 처리하는 것이 좋습니다. 그렇지 않으면 임계값 기능을 방출하는 각도로 잠금이 발생합니다.

ZZY 주어진 입력이 사용되면 line0( ) 및 line1( ) 함수가 필요하지 않지만 ytrans1() 에서는 입력 범위 [0;1]로의 이동이 필요합니다.

 
더엑스퍼트 :

그런데.

시그모이드 유형 함수가 필요합니다.

요구 사항은 함수 자체와 미분(계산하기가 그리 어렵지 않음)의 정규형과 역함수와 미분의 정규형입니다.

위의 시그모이드 함수의 역함수입니다.

 //+------------------------------------------------------------------+
double Invsigma0( double c) //  вход [0;1] обратные
  {
   return (- log (( 1 .-c)/c));
  }
//+------------------------------------------------------------------+
double Invsigma1( double c) //  вход [-1;1]
  {
   return (- log (( 1 .-c)/( 1 .+c)));
  }
//+------------------------------------------------------------------+
double Dsigma0( double c) //  вход [0;1] производные
  { //exp(-c)/(1+exp(-c))^2
   double e= exp (-c);
   double c2= 1 .+e;
   return (e/(c2*c2));
  }
//+------------------------------------------------------------------+
double Dsigma1( double c) //  вход [-1;1]
  { // (2*E^-c)/(1+E^-c)^2 
   double e= exp (-c);
   double c2= 1 .+e;
   return ( 2 .*e/(c2*c2));
  }
//+------------------------------------------------------------------+
double DInvsigma0( double c) // вход [0;1] производные обратной сигмы
  {
   return ( 1 ./(c-c*c));
  }
//+------------------------------------------------------------------+
double DInvsigma1( double c) // вход [-1;1]
  {
   return (- 2 ./(c*c- 1 .));
  }
//+------------------------------------------------------------------+

그러나 두 번째 것은 확인이 필요합니다. 그렇지 않으면 #IND가 발생할 수 있습니다.

추신: 확인하지 않았습니다. #IND가 발생하지 않도록 모든 항목을 확인해야 합니다.

ZZY 죄송합니다 사각형을 잊어 버렸고 수정했습니다.

 
우크라이나 :
모든 X에 대해 4가지 기능을 모두 정의해야 합니다.
 
우크라이나 :

이것들은 위의 시그모이드 함수의 역함수입니다.

그러나 두 번째 것은 확인이 필요합니다. 그렇지 않으면 #IND가 발생할 수 있습니다.


함수에 다음과 같이 입력합니다.

 if (x> 0.9999999 )
x= 1.0 ;
if (x<- 0.9999999 )
x=- 1.0 ;
 
:

함수에 다음과 같이 입력합니다.

이것은 선형 활성제라고 할 수 있으며 이미 혼란스러운 공식을 혼동할 필요가 없습니다.

ZY 39 페이지, 마지막 두 함수는 line0() 및 line1()입니다.

ZZY 페이지 39에 Mline() 초과 여부를 확인하는 기능이 하나 더 추가되었습니다. -#IND #IND

 
내가 바보.
 
더엑스퍼트 :


?

 

그래서 무엇? 좋아요.

나는 이름에 대한 질문이 더 이상 가치가 없다는 것을 이해합니다.

 
더엑스퍼트 :

그래서 무엇? 좋아요.

나는 이름에 대한 질문이 더 이상 가치가 없다는 것을 이해합니다.

))

개발 과정에서 여전히 항상 그렇듯이 백 번 변할 것입니다.

 

모든 것이 멋진 것처럼 보이지만 무언가가 옳지 않거나 불필요하거나 충분하지 않습니다 ...

그리고 그 이유는 명확하지 않습니다. 자세히 살펴보면 결함을 전혀 찾을 수 없습니다.

머리가 따로 있나요? 사용자의 아바타에?

아니면 잠을 자야 합니다. 내가 지금 무엇을 할거야. 그리고 내일 파이크에서.