6

신경망에서 바이어스 노드의 역할을 이해하고 작은 네트워크에서 활성화 기능을 전환하는 것이 왜 중요한지 이해합니다. 제 질문은 이것입니다 : 매우 큰 네트워크 (ReLu 활성화 기능, 3 개의 컨볼 루션 레이어, 2 개의 숨겨진 레이어, 100,000 개 이상의 연결을 사용하는 이미지 인식을위한 길쌈 신경 네트워크)에서 바이어스가 여전히 중요한가? 발생하는 엄청난 수의 활성화에 의해 손실 되었습니까?매우 큰 신경망에서 바이어스 노드가 필요합니까?

나는 과거에 바이어스 노드를 구현하는 것을 잊었던 네트워크를 구축했기 때문에 내가 요구하는 이유는 추가 할 때 성능에 무시할 수있는 차이가 있음을 알았 기 때문입니다. 특정 데이터 세트가 편견을 필요로하지 않는다는 점에서 이것이 우연한 것일까? 대규모 네트워크에서 더 큰 가치를 지닌 바이어스를 초기화해야합니까? 다른 조언을 많이 주시면 감사하겠습니다.

답변

5

바이어스 노드/용어는 예측 된 출력이 바이어스되지 않도록하기위한 것입니다. 입력에 +1에서 +1까지가는 동적 (범위)이 있고 출력이 +3만큼 입력의 번역이면 바이어스 항을 가진 신경망은 단순히 0이 아닌 무게를 가진 바이어스 뉴런을 갖게됩니다 나머지는 0이됩니다. 이 상황에서 바이어스 뉴런을 사용하지 않으면 모든 활성화 함수와 가중치가 최적화되어 Sigmoids/Tangents와 곱셈을 사용하여 간단하게 추가 할 수 있습니다.

입력 및 출력이 모두 같은 범위, 즉 -1에서 +1까지라면 바이어스 용어가 유용하지 않을 것입니다.

언급 한 실험에서 바이어스 노드의 무게를 살펴볼 수 있습니다. 그것은 매우 낮거나 아마도 입력과 출력이 이미 중심에 위치한다는 것을 의미합니다. 또는 그것은 중요합니다. 그리고 나는 다른 무게의 편차가 줄어들어보다 안정한 (그리고 지나치게 맞지 않는) 신경망으로 이끈다고 확신합니다.

+0

아, 바이어스가 작아서 데이터 세트가 이미 합리적으로 중심에 위치해야한다고 생각합니다. 답을 건네줍니다. – Hungry

3

바이어스는 모든 레이어의 입력에 1과 같은 상수를 추가하는 것과 같습니다. 그런 다음 그 상수에 대한 가중치는 편견과 같습니다. 정말 간단하게 추가 할 수 있습니다.

이론적으로 네트워크가 모든 계층에서 자신의 바이어스 노드를 만들기 위해 "학습"할 수 있기 때문에 필요하지 않습니다. 뉴런 중 하나는 그것의 무게를 매우 높게 설정하여 항상 1이거나 0에서 항상 상수 0.5를 출력합니다 (Sigmoid 단위의 경우). 적어도 2 개의 레이어가 필요합니다.

+0

컨볼 루션 네트워크의 경우 실제로 모든 레이어의 입력에 1을 더하는 것이 아닙니다. –

0

왜 신경 네트워크에 필요한 바이어스 :

신경망의 바이어스 노드는 항상 있는 노드입니다. 즉, 그 값은 주어진 패턴의 데이터에 관계없이 으로 설정됩니다. 이것은 회귀 모형에서 절편과 유사하며 동일한 기능을 수행합니다.

신경망 주어진 층에 바이어스 노드가없는 경우, 피쳐 값은 0 다르다는 다음 층 출력를 생성 할 수 없습니다

왜 우리는 신경망에서 바이어스 값이 필요한가?