현재 신경망을 최적화하기 위해 유전자 알고리즘을 사용하는 프로젝트를 진행하고 있습니다. 나는 이것이 아마도 최적화 할 수있는 최선의 방법이 아니라는 것을 알고 있지만 두 가지를 처음 접했을 뿐이 기 때문에 사용하려고했습니다.신경망을위한 유전자 알고리즘 사용
내 계획은 다음과 같습니다 (변경 될 수 있음, 많이). 내 입력 뉴런은 거의 양수를 가질 수있는 데이터 세트를 사용합니다 (소수점 두 자리까지 포함하여 실제로는 부동 소수점 숫자가 될 수 있음). 0에서 20000 사이의 값을 가질 가능성이 가장 높습니다. 숫자는 얼마나 큰가보다는 가치가 서로 비교되며, 먼저 입력되는 모든 값 중에서 가장 큰 수로 나뉩니다. 그들은 숨겨진 레이어로 이동하기 전에 가중치 (양수 또는 음수 부동 소수점)로 곱해집니다. 숨겨진 레이어의 각 뉴런은 계산이 완료 될 때까지 모든 입력을 합산합니다. 그런 다음 물류 기능을 통해 실행되어 출력됩니다.
내 환경은 Visual Studio C++ 2010 Express이고 clr을 사용하고 있습니다.
내 문제는 유전자 알고리즘과 작동 방식에 있습니다. 그것은 무게를 조절하는 것입니다. 내 문제는 무작위로 가중치 (변이 비율) 중 하나에서 비트를 임의로 변경하면 가중치를 매우 높게 또는 낮게 만들 수있어 입력에 곱하여 다른 값을 더할 때 오버플로 또는 다른 오류가 발생할 수 있다는 것입니다. 나는 나의 염색체를 어떻게 구성 할 것인지 잘 모른다. 그래서 무작위로 비트가 아닌 선택 가중치로 무작위 추출을 수행하고이를 정의 된 범위 내에서 임의의 숫자로 변경하는 것이 더 좋을까요? 기본적으로 성능을 유지하면서 값을 너무 크게 또는 작게 만드는 경우 오류를 발생시키지 않고 구성하는 방법에 대한 제안을 찾고 있습니다.
감사합니다, (미안이 이론 컴퓨터 과학에 있어야하는 경우,하지만 난 거기에 맞지 않는 것이라고 생각) 신경망 (앤스)를 최적화 할 어렵기로 악명이 있고, 유전자 알고리즘
세부 정보는 기억이 나지 않지만이 책의 내용은 다음과 같습니다. http://www.amazon.com/Techniques-Programming-Premier-Press-Development/dp/193184108X, 저자는 당신이 묘사하는 것을 꽤 많이합니다. 즉, 신경 회로망을 최적화하기 위해 유 전적으로 변형 된 가중치를 사용합니다. –
당신이 생각해내는 해결책과 더 일반적인 과정 (아마도 비 신경적 과정) 사이의 성능 비교를 보는 것은 흥미로울 것입니다. – Predictor