본문 바로가기
파이토치

[딥러닝 파이토치 교과서] 활성화함수와 손실 함수

by 나연하야 2023. 4. 16.

활성화함수

- 전달함수에서 전달받은 값을 출력할 때 일정 기준에 따라 출력 값을 변화시키는 비선형 함수

 

1) 시그모이드 함수

- 선형 함수의 결과를 0~1 사이에서 비선형 형태로 변형해줌

- 모델의 깊이가 깊어지면 기울기가 사라지는 '기울기 소멸 문제' 발생

 

참고) 시그모이드 함수의 단점

- 기울기 소실 문제: 입력의 절대값이 크게 되면 0이나 1로 수렴하게 되는데 이와 같이 수렴된 뉴런의 그래디언트 값은 0이기 때문에 역전파에서 0이 곱해짐 -> 역전파가 진행됨에 따라 아래층에는 아무것도 전달되지 않는 기울기 소실 문제 발생

- 원점이 중심이 아님: 시그모이드 함수는 항상 양수를 출력하기 때문에 출력의 가중치 합이 입력의 가중치 합보다 커질 가능성이 높으며, 이러한 이유로 가장 높은 레이어에서는 활성화 함수의 출력이 0이나 1로 수렴하게 되어 그래디언트 소실 문제 발생

 

2) 하이퍼볼릭 탄젠트 함수

- 선형 함수의 결과를 -1~1 사이의 비선형 형태로 변형해주어, 시그모이드에서 결과값의 평균이 0이 아닌 양수로 편향된 문제를 해결하는 데 사용

- 기울기 소멸 문제 여전히 발생

 

3) 렐루 함수

- 렐루 함수는 입력이 음수일 때 0을 출력하고, 양수일 때 x를 출력

- 경사하강법에 영향을 주지 않아 학습 속도가 빠르고, 기울기 소멸 문제가 발생하지 않음

- 음수값을 입력받으면 항상 0을 출력하기 때문에 학습 능력이 감소하는데, 이와 같은 문제점을 해결하기 위해 리키 렐루 함수 등이 사용됨

 

4) 리키 렐루 함수

- 리키 렐루 함수는 입력값이 음수이면 0이 아닌 0.001처럼 매우 작은 수를 반환

 

활성화함수에 대한 자세한 내용은 https://excelsior-cjh.tistory.com/177을 참고함!

 

05-1. 심층 신경망 학습 - 활성화 함수, 가중치 초기화

5-1. 심층 신경망 학습 - 활성화 함수, 가중치 초기화 저번 포스팅 04. 인공신경망에서 예제로 살펴본 신경망은 hidden layer가 2개인 얕은 DNN에 대해 다루었다. 하지만, 모델이 복잡해질수록 hidden layer

excelsior-cjh.tistory.com

손실 함수

- 학습을 통해 얻은 데이터의 추정치가 실제 데이터와 얼마나 차이가 나는지 평가하는 지표

 

1) 평균 제곱 오차

- 실제 값과 예측 값의 차이를 제곱하여 평균을 낸 것

- 회귀에서 손실함수로 주로 사용됨

 

2) 크로스 엔트로피 오차

- 분류 문제에서 원-핫 인코딩 했을 떄만 사용할 수 있는 오차 계산법

- 분류 문제에서는 데이터의 출력을 0과 1로 구분하기 위해 시그모이드 함수를 사용하는데, 시그모이드 함수에 포함된 자연 상수 e때문에 평균 제곱 오차를 적용하면 매끄럽지 못한 그래프가 출력됨 -> 회귀는 일차함수이고, 손실함수는 2차여서 지역 최소점에서 멈출 일이 없음?(★★★)

- 크로스 엔트로피 오차에서는 경사 하강법 과정에서 지역 최소점에 멈추는 것을 방지하고자 출력값에 자연로그를 취함

 

딥러닝 학습

1) 순전파

- 모든 뉴런이 이전 층의 뉴런에서 수신한 정보에 가중합 및 활성화함수를 적용하여 다음 층(은닉층)의 뉴런으로 전송

