왜 신경망에서 바이어스 노드가 사용됩니까?


29
  1. 왜 신경망에서 바이어스 노드가 사용됩니까?
  2. 몇 개를 사용해야합니까?
  3. 어떤 레이어에서 사용해야합니까 : 모든 숨겨진 레이어와 출력 레이어?

1
이 질문은이 포럼에서 약간 광범위합니다. 패턴 인식을위한 주교 신경망 또는 Hagan 신경망 설계 와 같은 신경망에 관한 교과서를 참조하는 것이 가장 좋을 것 같습니다 .
Sycorax는 Reinstate Monica가

2
FTR, 나는 이것이 너무 광범위하다고 생각하지 않습니다.
gung-Monica Monica 복원

답변:


24

신경망의 바이어스 노드는 항상 '켜져있는'노드입니다. 즉, 주어진 패턴의 데이터에 관계없이 값이 로 설정됩니다 . 회귀 모형의 절편과 유사하며 동일한 기능을 수행합니다. 신경망에 주어진 레이어에 바이어스 노드가없는 경우 다음 레이어에서 과 다른 출력 (선형 스케일 또는 통과시 의 변환에 해당하는 값) 을 생성 할 수 없습니다 기능 값이 때 활성화 기능) .1000

여기에 이미지 설명을 입력하십시오

간단한 예를 생각해 봅시다 : 2 개의 입력 노드 및 와 1 개의 출력 노드 가있는 피드 포워드 퍼셉트론 이 있습니다. 및 x 2 는 이진 피쳐이며 참조 레벨 x 1 = x 2 = 0으로 설정 됩니다. 이 2 0 에 원하는 가중치 w 1w 2를 곱하고 곱을 곱한 후 원하는 활성화 기능을 통과 시키십시오. 바이어스 노드가 없으면 하나만x 2 y x 1x1x2와이x1엑스2엑스1=엑스2=0012출력값이 가능하여 적합하지 않은 결과를 얻을 수 있습니다. 예를 들어, 로지스틱 활성화 함수를 사용하면 0.5 여야합니다 . 이는 드문 이벤트를 분류하기에 끔찍합니다.와이.5

바이어스 노드는 신경망 모델에 상당한 유연성을 제공합니다. 위에서 주어진 예에서, 바이어스 노드없이 가능한 유일한 예측 비율은 였지만, 바이어스 노드에서는 ( 0 , 1 )의 모든 비율 이 x 1 = x 2 = 0 인 패턴에 적합 할 수 있습니다 . 각 층에 대해서는 J 바이어스 노드가 추가 된, 바이어스 노드를 추가 할 것이다 N의 J는 + 1 추가 파라미터 / 가중치를 추정한다 (여기서 N의 J + 1 계층의 노드의 개수 j를50%(0,1)엑스1=엑스2=0jj+1j+1 ). 더 많은 매개 변수를 장착하면 신경망을 훈련하는 데 비례 적으로 시간이 더 걸립니다. 또한 배워야 할 가중치보다 훨씬 많은 데이터가 없으면 과적 합의 가능성이 높아집니다. j+1

이러한 이해를 염두에두고 다음과 같은 명시적인 질문에 답변 할 수 있습니다.

  1. 데이터에 적합하도록 모델의 유연성을 높이기 위해 바이어스 노드가 추가되었습니다. 특히, 모든 입력 기능이 과 같을 때 네트워크가 데이터에 맞도록 하고 데이터 공간의 다른 곳에서 적합치의 바이어스를 줄일 가능성이 높습니다. 0
  2. 일반적으로 피드 포워드 네트워크의 입력 레이어 및 모든 숨겨진 레이어에 단일 바이어스 노드가 추가됩니다. 주어진 레이어에 둘 이상을 추가하지는 않지만 0을 추가 할 수 있습니다. 따라서 다른 고려 사항이 적용될 수 있지만 전체 수는 네트워크 구조에 따라 크게 결정됩니다. (피드 포워드 이외의 신경망 구조에 바이어스 노드가 추가되는 방법에 대해서는 명확하지 않습니다.)
  3. 대부분 이것에 대해 다루었지만 명시 적입니다. 출력 레이어에 바이어스 노드를 추가하지 않습니다. 그것은 말이되지 않습니다.

