+) 코드잇 강의 바로가기
본 정리내용은 코드잇 강의를 공부하며 함께 정리한 내용입니다! 더 정확하고 자세한 내용을 공부하기 위해서는 "코드잇 머신러닝 실전 강의를 참고해주세요!"
신경망과 다양한 데이터
- 신경망은 다양항 데이터를 입력으로 받을 수 있는데, 신경망의 뉴런의 수는
어떤 목적의 무엇을 하는가에 따라서
갯수가 달라지게 됩니다!
- Ex) 입력값의 차원이 적으면, 입력층의 뉴런수가 적어도 되고, 이진 분류라면 출력 뉴런이 하나가 될 수 있다. 그리고 또한hidden layer는 보통 이 두개의 layer 사이의 숫자를 갖는다고 한다. 이렇게 뉴런의 수를 정해주는것이 hyper parameter의 일종이고, 이에 따라 뉴런의 성능이 결정된다.
- 주로 입력층의 뉴런의 갯수도 입력 데이터의 차원과 같은 값을 가진다.
신경망과 비선형성
- 로지스틱 회귀(Logisitic Regression)은 식을 정리하고 난 뒤, 특정 값(결정 경계)에 따라 분류를 학습하게 되는데, 이 때 이 경계는 선형적 경계를 가지게 된다.
- 이렇게 되면, 이상과 이하와 같은 단순한 분류를 가지는 데이터값에 학습을 원활하게 할 수 있으나, 복잡한 결정 경계 즉 비선형적(non-linear) 결정 경계를 가진 분류 문제에서 약점을 보인다.
- 하지만, 신경망의 뉴런의 활성화 함수라고 불리는 시그모이드 함수는 비선형 함수를 가지게 되고, 여러가지의 합성함수 꼴로 나타낼 수 있는 신경망의 출력은 최종적으로 전체의 함수는 비선형적 함수를 갖게 된다. 따라서 보다 복잡한 결정경계를 가지게 되며, 여러가지 분류 문제를 효과적으로 해결할 수 있게 된다.
- 따라서 hidden layer에 있는 활성화 함수는 반드시 비선형 함수여야 신경망에서 효과를 얻을 수 있게 된다.
신경망과 활성화 함수(Activation Function)
은닉층의 활성함수
시그모이드 함수
- 식 : σ(z)=1+e−z1
- 특징 : 입력값을 을 0과 1사이의 숫자로 매핑해줌
- 단점 : 기울기가 0에 가깝게 되는 구간이 있어 사라지는 기울기 문제가 (vanishing gradient problem) 생길 위험이 크다. 기울기가 0에 가깝게 되면, 경사하강 속도가 매우 느려지기 때문에 활용성이 낮은 활성함수라고 볼 수 있다.
Tanh함수
- 식 : tanh(z)=ez+e−zez−e−z
- 특징 :
- 입력값을 을 -1과 1사이의 숫자로 매핑해줌
- sigmoid함수의 수학적으로 shift된 형태
- 단점 : 기울기가 0에 가깝게 되는 구간이 있어 사라지는 기울기 문제가 (vanishing gradient problem) 생길 위험이 크다. 기울기가 0에 가깝게 되면, 경사하강 속도가 매우 느려지기 때문에 활용성이 낮은 활성함수라고 볼 수 있다. 단 평균이 0에 수렴하기 때문에 sigmoid함수보다는 더 좋은 성능을 가지고 있다.
ReLU함수
- 식 : σ(z)=max(0,z)
- 특징 :
- 입력값을 0보다 크면 그대로, 0보다 작거나 같으면 0을 리턴하는 함수입니다
- 어떤 것을 써야할지 모를때, default로 ReLU 함수를 활용
- 계산 속도가 매우 빠름
- Vanishing Gradient 문제가 매우 드물게 발생
- 단점 : 음수일 경우에 기울기의 값이 0으로 수렴해서 Vanishing Gradient 문제가 발생할 수 있으나 극히 드물다.
Leaky ReLU함수
- 식 : σ(z)=max(az,z)
- 특징 :
- 입력값을 0보다 크면 그대로, 0보다 작거나 같으면 매우 작은 값을 곱해을 반환하는 함수입니다
- ReLU의 음수일 때의 문제를 보완한 함수
출력층의 활성함수
출력층의 활성함수는 다중 분류가 필요할 때, 이진 분류가 필요할 때, 회귀문제 세가지에 따라서 다른 활성함수가 필요합니다.
시그모이드 함수 :: 이진분류
- 식 : σ(z)=1+e−z1
- 이진 분류일 때 효과적으로 활용할 수 있습니다.
Softmax 함수 :: 다중 분류
- 식 : σ(z)=∑j=1n[l]+ezjezj
- 다중 분류 문제를 활용할 때, sigmoid함수로 확률적인 의미가 분류가 어렵기 때문에 softmax함수를 많이 활용합니다.
선형함수 :: 회귀
- 식 : σ(z)=z
- 회귀일때는 예외적으로 출력층의 활성화 함수를 선형함수를 활용할 수 있습니다.
참고 : 코드잇딥러닝