- 데이터가 모든 층을 통과하고 모든 뉴런이 계산을 완료하면 그 예측 값은 최종 층에 도달하게 됨

- 손실함수로 네트워크의 예측 값과 실제 값의 차이를 추정함

- 손실 함수 비용이 0에 가깝도록 하기 위해서 모델이 훈련을 반복하면서 가중치 조절

 

2) 역전파

- 손실이 계산되면 그 정보는 역으로 전파(출력층->은닉층->입력층)

- 출력층에서 시작된 손실 비용은 은닉층의 모든 뉴런으로 전파되며, 은닉층의 뉴런은 각 뉴런이 원래 출력에 기여한 상대적 기여도에 따라 값이 달라짐

 

딥러닝의 문제점과 해결 방안

1) 과적합

- 훈련 데이터에 과하게 학습해서 발생

- 드롭아웃을 적용하여 문제 해결

 

2) 기울기 소멸 문제

- 출력층에서 은닉층으로 전달되는 오차가 크게 줄어들어 학습이 되지 않는 현상으로 은닉층이 많은 신경망에서 주로 발생

- 시그모이드나 하이퍼볼릭 탄젠트 대신 렐루 활성화 함수를 사용하여 해결

 

3) 성능이 나빠지는 문제

- 경사하강법은 손실 함수의 비용이 최소가 되는 지점을 찾을 때까지 기울기가 낮은 쪽으로 계속 이동시키는 과정을 반복하는데 성능이 나빠지는 문제 발생(★★★)

- 확률적 경사 하강법과 미니 배치 경사 하강법을 사용하여 문제점 해결

 

추가1) 경사 하강법

- 배치 경사 하강법: 전체 데이터셋에 대한 오류를 구한 후 기울기를 한 번만 계산하여 모델의 파라미터를 업데이트하는 방법(한 스텝에 모든 훈련 데이터셋을 사용하므로 학습 시간이 오래 걸림)

확률적 경사 하강법: 임의로 선택한 데이터에 대해 기울기를 계산하는 방법(배치 경사 하강법보다 정확도가 낮을 수 있지만 속도가 빠르다는 장점이 있음)

- 미니 배치 경사 하강법: 전체 데이터셋을 미니 배치 여러 개로 나누고, 미니 배치 한 개마다 기울기를 구한 후 그것의 평균 기울기를 이용하여 모델을 업데이트해서 학습하는 방법(배치 경사 하강법보다 계산이 빠르고, 확률적 경사 하강법보다 안정적이기 때문에 실제로 가장 많이 사용)

 

추가2) 옵티마이저 유형

확률적 경사 하강법의 파라미터 변경 폭이 불안정한 문제를 해결하기 위해 학습 속도와 운동량을 조정하는 옵티마이저를 적용해 볼 수 있음

 

속도를 조정하는 방법

- 아다그라드: 많이 변화한 변수는 최적 값에 근접했을 것이라는 가정하에 작은 크기로 이동하면서 세밀하게 값을 조정하고, 반대로 적게 변화한 변수들은 학습률을 크게 하여 빠르게 오차 값을 줄이고자 하는 방법

- 아다델타, RMSProp: 아다그라드에서 G값이 커짐에 따라 학습이 멈추는 문제를 해결하기 위해 등장한 방법

 

운동량을 조정하는 방법

- 모멘텀: 가중치를 수정하기 전에 이전 수정 방향(+, -)을 참고하여 같은 방향으로 일정한 비율만 수정하는 방법

- NAG: 모멘텀 방법은 멈추어야 할 시점에서도 관성에 의해 훨씬 멀리 갈 수 있는 단점이 있지만, NAG는 모멘텀으로 절반 정도 이동한 후 어떤 방식으로 이동해야 하는지 다시 계산하여 결정하기 때문에 모멘텀 방법의 단점 극복

 

속도와 운동량에 대한 혼용 방법

- 아담: 모멘텀과 RMSProp의 장점을 결합한 경사 하강법

 

딥러닝을 사용할 때 이점

1) 특성 추출

- 데이터별로 어떤 특징을 가지고 있는지 찾아내고, 그것을 토대로 데이터를 벡터로 변환하는 작업을 특성 추출이라고 함

