Program Tip

신경망에서 편향의 역할

programtip 2020. 9. 29. 18:29
반응형

신경망에서 편향의 역할


저는 Gradient Descent와 Back-propagation Theorem을 알고 있습니다. 내가 이해하지 못하는 것은 : 편향을 사용하는 것이 언제 중요하며 어떻게 사용합니까?

예를 들어 AND함수를 매핑 할 때 입력 2 개와 출력 1 개를 사용하면 올바른 가중치를 제공하지 않지만 3 개의 입력 (그 중 1 개는 편향)을 사용하면 올바른 가중치를 제공합니다.


편견은 거의 항상 도움이된다고 생각합니다. 실제로 편향 값을 사용하면 활성화 함수를 왼쪽 또는 오른쪽으로 이동할 수 있으며 이는 성공적인 학습에 중요 할 수 있습니다.

간단한 예를 살펴보면 도움이 될 것입니다. 바이어스가없는 다음 1 입력, 1 출력 네트워크를 고려하십시오.

단순 네트워크

네트워크의 출력은 입력 (x)에 가중치 (w 0 ) 를 곱하고 결과를 일종의 활성화 함수 (예 : 시그 모이 드 함수)를 통해 전달하여 계산됩니다.

다음은 w 0의 다양한 값에 대해이 네트워크가 계산하는 함수입니다 .

다른 w0 가중치가 주어진 경우 네트워크 출력

가중치 w 0을 변경하면 본질적으로 시그 모이 드의 "가파름"이 변경됩니다. 유용하지만 x가 2 일 때 네트워크가 0을 출력하도록하려면 어떻게해야합니까? 시그 모이 드의 가파른 정도를 변경하는 것만으로는 효과가 없습니다 . 전체 곡선을 오른쪽으로 이동할 수 있기를 원합니다 .

그것이 바로 편견이 당신에게 허용하는 것입니다. 다음과 같이 해당 네트워크에 편향을 추가하면 :

편향이있는 단순 네트워크

... 그런 다음 네트워크의 출력은 sig (w 0 * x + w 1 * 1.0)이됩니다. w 1의 다양한 값에 대한 네트워크의 출력은 다음과 같습니다 .

다른 w1 가중치가 주어진 경우 네트워크 출력

w 1에 대해 가중치가 -5 이면 곡선이 오른쪽으로 이동하여 x가 2 일 때 0을 출력하는 네트워크를 가질 수 있습니다.


2 센트 만 더하면됩니다.

편향이 무엇인지 이해하는 더 간단한 방법 : 선형 함수 의 상수 b 와 유사합니다.

y = 도끼 + b

데이터와 함께 예측에 더 잘 맞도록 선을 위아래로 이동할 수 있습니다. b없으면 선은 항상 원점 (0, 0)을 통과하고 적합하지 않을 수 있습니다.


ANN 훈련 중에 두 가지 다른 종류의 매개 변수, 활성화 기능의 가중치 및 값을 조정할 수 있습니다. 이것은 비실용적이며 매개 변수 중 하나만 조정해야하는 경우 더 쉽습니다. 이 문제에 대처하기 위해 바이어스 뉴런이 발명되었습니다. 바이어스 뉴런은 하나의 레이어에 있으며 다음 레이어의 모든 뉴런에 연결되어 있지만 이전 레이어에는 없으며 항상 1을 방출합니다. 바이어스 뉴런이 1을 방출하기 때문에 바이어스 뉴런에 연결된 가중치가 직접 추가됩니다. 활성화 함수의 t 값과 마찬가지로 다른 가중치의 합산 (방정식 2.1). 1

비실용적 인 이유는 가중치와 값을 동시에 조정하기 때문에 가중치를 변경하면 이전 데이터 인스턴스에 유용했던 값의 변경을 무력화 할 수 있습니다. 값을 변경하지 않고 편향 뉴런을 추가하면 레이어의 동작을 제어 할 수 있습니다.

또한 편향을 사용하면 단일 신경망을 사용하여 유사한 사례를 나타낼 수 있습니다. 다음 신경망이 나타내는 AND 부울 함수를 고려하십시오.

ANN
(출처 : aihorizon.com )

  • w0b에 해당합니다 .
  • w1x1에 해당합니다 .
  • w2x2에 해당합니다 .

하나의 퍼셉트론을 사용하여 많은 부울 함수를 나타낼 수 있습니다.

