DNN, CNN, RNN을 활용한 파이썬 딥러닝 실무 강좌의 맛보기 강의입니다.
딥러닝의 종류가 세 가지가 있죠 DNN, CNN, RNN 이렇게 해서 크게 세 가지의 딥러닝의 종류가 있는데 이런 딥러닝의 종류 세 가지를 이용해서 딥러닝 실무 과정을 진행해 보도록 하겠습니다 먼저 딥러닝 개발 과정에 대해서 한 번 더 정리를 해 보겠습니다 딥러닝은 처음에 딥러닝을 하기 위해서 여러분이 갖고 있는 데이터가 있을 거예요 그 데이터를 준비해 주시고 그 데이터를 준비한 데이터를 통해서 저희가 모델을 만들고 모델을 컴파일을 지정해주고 그다음에 모델을 직접 학습을 시키는 거죠 훈련을 시키고 그리고 나서 모델이 만들어질 거예요 그 딥러닝 모델을 가지고 저희가 평가해보는 거죠 모델을 평가하고 그다음에 새로운 데이터에 대한 예측도 해보고 이런 식으로 진행되는 딥러닝 개발 과정이 있고요 조금 자세히 보시면 데이터 준비하는 과정에서 저희가 해야 되는 부분이 뭐냐면 데이터 전처리가 필요하다면 데이터 전처리를 하셔야 돼요 피처에 대한 전처리도 필요할 수도 있고요. 그 다음에 때로는 레이블, 정답에 대한 전처리 과정이 좀 필요할 수도 있거든요. 필요한 전처리 과정을 좀 해주셔야 되고요. 두 번째는 데이터셋을 반드시 구분하셔야 됩니다. 딥러닝에서 학습 데이터셋과 검증 데이터셋, 그 다음에 테스트 데이터셋 이렇게 데이터셋을 구분하는 것까지가 데이터를 준비하는 과정이라고 보시면 좋을 것 같고요. 데이터 모델을 정의하는 과정에서는 저희가 이제 은닉층, 출력층도 물론 저희가 이제 데이터가 준비가 되면 입력과 출력 개수들이 노드의 개수들이 결정이 되지만 그거 외에 저희가 은닉층 개수를 설정한달지 각각의 은닉층마다 이제 노드를 대체 몇 개로 할 건지 그 수를 설정하기도 하고 그 각각의 노드마다 활성화 함수도 선택을 하셔야 되겠죠 이까지가 모델 정의고요 모델 컴파일은 사실은 이 모델을 가지고 저희가 하고 싶은 목표가 있죠 회귀를 할 건지 분류를 할 건지 분류 중에서도 이항 분류를 할 건지, 다항 분류를 할 건지 이런 목표가 있죠. 그 목표를 설정하는 게 바로 손실 함수죠. 오차를 결정하는 거고요. 이 오차를 어떤 식으로 줄여나가야 되는지, 줄여나가는 공부를 어떤 방법으로 할 건지도 옵티마이저로 선택하셔야 됩니다. 그리고 평가지표, 각각의 회귀든 분류든 간에 저희가 이 모델을 바라보는 평가하는 지표가 다르거든요. 그래서 평가지표를 설정하는 게 바로 모델 컴파일이고요. 모델 정의하고 컴파일 할 때까지는 모델이 실행되지는 않아요 만들어지지는 않습니다 그냥 정의만 말 그대로 이렇게 정의하고 이렇게 구성되고 그 다음에 이렇게 컴파일 할 거야 만약에 실행할 때 이렇게 되는 거고요 그렇게 모델을 만든 다음에 모델을 정의한 다음에 저희가 실질적으로 모델의 학습은 모델 훈련 단계에서 일어나고요 그래서 몇 번 대체 저희가 공부를 시킬 건지 에포크도 설정해 주셔야 되고 때로는 에포크가 너무 크다 한 에포크당 데이터 사이즈가 너무 크다 그러면 배치 사이즈를 좀 쪼개서 메모리에 올라갈 수 있도록 해줘야 되거든요. 그게 더 효율적인 학습이 되기 때문에 배치 크기를 설정하면 그때 그때마다 이제 배치 크기마다 가중치 조정이 일어나기 때문에 그 가중치 조정을 모니터링 검증 데이터로 하면서 모델이 제대로 훈련되고 있는지를 저희가 이제 모니터링 하는 거라고 보시면 좋을 것 같고요. 그 여러 과정에서 저희가 하이퍼 파라미터 튜닝을 좀 넣을 수가 있습니다 그래서 하이퍼 파라미터는 저희가 이제 미리 실행되기 전에 설정할 수 있는 여러 가지 바꿀 수 있는 파라미터를 하이퍼 파라미터라 그래요 파라미터는 뭐냐면 이런 모델을 학습에서 나오는 가중치나 내지는 편향 같은 것들이 정해지잖아요 학습을 통해서 이런 것들은 저희가 조정하지 못해요 이런 건 파라미터라 그러고요 실제적으로 우리가 이제 실행하기 전에 뭐 예를 들면 초기값 같은 거 가중치의 초기값 같은 것 좀 바꿀 수도 있거나 학습률, 경사하강법의 학습률 같은 것도 좀 바꿀 수가 있거든요 그래서 그렇게 우리가 바꿔서 이렇게 했을 때 이 결과가 좋게 나오네 조금 더 좋아졌네 이렇게 이제 저희가 이제 우리 데이터에 조금 더 적합하게 파라미터를 수정한다 그래서 하이퍼 파라미터 튜닝 부분이라고 얘기하는 부분이 있는데 이거는 뭐 한도 끝도 없죠 워낙 딥러닝을 설정해야 될 게 많기 때문에 하이퍼 파라미터 튜닝을 잘 하시면 지금보다 개선된 모델을 좀 지금까지 나온 모델보다는 조금 좋은 모델을 만들 수 있는데 많은 훈련이 좀 필요합니다 하이퍼 파라미터 튜닝 단계까지 가시려면 어쨌든 이런 식으로 해서 모델이 만들어지면 그 모델을 통해서 테스트 데이터셋 남겨둔 거 하고 저희가 평가를 하고 평가가 좋게 나오면 그 모델 가지고 새로운 데이터를 예측해 보는 단계까지가 딥러닝의 개발 과정이었습니다 딥러닝의 개발 과정을 그림으로 도식화를 한번 더 해볼까요? 그래서 데이터 준비는 데이터 전처리 부분과 학습 데이터, 검증 데이터, 테스트 데이터 셋으로 나눈 것까지가 데이터 준비이고요. 데이터 준비가 끝나면 저희가 모델을 정해야죠. 층을 구성해야 되는데 입력층, 출력층, 은닉층 이렇게 구성을 해야 되고요. 그리고 저희는 이제 저희가 지금 DNN으로 쓰고 있는 것은 밀집층 Dense 레이어를 쓰는 건데 조금 이따 종류를 볼 건데요 딥러닝 종류 중에 만약 CNN, 컨볼루션층이 필요하다면 컨볼루션층을 때로는 순환층이 필요하면 RNN에 해당되는 순환층을 저희가 쌓으면 됩니다 그래서 모델을 정의를 해주고요 세 번째는 모델을 컴파일 해줘야 되는데 결국 우리의 목표죠. 목표, 회귀를 할 건지 분류를 할 건지의 문제를 이미 데이터를 나눌 때 저희가 이제 Y 데이터, 정답의 데이터를 보고 회귀인지 분류인지를 알아야 되고 분류 중에는 이항 분류를 할 건지, 다항 분류를 할 건지 결정이 되어 있을 거예요. 그래서 손실 함수를 거기에 적합하게 설정해 주시고요. 그 다음에 오차를 줄여나가는 방법으로 공부하는 옵티마이저는 가장 좋은 거는 아담이라는 방법이 있었는데 옵티마이저를 설정해 줘야 되고요. 분류는 분류 나름대로, 회귀는 회귀 나름대로 평가 지표를 설정하는 것까지가 컴파일이죠. 그리고 이렇게 정의하고 딥러닝 모델이 컴파일이 구성이 되면 저희는 모델 훈련, 드디어 학습을 시키는데 학습을 시키는 명령은 fit이란 명령이죠. fit이란 명령으로 학습을 시키고 이렇게 학습된 모델이 만들어지면 저희가 평가를 해봐야 되죠 남겨놨던 테스트 데이터가 있죠 훈련 데이터 세트 갖고 공부를 시키는 거고 그리고 공부를 하면서 모니터링은 검증 데이터로 하는 거고요 그리고 테스트 데이터 세트 가지고 뭐 하느냐 바로 Evaluate, 다시 말해 평가를 하죠 평가, 평가를 하고 모델이 괜찮은 성능이 나왔다 그런 모델을 선정하고 그 모델에 대해서 새로운 데이터를 예측해 보는 것을 Predict을 한다고 해서 개발 과정을 조금 그림으로 알기 쉽게 제가 도식화를 한번 해봤습니다
