비선형성(Non-Linearity)과 편향(Bias)의 의미와 필요성
# Non-Linearity라는 말의 의미와 그 필요성은? Bias는 왜 있는 것인가?
선형 함수: 직선 1개로 그릴 수 있는 함수. y = ax+b의 형태.
비선형 함수: 직선 1개로 그릴 수 없는 함수. sigmoid나 ReLU 같은 함수.
신경망에서는 활성화 함수로 비선형 함수를 써야 한다. 활성화 함수로 선형 함수를 쓰면 층을 아무리 깊게 해봤자 'hidden layer가 없는 신경망'과 다를게 없다. 즉, 활성화 함수로 선형 함수를 쓰면 신경망의 층을 깊게하는 의미가 없어진다. 활성화 함수가 h(x) = cx인 경우와 h(x) = ax+b인 경우를 예시로 들어보자.
따라서 층을 쌓는 혜택을 얻고 싶다면 활성화 함수를 비선형 함수로 써야 한다. 즉, 우리가 활성화 함수를 쓰는 이유는 모델의 비선형성을 증가시켜, 기존 특징 공간을 더 좋은 특징 공간으로 변환해 선형 분류가 쉬워지도록 하는 것이다.
즉, 데이터가 가지고 있는 특징 공간을 선형 분류에 더 유리하도록 변환해준다는 것이 활성화 함수의 의의이다. XOR 문제 같은 것도 원래는 선형 분류가 불가능한데, XOR 데이터들이 활성화 함수를 지나면 그 결괏값들이 선형 분류가 되도록 매핑된다.
더 쉽게 말하면, 분류 모델을 만든다고 했을 때 구분선이 선형이 되지 않는 경우가 훨씬 많다. 이때 선형 모델들만 조합하여 분류 모델을 만들면 잘못 분류하는 경우가 많아지므로 성능이 떨어진다. 이러한 문제를 해결하기 위해 비선형성을 부여하고, 그로써 더욱 정교한 구분선을 찾도록 훈련한다.
Bias(편항)는 활성화 함수의 '위치'를 바꿀 수 있다. 즉, 활성화 함수에 입력값 x가 들어왔을 때 활성화된 값 y를 0또는 1을 출력한다고 하자. 그 0, 1을 결정짓는 decision boundary의 위치를 바꿔주는 것이다. 결정적으로, 활성화 함수에 입력되는 Wx+b에서 b, 즉 Bias를 조정함으로써 활성화 함수의 결과로 1을 출력(즉, 활성화)하는 것을 어렵게 할 수도 있고 쉽게 할 수도 있다. 즉 Bias를 이용해 활성화 함수의 동작 기준을 바꿀 수 있다.
f(x) = 1 ... if W*x+b >= 0
= 0 ... if W*x+b <= 0 (보는 바와 같이 f(x)는 비선형 함수)
위와 같은 활성화 함수 f(x)에서 입력값인 W*x+b의 b가 큰 양수면 활성화되기 쉬우나(즉 1이 되기 쉬우나), 큰 음수면 활성화되기 어렵다(즉 0이 되기 쉽다).