[PyTorch] 딥러닝 입문 – 딥러닝 한눈에 살펴보기 ❷

이 글은    [Must Have] 텐초의 파이토치 딥러닝 특강   에서 발췌했습니다.

골든래빗 출판
이종민(텐초) 지음

딥러닝(Deep Learning)이 무엇인지, 어떤 기법이 있는지 알아보고 나서 파이토치(PyTorch) 기본 코딩 스타일을 알아봅니다. 이어서 딥러닝을 수행하는 프로세스와 최소한의 통계 지식, 시각화 기법을 알아봅니다. 빠르게 딥러닝을 알아가는 시간이 될 겁니다.

딥러닝 입문은 총 3개 장입니다. 1장에서 딥러닝 한눈에 살펴보기, 2장에서 인공 신경망 ANN 이해하기, 3장에서 간단한 신경망 만들기를 학습합니다.

딥러닝 한눈에 살펴보기 ❷

 

5. 딥러닝 문제 해결 프로세스

딥러닝으로 문제를 해결하는 순서는 다음과 같습니다.

 

▼ 딥러닝 문제 해결 프로세스

 

❶ 가장 먼저 해결할 문제를 정의합니다. 예를 들면 이미지를 읽어들여 분류한다든가, 문장 안에 비어 있는 단어를 알아맞추는 등의 문제를 정의합니다.

❷ 다음으로는 문제를 푸는 데 필요한 데이터를 수집합니다. 딥러닝은 데이터를 기반으로 학습이 이루어집니다. 그렇기 때문에 딥러닝 모델이 읽어들이는 입력 데이터에 대한 딥러닝 모델의 예측이 올바른지를 판단할 정답이 필요합니다. 예를 들어 다음 그림은 두 가지 범주를 갖는 학습용 데이터셋을 표현하고 있습니다. 왼쪽은 검정색, 오른쪽은 하얀색이 정답입니다.

 

▼ 딥러닝 학습에 사용하는 데이터셋 구성 예시

 

충분한 양의 데이터를 수집했다면 다음으로는 ❸ 데이터를 가공해야 합니다. 데이터를 수집하다보면 정답이 잘못된 데이터, 혹은 문제 해결에 도움이 되지 않는 데이터 등이 섞이게 됩니다. 이런 데이터는 학습에 악영향을 미치므로 데이터에서 제거해줘야 합니다. 이렇게 딥러닝 모델의 입력으로 사용하기 전에 학습이 원활하게 이루어지도록 가공하는 작업을 데이터 전처리라고 합니다. 다음 그림에서 검정색 데이터에 흰색 데이터가 들어 있습니다. 잘못된 값입니다(경우에 따라 적절한 처리를 하거나 무시합니다).

 

▼ 데이터 가공의 예

 

이제 ❹ 딥러닝 모델을 만들 차례입니다. 해결할 문제에 알맞는 딥러닝 모델을 설계해야 합니다. 이 책에서는 이해를 돕고자 〈기본 블록〉을 먼저 그림으로 설계한 후 코드로 딥러닝 모델을 정의합니다.

딥러닝 모델의 설계를 완료했으면 데이터를 이용해 딥러닝 모델을 학습해야 합니다. 데이터를 딥러닝 모델의 입력으로 주면 예측이 올바른지 정답과 비교해가며 모델을 학습합니다. 이때 얼마나 올바르게 학습했는가를 근사적으로 나타내는 수치를 ‘손실’이라고 하는데, 이 손실이 작아지도록 학습합니다. 이 책에서는 먼저 〈학습 루프〉를 그림으로 설계한 후 학습 코드를 정의합니다.

마지막으로 학습 때 이용하지 않은 데이터를 이용해서 학습이 완료된 모델의 ❻ 성능을 평가합니다. 딥러닝 모델의 성능을 평가하는 데 ‘평가 지표’를 이용합니다. 이 평가 지표가 딥러닝 모델의 성능을 근사적으로 나타냅니다.

