여정의 기록

[딥러닝의통계적이해] 딥러닝 모형의 구조와 학습 본문

공부중 .../딥러닝의통계적이해

[딥러닝의통계적이해] 딥러닝 모형의 구조와 학습

Chelsey 2022. 9. 8. 03:35
728x90

다층신경망

입력층에서 은닉층을 통과할 때마다 데이터는 가중합과 활성화 함수가 적용
손실함수 최소인 가중치를 구해서 신경망을 작성
합성함수로 표현 - 함수의 합성 반복 -> 신경망의 목적 함수의 표현력이 좋아짐(은닉층이 깊어지는게 중요)

순방향신경망 FNN

같은 층 내가 아닌 앞의 층으로만 연결

활성화 함수

시냅구 구현 함수
일정 임계값이 넘었을 때 시냅스가 정보 전달하는 것을 이용 : 활성화 함수의 값이 일정값이 넘는 방식 개발

종류

  • 항등함수(1을 넣으면 1이 나옴)
  • 시그모이드함수(0 혹은 1로 수렴)
  • tanh함수(-1 ~ 1, 0에서 기울기가 크게 움직임)
  • ReLU함수(0 ~ 무한대, 0보다 작을땐 0, 클땐 항등함수)
    (그래프 참고)

활성화 함수의 미분

  • 항등함수(a(x)=x)의 미분값 : 1
  • 시그모이드 함수a(x)=1/(q+e^-x)의 미분값 : - 1 / (1+e^x)^2 * -e^-x = a(x)(1-a(x))
  • tanh 함수의 미분값 : (1-a(x))(1+a(x))
  • ReLU 함수의 미분값 : x<0 일때 0, x>=0일때 1(ReLU는 0에서 미분 불가능)

미분의 용이성으로 시그모이드, tanh 함수 많이썼음 -> 은닉층 많이 만들면 -> 경사 소실문제 발생 (아무리 학습을해도 가중치가 변하지 않음)
-> 최근에는 ReLU 함수 발견되서 주로 사용

다층신경망의 표현

입력 - 가중합 - 활성화 함수 - 가중합 - 활성화 함수 - ... - 출력

활성화 함수(가중합) = f(가중합)

출력층의 활성화 함수

  • 회귀모형 : 항등함수
  • 이진분류 : sigmoid 함수
  • 다중분류 : softmax 함수

신경망의 구조를 설계하는 것 = 입력과 출력은 고정되어있고, 은닉층의 수와 각 층별 뉴런의 수를 정하는 것
층이 깊어질수록 학습하기가 어렵다. 신경망이 보다 데이터의 표현력이 좋아짐
층별 뉴런의 수를 늘려도 신경망의 성과가 크게 좋아지지 않음
은닉층의 수 > 뉴런의 수 가 더 효율이 좋다. 뉴런의 수를 은닉층의 수의 1/n^2만큼 줄이는게 좋다.
활성화 함수의 비선형성이 없다 == 층을 누적할 필요가 없다

일반근사정리

충분한 크기의 뉴런을 가진 은닉층이 가진 한 개 이상인 다층 신경망은 모든 유한한 연속함수를 근사할 수 있다.
신경망이 딥러닝 모형으로 발전하는데 방해 요인
은닉층은 적고 뉴런이 많으면 -> 과대적합 문제
활성화 함수의 비선형성이 증가해서 데이터의 특성을 다층신경망(딥러닝)이 찾을 수 있음을 알게됨

신경망의 학습

데이터로 부터 설계한 것의 가중치의 값을 알아내는 것.
함수가 연속적으로 적용되는 ! 합성함수 | 행렬로 표현

과정 :
입력값 X -> 모형(가중치) -> 예측값 Y^(여기까지 순방향) - 실제값 Y 의 손실함수 추출 -> (역방향)최적화하여 가중치 갱신 -> 다시 예측 반복

역방향 : 손실함수 J(w) 기반 경사하강법을 통해 반복적으로 가중치들 갱신 - 학습해 나가는 것
손실함수 J(w) : Y^ - Y 비교

신경망을 학습하려면 데이터를 쪼개야함 - Data = Train data + Validation data + Test data = 60:20:20
(데이터의 크기에 따라 달라짐. Train data는 많을수록 좋다)

학습이란?

손실함수를 경사하강법으로 가중치 갱신 - 경사에 따라 일정한 학습률로 실행
가중치의 초기값이 학습속도에 중요함
주로 초기값은 근 0값

용어정리

  • 1 epoch : 한 데이터셋 전체를 1회 학습
    전체 Train data를 mini batch로 나눔. batch 모두 합쳐서 1번 훈련 == 1epoch
    epoch 수 증가 == 훈련 데이터의 정확도 증가, 손실함수 감소
728x90