그래디언트 디센트와 역 전파 알고리즘을 알고 있습니다. 내가 얻지 못하는 것은 언제 바이어스를 사용하는 것이 중요하며 어떻게 사용합니까?
예를 들어 AND
함수를 매핑 할 때 2 개의 입력과 1 개의 출력을 사용할 때 올바른 가중치를 제공하지 않지만 3 개의 입력 (1 중 하나는 바이어스 임)을 사용할 때 올바른 가중치를 부여합니다.
그래디언트 디센트와 역 전파 알고리즘을 알고 있습니다. 내가 얻지 못하는 것은 언제 바이어스를 사용하는 것이 중요하며 어떻게 사용합니까?
예를 들어 AND
함수를 매핑 할 때 2 개의 입력과 1 개의 출력을 사용할 때 올바른 가중치를 제공하지 않지만 3 개의 입력 (1 중 하나는 바이어스 임)을 사용할 때 올바른 가중치를 부여합니다.
답변:
편견은 거의 항상 도움이된다고 생각합니다. 실제로 바이어스 값을 사용하면 활성화 기능을 왼쪽 또는 오른쪽으로 옮길 수 있으며 이는 성공적인 학습에 중요 할 수 있습니다.
간단한 예를 보는 것이 도움이 될 수 있습니다. 바이어스가없는이 1 입력 1 출력 네트워크를 고려하십시오.
네트워크의 출력은 입력 (x)에 가중치 (w 0 ) 를 곱하고 결과를 일종의 활성화 함수 (예 : 시그 모이 드 함수)를 통해 전달하여 계산됩니다.
여기서 w는이 네트워크의 다양한 값에 대해, 계산하는 함수 0 :
가중치 w 0을 변경하면 본질적으로 S 자형의 "스티프니스"가 변경됩니다. 유용하지만 x가 2 일 때 네트워크가 0을 출력하도록하려면 어떻게해야합니까? S 자형의 가파른 변화만으로는 실제로 작동하지 않습니다 . 전체 곡선을 오른쪽으로 이동할 수 있기를 원합니다 .
그것이 바로 당신이 할 수있는 편견입니다. 해당 네트워크에 바이어스를 추가하면 다음과 같이됩니다.
... 네트워크의 출력은 sig (w 0 * x + w 1 * 1.0)가됩니다. 다음은 w 1의 다양한 값에 대한 네트워크 출력 결과입니다 .
w 1 의 가중치가 -5 이면 곡선이 오른쪽으로 이동하여 x가 2 일 때 0을 출력하는 네트워크를 가질 수 있습니다.
그냥 내 두 센트를 추가합니다.
바이어스가 무엇인지 이해하는 간단한 방법 : 선형 함수 의 상수 b 와 다소 유사합니다.
y = 도끼 + b
그것은 데이터에 더 잘 맞도록 라인을 위아래로 움직일 수있게합니다. b 가 없으면 선은 항상 원점 (0, 0)을 통과하므로 적합하지 않을 수 있습니다.
이 스레드는 실제로 내 프로젝트를 개발하는 데 도움이되었습니다. 다음은 2 변수 회귀 문제에서 바이어스 단위가 있거나없는 단순한 2 계층 피드 포워드 신경망의 결과를 보여주는 몇 가지 추가 그림입니다. 가중치는 무작위로 초기화되며 표준 ReLU 활성화가 사용됩니다. 필자의 결론에 따르면 바이어스없이 ReLU 네트워크는 (0,0)에서 0에서 벗어날 수 없습니다.
ANN의 훈련 중에 두 가지 다른 종류의 매개 변수, 가중치 및 활성화 기능의 값을 조정할 수 있습니다. 이는 실용적이지 않으며 매개 변수 중 하나만 조정해야하는 경우 더 쉽습니다. 이 문제에 대처하기 위해 바이어스 뉴런이 발명되었습니다. 바이어스 뉴런은 한 레이어에 있고 다음 레이어의 모든 뉴런에 연결되어 있지만 이전 레이어에는 없습니다. 항상 1을 방출합니다. 바이어스 뉴런이 1을 방출하므로 바이어스 뉴런에 연결된 가중치가 직접 추가됩니다. 활성화 함수의 t 값과 마찬가지로 다른 가중치의 합 (수식 2.1). 1
그것이 비현실적인 이유는 무게와 값을 동시에 조정하기 때문에 무게를 변경하면 이전 데이터 인스턴스에 유용한 값의 변화를 중화시킬 수 있기 때문에 값을 변경하지 않고 바이어스 뉴런을 추가하면 레이어의 동작을 제어 할 수 있습니다.
또한 바이어스를 사용하면 단일 신경망을 사용하여 유사한 사례를 나타낼 수 있습니다. 다음 신경망으로 표시되는 AND 부울 함수를 고려하십시오.
(출처 : aihorizon.com )
단일 퍼셉트론을 사용하여 많은 부울 함수를 나타낼 수 있습니다.
예를 들어, 부울 값을 1 (true) 및 -1 (false)로 가정하면 AND를 구현하기 위해 2 입력 퍼셉트론을 사용하는 한 가지 방법은 가중치 w0 = -3을 설정하고 w1 = w2 = .5. 이 퍼셉트론은 임계 값을 w0 = -.3으로 변경하여 OR 함수를 나타내도록 만들 수 있습니다. 실제로 AND 및 OR은 m-of-n 함수의 특수한 경우로 볼 수 있습니다. 즉, 퍼셉트론에 대한 n 개의 입력 중 m 개 이상이 참이어야하는 함수입니다. OR 함수는 m = 1에 해당하고 AND 함수는 m = n에 해당합니다. 모든 입력 가중치를 동일한 값 (예 : 0.5)으로 설정 한 다음 그에 따라 임계 값 w0을 설정하여 퍼셉트론을 사용하여 모든 m-of-n 함수를 쉽게 표현할 수 있습니다.
퍼셉트론은 모든 기본 부울 함수 AND, OR, NAND (1 AND) 및 NOR (1 OR)을 나타낼 수 있습니다. 머신 러닝-톰 미첼)
임계 값은 바이어스이고 w0 은 바이어스 / 임계 값 뉴런과 관련된 가중치입니다.
편향은 NN
용어 가 아니라 고려해야 할 일반적인 대수학 용어입니다.
Y = M*X + C
(직선 방정식)
그렇다면 C(Bias) = 0
선은 항상 원점을 통과 (0,0)
하고 하나의 매개 변수, 즉 M
기울기 인 매개 변수에만 의존 하므로 게임 할 것이 적습니다.
C
이 편향은 임의의 수를 취하고 그래프를 이동하는 활동이 있으므로 더 복잡한 상황을 나타낼 수 있습니다.
로지스틱 회귀 분석에서 대상의 예상 값은 링크 함수에 의해 변환되어 해당 값을 단위 간격으로 제한합니다. 이런 식으로 모델 예측은 다음과 같이 주요 결과 확률로 볼 수 있습니다 . Wikipedia의 Sigmoid 함수
이것은 뉴런을 켜고 끄는 NN 맵의 최종 활성화 레이어입니다. 또한 바이어스는 역할을 수행하며 곡선을 유연하게 이동하여 모델을 매핑하는 데 도움이됩니다.
바이어스가없는 신경망의 레이어는 입력 벡터와 행렬의 곱에 지나지 않습니다. (출력 벡터는 정규화와 나중에 ANN에서 사용하기 위해 S 자형 함수를 통과 할 수 있지만 중요하지는 않습니다.)
이것은 선형 함수를 사용하므로 모든 0의 입력이 항상 모든 0의 출력에 매핑됨을 의미합니다. 이는 일부 시스템에 적합한 솔루션 일 수 있지만 일반적으로 너무 제한적입니다.
치우침을 사용하면 입력 공간에 다른 차원을 효과적으로 추가 할 수 있습니다. 입력 공간에는 항상 값 1이 사용되므로 입력 벡터가 모두 0이되는 것을 피할 수 있습니다. 훈련 된 웨이트 매트릭스는 의심 할 필요가 없기 때문에 일반성을 잃지 않으므로 이전에 가능한 모든 값으로 매핑 할 수 있습니다.
2D ANN :
AND 또는 OR (또는 XOR) 함수를 재생할 때와 같이 2 차원을 1 차원으로 매핑하는 ANN의 경우 신경망을 다음과 같이 생각할 수 있습니다.
2D 평면에서 입력 벡터의 모든 위치를 표시합니다. 따라서 부울 값의 경우 (-1, -1), (1,1), (-1,1), (1, -1)을 표시하려고합니다. ANN이 지금하는 일은 양의 출력을 음의 출력 값에서 분리하여 2D 평면에 직선을 그리는 것입니다.
치우침이 없으면이 직선은 0을 통과해야하지만 치우침이 있으면 어디서나 자유롭게 배치 할 수 있습니다. 따라서 (1, -1) 과 (-1,1)을 모두 부정적인면에 넣을 수 없기 때문에 바이어스가 없으면 AND 함수에 문제가 있다는 것을 알 수 있습니다 . (이들은되지 못할 에 라인.) 문제는 OR 함수와 동일하다. 그러나 편향으로 선을 그리는 것은 쉽습니다.
이 상황에서 XOR 기능은 편향으로도 해결할 수 없습니다.
뉴런 무게의 수정만으로는 평형 / 제로 교차점이 아니라 전달 함수 의 모양 / 곡률 을 조작하는 역할 만합니다 .
바이어스 뉴런을 도입 하면 모양 / 곡률을 변경하지 않고 입력 축을 따라 전달 함수 곡선을 수평 (왼쪽 / 오른쪽)으로 이동할 수 있습니다. 이를 통해 네트워크는 기본값과 다른 임의의 출력을 생성 할 수 있으므로 특정 요구에 맞게 입력-출력 매핑을 사용자 정의 / 전환 할 수 있습니다.
그래픽 설명은 여기를 참조하십시오 : http://www.heatonresearch.com/wiki/Bias
이 모든 것을 아주 많이 잃어 버리고 나머지는 알지 못하는 것을 추가하기 만하면됩니다.
이미지로 작업하는 경우 실제로는 바이어스를 전혀 사용하지 않는 것이 좋습니다. 이론적으로는 네트워크가 그림이 어둡거나 밝고 생생한 지 여부와 같이 데이터 크기와 더 독립적입니다. 그리고 인터넷은 데이터 내부의 상대성을 연구함으로써 그 일을하는 법을 배우게 될 것입니다. 많은 현대 신경망이 이것을 활용합니다.
편향이있는 다른 데이터의 경우 중요 할 수 있습니다. 처리하는 데이터 유형에 따라 다릅니다. 정보가 크기가 변하지 않는 경우 --- [1,0,0.1]을 입력하는 것이 [100,0,10]을 입력하는 것과 같은 결과를 가져 오면 편향없이 더 나은 결과를 얻을 수 있습니다.
바이어스는 웨이트를 회전시킬 각도를 결정합니다.
2 차원 차트에서 가중치와 바이어스는 결과의 결정 경계를 찾는 데 도움이됩니다. AND 함수를 빌드해야한다고 가정하면 input (p) -output (t) 쌍은
{p = [0,0], t = 0}, {p = [1,0], t = 0}, {p = [0,1], t = 0}, {p = [1,1] , t = 1}
이제 결정 경계를 찾아야합니다. 아이디어 경계는 다음과 같아야합니다.
보다? W는 우리의 경계에 수직입니다. 따라서 W는 경계 방향을 결정했다고합니다.
그러나 처음에는 올바른 W를 찾기가 어렵습니다. 대부분 원래 W 값을 임의로 선택합니다. 따라서 첫 번째 경계는 다음과 같습니다.
이제 경계는 y 축에 대한 pareller입니다.
경계를 어떻게 바꾸고 싶습니까?
W를 바꿔서
따라서 학습 규칙 함수를 사용합니다. W '= W + P :
W '= W + P는 W'= W + bP와 같지만 b는 1입니다.
따라서 b (bias)의 값을 변경하여 W '와 W 사이의 각도를 결정할 수 있습니다. 이것이 "ANN의 학습 규칙"입니다.
Martin T. Hagan / Howard B. Demuth / Mark H. Beale, 신경망 설계 , 4 장 "Perceptron Learning Rule"을 읽을 수도 있습니다 .
특히 Nate의 답변 , zfy의 답변 및 Pradi의 답변 이 훌륭합니다.
간단한 용어로, 편향 수 있도록 더 많은 변화 무게 배울 수 / 저장 ( 사이드 노트 : 때때로 일부 임계 값을 주어). 어쨌든 더 많은 변형 은 바이어스 가 모델의 학습 / 저장된 가중치에 입력 공간을 더 풍부하게 표현 한다는 것을 의미합니다 . (더 나은 가중치가 신경망의 추측 력을 향상시킬 수있는 곳)
예를 들어, 학습 모델에서 가설 / 추측은 바람직하게는 일부 입력 작업, 아마도 일부 분류 작업에서 일부 y = 0 또는 y = 1로 제한됩니다. 일부 x = (0,1)의 경우 y = 1입니다. (가설 / 결과의 조건은 위에서 언급 한 임계 값입니다. 예제에서는 입력 X의 일부 값 X 입력의 Nate의 단일 값 x 입력 대신 X를 입력합니다.
바이어스 를 무시 하면 많은 입력 값이 동일한 가중치로 표시 될 수 있습니다 (예 : 학습 된 가중치는 대부분 원점에 가깝게 발생합니다 (0,0)). 대신 많은 많은 더 좋은 무게의 더 나은 바이어스 배울 수있다. (제대로 배운 무게가 가난한 추측 또는 신경망의 추측 전력의 감소로 이어질 경우)
따라서 모형이 원점에 가까울뿐만 아니라 임계 값 / 결정 경계 내부의 가능한 많은 위치에서 학습하는 것이 가장 좋습니다. 편향으로 우리는 원점에 가까운 자유도를 가능하게 할 수 있지만 원점의 바로 가까운 지역에만 국한되지는 않습니다.
@zfy 설명에서 확장 중 하나의 입력, 하나의 뉴런, 하나의 출력에 대한 방정식은 다음과 같아야합니다.
y = a * x + b * 1 and out = f(y)
여기서 x는 입력 노드의 값이고 1은 바이어스 노드의 값입니다. y는 직접 출력하거나 함수, 종종 S 자형 함수로 전달 될 수 있습니다. 또한 바이어스는 일정 할 수 있지만 모든 것을 단순하게 만들기 위해 항상 1을 선택합니다 (아마도 @zfy가 보여주지 않고 설명하지 않은 것이 일반적 일 것입니다).
네트워크가 데이터에 맞게 계수 a와 b를 배우려고합니다. 따라서 요소를 추가하면 b * 1
더 많은 데이터에 더 잘 맞는 이유를 알 수 있습니다. 이제 경사와 절편을 모두 변경할 수 있습니다.
입력 값이 여러 개인 경우 방정식은 다음과 같습니다.
y = a0 * x0 + a1 * x1 + ... + aN * 1
방정식은 여전히 하나의 뉴런, 하나의 출력 네트워크를 나타냅니다. 더 많은 뉴런이있는 경우 계수 행렬에 하나의 차원을 추가하고 모든 노드에 입력을 다중화하고 각 노드 기여를 요약합니다.
벡터화 된 형식으로 다음과 같이 쓸 수 있습니다.
A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT
즉, 하나의 배열에 계수를 넣고 다른 배열에 (입력 + 바이어스) 두 개의 벡터의 내적으로 원하는 솔루션을 얻습니다 (모양이 정확하려면 X를 조옮김해야합니다 .XT에 'X transposed'을 썼습니다)
결과적으로 실제로 입력과 독립적 인 출력 부분을 나타내는 하나 이상의 입력 인 바이어스를 볼 수도 있습니다.
간단한 방법으로 생각하면, y = w1 * x 가 있고 여기서 y 는 출력이고 w1 은 가중치입니다 x = 다음 y = w1 * x 는 0 과 같은 조건을 상상 하십시오. 무게를 업데이트하려면 에 의해 많은 변화를 어떻게 계산에 DELW = 대상-Y 대상이 경우, 대상 출력이다 'DELW이' 이후 변경되지 않습니다 Y는 0.So으로 계산하면 몇 가지 여분의 가치를 추가 할 수 있다면 가정이 도움이 될 것입니다 Y를 = (W1) * x + w0 * 1 , bias = 1 및 무게를 조정하여 올바른 바이어스를 얻을 수 있습니다. 아래 예를 고려하십시오.
선 측면에서 기울기-절편은 특정 형태의 선형 방정식입니다.
y = mx + b
이미지를 확인
여기 b는 (0,2)
당신이 그것을 (0,3)으로 늘리고 싶다면 바이어스 값이 될 b의 값을 변경하여 어떻게 할 것입니까?
내가 연구 한 모든 ML 서적에 대해, W는 항상 두 뉴런 사이의 연결 지수로 정의되는데, 이는 두 뉴런 사이의 연결성이 높을수록 신호가 발사 뉴런에서 대상 뉴런으로 더 강하게 전달되거나 Y = w * X는 뉴런의 생물학적 특성을 유지하기 위해 1> = W> = -1을 유지해야하지만 실제 회귀에서는 W가 | W | > = 1 뉴런이 작동하는 방식과 상충되므로 결과적으로 W = cos (theta)를 제안하는 반면 1> = | 코스 (쎄타) | Y = a * X = W * X + b이고 a = b + W = b + cos (theta)이고 b는 정수입니다.
신경망에서 :
편향이 없으면 입력 레이어의 가중치 합계 만 고려하여 뉴런을 활성화하지 못할 수 있습니다. 뉴런이 활성화되지 않은 경우이 뉴런의 정보는 나머지 신경망을 통과하지 않습니다.
편견의 가치는 학습 가능합니다.
효과적으로 바이어스 = — 임계 값입니다. 바이어스가 뉴런이 1을 출력하는 것이 얼마나 쉬운 지 생각할 수 있습니다. 정말 큰 바이어스를 사용하면 뉴런이 1을 출력하는 것이 매우 쉽지만 바이어스가 매우 음이면 어려워집니다.
요약 : 바이어스는 활성화 기능이 트리거되는 값을 제어하는 데 도움이됩니다.
자세한 내용 은이 비디오를 따르십시오
더 유용한 링크는 거의 없습니다 :
a
그래디언트 a
가 항상 일정 할 때 바이어스는 어떻게 학습 될 수 있습니까?
일반적으로 머신 러닝에서 우리는이 기본 공식 바이어스-차이 상충 관계 를 가지고 있습니다. 작은 편견이 많은 도움이 될 수 있습니다. 바이어스가 제곱 인 Bias-Variance Tradeoff 위의 공식을 고려하면 작은 바이어스를 도입하면 분산이 크게 줄어들 수 있습니다. 따라서 큰 차이와 과적 합 위험이있을 때 편견을 도입하십시오.