이 점에서 CNN이 다른가요? 전환 레이어에 바이어스를 추가하면 성능 (정확도)이 저하됩니다. 내가 제거하면 실제로 더 높아집니다!
Rika

@Hossein, 내가 아는 것은 아니지만 새로운 질문을 할 수 있습니다. 나는 거기에 전문가가별로 없습니다.
gung-복원 Monica Monica

입력이 0이되지 않으면 여전히 바이어스 노드가 필요합니까?
alec_djinn

1
@alec_djinn입니다. 입력 값에 0이없는 경우에도 모델은 모델없이 바이어스됩니다. 유추하여 다음을 읽는 것이 도움이 될 수 있습니다 . 선형 회귀 모델에서 절편을 제거해도 괜찮습니까?
gung-Monica Monica 복원

1
@krupeshAnadkat, "신경망의 바이어스 노드는 항상 '켜져있는'노드입니다. 즉, 주어진 패턴의 데이터에 관계없이 값이 1로 설정됩니다." 바이어스 노드는 값이 항상 1 인 노드이므로 가중치를 곱하기 전에 노드의 결과 값을 다시 변경하기 만하면 원하는 경우 연결할 수 있습니다 . 1
gung-Monica Monica 복원

2

간단하고 짧은 답변 :

  1. 입력 기능을 전환하거나 학습 된 기능에 대해 더 유연합니다.
  2. 레이어 당 단일 바이어스 노드.
  3. 모든 숨겨진 레이어 및 입력 레이어에 추가-각주

석사 논문 (예 : 59 페이지) 에서 두 번의 실험에서 , 나는 첫 번째 레이어에 바이어스가 중요 할 수 있다는 것을 알았습니다. 그러나 특히 완전히 연결된 레이어에서 큰 역할을하지 않는 것 같습니다. 그러므로 마지막 층이 아닌 처음 몇 층에 그것들을 가질 수 있습니다. 간단히 네트워크를 훈련시키고 바이어스 노드의 가중치 분포를 플로팅하고 가중치가 0에 너무 가까워 보인다면 정리하십시오.

이것은 네트워크 아키텍처 / 데이터 세트에 크게 의존 할 수 있습니다.


바이어스 노드에 이전 레이어에서 연결된 화살표가 있습니까? 또는 값 "1"에 활성화 된 가중치 합계의 가중치를 곱하여 다음 계층에 기여합니다. 이에 대한 답변은 시간을 절약 할 수 있습니다. 도와주세요
krupesh Anadkat

1
바이어스는 다음 레이어 활성화에 추가 된 숫자입니다. 그것을 시각화하는 한 가지 방법 1은 이전 레이어에서 일정한 값 을 가지며 다음 레이어 뉴런 각각에 대해 하나의 가중치 (하나의 바이어스 값)를 갖는 것입니다.
마틴 토마

2

신경망의 맥락에서, 배치 정규화 는 현재 현명한 "바이어스 노드"를 만들기위한 최고의 표준입니다. 뉴런의 바이어스 값을 고정하는 대신 뉴런 입력의 공분산을 조정합니다. 따라서 CNN에서는 컨볼 루션 레이어와 완전히 연결된 다음 레이어 (예 : ReLus) 사이에 배치 정규화를 적용합니다. 이론적으로 완전히 연결된 모든 레이어는 일괄 정규화의 이점을 얻을 수 있지만 실제로는 각 일괄 정규화에 고유 한 매개 변수가 있으므로 구현에 비용이 많이 듭니다.

왜, 대부분의 답변은 이미 입력이 활성화를 극도로 추진할 때 특히 뉴런이 포화 기울기에 영향을받는다고 설명했습니다. ReLu의 경우 왼쪽으로 밀려 0의 기울기가 나타납니다. 일반적으로 모델을 학습 할 때는 먼저 신경망에 대한 입력을 정규화합니다. 배치 정규화는 신경망 내부 의 레이어 간 입력을 정규화하는 방법입니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.