활성화 함수(Activation function)
- 은닉층과 출력층의 뉴런에서 출력값을 결정하는 함수
- 비선형 함수
- 활성화 함수를 사용하는 은닉층 - 비선형층(nonlinear layer)
왜 활성화 함수로 비선형 함수를 사용해야하는가?
- 선형 함수로 은닉층을 여러번 추가하더라도 1회 추가한 것과 차이 없음
- ex) 활성화 함수 f(x) = wx, y(x) = f(f(f(x))) = wwwx = kx
- 선형 함수 층을 사용하지 않겠다는 건 아니다!
- 선형 함수 층을을 비선형 층들과 함께 인공신경망의 일부로 추가하는 경우도 있음
-> 학습 가능한 가중치가 새로 생긴다는 점에서 의미 있음
- 선형 함수를 사용한 층을 활성화 함수를 사용하는 은닉층과 구분
- > 선형층(linear layer) or 투사층(projection layer)
대표적인 활성화 함수들
계단함수
- 계단 함수는 거의 사용되지 않음
- 퍼셉트론 배울 때 접하게 되는 활성화 함수
시그모이드 함수
- 0~1의 값으로 출력 : 확률로 해석 가능
- 주로 이진 분류를 위해 출력층에서 사용
- 은닉층에서의 사용은 지양됨(기울기 소실 문제 때문)
하이퍼볼릭탄젠트 함수
- 입력값을 -1과 1사이의 값으로 변환
- 미분했을 때 최대값은 1 -> 시그모이드보다 크기 때문에 시그모이드보다 기울기 소실 증상이 덜 하다
- 은닉층에서 시그모이드 함수보다 선호
렐루 함수
- 인공 신경망의 은닉층에서 가장 인기있는 함수
- f(x)= max(0,x)
- 음수 입력하면 0 출력, 양수 입력하면 그대로 반환
- 연산 속도 빠름
- 딥러닝 은닉층에서 시그모이드 함수보다 훨씬 더 잘 작동
- 입력값이 음수면 기울기(미분값)도 0이 됨. 뉴런이 다시 회생하기 매우 어려움 - > 죽은 렐루 문제
리키 렐루 함수
- 죽은 렐루를 보완하기 위한 ReLU의 변형 함수들 중 하나
- 입력값이 음수일 경우 0 이 아니라 0.0001과 같은 매우 작은 수를 반환
- f(x) = max(ax,x)
- a : 하이퍼파라미터, 일반적으로 0.01. 입력값이 음수일 떄의 기울기.
소프트맥스 함수
- 0~1의 값으로 출력 : 확률로 해석 가능
- 시그모이드 함수처럼 출력층에서 주로 사용
- 다중 클래스 분류 문제에 주로 사용됨
- 소프트맥스 함수를 적용해도 각 원소의 대소관계는 변하지 않음
: 지수함수가 단조증가함수 이기 때문.
예를들어, 소프트맥스 함수의 입력값중 가장 큰 원소가 2번째 원소라면 출력값중에서도 가장 큰 원소는 2번째 원소임.
결과적으로 신경망으로 분류할 때는 출력층의 소프트맥스 함수는 생략 가능
현업에서도 지수함수계산에 드는 자원낭비를 줄이고자 출력층의 소프트맥스 함수는 생략하는 것이 일반
과적합(Overfitting)
- 훈련데이터에 대한 정확도는 높아도 새로운 데이터(검증,테스트 데이터)에 대해서는 제대로 동작 X
과적합을 막는 방법들
- 데이터 양 늘리기
- 데이터 양이 적으면 특정 패턴이나 노이즈 까지 암기하게 되므로 과적합 확률 올라감
- 데이터 양을 늘릴수록 데이터의 일반적인 패턴을 학습하여 과적합 방지
- 데이터 증식 : 기존의 데이터를 의도적으로 조금 변형하고 추가하여 데이터 양 늘리기
- 데이터 증식은 이미지에 많이 사용 됨
- 역번역 : 텍스트 데이터를 데이터 증강하는 방법으로 번역후 재번역하여 새로운 데이터 생성
- 역번역은 텍스트 데이터에 많이 사용 됨
- 모델의 복잡도 줄이기
- 인공 신경망에서 모델의 복잡도는 은닉층의 수, 매개변수의 수
- 복잡한 모델이 간단한 모델보다 과적합될 가능성이 높음
- 가중치 규제 적용
- 가중치 w의 값들은 0 또는 0에 가까이 작아지게 함
- 어떤 특성들은 모델을 만들 때 거의 사용되지 않게됨
- 드롭아웃
- 학습 과정에서 신경망의 일부를 사용하지 않는 방법
- 드롭아웃은 학습 시에만 사용. 예측 시에는 사용하지 않는 것이 일반적
- 학습 시 특정 뉴런 혹은 조합에 너무 의존적이게 되는 걸 방지
- 매번 랜덤선택으로 특정 뉴런들을 사용하지 않으므로 다른 신경망들을 앙상블하여 사용하는 것 같은 효과
기울기 소실(Gradient Vanishing)
- 역전파 과정에서 입력층으로 갈 수록 기울기가 점차적으로 작아지는 현상
- 가중치들이 제대로 업데이트 되지 않음
- 시그모이드 함수는 주황색 구간에서 미분값이 0에 가까운 아주 작은 값
- 초록 구간에서도 최대 미분값은 0.25
- 시그모이드 함수를 활성화 함수로 하는 인공 신경망의 층을 쌓는다면?
- 역전파 과정에서 0에 가까운 값이 누적해서 곱해지게 되면, 앞단에는 기울기(미분값)가 잘 전달 안됨
- 이러한 현상을 기울기 소실
- 역전파 과정에서 전파 시킬 기울기가 점차 사라져서 입력층 방향으로 갈 수록 제대로 역전파가 되지 않음
'Python > DL' 카테고리의 다른 글
CNN 이해하기 (2) (0) | 2023.05.08 |
---|---|
CNN 이해하기 (1) (0) | 2023.05.02 |
딥러닝의 학습 방법 (0) | 2023.03.19 |
퍼셉트론 , ANN vs DNN (0) | 2023.03.19 |
tensorflow 설치 과정에서 오류 해결 (0) | 2023.02.08 |