멋져 보입니다 :)
그러나 그것이 무엇이며 어떻게 사용하는지 아직 알아 내지 못했습니다 :)
멋져 보입니다 :)
그러나 그것이 무엇이며 어떻게 사용하는지, 우리는 더 알아낼 필요가 있습니다 :)
를 첫 번째 숨겨진 레이어로 사용하여 차원 축소 또는 클러스터링 자체에 사용할 수 있고, 확률적 네트워크에 사용할 수 있으며, 기타 여러 가지 옵션이 있습니다.
자료 감사합니다!
여유가 있을 때 배워보겠습니다 :)
흥미로운 네트워킹 방법에 대한 새로운 기사를 작성해 주셔서 감사합니다. 문헌을 살펴보면 수백 개는 아니더라도 수십 개가 있습니다. 그러나 트레이더의 문제는 도구가 부족해서가 아니라 올바르게 사용하는 데 있습니다. 이 기사에 전문가 어드바이저에서 이 방법을 사용한 예가 포함되어 있다면 더욱 흥미로울 것입니다.
흥미로운 네트워킹 방법에 대한 새로운 기사를 작성해 주셔서 감사합니다. 문헌을 살펴보면 수백 개는 아니더라도 수십 개가 있습니다. 그러나 트레이더의 문제는 도구가 부족해서가 아니라 올바르게 사용하는 데 있습니다. 이 기사에 전문가 조언자에서이 방법을 사용하는 예가 포함되어 있으면 훨씬 더 흥미로울 것입니다.
1. 기사가 훌륭합니다. 접근하기 쉬운 방식으로 제공되며 코드가 복잡하지 않습니다.
2. 이 기사의 단점은 네트워크의 입력 데이터에 대해 전혀 언급하지 않았다는 사실입니다. 기간/지표 데이터에 대한 시세 벡터, 가격 편차 벡터, 정규화된 시세 등 입력 데이터에 대해 몇 마디 썼으면 좋았을 텐데요. 알고리즘을 실제로 사용하려면 입력 데이터와 그 준비가 중요합니다. 이러한 알고리즘에는 상대적 가격 변동 벡터를 사용하는 것이 좋습니다: x[i]=가격[i+1]-가격[i].
또한 사전에 입력 벡터를 정규화(x_normal[i]=x[i]/M)하여 고려 중인 기간의 가격 최대 편차를 M으로 사용할 수 있습니다(여기서는 간결성을 위해 변수 선언을 작성하지 않음):
M=x[ArrayMaximum(x)]-x[ArrayMinimum(x)];
이 경우 모든 입력 벡터는 변이 [-0.5,0.5]인 단위 하이퍼큐브에 놓이게 되므로 클러스터링의 품질이 크게 향상됩니다. 표준 정규 편차 또는 기간에 따른 시세의 상대적 편차에 대한 기타 평균 변수를 M으로 사용할 수도 있습니다.
3. 이 논문에서는 뉴런 가중치 벡터와 입력 벡터 사이의 거리로 차이의 규범의 제곱을 사용할 것을 제안합니다:
for(i=0, sum=0; i<m; i++, sum+=Pow(x[i]-w[i],2));
제 생각에는 이 거리 함수는 이 클러스터링 작업에서 효과적이지 않습니다. 스칼라 곱 또는 정규화된 스칼라 곱, 즉 가중치 벡터와 입력 벡터 사이의 각도의 코사인을 계산하는 함수가 더 효과적입니다:
for(i=0, norma_x=0, norma_w=0; i<m; i++, norma_x+=x[i]*x[i], norma_w+=w[i]*w[i]); norma_x=sqrt(norma_x); norma_w=sqrt(norma_w); for(i=0, sum=0; i<m; i++, sum+=x[i]*w[i]); if(norma_x*norma_w!=0) sum=sum/(norma_x*norma_w);
그러면 각 클러스터에서 진동 방향에 따라 서로 유사한 벡터가 그룹화되지만 이러한 진동의 크기가 아니라 해결해야 할 문제의 차원을 크게 줄이고 훈련 된 신경망의 가중치 분포의 특성을 증가시킵니다.
4.네트워크 훈련에 대한 중지 기준을 정의하는 것이 필요하다는 것이 올바르게 관찰되었습니다. 중지 기준은 훈련된 네트워크의 필요한 클러스터 수를 결정해야 합니다. 그리고 그 (숫자)는 차례로 해결해야 할 일반적인 문제에 따라 다릅니다. 작업이 1-2 개의 샘플에 대한 시계열을 미리 예측하는 것이고이를 위해 예를 들어 다층 퍼셉트론이 사용되는 경우 클러스터 수는 퍼셉트론의 입력 계층의 뉴런 수와 크게 다르지 않아야합니다.
일반적으로 가장 상세한 분 차트(10년*365일*24시간*60분)에서 기록의 막대 수는 5,300,000개를 넘지 않습니다. 시간별 차트에서는 87,000개의 막대입니다. 즉, 각 시세 벡터에 별도의 클러스터가 있을 때 클러스터 수가 10000-20000을 초과하는 분류기를 생성하는 것은 "과훈련" 효과로 인해 정당화되지 않습니다.
오류 가능성에 대해 사과드립니다.
1. 감사합니다, 최선을 다했습니다:)
2. 예, 동의합니다. 그러나 여전히 입력-이것은 별도의 큰 문제이며 혼자서 수십 개의 기사를 작성할 수 있습니다.
3. 그리고 여기서 나는 완전히 동의하지 않습니다. 정규화 된 입력의 경우 스칼라 곱의 비교는 유클리드 규범의 비교와 동일합니다-공식을 확장합니다.
4. 최대 클러스터 수는 이미 알고리즘의 매개 변수 중 하나이기 때문입니다.
max_nodes
예를 들어 다음과 같이 진행합니다. 마지막 N 단계에서 승자의 오차를 측정하고 어떤 방식으로든 그 역학을 평가합니다(예: 회귀선의 기울기 측정) 오차가 거의 변하지 않으면 중지합니다. 오차가 여전히 감소하고 있고 학습 데이터가 이미 부족하다면 노이즈를 억제하기 위해 평활화를 고려하거나 어떻게든 예제의 결손을 제거하는 것이 좋습니다.
3. 공식의 동등성이 어디에 있는지 이해하지 못합니다. 벡터(x,w)/ (|x|||w|) 사이의 각도의 코사인 공식은 |x-w|^2와"별로" 유사하지 않습니다. 입력을 정규화해도 이러한 측정값 간의 근본적인 차이는 변하지 않습니다:
동등성은 거리의 최대값이 항상 스칼라 곱의 최소값에 해당하고 그 반대의 경우도 마찬가지라는 것입니다. 정규화된 벡터의 경우 관계는 상호 모호하지 않고 단조롭기 때문에 거리의 제곱을 계산할지 각도를 계산할지는 중요하지 않습니다.
안녕하세요 Alex,
주제에 대해 명확하게 설명해 주셔서 감사합니다.
예를 들어 최적 신호에서 미래 가격 재구성에 대한 실용적인 코드를 공유할 수 있을까요?
아이디어는 다음과 같습니다:
1. 입력(소스): 여러 통화(18개)
2. 목적지: 예측하고자 하는 통화의 최적 신호(그림: 2. Optimal_Signals)
3. 소스와 대상 사이의 신경 연결고리를 찾아 트레이딩에서 폭발시킵니다.
NN 재구성에 대한 또 다른 질문입니다:
그림 2와 같이 무작위 샘플 대신에 우리의 샘플을 사용하는 것이 가능한가요?
우리의 두뇌는 1 초 이내에 그림을 재구성 할 수 있습니다. NN이 똑같이하는 데 얼마나 많은 시간이 걸리는지 보자, 농담이며 도전이 아닙니다.
무작위로 생성된 샘플은 아무런 의미나 용도가 없기 때문에 보는 재미가 없지만, 우리가 직접 의미를 담아 점을 그릴 수 있다면 훨씬 더 재미있을 것 같습니다 :-0)
새로운 기고글 성장하는 신경 가스: MQL5 구현 가 게재되었습니다:
이 글은 성장 신경 가스 (GNG)라고하는 클러스터링의 적응 알고리즘을 구현하는 MQL5 프로그램을 개발하는 방법의 예를 보여줍니다. 이 글은 언어 문서를 공부하고 신경 정보학 분야에서 특정 프로그래밍 기술과 기본 지식을 보유한 사용자를 대상으로 합니다.
알고리즘을 프로그래밍할 때 "세트"라고 하는 것을 저장해야 할 필요성을 분명히 처리해야 합니다. 뉴런 세트와 이들 사이의 에지 세트라는 두 세트가 있습니다. 두 구조 모두 프로그램 과정에서 발전 할 것이지만 (그리고 우리는 항목을 추가하고 제거할 계획입니다) 이에 대한 메커니즘도 제공해야 합니다.
물론 객체의 동적 배열을 사용하려고 할 수는 있지만 수많은 데이터 복사 이동 작업을 수행해야하므로 기본적으로 프로그램 속도가 느려집니다. 지정된 속성을 사용하여 추상화 작업에 더 적합한 옵션은 프로그램 그래프와 가장 간단한 버전인 연결 목록입니다.
연결 목록의 작동 원리를 독자들에게 상기시켜드리겠습니다 (그림 1). 기본 클래스의 개체에는 멤버 중 하나와 동일한 개체에 대한 포인터가 포함되어있으므로 메모리에 있는 개체의 물리적 순서에 관계없이 선형 구조로 결합할 수 있습니다. 또한 목록 이동, 노드 추가, 삽입 및 삭제, 검색, 비교 및 정렬, 필요한 경우 기타 절차를 캡슐화하는 "carriage" 클래스가 있습니다.
그림 1. 선형 연결 목록 구성의 도식적 표현
작성자: Alexey Subbotin