Re: 기계 학습 시리즈
01. 소개
소개하다
기계 학습 프로젝트를 혼자 수행하는 것이 어려운 이유는 무엇입니까?
머신러닝을 처음 접하는 독자들이 시중에 나와 있는 기본적인 머신러닝 책이나 강의를 듣고 스스로 머신러닝 프로젝트를 시작할 때, 내가 만나는 대부분의 사람들은 “어떻게 해야 할지 모르겠다”는 어려움을 겪는다.
머신러닝을 처음 접한 건 대학 때였는데, 실제로 대회나 프로젝트를 진행하면서 데이터를 다운받아 헤매다가 결국 대회를 포기했다.
그 때 저도 머신러닝 관련 책을 읽었는데 뭐가 문제인가요?
(1) 기술의 대체 및 응용이 없다.
각 분야의 전문가들은 자신이 다루고 있는 문제를 정확하게 정의할 수 있고, 지금 무엇을 해야 하고 어떻게 해야 하는지에 대한 기본적인 작업 흐름을 가질 수 있습니다.
그러나 현실 세계의 문제는 항상 복잡합니다.
따라서 복잡한 상황을 명확하고 간결하게 정의하고 프로세스를 계획하는 것은 전문가의 역량입니다.
하지만 기계 학습을 처음 접하는 독자들은 이러한 과정에 대한 숙련도가 매우 낮아 실제 기계 학습으로 문제를 해결할 때 어디서부터 시작해야 할지 모르는 경우가 많습니다.
놀랍게도 대부분의 책은 예외 없이 이 과정을 다루고 있습니다.
즉 독자의 애매모호함은 학습된 과정 자체에 대한 지식의 부족보다는 학습된 과정의 일부와 대체(적용)되지 않은 실제 프로젝트에 기인한다는 점을 고려할 필요가 있다.
(그림 00-01) 머신러닝 과정
예를 들어, “머신러닝 과정”이라는 책에는 문제정의 -> 데이터획득 -> …. -> 모델학습 -> 모델평가… 이렇게 하기 위해서는 부족해서 적용하지 못하는 경우가 많다.
특정 작업 방법에 대한 이해.
실제로 그들이 처음 “문제 정의”를 제안할 때, 그들은 “주가를 예측하는 모델을 만든다”, “얼굴을 인식하는 앱을 만든다”와 같이 매우 순진한 정의를 내리는 경우가 많습니다.
결국 “주가를 예측하는 모델을 만드는 것”은 정의보다 프로젝트의 목적에 더 가깝고 기계 학습 과정의 문제를 정의하는 것과는 거리가 멀다.
(하나)
일반적으로 기계 학습에서 문제를 정의하는 것은 목표를 지정하고 “주가를 예측하는 모델을 만드는” 과정입니다.
목표를 달성하기 위해 기계 학습 알고리즘을 사용하는 방법에 대한 정책을 설정하는 구체적인 프로세스에 가깝습니다.
실제 문제 정의 단계에서 수행할 작업(예제)
- 과제 목표: 주가 예측을 위한 기계 학습 예측 모델 개발
- 작업 유형: 지도 학습(예측)
- 사용자료 : 10년간 코스피 전 상장종목의 주가 시계열 자료
- 예측자 유형/알고리즘 유형: 숫자/회귀 알고리즘
- 모델 평가 방법: RMSE
(2) 프로세스 자체의 초기 어려움: 많은 사전 지식이 필요하기 때문입니다.
두 번째 이유는 책에 실제로 존재하는 기계 학습 모델의 모델링보다 프로세스 초기의 계획(문제 정의) 단계, 데이터 전처리, 탐색적 데이터 분석, 기능 엔지니어링 단계가 선행되어야 하기 때문입니다.
기계 학습 프로세스에는 고유한 어려움이 있습니다.
기획 단계에서는 어떤 알고리즘을 사용해야 할까요? 알고리즘 전체에 대한 명확한 이해, 탐색적 데이터 분석 및 전처리를 수행하는 방법이 필요하다는 의미입니다.
즉, 데이터의 특성에 따른 전처리 방법과 분석 방법을 명확히 이해하고 있어야 합니다.
전체 머신러닝 과정의 절반 이상은 알고리즘과 데이터 분석 방법 자체에 대한 이해가 필요하기 때문에 통계 분석이나 데이터 분석에 대한 경험이 없는 독자나 초보자가 먼저 설계하기 어려운 부분이다.
입문서를 읽는 독자들은 결국 모델을 사용한 경험을 갖게 되지만, 책에서 배운 복잡한 실제 문제에 도달하기 위해서는 예지가 필요하기 때문에 결국 벽에 부딪히게 됩니다.
(책에 존재하는 모델 훈련에만 도달하면 결과가 유용하든 그렇지 않든 간에 모델을 통과하는 결과가 생성됩니다.
)
따라서 독자들은 기계 학습이 현실 세계의 문제를 해결하기 위한 프로젝트이며 시중에 나와 있는 기본 서적에는 다양한 학문 분야의 문제 해결 철학과 개념이 포함되어 있음을 이해해야 합니다.
(따라서 많은 책들이 선형대수학, 확률, 통계학을 필수로 여기고 간략한 개념을 포함하고 각 분야에 따라 추가 내용을 추가합니다.
NLP의 경우에도 그 원리를 이해하기 위해서는 언어학 분야의 지식이 필요합니다.
)
그럼 어떻게 공부해야 할까요?
예술의 특성을 수용하고 프로젝트 중심 학습을 활용합니다.
위의 이유로 기계 학습이 독자적으로 설 수 있도록 많은 연구가 필요합니다.
그런데 이를 위해서는 선형대수학의 모든 것, 통계와 확률의 모든 것, 언어학의 모든 것을 NLP 전공으로 순서대로 배워야 할까요? 딥러닝을 활용하려면 뇌과학 전공만큼 공부해야 하나요?
다행스럽게도 각 분야의 전문화에 대해 많이 알고 있다면 모호함에서 벗어나 다음 단계로 넘어가는 것이 불가능합니다.
(여기서 한 가지 유의할 점은 기존의 모호함을 극복하는 방법을 알고 이를 해결하는 방법을 탐색하는 것이 전문가가 되는 것을 의미하지 않는다는 것입니다.
)
원칙에 따르지 않고 직감으로 판단하고 모든 상황에서 행하는 것을 영어로 예술이라고 합니다.
데이터 분석도 기계 학습도 포괄적인 방법론은 없지만 각 데이터와 프로젝트 사례에 적합한 방법을 사용하고 끊임없이 변화해야 하는 예술 분야입니다.
그렇기 때문에 프로젝트를 중심으로 수많은 사례를 경험하는 것이 중요합니다.
“아니요!
애초에 프로젝트를 할 수 없는데 어떻게 프로젝트 경험을 쌓나요?”는 모순어법이 될 수 있습니다.
그러나 다행스럽게도 일부 절차는 기본적이고 기본적이며 이 문서에서는 이에 중점을 둘 것입니다.
범위가 너무 넓기 때문에 프로젝트가 계속 진행되는데, 이번에 해결하기 위해 A가 필요하면 A를 찾아서 공부해야 하고, 다음 프로젝트에서 B가 필요하면 B를 배우고 조금씩 공부해야 합니다.
이러한 A와 B는 혼자서는 달성하기 어려우므로 다른 사람의 진행 상황을 지속적으로 확인하고 필요한 지식의 단서를 찾고 실제 적용을 따르십시오.
따라서 실제 프로젝트를 시작하는 것뿐만 아니라 많은 Kaggle 대회의 우승 계획, 토론, 코드를 살펴보고 연구합니다.
(또는 국내 대회, 사례, 논문 등)
문제 해결사가 되려면 적극적인 학습이 필요합니다.
Readme.md와 마찬가지로 이 문서는 디딤돌 역할을 하므로 모든 내용을 다루지는 않습니다.
또한 수능, 수능, 자격증 등 답을 아는 사람은 절대 알 수 없고, 의도에 따라 질문을 하고, 수동적으로 범위와 범위를 부여한다.
주어진 방향으로 배우고, 정답을 맞추는 것은 발전으로 이어지지 않습니다.
프로젝트에서 직면하는 대부분의 문제는 많은 엔지니어와 학자가 경험하고 해결하려고 노력하는 실제 문제와 관련되어 있으며 진행 중인 문제일 가능성이 있습니다.
그러므로 수동적인 학생이 아닌 문제 해결사로서 배우고 연구하고 생각하고 나아가길 바라며, 이 문서가 첫 단추이자 디딤돌로 도움이 되었으면 합니다.