문제

유전자 알고리즘은 인공 신경망에서 숨겨진 노드의 수와 훈련의 양을 최적화하는 가장 효율적인 방법입니까?

MATLAB의 NNToolbox를 사용하여 신경망을 코딩하고 있습니다. 나는 최적화 기술에 대한 다른 제안에 열려 있지만 GA에 가장 익숙합니다.

도움이 되었습니까?

해결책

실제로 NN과 관련하여 GA를 사용하여 최적화 할 수있는 여러 가지가 있습니다. 구조 (노드 수, 레이어, 활성화 함수 등)를 최적화 할 수 있습니다. GA를 사용하여 훈련 할 수도 있습니다. 즉, 무게를 설정하는 것을 의미합니다.

유전자 알고리즘은 가장 효율적이지 않지만 일반적으로 사용 할 숫자에 대한 단서가 거의 없을 때 일반적으로 사용됩니다.

훈련을 위해서는 역전술을 포함한 다른 알고리즘을 사용할 수 있습니다. Nelder-Mead 등..

당신은 당신이 숫자 숨겨진 노드를 최적화하고 싶다고 말했습니다.이를 위해서는 "최적"과는 거리가 멀지 만 유전자 알고리즘은 충분할 수 있습니다. 당신이 검색하는 공간은 아마도 유전자 알고리즘을 사용하기에는 너무 작지만 여전히 작동하고 Afaik을 만들 수 있습니다. 이미 Matlab에서 구현되어 있으므로 Biggie는 없습니다.

훈련 양을 최적화한다는 것은 무엇을 의미합니까? 당신이 에포크의 수를 의미한다면, 괜찮습니다. 훈련은 어떻게 든 시작 중량에 의존하고 일반적으로 무작위이므로 GA에 사용되는 피트니스 기능은 실제로 기능이 아닙니다.

다른 팁

신경망과 유전자 프로그래밍의 좋은 예는 깔끔한 아키텍처 (토폴로지를 증강시키는 신경 발화)입니다. 이것은 최적의 토폴로지를 찾는 유전자 알고리즘입니다. 또한 숨겨진 노드의 수를 낮추는 데 능숙한 것으로 알려져 있습니다.

그들은 또한 Nero라는 게임을 사용하여 게임을 만들었습니다. 매우 독특하고 매우 놀라운 실질적인 결과.

스탠리 박사의 홈페이지 :

http://www.cs.ucf.edu/~kstanley/

여기서 당신은 그가 그것을 발명 한 사람이기 때문에 모든 깔끔한 모든 것을 찾을 수 있습니다.

유전자 알고리즘은 신경망을 최적화하기 위해 유용하게 적용될 수 있지만 원하는 일에 대해 조금 생각해야합니다.

역행과 같은 대부분의 "클래식"NN 훈련 알고리즘은 뉴런의 무게 만 최적화합니다. 유전자 알고리즘은 가중치를 최적화 할 수 있지만 일반적으로 비효율적입니다. 그러나, 당신이 요청했듯이, 그들은 네트워크의 토폴로지와 훈련 알고리즘의 매개 변수를 최적화 할 수 있습니다. 그래도 "과도하게 훈련 된"네트워크를 만드는 데 특히 조심해야합니다.

수정 된 유전자 알고리즘을 갖춘 또 하나의 기술은 역전 문제를 극복하는 데 유용 할 수 있습니다. 역전은 일반적으로 국소 미니 마를 발견하지만 정확하고 빠르게 발견합니다. 유전자 알고리즘을 역전술과 결합하면 Lamarckian GA에서 예를 들어 두 가지의 장점이 있습니다. 이 기술은 그 동안 간단히 설명됩니다 갈리아 튜토리얼

객관적인 기능이 연속적이지 않을 때 신경망을 훈련시키기 위해 유전자 알고리즘을 사용하는 것이 유용합니다.

이를 위해 유전자 알고리즘을 사용해야하는지 확실하지 않습니다.

유전자 알고리즘의 초기 솔루션 모집단은 신경망의 훈련 세트 (특정 교육 방법이 주어짐)로 구성 될 것이라고 가정합니다. 일반적으로 초기 솔루션 모집단은 문제에 대한 무작위 솔루션으로 구성됩니다. 그러나 임의의 훈련 세트는 실제로 신경망을 훈련시키지 않습니다.

유전자 알고리즘에 대한 평가 알고리즘은 필요한 훈련 양의 평균 중량, 특정 문제를 해결하는 데있어 신경망의 품질 및 숨겨진 노드의 숫자입니다.

따라서이를 실행하면 신경망 품질 (= 교육 시간, 숫자 숨겨진 노드, 네트워크의 문제 해결 기능)에서 최상의 결과를 제공하는 교육 세트를 얻게됩니다.

아니면 완전히 다른 접근법을 고려하고 있습니까?

나는 당신이 어떤 종류의 문제와 함께 일하고 있는지 확실하지 않지만 GA는 여기에서 약간의 과잉처럼 들립니다. 작업중 인 매개 변수의 범위에 따라 철저한 (또는 비 지능적) 검색이 작동 할 수 있습니다. 처음 몇 값에 대한 숨겨진 노드 수와 관련하여 NN의 성능을 플로팅하여 작게 시작하고 더 크고 더 큰 단위로 점프하십시오. 내 경험상, 놀랍게도 공연의 많은 NNS 고원; 숨겨진 노드 번호의 범위가 가장 의미가있는 좋은 그림을 얻을 수 있습니다.

NNS의 훈련 반복에 대해서도 종종 마찬가지입니다. 더 많은 훈련은 네트워크를 한 번에 돕지 만 곧 많은 영향을 미치지 않습니다.

대부분의 경우, 이러한 NN 매개 변수는 매우 복잡한 방식으로 성능에 영향을 미치지 않습니다. 일반적으로, 그것들을 증가시키는 것은 한동안 성능을 증가 시키지만 수익률이 줄어든다. GA는 이러한 종류의 간단한 곡선에서 좋은 가치를 찾는 데 실제로 필요하지 않다. 숨겨진 노드 (또는 훈련 반복)의 수가 실제로 성능이 복잡한 방식으로 변동하는 경우 GA와 같은 MetaHeuristics가 적합 할 수 있습니다. 그러나 그 경로를 취하기 전에 무차별적인 접근 방식을 시험해보십시오.

나는 유전자 알고리즘이 최소한의 솔루션으로 시작하고 뉴런의 수를 키울 수 있기 때문에 좋은 생각이라고 말하는 경향이 있습니다. 최적의 포인트를 찾고자하는 "품질 기능"은 매끄럽고 범프가 적을 가능성이 높습니다.

이 최적의 NN을 자주 찾아야한다면 최적화 알고리즘과 귀하의 경우 Quasi Newton을 사용하여 기능을 평가하는 데 비용이 많이 드는 문제에 최적 인 수치 레시피에 설명되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top