이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

Deep Learning (4)

  • 2021.12.03 14:23
  • Machine Learning/AI Introduction

 

 

 

Multi Layer Perceptron의 개념을 바탕으로 자연어처리(NLP)와 같은 딥러닝의 응용 부분으로 확장할 때 먼저 학습해야하는 개념이 있다. 이번 시간에는 그 개념들에 대해 알아보자.

 

1. Normalizing inputs

 

2. Batch/Mini-batch

 

1. 

input을 정규화 한다.. 라는 의미를 가진다. 

 

Backpropagation으로 정규화를 진행할 때, 입력값으로 주어지는 x1과 x2의 값의 차이가 크면, (ex. x1은 1,000,000 / x2는 50) 학습을 진행할 때 큰 문제가 발생하게 된다.

따라서  두 입력값의 scale을 맞춰 주는 것이 필요한데, 여기서 두 입력값에 대해서 normalization을 진행하는 방법은 학습에 큰 도움이 되지 않는다. 

 

그러면 어떤 방법으로 진행해야 할까?

 

다음과 같이 x1과 x2가 주어졌다고 생각하자. 

Normalizing Inputs은 기본적으로 Normalizing Training Set 에 적용된다. 

 

위의 식을 바탕으로 계산이 진행된다.

mean 값을 구하고, x 에 mean값을 빼준다.

위에서 구한 값을 바탕으로 variance를 구한 다음 Normalization을 진행한다.

 

 

x 에서 mean 값을 빼주면 위와 같이 값들이 중앙으로 모이게 되고  (중앙 값은 0에 수렴하게 됨)

업데이트 된 mean값은 0이 된다. 

위의 과정을 모두 거치면 x1과 x2의 값이 적절하게 튜닝된다.

이렇게 튜닝을 거치면 학습에도 도움이 되고 backpropagation도 잘 작동하게 된다.

 

일반적으로 Normalization은 무조건 진행하고 학습을 진행한다. 

 

training set에는 이렇게 적용하는데... Testing에는 ??

테스팅에는 mean과 variance를 구하지 않는다. 

테스팅 시에는 입력값에 대한 정보를 가지고 있지 않다고 가정하고 진행하는게 좋기 때문이다.

그래서, Normalization을 진행하긴 하지만 여기서 사용하는 mean값과 variance값은 Training Set에서 가져온다.

 

 

Normalization을 진행하지 않은 Set와 진행한 Set이다. 

진행한 set는 빠르게 학습을 진행할 수 있다.

 

2.

Backpropagtion을 진행할 때 학습데이터가 100,000개가 있다면 100,000개의 오류를 모두 더해 Loss를 계산하고, 파라미터 W를 업데이트한다. 여기서 100,00개의 데이터가 있다는 건 이미지가 100,000개 있다는 걸 의미하고 이 이미지를 벡터로 표현하게 될 시 size가 엄청나게 커질 수 있다. 이 경우 매개변수를 한 덩어리로 고려하는 걸 Batch Gradient Descent라고 한다. (Batch = 한번에)

 

실제로 딥러닝 학습에서는 전체 학습데이터를 1회분의 작은 단위로(Batch) 잘라내고, Batch 단위로 오류를 계산하고 매개변수를 업데이트 한다. (이 때 Batch 크기는 16~32로 설정) => Mini batch Stochastic(무작위) Gradient Descent

 

이렇게 학습을 진행하게 되면 그냥 하는 것 보다 속도 부분에서 월등한 차이가 있고, Generalization이 더 잘 돼 Regulation 효과를 얻을 수 있다. (Overfitting 문제를 해결하는데 도움을 줌)

 

epoch 는 전체 학습데이터에 대한 수행 횟수를 의미하고, epoch의 값은 어떤 상황에서 적용할지에 따라 달라진다. 

 

 

Batch든 Mini-batch든 결국 비슷한 값으로 수렴하게 된다. 하지만 Mini-batch를 사용했을 때 시간이 훨씬 빠르다.

 

 

반응형

'Machine Learning > AI Introduction' 카테고리의 다른 글

Advice for Applying ML/DL (2)  (0) 2021.12.04
Advice for Applying ML/DL (1)  (0) 2021.12.04
Deep Learning (3)  (0) 2021.11.18
Deep Learning - Backpropagation  (0) 2021.11.14
Deep Learning (2)  (1) 2021.11.14

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Advice for Applying ML/DL (2)

    Advice for Applying ML/DL (2)

    2021.12.04
  • Advice for Applying ML/DL (1)

    Advice for Applying ML/DL (1)

    2021.12.04
  • Deep Learning (3)

    Deep Learning (3)

    2021.11.18
  • Deep Learning - Backpropagation

    Deep Learning - Backpropagation

    2021.11.14
다른 글 더 둘러보기

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (609)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Life Logs (2)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바