목적
딥러닝을 공부하기 시작했다.
기본적인 신경망 구조를 파악한 뒤 세부적인 개념들을 공부하고자 포스팅을 하게 되었다.
딥러닝 신경망 구조
딥러닝 신경망의 기본 구조는 위와 같다.
입력을 받으면 -> 중요도를 다르게 하기 위해 가중치를 곱한다 -> 활성화함수로 보내기 위한 가중합 계산 -> 일정한 기준에 따라 출력값 변환(활성함수) -> 출력
입력
- 데이터를 입력 받는 층
가중치
- 입력층 값이 다음 노드로 넘어갈 때 모두 같은 값이면 결과도 같음. 데이터를 각기 다른 비중으로 전달시키기 위해 중요도를 다르게 하는 역할(연산 결과를 조정하는 역할)
가중합(또는 전달함수)
- 각 노드의 가중합이 계산되면 이 가중합을 활성화 함수로 보냄
활성화 함수
개념
- 입력 신호의 총합을 출력할 때 일정한 기준에 따라 출력 값을 변환하는 함수
비선형 함수 사용
- 선형함수와 다르게 비선형 함수는 직선 하나로 그릴 수 없는 함수
*선형함수 : 출력이 입력의 상수 배만큼 변화하는 함수 - 신경망에서 선형 함수 이용시 신경망의 층을 깊게 하는 의미가 없어짐
종류
- 시그모이드 함수
- 실수 값을 0~1 사이의 비선형 형태로 변형
- 기울기 소멸 문제 - 하이퍼볼릭 탄젠트
- 선형함수 결과를 -1 ~ 1 사이의 비선형 형태로 변형
- 기울기 소멸문제 여전히 발생 - 렐루
- 입력이 음수일 때는 0을 출력, 양수일 때는 x 출력
- 기울기 소멸 문제 발생하지 않음
- 음수 값을 받으면 항상 0을 출력하여 학습 능력 감소
이를 해결하기 위해 리키 렐루 함수 등을 사용
- 리키 렐루: 입력 값이 음수면 0이 아닌 0.001처럼 매우 작은 수를 반환
- 소프트 맥스
- 입력 값을 0~1 사이에 출력되도록 정규화하여 출력 값들의 총합이 항상 1이 되도록 함
손실 함수
개념
- 가중치 학습을 위해 함수의 결과와 실제 값 간의 오차를 측정하는 함수
- 학습을 통해 얻은 데이터의 추정치가 실제 데이터와 얼마나 차이가 나는지 평가하는 지표
- 값이 클 수록 많이 틀렸다는 의미
- 0에 가까울 수록 완벽하게 추정
종류
문제점
과적합 문제 발생
- 해결 방법으로는 드롭아웃이 있음
*드롭아웃 : 일부 노드를 학습에서 제외시키는 것
기울기 소멸 문제
- 은닉층이 많은 신경망에서 주로 발생
출력층 -> 은닉층으로 가는 오차가 크게 줄어들어 학습이 되지 않는 현상
해결 방법으로는 시그모이드 함수, 하이퍼볼릭 탄젠트 대신 렐루 활성화 함수 사용
성능이 나빠지는 문제
- 경사하강법
- 손실함수의 비용이 최소가 되는 지점을 찾을 때까지 기울기가 낮은 쪽으로 계속 이동시키는 과정을 반복
이로 인해 성능이 나빠지는 문제 발생
- 이러한 문제를 해결하고자 확률적 경사하강법과 미니배치 경사하강법 사용
- 미니 배치 경사하강법
- 전체 데이터셋을 미니배치 여러 개로 나누고, 미니 배치 한 개마다 기울기를 구한 후 그것의 평균 기울기를 이용하여 모델을 업데이트해서 학습하는 방법
- 전체 데이터를 계산하는 것보다 빠르며, 확률적 경사 하강법보다 안정적 - 확률적 경사하강법
- 임의로 선택한 데이터에 대해 기울기를 계산하는 방법
- 적은 데이터를 사용하므로 빠른 계산 가능
- 확률적 경사하강법의 파라미터 변경 폭이 불안정한 문제 해결을 위해 학습속도와 운동량을 조정하는 옵티마이저 적용할 수 있음
- 미니 배치 경사하강법
마무리
손실함수 및 활성화 함수 이름들은 어딘지 많이 익숙한데 언제 사용을 해야 하는지 그동안 잘 이해하지 못했었다.
이번 공부를 통해 딥러닝 신경망 기본구조를 파악할 수 있었으며, 앞으로 좀 더 세분화하여 깊게 공부하고자 한다.
'ML & DL' 카테고리의 다른 글
Deep face 프레임 워크 (0) | 2024.04.08 |
---|
댓글