딥러닝 모델의 학습 흐름을 더 자세하게 그림으로 만들어보았습니다.

 

▼ 딥러닝 모델 학습의 흐름

 

6. 딥러닝 문제 해결 체크리스트

‘5. 딥러닝 문제 해결 프로세스’에서 살펴본 대로 딥러닝의 문제 풀이 흐름은 거의 고정적입니다. 각 단계마다 확인 사항을 간략하게 체크리스트로 정리해두었습니다. 학습과 업무에 도움이 되길 빕니다.

 

▼ 딥러닝 문제 해결 체크리스트

 

7. 딥러닝에 필요한 최소한의 통계 개념

딥러닝을 이해하려면 기초적인 통계 지식이 필요합니다. 매우 간단한 개념만 이해하면 되므로 걱정하지 않아도 됩니다. 다음 네 가지 용어에 대해 설명드리겠습니다.

 

  1. 종속변수와 독립변수
  2. 평균과 분산

 

독립변수는 다른 변수에 영향을 받지 않으며, 결괏값을 결정하는 변수를 말합니다. 설명이 복잡하지만 쉽게 생각하면 입력값이라고 보면 됩니다. 즉 딥러닝 모델의 입력으로 들어가는 값이 독립변수입니다. 1장 이후에 ‘모델의 입력’, ‘입력 벡터’, ‘입력 데이터’, ‘입력 텐서’ 등의 용어가 등장하게 되는데, 모두 독립변수를 지칭하는 용어입니다(경우에 따라알맞게 사용합니다).

반대로 종속변수는 독립변수에 의해 값이 결정되는 변수를 의미합니다. 쉽게 말하면 딥러닝 모델의 출력이 되는 변수라고 보면 됩니다. 딥러닝 모델의 출력값은 입력으로 사용한 데이터에 의해 변하게 되므로 딥러닝 모델의 출력이 곧 종속변수입니다. 이후에는 ‘모델의 예측값’, ‘모델의 출력’ 등의 용어가 등장하는데, 모두 종속변수를 지칭합니다(역시나 경우에 따라 알맞게 사용합니다).

 

독립변수(independent variable)

다른 변수의 값을 결정하는 변수를 말합니다. 입력값으로 사용됩니다.

 

종속변수(dependent variable)

독립변수에 의해 값이 결정되는 변수를 의미합니다. 출력 대상이 되는 변수(목푯값)입니다.

 

▼ 독립변수와 종속변수

 

평균과 분산은 데이터의 대략적인 분포를 알수 있게 해줍니다. 평균은 모든 데이터의 합을 데이터 수로 나눈 값을 의미합니다. 평균은 정규분포와 같이 종형 분포를 갖는 확률 분포에서 랜덤하게 데이터를 뽑았을 때 평균에 가까운 값이 나올 확률이 가장 크다는 것을 의미합니다.

분산은 데이터가 얼마나 퍼졌는가를 나타내는 지표입니다. 즉, 분산이 크다는 것은 평균으로부터 넓게 흩어져 있는 데이터가 많다는 것을 의미하고, 분산이 작다는 것은 평균 근처에 데이터가 몰려있다는 뜻입니다. 이때 분산의 양의 제곱근을 표준편차라고 부릅니다.

 

▼ 분산에 따른 데이터 분포의 차이

 

8. 직관적 분석에 유용한 시각화

시각화는 딥러닝 모델의 동작을 눈으로 직접 확인하는 방법입니다. 이 책에서는 파이썬의 시각화 라이브러리인 맷플롯립(Matplotlib)을 사용합니다. 맷플롯립은 이미지를 그리거나, 데이터 시각화 등에서 사용하는 라이브러리입니다. 이 책에서는 두 방식의 시각화를 이용합니다.