예를 들어 부울 값이 1 (참) 및 -1 (거짓)이라고 가정하면 2 입력 퍼셉트론을 사용하여 AND 함수를 구현하는 한 가지 방법은 가중치 w0 = -3 및 w1 = w2 =를 설정하는 것입니다. .5. 이 퍼셉트론은 임계 값을 w0 = -.3으로 변경하여 대신 OR 함수를 나타내도록 만들 수 있습니다. 실제로 AND와 OR는 m-of-n 함수의 특수한 경우로 볼 수 있습니다. 즉, 퍼셉트론에 대한 n 개 입력 중 m 개 이상이 참이어야하는 함수입니다. OR 함수는 m = 1에 해당하고 AND 함수는 m = n에 해당합니다. 모든 m-of-n 함수는 모든 입력 가중치를 동일한 값 (예 : 0.5)으로 설정 한 다음 그에 따라 임계 값 w0을 설정하여 퍼셉트론을 사용하여 쉽게 표현됩니다.

퍼셉트론은 모든 기본 부울 함수 AND, OR, NAND (1 AND) 및 NOR (1 OR)을 나타낼 수 있습니다. 기계 학습-Tom Mitchell)

임계 값은 편향이고 w0 는 편향 / 역치 뉴런과 관련된 가중치입니다.


이 스레드는 내 프로젝트를 개발하는 데 정말 도움이되었습니다. 다음은 2 변수 회귀 문제에서 편향 단위가 있거나없는 단순한 2 계층 피드 포워드 신경망의 결과를 보여주는 몇 가지 추가 그림입니다. 가중치는 무작위로 초기화되고 표준 ReLU 활성화가 사용됩니다. 내가 결론을 내리기 전에 대답했듯이 ReLU 네트워크는 (0,0)에서 0에서 벗어날 수 없습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


편향은 NN용어 가 아니라 고려해야 할 일반적인 대수 용어입니다.

Y = M*X + C (직선 방정식)

그렇다면 C(Bias) = 0선은 항상 원점을 통과 할 것입니다. 즉 (0,0), 하나의 매개 변수에만 의존합니다. 즉 M, 기울기 인, 그래서 우리는 할 일이 적습니다.

C, 즉 편향은 임의의 숫자를 취하고 그래프를 이동하는 활동이 있으므로 더 복잡한 상황을 나타낼 수 있습니다.

로지스틱 회귀에서 목표의 예상 값은 링크 함수에 의해 변환되어 값을 단위 간격으로 제한합니다. 이런 식으로 모델 예측은 다음과 같이 주요 결과 확률로 볼 수 있습니다 . Wikipedia의 Sigmoid 함수

이것은 뉴런을 켜고 끄는 NN 맵의 마지막 활성화 계층입니다. 여기에서도 편향이 수행 할 역할이 있으며 모델을 매핑하는 데 도움이되도록 곡선을 유연하게 이동합니다.


편향이없는 신경망의 계층은 입력 벡터와 행렬의 곱에 지나지 않습니다. (출력 벡터는 정규화 및 나중에 다중 계층 ANN에서 사용하기 위해 시그 모이 드 함수를 통과 할 수 있지만 중요하지 않습니다.)

즉, 선형 함수를 사용하고 있으므로 모든 0의 입력은 항상 모든 0의 출력에 매핑됩니다. 이것은 일부 시스템에 대해 합리적인 솔루션 일 수 있지만 일반적으로 너무 제한적입니다.

바이어스를 사용하면 입력 공간에 다른 차원을 효과적으로 추가하고 항상 값 1을 취하므로 모두 0의 입력 벡터를 피하는 것입니다. 훈련 된 가중치 행렬이 예측 적이 지 않아도되므로 일반성을 잃지 않으므로 이전에 가능한 모든 값에 매핑 할 수 있습니다.

2d ANN :

AND 또는 OR (또는 XOR) 함수를 재현 할 때처럼 두 차원을 한 차원에 매핑하는 ANN의 경우 다음을 수행하는 연결 네트워크를 생각할 수 있습니다.

2d 평면에서 입력 벡터의 모든 위치를 표시합니다. 따라서 부울 값의 경우 (-1, -1), (1,1), (-1,1), (1, -1)을 표시하고 싶을 것입니다. 이제 ANN이 수행하는 작업은 2d 평면에 직선을 그려서 양의 출력과 음의 출력 값을 분리하는 것입니다.

편향이 없으면이 직선은 0을 통과해야하는 반면 편향을 사용하면 자유롭게 어디에나 놓을 수 있습니다. 따라서 (1, -1) (-1,1)을 모두 음수 에 둘 수 없기 때문에 편견없이 AND 함수에 문제가 있음을 알 수 있습니다 . (이들은되지 못할 라인.) 문제는 OR 함수와 동일하다. 그러나 편향이 있으면 선을 그리기가 쉽습니다.

