[DNN] 인공신경망/딥러닝 (Deep Neural Network)

2022. 4. 14. 23:32· 인공지능(AI) & 데이터 분석
목차
  1. 인공신경망 학습
반응형

인공신경망 학습

  • 입력값과 해당 노드의 가중치를 곱한 후 모두 합산

 

  • 합산한 결과를 가중합(v) 이라고 함

  • 가중합을 0~1 사이의 값으로 바꿔주기 위해서 활성 함수를 사용
  • 예측값과 실제 정답의 오차를 이용해 가중치를 조정하는 과정을 반복

 

💡 Activation Function

  • 가중합 v 를 0~1 사이의 값으로 변환
  • 여러 함수가 사용될 수 있음

   1) sigmoid 함수

  •  자신의 노드로 들어오는 신호의 가중합만 고려
  • 보통 출력이 이진수(0,1)일 때
import numpy as np

def SIGMOID(x):
    return 1/(1 + np.exp(-x))

   2) softmax 함수

  • 출력 노드가 여러 개 일 때 자신의 노드 뿐 아니라 다른 노드로 들어오는 신호의 가중합도 고려
  • 출력 노드가 여러 개 일 때 용이

import numpy as np

def SOFTMAX(x):
    e_x = np.exp(x) #e^x
    return e_x / e_x.sum(axis=0)
  • 나는 보통 0,1 이진값으로 출력이 나오도록 예측 모델을 만드는 경우가 많다. 이때 출력 노드를 하나로 해서 해당 가중합이 0.5 를 넘어가는지 여부에 따라 0,1 을 결정할 수 도 있고, 출력 노드를 2개 만들어서 더 확률이 높은 노드의 이진값을 결과로 낼 수가 있다. (one-hot encoding도 사용)

 

💡Learning Rate

  • 학습률 (0<α≤1)
  • α가 작으면 w의 변동폭 작다 ⇒ 정답에 보다 근접할 수 있지만 학습시간이 길어지거나 정답 근접 전에 max iteration limit에 걸려 학습 중단될 수 있음
  • α가 크면 w의 변동폭 크다 ⇒ 학습 시간이 짧아지지만 정답에 수렴 못하고 발산할 수 있음

 

💡Delta rule

  • 예측값과 정답 사이의 오차(에러값→cost function으로 구함)를 가지고 w 를 조정하는 방법
  • 입력값이 크면 가중치 조절 정도도 크다(반영 정도가 크다)
  • backpropagation
  • 경사하강법 사용
  • 활성함수에 따라 가중치 조정 정도가 조금씩 달라짐

(1) 활성 함수가 φ(v) = v 일 때,

 W(after) = W(before) +α x 에러값 x 입력값   

 * α는 학습률(0<α≤1) 

 → w의 변동폭을 조절해준다. 

    α가 크면 변동폭이 크기에 정답에 금방 접근할 수 있고 학습 시간이 짧아질 수 있지만  정확히 

   수렴하지 못하고 발산할 수가 있고, α가 작으면 변동폭이 작아 보다 정답에 세심하게 접근할 수 

   있지만 학습 시간이 길어지고 max iteration limit(반복 횟수 제한)에 걸려 멈출 수 있다.

(2) 활성 함수가 φ(v) = v 이 아닐 때, ⇒ 일반화된 식 필요

 W(after) = W(before) +α  x φ’(v) x  에러값 x 입력값

 (활성함수의 도함수에 출력값을 넣어 계산한 결과를 함께 곱해준다)

사실 활성 함수가 φ(v) = v 인 경우에도 미분 해보면 φ’(v) = 1 이기 때문에 (1)이 되는 것이다.

만약 활성 함수로 sigmoid 함수를 사용한다면 φ’(v) = φ(v)(1-φ(v)) 가 될 것이다. 그리고 φ(v) 는 y 라고도 표현하기 때문에 W(after) = W(before) +α x y(1-y) x 에러값 x 입력값 라고 표현할 수도 있다.

W(after) = W(before) +α φ’(v) e x

W(after) = W(before) +α φ(v)(1-φ(v)) e x

W(after) = W(before) +α y(1-y) e x

 