- 딥러닝의 경우 특성 추출 과정을 알고리즘에 통합시킴(은닉층을 깊게 쌓는 방식으로 특성 추출이 가능해짐)

 

딥러닝 알고리즘

- 딥러닝 알고리즘은 심층 신경망을 사용한다는 공통점이 있음

- 목적에 따라 합성곱 신경망, 순환 신경망, 제한된 볼츠만 머신, 심층 신뢰 신경망으로 분류

 

1) 심층 신경망(DNN)

- 입력층과 출력층 사이에 다수의 은닉층을 포함하는 인공 신경망

- 다수의 은닉층을 두어 비선형적 관계가 학습될 수 있지만, 학습을 위한 연산량이 많고 기울기 소멸 문제 등이 발생할 수 있어 드롭아웃, 렐루 함수, 배치 정규화 등을 적용해야 함

 

2) 합성곱 신경망(CNN)

- 합성곱층과 풀링층을 포함하는 이미지 처리 성능이 좋은 인공 신경망 알고리즘

- 이미지에서 객체, 얼굴, 장면을 인식하기 위해 패턴을 찾는 데 유용

 

참고) 기존 신경망과 합성곱 신경망의 차이점(★★★)

- 각 층의 입출력 형상을 유지

- 이미지 공간 정보를 유지하면서 인접 이미지와 차이가 있는 특징을 효과적으로 인식

- 복수 필터로 이미지의 특징을 추출하고 학습

- 추출한 이미지의 특징을 모으고 강화하는 풀링층 있음

- 필터를 공유 파라미터로 사용하기 때문에 인공신경망과 비교하여 학습 파라미터가 적음

 

3) 순환신경망

- 시계열 데이터 같은 시간 흐름에 따라 변화하는 데이터를 학습하기 위한 인공 신경망

 - 시간에 따라 내용이 변하므로 데이터는 동적이며, 길이가 가변적

- 긴 데이터를 처리하는 연구가 활발히 진행되고 있음

 

4) 제한된 볼츠만 머신

- 볼츠만 머신은 가시층과 은닉층으로 구성된 모델

- 가시층은 은닉층과만 연결됨(가시층과 가시층, 은닉층과 은닉층 사이에 연결은 없음)

- 차원 감소, 분류, 선형 회귀 분석, 협업 필터링, 특성 값 학습, 주제 모델링에 사용

- 기울기 소멸 문제를 해결하기 위해 사전 학습 용도로 활용 가능

- 심층 신뢰 신경망의 요소로 활용

- 제한된 볼츠만 머신은 상대적으로 많이 사용하지 않음

 

5) 심층 신뢰 신경망

- 입력층과 은닉층으로 구성된 제한된 볼츠만 머신을 불록처럼 여러 층으로 쌓은 형태로 연결된 신경망

- 사전 훈련된 제한된 볼츠만 머신을 층층이 쌓아 올린 구조로, 레이블이 없는 데이터에 대한 비지도 학습이 가능

- 부분적인 이미지에 전체를 연상하는 일반화와 추상화 과정을 구현할 떄 사용하면 유용

 

참고1) 심층 신뢰 신경망의 학습 절차

- 가시층과 은닉층1에 제한된 볼츠만 머신을 사전 훈련함

- 첫 번째 층 입력 데이터와 파라미터를 고정하여 두 번쨰 층 제한된 볼츠만 머신을 사전 훈련함

- 원하는 층 개수만큼 제한된 볼츠만 머신을 쌓아 올려 전체 DBN을 완성

 

참고2) 심층 신뢰 신경망 특징

- 순차적으로 심층 신뢰 신경망을 학습시켜 가면서 계층적 구조를 생성

- 비지도 학습으로 학습

- 위로 올라갈수록 추상적 특성을 추출

- 학습된 가중치를 다층 퍼셉트론의 가중치 초깃값으로 사용

 

출처: 서지영(2022). 딥러닝 파이토치 교과서. p137-p163.

활성화 함수: https://excelsior-cjh.tistory.com/177

옵티마이저: https://youtu.be/5fwD1p9ymx8