이 상황에서 XOR 함수는 편향으로도 풀 수 없습니다.


ANN을 사용할 때 배우려는 시스템의 내부에 대해 거의 알지 못합니다. 편견 없이는 배울 수없는 것도 있습니다. 예를 들어, 다음 데이터를 살펴보십시오 : (0, 1), (1, 1), (2, 1), 기본적으로 x를 1로 매핑하는 함수입니다.

단일 계층 네트워크 (또는 선형 매핑)가있는 경우 솔루션을 찾을 수 없습니다. 그러나 편견이 있으면 사소한 것입니다!

이상적인 설정에서 편향은 또한 모든 포인트를 대상 포인트의 평균에 매핑하고 은닉 뉴런이 해당 포인트와의 차이를 모델링하도록 할 수 있습니다.


뉴런 WEIGHTS의 수정만으로는 전달 함수 모양 / 곡률 을 조작하는 데만 사용되며 평형 / 제로 교차점이 아닙니다 .

바이어스 뉴런을 도입 하면 입력 축을 따라 전달 함수 곡선을 수평 (왼쪽 / 오른쪽)으로 이동하면서 모양 / 곡률을 변경하지 않을 수 있습니다. 이렇게하면 네트워크가 기본값과 다른 임의의 출력을 생성 할 수 있으므로 특정 요구에 맞게 입력-출력 매핑을 사용자 정의 / 이동할 수 있습니다.

그래픽 설명은 여기를 참조하십시오 : http://www.heatonresearch.com/wiki/Bias


이 모든 것에 아주 많이 빠졌고 나머지는 몰랐을 것입니다.

이미지로 작업하는 경우 실제로 편향을 전혀 사용하지 않는 것이 좋습니다. 이론적으로 그렇게하면 사진이 어둡거나 밝고 생생한 지 여부와 같이 네트워크가 데이터 크기에 더 독립적입니다. 그리고 그물은 데이터 내부의 상대성 연구를 통해 그 일을하는 법을 배울 것입니다. 많은 현대 신경망이 이것을 활용합니다.

편향이있는 다른 데이터의 경우 중요 할 수 있습니다. 처리중인 데이터 유형에 따라 다릅니다. 만약 당신의 정보가 크기가 불변이라면 --- [1,0,0.1]을 입력하면 [100,0,10]을 입력하는 것과 같은 결과가 나오면 편견없이 더 나을 수 있습니다.


내 석사 논문 (예 : 59 페이지) 의 몇 가지 실험에서 편향이 첫 번째 레이어에 중요 할 수 있지만 특히 마지막에 완전히 연결된 레이어에서는 큰 역할을하지 않는 것 같습니다.

이는 네트워크 아키텍처 / 데이터 세트에 따라 크게 달라질 수 있습니다.


바이어스는 무게가 회전 할 각도를 결정합니다.

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가 경계의 방향을 결정했다고 말합니다.

However, it is hard to find correct W at first time. Mostly, we choose original W value randomly. Thus, the first boundary may be this: 여기에 이미지 설명 입력

Now the boundary is pareller to y axis.

We want to rotate boundary, how?

By changing the W.

So, we use the learning rule function: W'=W+P: 여기에 이미지 설명 입력

W'=W+P is equivalent to W'=W+bP, while b=1.

Therefore, by changing the value of b(bias), you can decide the angle between W' and W. That is "the learning rule of ANN".

You could also read Neural Network Design by Martin T. Hagan / Howard B. Demuth / Mark H. Beale, chapter 4 "Perceptron Learning Rule"


In particular, Nate’s answer, zfy’s answer, and Pradi’s answer are great.

In simpler terms, biases allow for more and more variations of weights to be learnt/stored... (side-note: sometimes given some threshold). Anyway, more variations mean that biases add richer representation of the input space to the model's learnt/stored weights. (Where better weights can enhance the neural net’s guessing power)