✔️ Delta Rule과 경사하강법(Gradient Descent)

오차가 줄어드는 방향으로 w(delta)를 update 하기 위해 미분

미분을 해주면 기울기를 얻을 수 있고 이 기울기에 따라 w를 업데이트

경사하강법을 통해 알 수 있는 2가지가 있다.

(1) 기울기가 음/양 인지에 따라 에러가 정답보다 더 큰지 작은지 방향을 알 수 있다.

(2) 기울기의 크기에 따라 W를 조절할 수 있다.

 기울기가 크면 그만큼 w의 변동 정도도 커진다는 의미이다. w의 변동 정도 혹은 반영 정도를 조절

 해주는 방법으로는 학습률 α도 있었다. w  변동이 너무 크거나 작으면 문제가 되기 때문에 기울기

 를 확인하고 학습률을 조절 해주는게 좋다.

 

💡 Cost Function(=loss function)

  • 오차를 계산하는 방법
  • 오차를 어떻게 계산 하느냐에 따라 W가 달라지고, 학습 속도가 달라짐

  1) MSE: Mean of square error

  • Sum of square error
  • neural network 에서 전형적으로 쓰임

 

  2) Cross Entropy

  • d = 0 , 1 일 때 각 항이 사라짐
  • 가중치 갱신을 기울기에 따라 갱신하지만 cross entropy의 경우, log 함수 이기 때문에 초기엔 기울기 경사 폭이 급격하고 그에 따라 초기 error는 확확 줄어듬 (후반에 매우 조금씩 준다)

⇒ 발산하거나 학습 시간이 너무 길어지는 단점 보완

 

 

💡 Weight 갱신

 

  1) Stochastic 경사하강법(SGD; stochastic gradient decent)

  • 매번 오차와 가중치를 계산해 업데이트
  • 오차가 빨리 줄어들지만 갱신이 너무 자주 일어남

  2) 배치(batch)

  • 매번 오차와 가중치를 계산하고 한 번 반복 끝날 때마다 평균값으로 가중치 한 번 업데이트
  • 갱신 속도, 학습 속도 느림

  3) 미니배치(mini batch)

  • SGD와 배치 방식의 중간
  • 전체 학습 데이터를 일정 크기로 묶어서 해당 묶음이 끝나면 평균값으로 갱신
  • 오차를 가장 많이 줄여줌

💡 Epoch

  • 전체 학습 데이터를 한 번씩 모두 학습 시킨 횟수(반복 횟수)
반응형

'인공지능(AI) & 데이터 분석' 카테고리의 다른 글

[Feature Engineering] Feature Selection & evaluation  (0) 2022.11.23
[Feature Engineering] Data pre-proceessing (데이터 전처리)  (0) 2022.11.22
[CNN/이미지처리] 데이터 증강(Data Augmentation)  (0) 2022.04.14
논문 (빨리)(효율적으로) 읽는 법 *다시 정리 예정  (0) 2022.03.11
  1. 인공신경망 학습
'인공지능(AI) & 데이터 분석' 카테고리의 다른 글
  • [Feature Engineering] Feature Selection & evaluation
  • [Feature Engineering] Data pre-proceessing (데이터 전처리)
  • [CNN/이미지처리] 데이터 증강(Data Augmentation)
  • 논문 (빨리)(효율적으로) 읽는 법 *다시 정리 예정
gangmini
gangmini
gangmini
게으른J 의 테크로그
gangmini
전체
오늘
어제
글쓰기방명록관리자
  • 분류 전체보기 (127)
    • 인공지능(AI) & 데이터 분석 (5)
    • Android (91)
      • Coroutine (3)
      • Compose (0)
      • 안드로이드 CS (0)
    • Kotlin (3)
    • Data Structure (0)
    • 알고리즘 (20)
      • 알고리즘 이론 (11)
      • 백준(BOJ) 문제 풀이 (9)
    • Build Tool (2)
    • Git (2)
    • 일본어 (0)
    • 기타(취준, 활동) (0)


인기 글



최근 댓글



최근 글

hELLO · Designed By 정상우.v4.2.2
gangmini
[DNN] 인공신경망/딥러닝 (Deep Neural Network)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.