파이썬 딥러닝 입문 강좌의 맛보기 강의입니다.
먼저 딥러닝의 개념에 대해서 살펴보도록 하겠습니다 딥러닝 개념에서 저희가 알고 있어야 되는 것이 전통적인 프로그램을 작성하는 방식과 머신러닝을 공부시키는 방식에 약간 차이가 있죠 이 차이를 분명하게 알고 계셔야 머신러닝과 딥러닝을 공부하실 때 도움이 많이 되시기 때문에 한번 보도록 하겠습니다 인공지능과 관련된 여러 가지 용어 중에 인공지능과 머신러닝과 딥러닝이라는 용어가 있는데요 인공지능은 아직 구현되지 않은 이론까지 포함한 광범위한 용어라고 보시면 좋을 것 같습니다 그래서 인공지능 안에 머신러닝이 있고요 머신러닝은 기계를 공부시킨다 머신러닝 기계를 공부시킨다 또는 기계를 공부시켜서 새로운 데이터를 저희가 예측해 본다 라는 게 머신러닝 개념이고요 머신러닝 안에 딥러닝이라는 게 있습니다 저희가 이제 앞으로 공부해야 되는 딥러닝이 머신러닝 범위 안에 들어간다 라는 걸 알고 계시면 좋을 것 같고요 처음 시작할 때 이 딥러닝은 딥러닝이라는 이름으로 시작하지 않고 신경망이라는 이름으로 뉴럴 네트워크라는 알고리즘으로 시작을 했죠 그 알고리즘들의 입력층과 출력층 말고 은닉층을 더 쌓고 은닉층을 깊게 만들었다 그래서 딥러닝이라는 용어를 갖게 된 거고요 그래서 딥러닝은 사실은 머신러닝과 딥러닝이 다르다고 생각하시는 분이 많을 수 있으신데 그렇지 않고 머신러닝의 큰 범위 안에 딥러닝이 들어가 있다 이렇게 보시면 될 것 같습니다 자 그러면 전통적인 프로그램 방식과 우리가 앞으로 하고자 하는 머신러닝 딥러닝의 학습법과는 어떤 차이가 있는지 한번 살펴보도록 하겠습니다 전통적인 프로그램 방식 같은 경우에는 데이터가 있죠 데이터 x와 y를 가지고 저희가 프로그램을 하는 거죠 직접 프로그램 코딩을 해서 이 코딩에 의해서 결과를 만들어내는 작업이었죠 그런데 머신러닝과 딥러닝 같은 경우에는 머신러닝 경우에는 머신러닝에다가 저희가 넣어줄 때 데이터 값하고 그 다음에 정답 정답을 모르는 게 아니고 데이터와 정답을 같이 넣어줘요 입력할 때 이게 가장 큰 차이가 있죠 전통적인 프로그램 방식은 저희가 답을 위해서 프로그램 했던 방식이라면 머신러닝은 문제와 답 문제에 해당되는 답을 줘서 머신러닝이 뭘 파악하게 되냐면 이런 문제가 들어오면 이게 답이구나 라는 패턴을 파악하게 하는 거죠 그게 바로 머신러닝의 공부 방법인 거고요 그래서 기계를 머신러닝 기계를 공부시켜서 저희는 사실은 모델을 만드는 거예요 기본적으로 나오는 결과물이 모델이 되는 거고요 이 모델에다가 이렇게 만들어진 학습된 이 데이터에 이런 데이터는 이게 정답이네 이런 데이터는 이게 정답이라는 패턴을 파악하는 모델을 만들어서 이 모델이 만들어지면 기존 데이터로 학습을 통해서 모델이 만들어지면 새로운 데이터를 넣는 거죠 이 새로운 데이터는 기존에 학습된 데이터가 아니죠 새로운 데이터입니다 그래서 새로운 데이터를 모델에 입력시켜 보면 저희가 이 새로운 데이터에 대한 예측을 할 수 있다 라고 보시면 좋겠죠 가장 크게 다른 점, 머신 러닝을 공부하실 때 준비해야 되는 게 여러분들이 바로 데이터와 그 데이터에 해당되는 정답이죠. 정답을 같이 입력으로 반드시 넣어주셔야 하고요. 이 넣어준 거를 가지고 저희가 머신 러닝을 공부하기 때문에 데이터 자체도 우리가 좀 준비를 해야 된다라고 보시면 좋을 것 같고 이렇게 만들어진 모델을 통해서 새로운 데이터를 예측하게 되고 이 예측을 가지고 저희들이 판단을 하게 된다라는 것이 전통적인 프로그램 방식과 머신러닝의 가장 큰 차이가 있다 이렇게 보시면 되겠습니다 그래서 머신러닝과 딥러닝에서는 저희가 전체 데이터를 가지고 데이터를 쪼개서 데이터셋이라고 그러는데요 데이터셋을 나누어서 학습할 준비를 하셔야 돼요 그래서 전체 데이터가 주어졌으면 전체 데이터를 두 조각으로 쪼개는데요 첫 번째 데이터셋 조각은 세로선을 쪼개는 거예요 세로선은 뭐냐면 전체 데이터를 대상으로 문제와 답의 형식으로 저희가 쪼개줘야 되고요 그래서 정답에 해당되는 Y값 저희가 레이블 타겟 굉장히 같은 이름이 많죠 같은 이름이 많다는 얘기는 오래된 역사를 갖고 있다는 얘기하고 똑같다고 저는 생각하거든요 그래서 어떻게 부르더라도 어쨌든 정답, 레이블, 타겟 같은 말인 거고요 그래서 문제와 답으로 나누어서 이런 문제는 이게 답이네라는 패턴을 이렇게 인식하게 이런 문제는 얘가 답이네 라고 이제 저희가 데이터셋이라고 그러죠 문제와 답이 세트로 되어 있으니까 데이터셋이라고 얘기하는데 이렇게 전체 데이터를 반드시 우리가 뭐로 나눠야 되냐면 피처 피처는 우리가 얘기했던 문제 부분이죠 그래서 문제와 레이블로 먼저 구분하시고요 두 번째는 이렇게 구분된 첫 번째 이거죠 먼저 문제와 답으로 구분해줬고 두 번째는 어떻게 해야 되냐면 반드시 데이터셋을 다시 가로로 한번 잘라요 가로로 이렇게 가로선을 넣어서 자르는데 가로선을 넣어서 자른다는 얘기는 뭐냐면 전체 데이터가 만약에 100% 데이터가 있다면 예를 들어 훈련 데이터셋을 저희가 70% 꼭 그렇진 않고요 30, 7대3이나 8대2나 6대4나 그건 이제 여러분들이 그 데이터에 맞게 쪼개 줘야 되는 부분이 있고요 보통은 7대3으로 만약 쪼갠다면 전체 100% 데이터를 70%는 훈련용으로 쓰고 30%는 훈련용에 의해서 우리가 공부한 문제답 문제답 이렇게 해서 모델이 나오죠 학습된 모델이 나오면 이 모델이 얼마나 정확한지 판단하려면 테스트 데이터가 필요해요 그 테스트 데이터 몫으로 얘를 남겨놓는 거죠 그래서 저희가 반드시 어떻게 하셔야 되냐면 당연히 문제와 답으로 1번 쪼갰고요 2번을 쪼갰을 때 훈련 데이터셋, 트레인 데이터셋하고 테스트 데이터셋을 나눌 때 나누고 나서는 이거를 숨겨야 돼요 공부할 때 절대 보여주면 안 됩니다 숨기셔야 돼요 숨겨 놓고 모델이 만들어지면 이걸 통해서 이렇게 패턴을 파악하는 모델이 만들어지면 그때서 비로소 이 테스트 데이터셋을 갖다 놓고 실제 정답이 여기 있죠 실제 정답과 이 모델이 예측한 y-hat이라고 해서 정답의 차이를 보는 거죠 이게 이제 오차가 되는 부분인 거고요 아무래도 오차가 적은 모델이 좋은 모델로 선별되겠죠 그러기 위해서 우리가 뭐가 필요하다? 반드시 전체 데이터셋 갖고 머신 러닝은 공부시키는 게 아니고 이렇게 두 조각으로 쪼개는 거죠 두 번 구분을 하셔야 되는데 첫 번째는 피처 레이블, 문제 정답으로 나누고 두 번째는 훈련 데이터셋과 테스트셋으로 나눈다는 기본적인 데이터셋을 나누는 것에 대해서 먼저 살펴보고 나서 저희가 머신 러닝이 진행되는 방법을 공부하고자 합니다 머신러닝 학습법에 대해서 다시 한번 정리를 해보면 머신러닝은 기존의 전통적인 프로그램 방식과는 다르게 입력을 해줄 때부터 이미 문제와 정답으로 쪼개져 있어야 됩니다 그래서 문제답 x, y로 쪼개 놓고 나서 입력을 넣어주는 거죠 문제와 답 이렇게 넣어줘서 머신러닝을 기계를 공부시키고요 그렇게 해서 모델을 저희가 만들어 내는 거라고 했고 이 모델이 만들어지면 새로운 데이터셋을 넣어서 예측을 해보는 거죠 이 데이터에 대한 예측을 해보는 게 우리의 머신 러닝의 공부 방법이라 말씀드렸고 데이터를 넣을 때 데이터를 쪼개주는 부분을 아까도 말씀드렸듯이 첫 번째 문제와 답으로 나누고요 두 번째는 훈련 데이터셋 다시 말하면 공부할 때만 쓸 데이터셋과 이렇게 만든 모델이 얼마나 정확한지 알아보기 위해서 저희가 테스트 데이터셋을 남겨야 되는데 정답을 채점하려면 뭐가 필요하죠? 문제도 필요하지만 문제에 대한 정답도 있어야 되기 때문에 정답을 갖고 있는 데이터셋이 반드시 필요해요 그래서 문제와 답의 세트를 남겨놓고 이 문제를 어디다 적용시켜 보냐면 이렇게 나온 모델에 적용시켜 보는 거죠 이 문제만 적용시켜 보면 이 모델이 예측한 y-hat이 있어요 나는 이 문제는 이거 같아 라고 이제 이 모델이 결과를 내는 거죠 예측하는 거죠 예측해 주는데 실제 정답이 있는 거잖아요 y가 이 둘의 차이가 바로 오차가 되는 거죠 그래서 어쨌든 이 오차를 통해서 계산하는 방식은 오차가 되도록이면 오차가 적은 방향이 좋겠지만 분류나 회귀에 따라서 이 오차를 평가하는 기준이 좀 다르기 때문에 어쨌든 저는 지금 분류라고 생각하고 들어갈게요 그래서 분류는 정확도를 보고 하는데요 얼마나 잘 맞췄냐 이거죠 정확도를 보고 하는 건데 그럼 모델을 하나만 쓰느냐 그렇지는 않고요 모델을 이 상황에서 여러 개 쓸 수 있어요 모델을 여러분이 만드는 건 아니에요 이미 프레임워크나 라이브러리를 통해서 제공된 모델이 많거든요 그 모델을 가져다가 저희가 쓸 건데 어쨌든 여러 개의 모델을 적용할 수 있는 거고 그러면 내 문제에 가장 적합한 모델을 저희가 선별해야 돼요 선별해야 되면 데이터를 똑같이 이렇게 고정시켜 놓고 A 모델, B 모델 세 가지 모델을 만약 만들었다 치면 세 가지 모델을 모두 다 테스트를 넣어 보는 거죠 그래서 A 모델은 정확도가 98% 그 다음에 B 모델은 90% 똑같은 문제에 대해서요 C 모델은 75%가 나왔다면 정확도는 높은 게 좋거든요 잘 맞추는 거니까 그럼 당연히 모델 A가 선별이 되겠죠 그 모델 A가 선별이 됐고 가장 이 데이터에 대해서는 적합한 모델이 된 거죠 그 모델을 우리가 약간씩 개선시킬 수 있어요 그걸 저희가 조금 어려운 말로 하이퍼 파라미터 튜닝이라고 하는데요 그래서 예를 들어 높아지는 경우가 좋겠죠 우리가 노력을 하는 거니까요 하이퍼 파라미터 튜닝을 해서 98%에서 제가 99% 올렸어요 그럼 굉장히 대단히 정확한 어떻게 보면 정확도가 높은 모델을 좋은 모델을 만들어 낸 거죠 그래서 이렇게 모델이 선별되고 또 조금 더 개선을 해서 좋은 모델을 확정을 시켰으면 거기다 드디어 새로운 데이터를 넣고 예측을 해보는 거다 라고 생각하시면 좋을 것 같습니다 그래서 꼭 알고 계셔야 되는 것은 머신 러닝이든 머신 러닝에 속해 있는 딥러닝이든 간에 어쨌든 학습 방법에 입력으로 들어갈 때 저희는 문제와 답을 나눠서 줘야 되고 훈련 데이터 세트하고 테스트 데이터 세트를 나눠서 넣어야 된다 그 나누는 게 여러분 데이터이기 때문에 여러분이 나눠야 된다 라고 생각을 하고 들어가셔야 됩니다