For example, in learning models, the hypothesis/guess is desirably bounded by y=0 or y=1 given some input, in maybe some classification task... i.e some y=0 for some x=(1,1) and some y=1 for some x=(0,1). (The condition on the hypothesis/outcome is the threshold I talked about above. Note that my examples setup inputs X to be each x=a double or 2 valued-vector, instead of Nate's single valued x inputs of some collection X).

If we ignore the bias, many inputs may end up being represented by a lot of the same weights (i.e. the learnt weights mostly occur close to the origin (0,0). The model would then be limited to poorer quantities of good weights, instead of the many many more good weights it could better learn with bias. (Where poorly learnt weights lead to poorer guesses or a decrease in the neural net’s guessing power)

So, it is optimal that the model learns both close to the origin, but also, in as many places as possible inside the threshold/decision boundary. With the bias we can enable degrees of freedom close to the origin, but not limited to origin's immediate region.


Expanding on @zfy explanation... The equation for one input, one neuron, one output should look:

y = a * x + b * 1    and out = f(y)

where x is the value from the input node and 1 is the value of the bias node; y can be directly your output or be passed into a function, often a sigmoid function. Also note that the bias could be any constant, but to make everything simpler we always pick 1 (and probably that's so common that @zfy did it without showing & explaining it).

Your network is trying to learn coefficients a and b to adapt to your data. So you can see why adding the element b * 1 allows it to fit better to more data: now you can change both slope and intercept.

If you have more than one input your equation will look like:

y = a0 * x0 + a1 * x1 + ... + aN * 1

Note that the equation still describes a one neuron, one output network; if you have more neurons you just add one dimension to the coefficient matrix, to multiplex the inputs to all nodes and sum back each node contribution.

That you can write in vectorized format as

A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT

i.e. putting coefficients in one array and (inputs + bias) in another you have your desired solution as the dot product of the two vectors (you need to transpose X for the shape to be correct, I wrote XT a 'X transposed')

So in the end you can also see your bias as is just one more input to represent the part of the output that is actually independent of your input.


To think in simple way,if you have y=w1*x where y is your output and w1 is the weight imagine a condition where x=0 then y=w1*x equals to 0,If you want to update your weight you have to compute how much change by delw=target-y where target is your target output,in this case 'delw' will not change since y is computed as 0.So,suppose if you can add some extra value it will help y=w1*x+w0*1,where bias=1 and weight can be adjusted to get a correct bias.Consider the example below.

In terms of line Slope-intercept is a specific form of linear equations.

y=mx+b

check the image

image

here b is (0,2)

if you want to increase it to (0,3) how will you do it by changing the value of b which will be your bias


For all the ML books I studied, the W is always defined as the connectivity index between two neurons , which means the higher connectivity between two neurons , the stronger the signals will be transmitted from the firing neuron to the target neuron or Y= w * X as a result to maintain the biological character of neurons, we need to keep the 1 >=W >= -1 , but in the real regression, the W will end up with |W| >=1 which contradict with how the Neurons are working, as a result I propose W= cos(theta) , while 1 >=| cos( theta)| , and Y= a * X = W * X + b while a = b + W = b + cos( theta) , b is an integer


In neural networks:

  1. Each Neuron has a bias
  2. You can view bias as threshold ( generally opposite values of threshold)
  3. Weighted sum from input layers + bias decides activation of neuron
  4. Bias increases the flexibility of the model.

In absence of bias, the neuron may not be activated by considering only the weighted sum from input layer. If the neuron is not activated, the information from this neuron is not passed through rest of neural network.

The value of bias is learn-able.

여기에 이미지 설명 입력

Effectively, bias = — threshold. You can think of bias as how easy it is to get the neuron to output a 1 — with a really big bias, it’s very easy for the neuron to output a 1, but if the bias is very negative, then it’s difficult.

in summary : bias helps in controlling the value at which activation function will trigger.

Follow this video for more details

Few more useful links:

geeksforgeeks

towardsdatascience


The term bias is used to adjust the final output matrix as the y-intercept does. For instance, in the classic equation, y = mx + c, if c = 0, then the line will always pass through 0. Adding the bias term provides more flexibility and better generalisation to our Neural Network model.


In general, in machine learning we have this base formula Bias-Variance Tradeoff Because in NN we have problem of Overfitting (model generalization problem where small changes in data leads big changes in model result) and because of that we have big variance, introducing a small bias could help a lot. Considering formula above Bias-Variance Tradeoff , where bias is squared, hence introducing small bias could lead to reducing variance a lot. So, introduce bias, when you have big variance and overfitting danger.


언급 된 답변 외에 다른 점을 추가하고 싶습니다.

바이어스는 우리의 앵커 역할을합니다. 그것은 우리가 그 아래로 가지 않는 일종의 기준선을 가질 수있는 방법입니다. 그래프 측면에서 y = mx + b처럼 생각하면이 함수의 y 절편과 같습니다.

output = 입력에 가중치를 곱하고 바이어스 값을 추가 한 다음 활성화 함수를 적용합니다.

참고 URL : https://stackoverflow.com/questions/2480650/role-of-bias-in-neural-networks

반응형