하나는 이미지를 한눈에 볼 수 있도록 하는 서브플롯(Subplot)입니다. 서브플롯은 여러 그래프를 비교하거나 두 이미지의 차이를 비교하는 등 한 번에 여러 그래프를 그릴 때 사용합니다. 딥러닝 모델의 예측과 실제 정답을 비교할 때 주로 사용했습니다.

 

▼ 서브플롯 시각화 예

 

다른 하나는 꺾은 선 그래프를 그리는 플롯plot입니다. 가장 기본이 되는 그래프로 시간의 흐름에 따른 데이터의 변화를 한눈에 알아볼 수 있기 때문에 순서가 있는 데이터를 다룰 때 사용합니다.

 

▼ 플롯 시각화 예

 

주로 사용하는 선형 그래프, 서브플롯, 히스토그램을 간단히 실습해보겠습니다. 먼저 맷플롯립과 넘파이를 설치해주세요.

 

▼ 미리 설치합니다

!pip install matplotlib
!pip install numpy

 

코랩에서 pip 명령을 사용할 때는 pip 명령에 앞에 !를 붙여줘야 합니다.

예제에 사용할 간단한 데이터(0부터 5까지 0.2씩 증가시킨 값)를 만들겠습니다.

 

▼ 정규분포로부터 랜덤하게 값 추출

import numpy as np
import matplotlib.pyplot as plt

# 0부터 5까지 0.2씩 증가시킨 값을 저장
t = np.arange(0, 5, 0.2)
t2 = t ** 2
t3 = t ** 3

# mu를 평균으로, sigma를 표준편차로 갖는 정규분포로부터 랜덤하게 값을 추출
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

 

이 데이터를 이용해서 3가지 그래프를 그려보겠습니다.

 

▼ 맷플롯립에서 지원하는 시각화 그래프

 

딥러닝 한눈에 살펴보기 마무리

딥러닝을 본격적으로 다루기 앞서 필요한 배경 지식을 빠르게 소개했습니다. 머신러닝은 데이터를 분석해 가설을 만들어 데이터를 분류하는 일련의 과정입니다. 딥러닝은 머신러닝의 한 종류로 인공 신경망을 이용한 학습 방법을 말합니다. 지도 학습은 데이터에 정답이 붙어 있는 학습 방법이고, 비지도 학습은 데이터에 정답이 붙어 있지 않은 학습 방법입니다. 강화 학습은 데이터를 제공하지 않아도 인공지능이 스스로 시행착오를 겪으며 성장하는 학습 방법입니다.

 

1장 딥러닝 한눈에 살펴보기가 끝났습니다. 딥러닝 입문 2장 인공 신경망 ANN 이해하기에서는 인공 신경망을 이용한 딥러닝 기초 지식을 설명하겠습니다.

 

책 내용 중 궁금한 점, 공부하다가 막힌 문제 등 개발 관련 질문이 있으시다면

언제나 열려있는 <[Must Have] 텐초의 파이토치 딥러닝 특강> 저자님의

카카오채널로 질문해주세요!

이종민(텐초) 

일본 JAIST 정보과학 석사. 동경의 딥러닝 엔지니어로 Ghelia에서 B2B 인공지능 솔루션을 개발 중이다. 딥러닝의 유용함을 널리 알리고자 유튜버로  활동하고 글을 쓰고 책을 집필합니다. 쉬운 그림을 이용해 10초만에 핵심을 전달하자는 의미에서 닉네임을 텐초로 지어 활동하고 있습니다.

– SNS : www.youtube.com/c/텐초

1 Comment

Leave a Reply

©2020 GoldenRabbit. All rights reserved.
상호명 : 골든래빗 주식회사
(04051) 서울특별시 마포구 양화로 186, 5층 512호, 514호 (동교동, LC타워)
TEL : 0505-398-0505 / FAX : 0505-537-0505
대표이사 : 최현우
사업자등록번호 : 475-87-01581
통신판매업신고 : 2023-서울마포-2391호
master@goldenrabbit.co.kr
개인정보처리방침
배송/반품/환불/교환 안내