머신 러닝과 딥러닝의 차이

파이썬 딥러닝을 위한 기초 수학 강좌의 맛보기 강의입니다.

강의 대본 보기

여기까지 오신 여러분들은 머신러닝이 뭔지 아셨어요 머신러닝이라는 것은 주어진 데이터를 X와 Y, 문제와 정답으로 나누고 문제에 해당되는 정답을 패턴을 맞춰서 공부를 시킨 다음에 새로운 데이터가 들어왔을 때 그걸 예측해 보는 게 머신러닝이구나 라는 걸 알고 계실 거고 특히 머신러닝 중에 저희가 비중적으로 봐야 되는 게 지도학습인데 그 지도학습은 크게 두 가지 회귀와 분류로 이미 나누어진 걸 알고 계시죠 그래서 어떨 땐 회귀문제고 어떨 땐 분류 문제냐 우리가 X는 상관없이 정답인 Y, 클래스 Y, Y에 따라서 회귀와 분류 문제가 나누어진다고 말씀드렸어요 기억하시죠? Y가 숫자인 데이터가 된다면 그건 수치형 데이터이기 때문에 회귀문제가 되는 거고 Y가 문자예요 다시 말하면 범주형 데이터다 0과 1, 개, 고양이, 합격과 불합격 이런 것만 나누는 구분만 단순히 해주면 되는 건 분류 문제라고 볼 수 있다고 말씀드리고 왔어요 그렇다면 이제 남은 숙제가 뭐냐면 그러면 머신러닝과 딥러닝은 어떻게 달라? 어떻게 우리가 실제 구현할 때 좀 다른 거야? 라고 보신다면 머신러닝과 딥러닝은 똑같이 문제와 정답 나눠준 건 똑같아요 왜? 저희가 하고자 하는 게 뭐라고요? 지도학습이기 때문에 정답이 없이 지금 진행하는 게 아니에요 정답이 무조건 다 있어요 둘 다 공통점은 문제와 정답으로 구분되어지는 건 똑같아요 데이터를 준비해서 문제와 정답으로 세로로 쭉 잘라야 되고요 훈련 데이터 세트와 테스트 데이터 세트를 구분하셔야 합니다. 데이터 세트가 준비되어 있는데 그 다음부터가 달라집니다. 머신 러닝은 그냥 선택하시면 됩니다. Y가 숫자면 회귀를 선택하시면 됩니다. 예를 들어 다중선형 회귀나 단순선형 회귀나 기타 등등의 알고리즘이 준비되어 있습니다. 그 회귀를 불러서 쓰시면 됩니다. 여러분이 만드는 것은 아닙니다. 아까 우리가 지금 깔았던 것 중에 사이킷런이라는 게 있었거든요 딥러닝, 맞아요 파이썬은 머신 러닝 할 때 사이킷런을 많이 쓰기 때문에 그 안에 사이킷런만 깔면 회귀를 할 수 있는 알고리즘이 다 깔려요 그 프로그램을 이용해서 회귀를 하시면 되고 다시 Y가 이제는 범주형 데이터예요 구분만 해주면 돼요 그럼 분류를 쓰면 되죠 그러면 분류 알고리즘 우리가 선택해서 쓰면 돼요 의사결정 트리라든지 아니면 의사결정 트리 보다 조금 더 나간 앙상블 기법 랜덤 포레스트 이런 좋은 알고리즘을 쓰시면 분류가 끝나요 머신 러닝은 되게 편리하죠 왜냐하면 거의 통으로 되어 있거든요 통으로 그래서 내가 Y에 따라서 회귀를 할 건지 분류를 할 건지만 여러분이 알고 계신다면 회귀 알고리즘은 불러다 쓰면 되고 분류 알고리즘은 불러다 써서 모델을 만든 다음에 예측하면 끝이에요 그런데 딥러닝은 왜 여러분이 지금까지 많이 힘드셨냐면 한 번만 선택하는 게 아니에요 너무나 많은 걸 우리가 구축을 해내야 돼요 물론 라이브러리가 다 도와주긴 하지만 여러분들이 저걸 해내야 됐기 때문에 딥러닝은 여전히 숙제였다는 거죠 머신 러닝은 그냥 한 번만 선택하면 되기 때문에 Y가 숫자네 그럼 회귀 Y가 범주형 데이터네 분류 이걸로 끝나버렸지만 딥러닝은 저희가 뭐 해야 돼요? 입력층도 쌓고 은닉층도 쌓고 출력층도 쌓고 그리고 회귀인지 분류인지도 알려줘야 돼요 그러니 굉장히 많은 선택들이 있는 거죠 선택 장애가 있으신 분은 굉장히 좀 많이 더 힘들 수도 있어요 그래서 아 이건 내가 구축해야 되는 거구나 그냥 알고 있으면 단순히 선택하는 걸로 끝나지 않았기 때문에 이제 훨씬 더 좋은 라이브러리 텐서플로우 또는 Keras 뭐 이런 라이브러리가 좀 필요한 거라고 보시면 좋을 것 같습니다 일단은 뭐냐면 아까 말씀드렸듯이 머신 러닝이 두 가지 중에 하나를 선택하는 거 어떤 건 회귀문제 어떤 건 분류 문제니까 AND는 없어요 Y에 따라서 회귀문제일 수도 있고 분류 문제일 수도 있죠 그런데 딥러닝은 저희가 입력은 이미 있어요 X하고 Y를 넣어주는 게 입력이기 때문에 이게 문제가 되는 X가 입력층이 되는 거고요 출력층도 여기 Y가 출력층이에요 출력층인데 중요한 건 나머지 부분 우리가 다 해결해야 돼요 주어진 문제는 입력과 출력만 있을 뿐인 거지 은닉층이 없거든요 그래서 은닉층의 개수 제가 딥러닝이라는 것은 아까도 초반에도 말씀드렸지만 원래 신경망에서 입력과 출력을 제외한 은닉층을 쌓기 시작했다 그랬죠 은닉층을 쌓는데 이거를 몇 개를 쌓을 수 있다? 셀 수도 없이 많이 쌓을 수 있어요 딥하기 때문에 딥러닝이라고 말씀드렸는데 은닉층을 몇 개를 우리가 쌓을지 이것도 여러분이 선택하셔야 되고 은닉층에 있는 걸 이 동그라미 있죠 속에 있는 걸 노드라고 해요 노드 노드 이 노드의 개수를 몇 개를 할지도 여러분이 결정하셔야 돼요 결정된 건 없죠 결정된 건 없고 다 여러분이 결정해 주셔야 되고 노드의 그러니까 은닉층의 수도 결정해야 되죠 은닉층마다 노드수도 여러분이 결정해야 되죠 또 여기는 사실은 쓰진 않았지만 은닉층 이 노드 모두다 뭐가 붙었냐 활성화 함수라는 게 붙어요 모두다 모든 노드에 이 활성화 함수의 종류도 여러분이 결정하셔야 돼요 벌써 들어도 헷갈리시죠 이런 게 아직 남아있기 때문에 딥러닝은 여전히 여러분이 숙제로 과제로 갖고 있고 어렵다고 생각할 수가 있어요 근데 쌓는 거는 라이브러리가 많이 도와주기 때문에 개념만 있으시면 되거든요 아 이렇게 쌓는 거구나 라고 생각하시면 좋을 것 같습니다 그리고 마지막으로 가장 중요한 거 그럼 딥러닝은 머신 러닝과 달리 회귀분류를 어떻게 결정하느냐 이 출력층에 맨 끝에 달려있는 이 손실함수라는 게 있어요 이 손실함수가 바로 키포인트가 되는 거고요 이 손실함수를 평균 제곱 오차를 쓰면 결론적으로 얘기한다면 회귀문제가 되는 거고 이것을 교차 크로스 엔트로피를 쓰게 되면 분류 문제가 되는 거예요 그래서 여러분이 만약에 이 Y가 수치형 데이터예요 여전히 똑같고 여기서 머신 러닝은 똑같이 그러면 저희들이 회귀를 써야 되죠 그럴 때 손실함수를 반드시 MSE 평균 제곱 오차로 끼워서 넣어주셔야 되고요 만약 이게 범주형 데이터 구분만 하면 된다고 생각하신다면 이 손실함수 부분에다가 교차 크로스 엔트로피를 넣어주시면 돼요 여러분이 설정을 해주셔야 돼요 회귀를 할 건지 분류를 할 건지를 머신러닝은 알고리즘 자체를 결정했다면 이거는 손실함수에서 결정이 된다고 보시면 되겠습니다 그래서 이렇게 만들어진 딥러닝을 통해서 새로운 데이터가 이렇게 입력층을 타고 들어가 은닉층을 통과를 해서 출력이 나오는 것들을 가지고 예측을 해보는 거예요 바로 딥러닝이라고 보시면 되겠습니다 이제는 좀 확연히 아셨나요? 머신러닝과 딥러닝은 차이가 있다? 없다? 있다 머신러닝은 Y의 형태에 따라서 그냥 회귀, 분류, 알고리즘을 선택해서 쓰는 거니까 단 한 번 선택으로 모든 예측을 할 수가 있지만 모델을 만들고 예측할 수가 있지만 딥러닝은 그렇지 않다 딥러닝은 그냥 문제가 주어지면 입력층과 출력층만 주어질 뿐인 거지 뭐 해야죠? 은닉층의 개수도 결정해 줘야 되고 은닉층의 노드를 몇 개로 각각 할 건지 활성함수는 뭐로 할 거며 그 다음에 손실함수는 여러분이 회귀인지 분류에 따라서 각각 여러분이 선택을 해 주셔야 돼요 그래서 라이브러리가 도움은 주겠지만 여러분이 그 개념이 없으시면 딥러닝을 해결하지 못한다 라고 보시면 될 것 같습니다 자 다시 한번 정리를 해볼게요 딥러닝은 저희가 결정해야 되는 게 많다 이렇게 보시면 되겠어요 그래서 문제와 답이 주어졌을 때 입력층과 출력층만 결정이 되는 거고요 나머지 은닉층의 개수를 몇 개로 할 건지를 우리가 결정해야 되고 은닉층마다 노드의 개수는 또 몇 개로 할 건지 결정을 하셔야 되고 그 밑에 있는 각각 노드마다 붙는 활성함수가 있어요 가중치 합을 구하는 활성함수를 또 뭐로 선택할지 결정해야 되며 손실함수의 종류에 따라서 평균제곱오차이면 회귀문제가 되는 거고 똑같은 네트워크를 짰더라도 교차 크로스 엔트로피를 선택하게 되면 분류 문제가 되는 거다 라고 얘기하시고 이렇게 해서 만들어진 딥러닝 네트워크 구축이 되면 여기 새로운 데이터를 넣었을 때 결과를 예측할 수 있는 모델이 바로 딥러닝 모델이다 라고 보시면 되겠습니다 딥러닝을 해결하실 때는 이렇게 많은 필수 요소가 꼭 알아야 되는 게 있어요 아까도 여러 가지 말씀드렸지만 사실은 말씀을 못 드린 부분도 되게 많거든요 그걸 통해서 이것을 저희가 이제 하나하나 학습함으로써 딥러닝의 기본적인 개념이 어떻게 생겼고 또 뭐를 내가 라이브러리를 통해서 만들어야 되는지 어떻게 쌓아가야 되는지 네트워크를 이런 것들에 관한 얘기를 앞으로도 해보도록 하겠습니다

이 강좌의 맛보기 강의

파이썬 딥러닝을 위한 기초 수학
파이썬 딥러닝을 위한 기초 수학강좌 자세히 보기