- 왜 신경망에서 바이어스 노드가 사용됩니까?
- 몇 개를 사용해야합니까?
- 어떤 레이어에서 사용해야합니까 : 모든 숨겨진 레이어와 출력 레이어?
답변:
신경망의 바이어스 노드는 항상 '켜져있는'노드입니다. 즉, 주어진 패턴의 데이터에 관계없이 값이 로 설정됩니다 . 회귀 모형의 절편과 유사하며 동일한 기능을 수행합니다. 신경망에 주어진 레이어에 바이어스 노드가없는 경우 다음 레이어에서 과 다른 출력 (선형 스케일 또는 통과시 의 변환에 해당하는 값) 을 생성 할 수 없습니다 기능 값이 때 활성화 기능) .
간단한 예를 생각해 봅시다 : 2 개의 입력 노드 및 와 1 개의 출력 노드 가있는 피드 포워드 퍼셉트론 이 있습니다. 및 x 2 는 이진 피쳐이며 참조 레벨 x 1 = x 2 = 0으로 설정 됩니다. 이 2 0 에 원하는 가중치 w 1 과 w 2를 곱하고 곱을 곱한 후 원하는 활성화 기능을 통과 시키십시오. 바이어스 노드가 없으면 하나만x 2 y x 1출력값이 가능하여 적합하지 않은 결과를 얻을 수 있습니다. 예를 들어, 로지스틱 활성화 함수를 사용하면 는 0.5 여야합니다 . 이는 드문 이벤트를 분류하기에 끔찍합니다.
바이어스 노드는 신경망 모델에 상당한 유연성을 제공합니다. 위에서 주어진 예에서, 바이어스 노드없이 가능한 유일한 예측 비율은 였지만, 바이어스 노드에서는 ( 0 , 1 )의 모든 비율 이 x 1 = x 2 = 0 인 패턴에 적합 할 수 있습니다 . 각 층에 대해서는 J 바이어스 노드가 추가 된, 바이어스 노드를 추가 할 것이다 N의 J는 + 1 추가 파라미터 / 가중치를 추정한다 (여기서 N의 J + 1 계층의 노드의 개수 j를 ). 더 많은 매개 변수를 장착하면 신경망을 훈련하는 데 비례 적으로 시간이 더 걸립니다. 또한 배워야 할 가중치보다 훨씬 많은 데이터가 없으면 과적 합의 가능성이 높아집니다.
이러한 이해를 염두에두고 다음과 같은 명시적인 질문에 답변 할 수 있습니다.
간단하고 짧은 답변 :
석사 논문 (예 : 59 페이지) 에서 두 번의 실험에서 , 나는 첫 번째 레이어에 바이어스가 중요 할 수 있다는 것을 알았습니다. 그러나 특히 완전히 연결된 레이어에서 큰 역할을하지 않는 것 같습니다. 그러므로 마지막 층이 아닌 처음 몇 층에 그것들을 가질 수 있습니다. 간단히 네트워크를 훈련시키고 바이어스 노드의 가중치 분포를 플로팅하고 가중치가 0에 너무 가까워 보인다면 정리하십시오.
이것은 네트워크 아키텍처 / 데이터 세트에 크게 의존 할 수 있습니다.
1
은 이전 레이어에서 일정한 값 을 가지며 다음 레이어 뉴런 각각에 대해 하나의 가중치 (하나의 바이어스 값)를 갖는 것입니다.
신경망의 맥락에서, 배치 정규화 는 현재 현명한 "바이어스 노드"를 만들기위한 최고의 표준입니다. 뉴런의 바이어스 값을 고정하는 대신 뉴런 입력의 공분산을 조정합니다. 따라서 CNN에서는 컨볼 루션 레이어와 완전히 연결된 다음 레이어 (예 : ReLus) 사이에 배치 정규화를 적용합니다. 이론적으로 완전히 연결된 모든 레이어는 일괄 정규화의 이점을 얻을 수 있지만 실제로는 각 일괄 정규화에 고유 한 매개 변수가 있으므로 구현에 비용이 많이 듭니다.
왜, 대부분의 답변은 이미 입력이 활성화를 극도로 추진할 때 특히 뉴런이 포화 기울기에 영향을받는다고 설명했습니다. ReLu의 경우 왼쪽으로 밀려 0의 기울기가 나타납니다. 일반적으로 모델을 학습 할 때는 먼저 신경망에 대한 입력을 정규화합니다. 배치 정규화는 신경망 내부 의 레이어 간 입력을 정규화하는 방법입니다 .