1. 개요

  • 대다수의 사람들이 딥러닝 공부를 시작할 때 강의를 듣거나 책을 통해 예제를 보고 학습을 한다. 
  • 대부분의 강의나 책에는 "파이썬 기초부터 시작하는 딥러닝"이라 제목을 짓는 경우가 많은데 이런 경우 아무래도 한정된 시간과 분량으로 교육생들에게 파이썬에 대해 많이 강의해 줄 수 없다 보니
    딥러닝 예제에서 미리 준비된 데이터 셋이나 tensorflow의 경우 tensorflow dataset을 이용하는 경우가 많다. 
  • 이런 미리 준비된 데이터셋을 이용하는 방식은 아무래도 학생이 딥러닝의 확장성, 구조설계의 자유도에 대해서 체감하기 어렵다는 것이다. 
  • 개인적인 생각으로는 딥러닝에서 가장 처음에 생각 해야하는 것은 인풋과 아웃풋이다. "내가 무엇을 넣어서 무슨 답을 원하는가"이다. 
  • 딥러닝 알고리즘을 블랙박스라고 생각하고 그저 우리가 원하는 것은 인풋을 넣었을 때 내가 원하는 아웃풋이 나오게 만들고 싶다. 
  • 그러기 위해서는 가장 중요한 것은 데이터셋에 대한 이해와 출력에 대한 이해가 먼저 되어야 한다. 

 

2. 데이터셋 

  • 데이터셋은 여러가지가 있다. 숫자 또는 카테고리가 혼합된 형태 예를 들면 남자, 여자, 키, 몸무게 등이 있다. 남자, 여자는 카테고리이고 키, 몸무게는 숫자 데이터이다. 
  • 이미지 데이터가 있다. 강아지, 고양이, 송아지 
  • 시간에 따라 연속해서 나오는 시계열 데이터가 있다. 한국의 기온 정보 1월에서 12월까지, 우리집의 전기 사용량
  • 문자열 데이터가 있다. "안녕하세요. 저는 HOE입니다."
데이터의 종류 카테고리 숫자 이미지 시계열 문자열
데이터의 예시 ο 남자, 여자
ο O, X 
ο 스웨터, 티셔츠, 모자, 신발
ο 몸무게
ο  키
ο 전기세
ο 상품의 가격
ο 강아지
ο 고양이
ο 송아지
ο 매일저장된 한국의 기온정보

ο 몇년간 기록된 우리집 전기세 사용량
ο 안녕하세요. 저는 HOE입니다.
ο 너 밥 먹었어?
ο 오늘 점심은 뭐먹지?
데이터 형식 남자=0,여자=1 or 남자=[1,0] 여자=[0,1]
O=0, X=1, or O=[1,0], X=[0,1]
스웨터 = 0
티셔츠 = 1
모자 = 2
신발 = 3
int
float
uint(자연수) int or float
+
Time
안녕 = 0
저는 = 1
HOE = 2
너 = 3
밥 = 4
먹었어 = 5
? = 6
오늘 = 7
점심 = 8
뭐 = 9

위 표를 보면 데이터가 어떻게 되어있는지 알았으니 이제 해당 데이터를 딥러닝에 넣으면 된다 

 

3. 딥러닝의 인풋, 아웃풋

예시를 보며 천천히 어떻게 데이터가 들어가는지 보자 

 

ㄱ. 사람의 나이, 키, 몸무게, 성별, 자산을 가지고 인기가 있나 없나를 구분하는 예시를 해보자.

일단 나이, 키, 몸무게, 성별, 자산이 어떤 데이터 형식인지를 파악한다 

나이 = 숫자

키 = 숫자

몸무게 = 숫자

성별 = 카테고리

자산 = 숫자 

여기서 첫번 째 조건 모든 입력값은 숫자형이어야 한다

유일하게 카테고리 형식인 성별을 숫자형으로 변경하자 남자=0, 여자=1 

그렇게 된다면 이제 딥러닝에 입력되는 데이터의 모양은 나이=20, 키=180, 몸무게=75, 성별=0, 자산=10 이 된다 

이제 입력 딥러닝 그래프를 그려보자 입력은 병렬이다!

이제 출력을 생각해보자 인기가 있다. 없다 는 카테고리형 데이터 타입이다. 이런 경우 출력으로 생각할 수 있는 방법은 2가지가 있다. 하나는 0~1로 생각하는 것이고 또 하나는 0 또는 1로 생각하는 것이다 

그럼 이제 코드를 작성할 때는 어떻게 해야 하나? 

일단 들어가는 입력 데이터는 병렬이라고 말했다. 그럼 데이터가 병렬이 되어 한번에 같이 들어가려면 어떻게 해야 하나?

데이터를 같이 묶으면 된다 보통 행렬로 제작을 한다 

저런 python list를 구현하는 것은 어렵지 않을 것이다. 

인풋이 결정됐으니 아웃풋을 만들어보자 

위의 두 가지 상황에 다음과 같이 1차원 또는 2차원 행렬 형태로 만들 수 있다.

끝났다 이제 모델의 입력과 출력에 해당 형식을 지정해주면 된다 

입력 = 형식-(5)   = [20,180,75,0,10]

출력 = 형식-(1) = [0] 또는 (2) = [1,0]

 

아마 딥러닝을 조금 공부한 사람이라면 배치 사이즈(batch size)를 들어보았을 것이다. 

위의 예시는 batch size가 1일 때의 예시이다 그럼 batch size가 2이면 어떻게 넣을까? 

입력 = 형식-(2,5) = [[20,180,75,0,10], [30,160,45,1,20]]

출력 = 형식-(2,1) = (2) = [0,1] 또는 (2,2) = [[1,0], [0,1]]

그럼 batch size가 2일 때 그래프는 어떻게 그려질까? 

 

'Machine Learning > AI를 위한 수학' 카테고리의 다른 글

(4) - Norm  (0) 2021.06.12

+ Recent posts