재미로 신경망을 개발하려고합니다.
역 전파의 경우 두 가지 기술을 보았습니다.
첫 번째는 여기 와 다른 많은 장소에서도 사용됩니다.
그것이하는 일은 :
- 각 출력 뉴런에 대한 오류를 계산합니다.
- 그것은 그것을 네트워크로 역 전파합니다 (각 내부 뉴런에 대한 오류를 계산합니다).
- 이 식에 가중치를 업데이트한다 : (여기서, 중량의 변화이며, 학습 속도 시냅스로부터의 입력을 수신하는 신경 세포의 오차 시냅스의 출력 전송되는).
- 필요한만큼 데이터 세트의 각 항목에 대해 반복됩니다.
그러나이 튜토리얼 에서 제안한 신경망 (GitHub에서도 사용 가능)은 다른 기술을 사용합니다.
- 오류 기능을 사용합니다 (다른 방법에는 오류 기능이 있지만 훈련에는 사용하지 않습니다).
- 가중치부터 시작하여 최종 오류를 계산할 수있는 또 다른 기능이 있습니다.
- 기울기 하강을 통해 해당 기능을 최소화합니다.
이제 어떤 방법을 사용해야합니까?
첫 번째 것이 가장 많이 사용되는 것으로 생각하지만 (다른 예제를 사용했기 때문에) 잘 작동합니까?
특히, 나는 모른다 :
- 이차 함수를 사용하지 않기 때문에 로컬 최소값에 더 종속적이지 않습니까?
- 각 가중치의 변화는 출력 뉴런의 출력 값에 의해 영향을 받기 때문에 뉴런 (높은 값이 아닌)에서 더 높은 값을 생성하는 데이터 세트의 항목이 다른 항목보다 가중치에 더 영향을 미치지 않습니까?
이제는 구현하기가 간단하고 생각하기 쉬우므로 첫 번째 기술을 선호합니다.
비록 내가 언급 한 문제가있는 경우 (그렇지 않기를 바랍니다), 두 번째 방법보다 실제로 사용해야 할 이유가 있습니까?