juuuding

[Advanced Learning Algorithms] Neural network training - Activation Functions 본문

인공지능/코세라 머신러닝 특화과정

[Advanced Learning Algorithms] Neural network training - Activation Functions

jiuuu 2023. 11. 29. 00:40

 Alternatives to the sigmoid activation

 

 이때까지 활성화 함수로 sigmoid 함수를 사용해왔다. 하지만 다른 활성화 함수를 사용하면 조금 더 강력한 neural network를 만들 수 있다. 

 

[Demand Prediction Example]

 상품의 수요를 예측하는 예제로 생각해보자. unit2의 awareness 값을 안다/모른다와 같이 binary하게 나누지 말고 "the probability of awareness"를 측정하여 0 이상의 값으로 결과를 내고자 하면, a1_2의 activation function을 sigmoid가 아닌 ReLU로 설정하면 된다. ReLU에서는 0과 z 값 중 가장 최대의 값을 결과 값으로 선택하기 때문에, ReLU를 적용한 g(z)는 항상 0 이상이다. 

 

sigmoid & ReLU

 

[Examples of Activation Functions]

 

 

(1) Linear activation function

 이 함수는 "no activation function"이라고도 부른다. z=wx+b면 다른 함수를 적용하지 않고 그대로 wx+b를 결과로 내는 함수이다. g(z)=z로 표현할 수 있다.

 

 

(2) Sigmoid

 

 

(3) ReLU

 

 

 

 Choosing activation functions

 

[Output Layer]

 output layer의 activation function을 고르는 방법에 대해 알아보자. output layer는 결과 값을 내는 layer인만큼 결과의 형태/의미에 따라 활성화 함수를 선택하면 된다. 

 

(1) Sigmoid - Binary classification

 sigmoid 함수는 binary classification에 사용하면 된다. 즉 결과 값이 0/1과 같이 두 값 중 하나로 결정될 때 사용하면 된다는 것이다. 

 

(2) Linear activation function - regression

 linear activation 함수는 결과 값이 음수 혹은 양수로 나올 때 적용하면 된다. 예를 들어 오늘의 주식가와 비교하여 내일의 주식가를 예측할 때 사용할 수 있다. 

 

(3) ReLU - regression

 ReLU 함수는 결과 값이 오직 0이상만 나올 수 있을 때 적용하면 된다. 예를 들어 집 값 예측처럼 z값이 음수가 될 수 없을 때 사용한다. 

 

[Hidden Layer]

  hidden layer의 activation function을 고르는 방법에 대해 알아보자. 

 

(1) Sigmoid 

 sigmoid를 hidden layer에 활성화 함수로 적용하면 아래의 그래프처럼 z값이 크거나 작을 때, g(z)가 평평한 부분에서 gradient descent의 속도가 느려진다. 

 

 

(2) ReLU

 위에서 말했듯이 g(z)가 평평한 부분에서 gradient descent가 느려진다고 했는데 ReLU는 sigmoid와 달리 평평한 부분이 한 곳이므로 sigmoid보다 좀 더 낫다. 그렇기 때문에 대부분 hidden layer에서는 ReLU가 흔하게 사용된다. 

 

 

 이처럼 현재 ReLU를 활성화 함수로 많이 쓰지만, binary classification 문제일 때는 output layer에 sigmoid를 적용한다. 

 

 

 

 Why do we need activation functions?

 

[Why do we need activation functions?]

 만약 우리가 g(z)를 모두 linear로 설정한다면, 즉 neural network의 unit에 모두 linear regression을 적용하면 neural network와 그냥 linear regression을 적용한 것에 차이가 없어진다. 

 

neural network
just linear regression

 

[Linear Example]

 만약 layer의 unit에 linear regression function을 적용하고 입력으로 하나의 feature만 넣으면 다음과 같은 식이 수행된다. 

 

 

 즉 neural network를 수행해도 그냥 linear regression을 적용하는 것과 똑같다는 결과를 얻게 된다. 만약 hidden layer에 모두 linear을 적용하고 마지막 output layer에 sigmoid를 적용하면 단순한 logistic regression과 같은 결과를 얻는다. 즉, neural network를 적용한 의미가 없게 된다. 그렇기 때문에 hidden layer에 linear activation을 사용해서는 안되고 ReLU를 사용하여야 한다.